]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.873 v7.3.873
authorBram Moolenaar <Bram@vim.org>
Tue, 19 Mar 2013 16:42:15 +0000 (17:42 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 19 Mar 2013 16:42:15 +0000 (17:42 +0100)
Problem:    Cannot easily use :s to make title case.
Solution:   Have "\L\u" result in title case. (James McCoy)

src/regexp.c
src/testdir/test79.in
src/testdir/test79.ok
src/testdir/test80.in
src/testdir/test80.ok
src/version.c

index 6ecb6dd7a3bf9f77be93a8e7a7955fcd888a4899..e456b5d5f397222eb6850e03439a94941f8e5c1a 100644 (file)
@@ -7185,7 +7185,8 @@ vim_regsub_both(source, dest, copy, magic, backslash)
     int                c;
     int                cc;
     int                no = -1;
-    fptr_T     func = (fptr_T)NULL;
+    fptr_T     func_all = (fptr_T)NULL;
+    fptr_T     func_one = (fptr_T)NULL;
     linenr_T   clnum = 0;      /* init for GCC */
     int                len = 0;        /* init for GCC */
 #ifdef FEAT_EVAL
@@ -7318,16 +7319,16 @@ vim_regsub_both(source, dest, copy, magic, backslash)
            {
                switch (*src++)
                {
-               case 'u':   func = (fptr_T)do_upper;
+               case 'u':   func_one = (fptr_T)do_upper;
                            continue;
-               case 'U':   func = (fptr_T)do_Upper;
+               case 'U':   func_all = (fptr_T)do_Upper;
                            continue;
-               case 'l':   func = (fptr_T)do_lower;
+               case 'l':   func_one = (fptr_T)do_lower;
                            continue;
-               case 'L':   func = (fptr_T)do_Lower;
+               case 'L':   func_all = (fptr_T)do_Lower;
                            continue;
                case 'e':
-               case 'E':   func = (fptr_T)NULL;
+               case 'E':   func_one = func_all = (fptr_T)NULL;
                            continue;
                }
            }
@@ -7380,11 +7381,14 @@ vim_regsub_both(source, dest, copy, magic, backslash)
 #endif
 
            /* Write to buffer, if copy is set. */
-           if (func == (fptr_T)NULL)   /* just copy */
-               cc = c;
-           else
+           if (func_one != (fptr_T)NULL)
                /* Turbo C complains without the typecast */
-               func = (fptr_T)(func(&cc, c));
+               func_one = (fptr_T)(func_one(&cc, c));
+           else if (func_all != (fptr_T)NULL)
+               /* Turbo C complains without the typecast */
+               func_all = (fptr_T)(func_all(&cc, c));
+           else /* just copy */
+               cc = c;
 
 #ifdef FEAT_MBYTE
            if (has_mbyte)
@@ -7495,11 +7499,14 @@ vim_regsub_both(source, dest, copy, magic, backslash)
 #endif
                                c = *s;
 
-                           if (func == (fptr_T)NULL)   /* just copy */
-                               cc = c;
-                           else
+                           if (func_one != (fptr_T)NULL)
                                /* Turbo C complains without the typecast */
-                               func = (fptr_T)(func(&cc, c));
+                               func_one = (fptr_T)(func_one(&cc, c));
+                           else if (func_all != (fptr_T)NULL)
+                               /* Turbo C complains without the typecast */
+                               func_all = (fptr_T)(func_all(&cc, c));
+                           else /* just copy */
+                               cc = c;
 
 #ifdef FEAT_MBYTE
                            if (has_mbyte)
index f83b6b6e2265fe6f2581e015e3e0e94c01ed3fa6..c50b92fa4c9e2cd900219a52f85e1a767f9ba00b 100644 (file)
Binary files a/src/testdir/test79.in and b/src/testdir/test79.in differ
index 31ad3a41e46912727705358d815ae596c8a19a7a..bb30d140525facb55d0b400578271a9d90da5534 100644 (file)
Binary files a/src/testdir/test79.ok and b/src/testdir/test79.ok differ
index df4afbb1d2002f45444e1943177f2424a93df758..7f6ecfccb5da3941fbd7a91f1013bd9df48b698f 100644 (file)
@@ -35,6 +35,8 @@ STARTTEST
 :$put =substitute('vVv', 'V', \"\b\", '')
 :$put =substitute('wWw', 'W', \"\\\", '')
 :$put =substitute('xXx', 'X', \"\r\", '')
+:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
+:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
 /^TEST_2
 ENDTEST
 
@@ -67,6 +69,8 @@ STARTTEST
 :$put =substitute('uUu', 'U', \"\n\", '')
 :$put =substitute('vVv', 'V', \"\b\", '')
 :$put =substitute('wWw', 'W', \"\\\", '')
+:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
+:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
 /^TEST_3
 ENDTEST
 
index b08d3036f35c497f4794d094dd49b99b0b9d0052..45b1d1d0f102e1a5b58177f94dcd65e46d509cff 100644 (file)
@@ -27,6 +27,8 @@ u
 v\bv
 w\w
 x\rx
+YyyY
+zZZz
 
 
 TEST_2:
@@ -55,6 +57,8 @@ u
 u
 v\bv
 w\w
+XxxX
+yYYy
 
 
 TEST_3:
index 072005f97c7cd825c64af35846e263c5fe1cf658..82eca7282e8f2906a941451b5d3f3da2698a6ab3 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    873,
 /**/
     872,
 /**/