diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2024-07-10 10:35:12 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-10 10:35:12 +0800 |
| commit | 158ffd646d18eb26ca7e04e9cb9110305577b9c8 (patch) | |
| tree | 927bad31846421670891666a6829c53a41b9830e /test | |
| parent | 545aafbeb80eb52c182ce139800489b392a12d0d (diff) | |
| download | rneovim-158ffd646d18eb26ca7e04e9cb9110305577b9c8.tar.gz rneovim-158ffd646d18eb26ca7e04e9cb9110305577b9c8.tar.bz2 rneovim-158ffd646d18eb26ca7e04e9cb9110305577b9c8.zip | |
vim-patch:9.1.0554: :bw leaves jumplist and tagstack data around (#29639)
Problem: :bw leaves jumplist and tagstack data around
(Paul "Joey" Clark)
Solution: Wipe jumplist and tagstack references to the wiped buffer
(LemonBoy)
As documented the :bwipeout command brutally deletes all the references
to the buffer, so let's make it delete all the entries in the jump list
and tag stack referring to the wiped-out buffer.
fixes: vim/vim#8201
closes: vim/vim#15185
https://github.com/vim/vim/commit/4ff3a9b1e3ba45f9dbd0ea8c721f27d9315c4d93
Co-authored-by: LemonBoy <thatlemon@gmail.com>
Diffstat (limited to 'test')
| -rw-r--r-- | test/old/testdir/test_jumplist.vim | 22 | ||||
| -rw-r--r-- | test/old/testdir/test_tagjump.vim | 17 | ||||
| -rw-r--r-- | test/old/testdir/test_winfixbuf.vim | 1 |
3 files changed, 24 insertions, 16 deletions
diff --git a/test/old/testdir/test_jumplist.vim b/test/old/testdir/test_jumplist.vim index b4dcdad9d6..5cf4f32628 100644 --- a/test/old/testdir/test_jumplist.vim +++ b/test/old/testdir/test_jumplist.vim @@ -68,26 +68,16 @@ endfunc func Test_jumplist_invalid() new clearjumps - " put some randome text - put ='a' - let prev = bufnr('%') + " Put some random text and fill the jump list. + call setline(1, ['foo', 'bar', 'baz']) + normal G + normal gg setl nomodified bufhidden=wipe e XXJumpListBuffer - let bnr = bufnr('%') - " 1) empty jumplist - let expected = [[ - \ {'lnum': 2, 'bufnr': prev, 'col': 0, 'coladd': 0}], 1] - call assert_equal(expected, getjumplist()) + " The jump list is empty as the buffer was wiped out. + call assert_equal([[], 0], getjumplist()) let jumps = execute(':jumps') call assert_equal('>', jumps[-1:]) - " now jump back - exe ":norm! \<c-o>" - let expected = [[ - \ {'lnum': 2, 'bufnr': prev, 'col': 0, 'coladd': 0}, - \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 0] - call assert_equal(expected, getjumplist()) - let jumps = execute(':jumps') - call assert_match('> 0 2 0 -invalid-', jumps) endfunc " Test for '' mark in an empty buffer diff --git a/test/old/testdir/test_tagjump.vim b/test/old/testdir/test_tagjump.vim index a614c19ce2..b715aedde6 100644 --- a/test/old/testdir/test_tagjump.vim +++ b/test/old/testdir/test_tagjump.vim @@ -1001,6 +1001,23 @@ func Test_tag_stack() call settagstack(1, {'items' : []}) call assert_fails('pop', 'E73:') + " References to wiped buffer are deleted. + for i in range(10, 20) + edit Xtest + exe "tag var" .. i + endfor + edit Xtest + + let t = gettagstack() + call assert_equal(11, t.length) + call assert_equal(12, t.curidx) + + bwipe! + + let t = gettagstack() + call assert_equal(0, t.length) + call assert_equal(1, t.curidx) + set tags& %bwipe endfunc diff --git a/test/old/testdir/test_winfixbuf.vim b/test/old/testdir/test_winfixbuf.vim index b41eaf3c9b..1777bec184 100644 --- a/test/old/testdir/test_winfixbuf.vim +++ b/test/old/testdir/test_winfixbuf.vim @@ -2934,6 +2934,7 @@ func Test_tfirst() \ "Xtags", 'D') call writefile(["one", "two", "three"], "Xfile", 'D') call writefile(["one"], "Xother", 'D') + tag one edit Xother set winfixbuf |