summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ex_cmds.h8
-rw-r--r--src/quickfix.c21
-rw-r--r--src/testdir/test_quickfix.vim14
-rw-r--r--src/version.c2
4 files changed, 41 insertions, 4 deletions
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 9e420b3fd..37577f7b3 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -336,8 +336,8 @@ EX(CMD_checktime, "checktime", ex_checktime,
RANGE|BUFNAME|COUNT|EXTRA|TRLBAR,
ADDR_OTHER),
EX(CMD_chistory, "chistory", qf_history,
- TRLBAR,
- ADDR_NONE),
+ RANGE|COUNT|TRLBAR,
+ ADDR_UNSIGNED),
EX(CMD_clist, "clist", qf_list,
BANG|EXTRA|TRLBAR|CMDWIN,
ADDR_NONE),
@@ -828,8 +828,8 @@ EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep,
EXTRA|NOTRLCOM|NEEDARG,
ADDR_NONE),
EX(CMD_lhistory, "lhistory", qf_history,
- TRLBAR,
- ADDR_NONE),
+ RANGE|COUNT|TRLBAR,
+ ADDR_UNSIGNED),
EX(CMD_ll, "ll", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_QUICKFIX),
diff --git a/src/quickfix.c b/src/quickfix.c
index b4497ae75..61576505a 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3742,6 +3742,27 @@ 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 = 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/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index ae3aec522..54c10ad6a 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1831,9 +1831,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([])
diff --git a/src/version.c b/src/version.c
index 0ba9dd13c..f137b8356 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1281,
+/**/
1280,
/**/
1279,