diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2021-01-01 04:47:35 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2021-01-01 04:58:05 -0500 |
commit | d7b577d6ab38da8f199a616707a666c43e252ce3 (patch) | |
tree | 1b1b17d7d365223453471bc1b72a1b23dc679e60 /src | |
parent | d1608f7503512b37650522cf5c8a3dce7add5e3b (diff) | |
download | rneovim-d7b577d6ab38da8f199a616707a666c43e252ce3.tar.gz rneovim-d7b577d6ab38da8f199a616707a666c43e252ce3.tar.bz2 rneovim-d7b577d6ab38da8f199a616707a666c43e252ce3.zip |
vim-patch:8.1.1281: cannot specify a count with :chistory
Problem: Cannot specify a count with :chistory.
Solution: Add a count to :chistory and :lhistory. (Yegappan Lakshmanan,
closes vim/vim#4344)
https://github.com/vim/vim/commit/8ffc7c8b5f004971cb6f2bdcfbe4f7123cce717c
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_cmds.lua | 8 | ||||
-rw-r--r-- | src/nvim/quickfix.c | 18 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 14 |
3 files changed, 36 insertions, 4 deletions
diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua index 872f32d874..297740c752 100644 --- a/src/nvim/ex_cmds.lua +++ b/src/nvim/ex_cmds.lua @@ -490,8 +490,8 @@ module.cmds = { }, { command='chistory', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', + flags=bit.bor(RANGE, COUNT, TRLBAR), + addr_type='ADDR_UNSIGNED', func='qf_history', }, { @@ -1470,8 +1470,8 @@ module.cmds = { }, { command='lhistory', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', + flags=bit.bor(RANGE, COUNT, TRLBAR), + addr_type='ADDR_UNSIGNED', func='qf_history', }, { diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index eaa0117d93..d083d2890c 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -3300,6 +3300,24 @@ void qf_history(exarg_T *eap) qf_info_T *qi = qf_cmd_get_stack(eap, false); int i; + if (eap->addr_count > 0) { + if (qi == NULL) { + EMSG(_(e_loclist)); + return; + } + + // Jump to the specified quickfix list + if (eap->line2 > 0 && eap->line2 <= qi->qf_listcount) { + qi->qf_curlist = (int)(eap->line2 - 1); + qf_msg(qi, qi->qf_curlist, ""); + qf_update_buffer(qi, NULL); + } else { + EMSG(_(e_invrange)); + } + + return; + } + if (qf_stack_empty(qi)) { MSG(_("No entries")); } else { diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index f9d1abeaec..3646d37f9c 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -1918,9 +1918,23 @@ func HistoryTest(cchar) call assert_equal(' error list 2 of 3; 2 ' . common, res[1]) call assert_equal('> error list 3 of 3; 3 ' . common, res[2]) + " Test for changing the quickfix lists + call assert_equal(3, g:Xgetlist({'nr' : 0}).nr) + exe '1' . a:cchar . 'hist' + call assert_equal(1, g:Xgetlist({'nr' : 0}).nr) + exe '3' . a:cchar . 'hist' + call assert_equal(3, g:Xgetlist({'nr' : 0}).nr) + call assert_fails('-2' . a:cchar . 'hist', 'E16:') + call assert_fails('4' . a:cchar . 'hist', 'E16:') + call g:Xsetlist([], 'f') let l = split(execute(a:cchar . 'hist'), "\n") call assert_equal('No entries', l[0]) + if a:cchar == 'c' + call assert_fails('4chist', 'E16:') + else + call assert_fails('4lhist', 'E776:') + endif " An empty list should still show the stack history call g:Xsetlist([]) |