To: vim_dev@googlegroups.com Subject: Patch 7.3.264 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.3.263/src/vim.h 2011-07-20 15:04:52.000000000 +0200 --- src/vim.h 2011-07-27 16:21:38.000000000 +0200 *************** *** 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. */ *** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200 --- src/misc1.c 2011-07-27 17:24:39.000000000 +0200 *************** *** 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); *** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200 --- src/misc2.c 2011-07-27 17:21:10.000000000 +0200 *************** *** 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; *** ../vim-7.3.263/src/version.c 2011-07-27 14:15:41.000000000 +0200 --- src/version.c 2011-07-27 17:25:44.000000000 +0200 *************** *** 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 ///