Mercurial > vim
changeset 4197:07fef68eb018 v7.3.850
updated for version 7.3.850
Problem: ":vimgrep //" matches everywhere.
Solution: Make it use the previous search pattern. (David B?rgin)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Thu, 07 Mar 2013 16:32:54 +0100 |
parents | 47b080b0f40d |
children | 905ca4bac044 |
files | runtime/doc/quickfix.txt src/quickfix.c src/version.c |
diffstat | 3 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -574,6 +574,8 @@ 5.1 using Vim's internal grep 'ignorecase' applies. To overrule it put |/\c| in the pattern to ignore case or |/\C| to match case. 'smartcase' is not used. + If {pattern} is empty (e.g. // is specified), the last + used search pattern is used. |last-pattern| When a number is put before the command this is used as the maximum number of matches to find. Use
--- a/src/quickfix.c +++ b/src/quickfix.c @@ -3179,7 +3179,20 @@ ex_vimgrep(eap) EMSG(_(e_invalpat)); goto theend; } - regmatch.regprog = vim_regcomp(s, RE_MAGIC); + + if (s != NULL && *s == NUL) + { + /* Pattern is empty, use last search pattern. */ + if (last_search_pat() == NULL) + { + EMSG(_(e_noprevre)); + goto theend; + } + regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC); + } + else + regmatch.regprog = vim_regcomp(s, RE_MAGIC); + if (regmatch.regprog == NULL) goto theend; regmatch.rmm_ic = p_ic;