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(&regmatch, 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(&regmatch, 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(&regmatch, (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(&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);
                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 -- [email protected] -- 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    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui