| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.264 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 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. |
| Files: src/vim.h, src/misc1.c, src/misc2.c |
| |
| |
| |
| |
| |
| *** 816,821 **** |
| --- 816,822 ---- |
| #define EW_PATH 0x80 /* search in 'path' too */ |
| #define EW_ICASE 0x100 /* ignore case */ |
| #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 |
| * is used when executing commands and EW_SILENT for interactive expanding. */ |
| |
| |
| |
| |
| *** 9119,9125 **** |
| * all entries found with "matchname". */ |
| if ((p[0] != '.' || starts_with_dot) |
| && (matchname == NULL |
| ! || vim_regexec(®match, p, (colnr_T)0))) |
| { |
| #ifdef WIN3264 |
| STRCPY(s, p); |
| --- 9119,9127 ---- |
| * all entries found with "matchname". */ |
| if ((p[0] != '.' || starts_with_dot) |
| && (matchname == NULL |
| ! || vim_regexec(®match, p, (colnr_T)0) |
| ! || ((flags & EW_NOTWILD) |
| ! && fnamencmp(path + (s - buf), p, e - s) == 0))) |
| { |
| #ifdef WIN3264 |
| STRCPY(s, p); |
| |
| *** 9323,9329 **** |
| e = p; |
| *e = NUL; |
| |
| ! /* now we have one wildcard component between "s" and "e" */ |
| /* Remove backslashes between "wildoff" and the start of the wildcard |
| * component. */ |
| for (p = buf + wildoff; p < s; ++p) |
| --- 9325,9331 ---- |
| e = p; |
| *e = NUL; |
| |
| ! /* Now we have one wildcard component between "s" and "e". */ |
| /* Remove backslashes between "wildoff" and the start of the wildcard |
| * component. */ |
| for (p = buf + wildoff; p < s; ++p) |
| |
| *** 9390,9396 **** |
| if (dp == NULL) |
| break; |
| if ((dp->d_name[0] != '.' || starts_with_dot) |
| ! && vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0)) |
| { |
| STRCPY(s, dp->d_name); |
| len = STRLEN(buf); |
| --- 9392,9400 ---- |
| if (dp == NULL) |
| break; |
| if ((dp->d_name[0] != '.' || starts_with_dot) |
| ! && (vim_regexec(®match, (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); |
| len = STRLEN(buf); |
| |
| |
| |
| *** 4653,4661 **** |
| { |
| if (r_ptr[0] == '\\' && r_ptr[1] == ';') |
| { |
| ! /* overwrite the escape char, |
| ! * use STRLEN(r_ptr) to move the trailing '\0' |
| ! */ |
| STRMOVE(r_ptr, r_ptr + 1); |
| r_ptr++; |
| } |
| --- 4653,4660 ---- |
| { |
| if (r_ptr[0] == '\\' && r_ptr[1] == ';') |
| { |
| ! /* Overwrite the escape char, |
| ! * use STRLEN(r_ptr) to move the trailing '\0'. */ |
| STRMOVE(r_ptr, r_ptr + 1); |
| r_ptr++; |
| } |
| |
| *** 4914,4923 **** |
| stackp->ffs_filearray_size = 0; |
| } |
| else |
| expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, |
| &stackp->ffs_filearray_size, |
| &stackp->ffs_filearray, |
| ! EW_DIR|EW_ADDSLASH|EW_SILENT); |
| |
| stackp->ffs_filearray_cur = 0; |
| stackp->ffs_stage = 0; |
| --- 4913,4925 ---- |
| stackp->ffs_filearray_size = 0; |
| } |
| 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, |
| &stackp->ffs_filearray_size, |
| &stackp->ffs_filearray, |
| ! EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD); |
| |
| stackp->ffs_filearray_cur = 0; |
| stackp->ffs_stage = 0; |
| |
| |
| |
| *** 711,712 **** |
| --- 711,714 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 264, |
| /**/ |
| |
| -- |
| CUSTOMER: You're not fooling anyone y'know. Look, isn't there something |
| you can do? |
| DEAD PERSON: I feel happy... I feel happy. |
| [whop] |
| CUSTOMER: Ah, thanks very much. |
| MORTICIAN: Not at all. See you on Thursday. |
| CUSTOMER: Right. |
| The Quest for the Holy Grail (Monty Python) |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |