diff options
author | Bram Moolenaar <bram@vim.org> | 2012-06-29 12:57:06 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2012-06-29 12:57:06 +0200 |
commit | 655dcdfda67d5721fa3dcd7aeeccf60b4534ef3a (patch) | |
tree | efd21dedace22631685835830f2d41a66e960beb | |
parent | 0b850946d90df0e15e44942ed306dff2b0c4ebd2 (diff) | |
download | vim-655dcdfda67d5721fa3dcd7aeeccf60b4534ef3a.tar.gz |
Problem: ":vimgrep" does not obey 'wildignore'.
Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat)
-rw-r--r-- | src/ex_cmds2.c | 14 | ||||
-rw-r--r-- | src/proto/ex_cmds2.pro | 2 | ||||
-rw-r--r-- | src/quickfix.c | 2 | ||||
-rw-r--r-- | src/spell.c | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 15 insertions, 7 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 5bc82425..d3bf04fa 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -1850,22 +1850,28 @@ get_arglist(gap, str) #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) /* * Parse a list of arguments (file names), expand them and return in - * "fnames[fcountp]". + * "fnames[fcountp]". When "wig" is TRUE, removes files matching 'wildignore'. * Return FAIL or OK. */ int -get_arglist_exp(str, fcountp, fnamesp) +get_arglist_exp(str, fcountp, fnamesp, wig) char_u *str; int *fcountp; char_u ***fnamesp; + int wig; { garray_T ga; int i; if (get_arglist(&ga, str) == FAIL) return FAIL; - i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, - fcountp, fnamesp, EW_FILE|EW_NOTFOUND); + if (wig == TRUE) + i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, + fcountp, fnamesp, EW_FILE|EW_NOTFOUND); + else + i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, + fcountp, fnamesp, EW_FILE|EW_NOTFOUND); + ga_clear(&ga); return i; } diff --git a/src/proto/ex_cmds2.pro b/src/proto/ex_cmds2.pro index dc3bb790..e4406d16 100644 --- a/src/proto/ex_cmds2.pro +++ b/src/proto/ex_cmds2.pro @@ -42,7 +42,7 @@ int check_changed_any __ARGS((int hidden)); int check_fname __ARGS((void)); int buf_write_all __ARGS((buf_T *buf, int forceit)); int get_arglist __ARGS((garray_T *gap, char_u *str)); -int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp)); +int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp, int wig)); void set_arglist __ARGS((char_u *str)); void check_arg_idx __ARGS((win_T *win)); void ex_args __ARGS((exarg_T *eap)); diff --git a/src/quickfix.c b/src/quickfix.c index bbcebe4e..a1c4fe5c 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -3189,7 +3189,7 @@ ex_vimgrep(eap) ; /* parse the list of arguments */ - if (get_arglist_exp(p, &fcount, &fnames) == FAIL) + if (get_arglist_exp(p, &fcount, &fnames, TRUE) == FAIL) goto theend; if (fcount == 0) { diff --git a/src/spell.c b/src/spell.c index f0f258a7..ea47b1b2 100644 --- a/src/spell.c +++ b/src/spell.c @@ -8553,7 +8553,7 @@ ex_mkspell(eap) } /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */ - if (get_arglist_exp(arg, &fcount, &fnames) == OK) + if (get_arglist_exp(arg, &fcount, &fnames, FALSE) == OK) { mkspell(fcount, fnames, ascii, eap->forceit, FALSE); FreeWild(fcount, fnames); diff --git a/src/version.c b/src/version.c index 95e57663..e60a4bed 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 570, +/**/ 569, /**/ 568, |