view src/testdir/test_changelist.vim @ 33622:ff131131b561 v9.0.2053

patch 9.0.2053: zig filetype detection test wrong Commit: https://github.com/vim/vim/commit/a8c664a042707e293d887d5b90f944f6fd5c99aa Author: Gregory Anders <greg@gpanders.com> Date: Thu Oct 19 19:57:57 2023 +0200 patch 9.0.2053: zig filetype detection test wrong Problem: zig filetype detection test wrong Solution: Remove .zir pattern, add new test for .zon pattern closes: #13389 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Gregory Anders <greg@gpanders.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 19 Oct 2023 20:00:03 +0200
parents f7a2de8a4ddc
children
line wrap: on
line source

" Tests for the changelist functionality

" When splitting a window the changelist position is wrong.
" Test the changelist position after splitting a window.
" Test for the bug fixed by 7.4.386
func Test_changelist()
  let save_ul = &ul
  enew!
  call append('$', ['1', '2'])
  exe "normal i\<C-G>u"
  exe "normal Gkylpa\<C-G>u"
  set ul=100
  exe "normal Gylpa\<C-G>u"
  set ul=100
  normal gg
  vsplit
  normal g;
  call assert_equal([3, 2], [line('.'), col('.')])
  normal g;
  call assert_equal([2, 2], [line('.'), col('.')])
  call assert_fails('normal g;', 'E662:')
  new
  call assert_fails('normal g;', 'E664:')
  %bwipe!
  let &ul = save_ul
endfunc

" Moving a split should not change its changelist index.
func Test_changelist_index_move_split()
  exe "norm! iabc\<C-G>u\ndef\<C-G>u\nghi"
  vsplit
  normal 99g;
  call assert_equal(0, getchangelist('%')[1])
  wincmd L
  call assert_equal(0, getchangelist('%')[1])
endfunc

" Tests for the getchangelist() function
func Test_changelist_index()
  edit Xgclfile1.txt
  exe "normal iabc\<C-G>u\ndef\<C-G>u\nghi"
  call assert_equal(3, getchangelist('%')[1])
  " Move one step back in the changelist.
  normal 2g;

  hide edit Xgclfile2.txt
  exe "normal iabcd\<C-G>u\ndefg\<C-G>u\nghij"
  call assert_equal(3, getchangelist('%')[1])
  " Move to the beginning of the changelist.
  normal 99g;

  " Check the changelist indices.
  call assert_equal(0, getchangelist('%')[1])
  call assert_equal(1, getchangelist('#')[1])

  bwipe!
  call delete('Xgclfile1.txt')
  call delete('Xgclfile2.txt')
endfunc

func Test_getchangelist()
  bwipe!
  enew
  call assert_equal([], 10->getchangelist())
  call assert_equal([[], 0], getchangelist())

  call writefile(['line1', 'line2', 'line3'], 'Xclistfile1.txt', 'D')
  call writefile(['line1', 'line2', 'line3'], 'Xclistfile2.txt', 'D')

  edit Xclistfile1.txt
  let buf_1 = bufnr()
  exe "normal 1Goline\<C-G>u1.1"
  exe "normal 3Goline\<C-G>u2.1"
  exe "normal 5Goline\<C-G>u3.1"
  normal g;
  call assert_equal([[
	      \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
	      \ getchangelist('%'))

  hide edit Xclistfile2.txt
  let buf_2 = bufnr()
  exe "normal 1GOline\<C-G>u1.0"
  exe "normal 2Goline\<C-G>u2.0"
  call assert_equal([[
	      \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
	      \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
	      \ getchangelist('%'))
  hide enew

  call assert_equal([[
	      \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
	      \ getchangelist(buf_1))
  call assert_equal([[
	      \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
	      \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
	      \ getchangelist(buf_2))

  bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab