To: [email protected]
Subject: Patch 7.4b.006
Fcc: outbox
From: Bram Moolenaar <[email protected]>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.4b.006 (after 7.3.1295)
Problem:    Using \{n,m} in an autocommand pattern no longer works.
           Specifically, mutt temp files are not recognized. (Gary Johnson)
Solution:   Make \\\{n,m\} work.
Files:      runtime/doc/autocmd.txt, src/fileio.c


*** ../vim-7.4b.005/runtime/doc/autocmd.txt     2013-07-28 16:17:49.000000000 +0200
--- runtime/doc/autocmd.txt     2013-08-02 14:57:51.000000000 +0200
***************
*** 961,966 ****
--- 961,969 ----
       \,      matches a ','
       { }     like \( \) in a |pattern|
       ,       inside { }: like \| in a |pattern|
+       \}      literal }
+       \{      literal {
+       \\\{n,m\}  like \{n,m} in a |pattern|
       \       special meaning like in a |pattern|
       [ch]    matches 'c' or 'h'
       [^ch]   match any character but 'c' and 'h'
*** ../vim-7.4b.005/src/fileio.c        2013-07-24 14:32:11.000000000 +0200
--- src/fileio.c        2013-08-02 15:09:34.000000000 +0200
***************
*** 10327,10333 ****
                * Don't unescape \, * and others that are also special in a
                * regexp.
                * An escaped { must be unescaped since we use magic not
!                * verymagic.
                */
               if (*++p == '?'
 #ifdef BACKSLASH_IN_FILENAME
--- 10327,10333 ----
                * Don't unescape \, * and others that are also special in a
                * regexp.
                * An escaped { must be unescaped since we use magic not
!                * verymagic.  Use "\\\{n,m\}"" to get "\{n,m}".
                */
               if (*++p == '?'
 #ifdef BACKSLASH_IN_FILENAME
***************
*** 10337,10344 ****
                   reg_pat[i++] = '?';
               else
                   if (*p == ',' || *p == '%' || *p == '#'
!                                                   || *p == ' ' || *p == '{')
                       reg_pat[i++] = *p;
                   else
                   {
                       if (allow_dirs != NULL && vim_ispathsep(*p)
--- 10337,10350 ----
                   reg_pat[i++] = '?';
               else
                   if (*p == ',' || *p == '%' || *p == '#'
!                                      || *p == ' ' || *p == '{' || *p == '}')
                       reg_pat[i++] = *p;
+                   else if (*p == '\\' && p[1] == '\\' && p[2] == '{')
+                   {
+                       reg_pat[i++] = '\\';
+                       reg_pat[i++] = '{';
+                       p += 2;
+                   }
                   else
                   {
                       if (allow_dirs != NULL && vim_ispathsep(*p)
*** ../vim-7.4b.005/src/version.c       2013-08-02 14:15:06.000000000 +0200
--- src/version.c       2013-08-02 15:20:51.000000000 +0200
***************
*** 729,730 ****
--- 729,732 ----
 {   /* Add new patch number below this line */
+ /**/
+     6,
 /**/

--
Seen it all, done it all, can't remember most of it.

/// 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    ///