0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.3.264

Problem:    When the current directory name contains wildcard characters, such
            as "foo[with]bar", the tags file can't be found.  (Jeremy
            Erickson)
Solution:   When searching for matching files also match without expanding
            wildcards.  This is a bit of a hack.
This commit is contained in:
Bram Moolenaar 2011-07-27 17:31:47 +02:00
parent a171162356
commit 0b573a58e6
4 changed files with 16 additions and 7 deletions

View File

@ -9119,7 +9119,9 @@ dos_expandpath(
* all entries found with "matchname". */ * all entries found with "matchname". */
if ((p[0] != '.' || starts_with_dot) if ((p[0] != '.' || starts_with_dot)
&& (matchname == NULL && (matchname == NULL
|| vim_regexec(&regmatch, p, (colnr_T)0))) || vim_regexec(&regmatch, p, (colnr_T)0)
|| ((flags & EW_NOTWILD)
&& fnamencmp(path + (s - buf), p, e - s) == 0)))
{ {
#ifdef WIN3264 #ifdef WIN3264
STRCPY(s, p); STRCPY(s, p);
@ -9323,7 +9325,7 @@ unix_expandpath(gap, path, wildoff, flags, didstar)
e = p; e = p;
*e = NUL; *e = NUL;
/* now we have one wildcard component between "s" and "e" */ /* Now we have one wildcard component between "s" and "e". */
/* Remove backslashes between "wildoff" and the start of the wildcard /* Remove backslashes between "wildoff" and the start of the wildcard
* component. */ * component. */
for (p = buf + wildoff; p < s; ++p) for (p = buf + wildoff; p < s; ++p)
@ -9390,7 +9392,9 @@ unix_expandpath(gap, path, wildoff, flags, didstar)
if (dp == NULL) if (dp == NULL)
break; break;
if ((dp->d_name[0] != '.' || starts_with_dot) if ((dp->d_name[0] != '.' || starts_with_dot)
&& vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)) && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
|| ((flags & EW_NOTWILD)
&& fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
{ {
STRCPY(s, dp->d_name); STRCPY(s, dp->d_name);
len = STRLEN(buf); len = STRLEN(buf);

View File

@ -4653,9 +4653,8 @@ vim_findfile_stopdir(buf)
{ {
if (r_ptr[0] == '\\' && r_ptr[1] == ';') if (r_ptr[0] == '\\' && r_ptr[1] == ';')
{ {
/* overwrite the escape char, /* Overwrite the escape char,
* use STRLEN(r_ptr) to move the trailing '\0' * use STRLEN(r_ptr) to move the trailing '\0'. */
*/
STRMOVE(r_ptr, r_ptr + 1); STRMOVE(r_ptr, r_ptr + 1);
r_ptr++; r_ptr++;
} }
@ -4914,10 +4913,13 @@ vim_findfile(search_ctx_arg)
stackp->ffs_filearray_size = 0; stackp->ffs_filearray_size = 0;
} }
else else
/* Add EW_NOTWILD because the expanded path may contain
* wildcard characters that are to be taken literally.
* This is a bit of a hack. */
expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs,
&stackp->ffs_filearray_size, &stackp->ffs_filearray_size,
&stackp->ffs_filearray, &stackp->ffs_filearray,
EW_DIR|EW_ADDSLASH|EW_SILENT); EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD);
stackp->ffs_filearray_cur = 0; stackp->ffs_filearray_cur = 0;
stackp->ffs_stage = 0; stackp->ffs_stage = 0;

View File

@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
264,
/**/ /**/
263, 263,
/**/ /**/

View File

@ -816,6 +816,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define EW_PATH 0x80 /* search in 'path' too */ #define EW_PATH 0x80 /* search in 'path' too */
#define EW_ICASE 0x100 /* ignore case */ #define EW_ICASE 0x100 /* ignore case */
#define EW_NOERROR 0x200 /* no error for bad regexp */ #define EW_NOERROR 0x200 /* no error for bad regexp */
#define EW_NOTWILD 0x400 /* add match with literal name if exists */
/* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
* is used when executing commands and EW_SILENT for interactive expanding. */ * is used when executing commands and EW_SILENT for interactive expanding. */