diff --git a/src/quickfix.c b/src/quickfix.c index eb6433eaf9..8dfad2ec84 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -3286,6 +3286,7 @@ ex_vimgrep(exarg_T *eap) int fcount; char_u **fnames; char_u *fname; + char_u *title; char_u *s; char_u *p; int fi; @@ -3354,6 +3355,7 @@ ex_vimgrep(exarg_T *eap) /* Get the search pattern: either white-separated or enclosed in // */ regmatch.regprog = NULL; + title = vim_strsave(*eap->cmdlinep); p = skip_vimgrep_pat(eap->arg, &s, &flags); if (p == NULL) { @@ -3390,7 +3392,7 @@ ex_vimgrep(exarg_T *eap) eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) || qi->qf_curlist == qi->qf_listcount) /* make place for a new list */ - qf_new_list(qi, *eap->cmdlinep); + qf_new_list(qi, title != NULL ? title : *eap->cmdlinep); else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) /* Adding to existing list, find last entry. */ for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; @@ -3669,6 +3671,7 @@ ex_vimgrep(exarg_T *eap) } theend: + vim_free(title); vim_free(dirname_now); vim_free(dirname_start); vim_free(target_dir); diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index d551febdf5..5982aeef1b 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -317,6 +317,23 @@ func Test_errortitle() augroup! QfBufWinEnter endfunc +func Test_vimgreptitle() + augroup QfBufWinEnter + au! + au BufWinEnter * :let g:a=get(w:, 'quickfix_title', 'NONE') + augroup END + try + vimgrep /pattern/j file + catch /E480/ + endtry + copen + call assert_equal(': vimgrep /pattern/j file', g:a) + augroup QfBufWinEnter + au! + augroup END + augroup! QfBufWinEnter +endfunc + function XqfTitleTests(cchar) let Xgetexpr = a:cchar . 'getexpr' if a:cchar == 'c' diff --git a/src/version.c b/src/version.c index a64d6080ff..f2e7d67fcd 100644 --- a/src/version.c +++ b/src/version.c @@ -748,6 +748,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1591, /**/ 1590, /**/