From 91c99eed540a329b7738bd2f28259f8ac0670ef2 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 23 Jul 2022 09:15:31 +0800 Subject: vim-patch:8.2.4731: the changelist index is not remembered per buffer Problem: The changelist index is not remembered per buffer. Solution: Keep the changelist index per window and buffer. (closes vim/vim#10135, closes vim/vim#2173) https://github.com/vim/vim/commit/db0ea7f2b00c84d84f188c9e9953c4f1887528e7 Cherry-pick FOR_ALL_BUF_WININFO from patch 8.2.0500. Cherry-pick test_changelist.vim change from patch 8.2.3795. --- src/nvim/testdir/test_changelist.vim | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) (limited to 'src/nvim/testdir') diff --git a/src/nvim/testdir/test_changelist.vim b/src/nvim/testdir/test_changelist.vim index 3741f32e69..f429968218 100644 --- a/src/nvim/testdir/test_changelist.vim +++ b/src/nvim/testdir/test_changelist.vim @@ -1,11 +1,29 @@ " Tests for the changelist functionality " Tests for the getchangelist() function -func Test_getchangelist() - if !has("jumplist") - return - endif +func Test_changelist_index() + edit Xfile1.txt + exe "normal iabc\u\ndef\u\nghi" + call assert_equal(3, getchangelist('%')[1]) + " Move one step back in the changelist. + normal 2g; + + hide edit Xfile2.txt + exe "normal iabcd\u\ndefg\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('Xfile1.txt') + call delete('Xfile2.txt') +endfunc + +func Test_getchangelist() bwipe! enew call assert_equal([], 10->getchangelist()) @@ -15,6 +33,7 @@ func Test_getchangelist() call writefile(['line1', 'line2', 'line3'], 'Xfile2.txt') edit Xfile1.txt + let buf_1 = bufnr() exe "normal 1Goline\u1.1" exe "normal 3Goline\u2.1" exe "normal 5Goline\u3.1" @@ -26,6 +45,7 @@ func Test_getchangelist() \ getchangelist('%')) hide edit Xfile2.txt + let buf_2 = bufnr() exe "normal 1GOline\u1.0" exe "normal 2Goline\u2.0" call assert_equal([[ @@ -37,10 +57,12 @@ func Test_getchangelist() call assert_equal([[ \ {'lnum' : 2, 'col' : 4, 'coladd' : 0}, \ {'lnum' : 4, 'col' : 4, 'coladd' : 0}, - \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 3], getchangelist(2)) + \ {'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(3)) + \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2], + \ getchangelist(buf_2)) bwipe! call delete('Xfile1.txt') -- cgit From 9d556fc81f379aba21459bd0359e6bcd38384bfd Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 23 Jul 2022 09:27:31 +0800 Subject: vim-patch:8.2.5035: when splitting a window the changelist position moves Problem: When splitting a window the changelist position moves. Solution: Set the changelist index a bit later. (closes vim/vim#10493) https://github.com/vim/vim/commit/e6f13b473cf2c270e4eab214e09be9825320c11b Cherry-pick Test_nv_hat_count() change from patch 8.2.1593. --- src/nvim/testdir/test_changelist.vim | 35 +++++++++++++++++++++++++++++++++++ src/nvim/testdir/test_normal.vim | 27 +-------------------------- 2 files changed, 36 insertions(+), 26 deletions(-) (limited to 'src/nvim/testdir') diff --git a/src/nvim/testdir/test_changelist.vim b/src/nvim/testdir/test_changelist.vim index f429968218..3bb22a89b8 100644 --- a/src/nvim/testdir/test_changelist.vim +++ b/src/nvim/testdir/test_changelist.vim @@ -1,5 +1,40 @@ " 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\u" + exe "normal Gkylpa\u" + set ul=100 + exe "normal Gylpa\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\u\ndef\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 Xfile1.txt diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim index 9fbd1f774a..ffa0cd1807 100644 --- a/src/nvim/testdir/test_normal.vim +++ b/src/nvim/testdir/test_normal.vim @@ -2849,35 +2849,10 @@ func Test_gr_command() enew! endfunc -" 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\u" - exe "normal Gkylpa\u" - set ul=100 - exe "normal Gylpa\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 - func Test_nv_hat_count() %bwipeout! let l:nr = bufnr('%') + 1 - call assert_fails(':execute "normal! ' . l:nr . '\"', 'E92') + call assert_fails(':execute "normal! ' . l:nr . '\"', 'E92:') edit Xfoo let l:foo_nr = bufnr('Xfoo') -- cgit