aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-09-21 07:37:03 +0800
committerGitHub <noreply@github.com>2023-09-21 07:37:03 +0800
commitf094db0e5ccaddca2b5db05bf9545d55f3eededf (patch)
tree3e8cb9eec4e7b95de6c8d1bbfa414e1a51fd1de5 /test
parentdc6c11394b73803028d04498c80a538fe6aa4310 (diff)
downloadrneovim-f094db0e5ccaddca2b5db05bf9545d55f3eededf.tar.gz
rneovim-f094db0e5ccaddca2b5db05bf9545d55f3eededf.tar.bz2
rneovim-f094db0e5ccaddca2b5db05bf9545d55f3eededf.zip
vim-patch:9.0.1921: not possible to use the jumplist like a stack (#25278)
Problem: not possible to use the jumplist like a stack Solution: Add the 'jumpoptions' setting to make the jumplist a stack. Add an option for using jumplist like tag stack related: vim/vim#7738 closes: vim/vim#13134 ported from NeoVim: - https://neovim.io/doc/user/motion.html#jumplist-stack - neovim/neovim@39094b3 - https://vi.stackexchange.com/questions/18344/how-to-change-jumplist-behavior Based on the feedback in the previous PR, it looks like many people like this option. https://github.com/vim/vim/commit/87018255e3ad0f4dfa03e20318836d24af721caf Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com> Co-authored-by: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com>
Diffstat (limited to 'test')
-rw-r--r--test/old/testdir/test_jumplist.vim66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/old/testdir/test_jumplist.vim b/test/old/testdir/test_jumplist.vim
index 91ad940e18..b4dcdad9d6 100644
--- a/test/old/testdir/test_jumplist.vim
+++ b/test/old/testdir/test_jumplist.vim
@@ -104,4 +104,70 @@ d
bwipe!
endfunc
+" Test for 'jumpoptions'
+func Test_jumpoptions()
+ new
+ call setline(1, range(1, 200))
+ clearjumps
+ set jumpoptions=stack
+
+ " Jump around to add some locations to the jump list.
+ normal 10G
+ normal 20G
+ normal 30G
+ normal 40G
+ normal 50G
+ let bnr = bufnr()
+
+ " discards the tail when navigating from the middle
+ exe "normal \<C-O>\<C-O>"
+ call assert_equal([
+ \ [{'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 10, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 20, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 30, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 40, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 50, 'bufnr': bnr, 'col': 0, 'coladd': 0}
+ \ ], 3], getjumplist())
+
+ " new jump location is added immediately after the last one
+ normal 90G
+ call assert_equal([
+ \ [{'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 10, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 20, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 30, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ ], 4], getjumplist())
+
+ " does not add the same location twice adjacently
+ normal 60G
+ normal 60G
+ call assert_equal([
+ \ [{'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 10, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 20, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 30, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 90, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ "\ Nvim: avoids useless/phantom jumps
+ "\ {'lnum': 60, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ "\ ], 6], getjumplist())
+ \ ], 5], getjumplist())
+
+ " does add the same location twice non adjacently
+ normal 10G
+ normal 20G
+ call assert_equal([
+ \ [{'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 10, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 20, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 30, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 90, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 60, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ {'lnum': 10, 'bufnr': bnr, 'col': 0, 'coladd': 0},
+ \ ], 7], getjumplist())
+
+ set jumpoptions&
+ %bw!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab