summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2013-03-19 17:42:15 +0100
committerBram Moolenaar <bram@vim.org>2013-03-19 17:42:15 +0100
commitc275faf3889a4338f35baef2020dc2f92cb96832 (patch)
tree22c5c1cff8b19c388db44969120db4c37689bc44
parentadad36ab546b193f843230a1dd346e87d7ec409c (diff)
downloadvim-c275faf3889a4338f35baef2020dc2f92cb96832.tar.gz
updated for version 7.3.873v7.3.873v7-3-873
Problem: Cannot easily use :s to make title case. Solution: Have "\L\u" result in title case. (James McCoy)
-rw-r--r--src/regexp.c35
-rw-r--r--src/testdir/test79.inbin2575 -> 2663 bytes
-rw-r--r--src/testdir/test79.okbin401 -> 421 bytes
-rw-r--r--src/testdir/test80.in4
-rw-r--r--src/testdir/test80.ok4
-rw-r--r--src/version.c2
6 files changed, 31 insertions, 14 deletions
diff --git a/src/regexp.c b/src/regexp.c
index 6ecb6dd7..e456b5d5 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -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)
diff --git a/src/testdir/test79.in b/src/testdir/test79.in
index f83b6b6e..c50b92fa 100644
--- a/src/testdir/test79.in
+++ b/src/testdir/test79.in
Binary files differ
diff --git a/src/testdir/test79.ok b/src/testdir/test79.ok
index 31ad3a41..bb30d140 100644
--- a/src/testdir/test79.ok
+++ b/src/testdir/test79.ok
Binary files differ
diff --git a/src/testdir/test80.in b/src/testdir/test80.in
index df4afbb1..7f6ecfcc 100644
--- a/src/testdir/test80.in
+++ b/src/testdir/test80.in
@@ -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
diff --git a/src/testdir/test80.ok b/src/testdir/test80.ok
index b08d3036..45b1d1d0 100644
--- a/src/testdir/test80.ok
+++ b/src/testdir/test80.ok
@@ -27,6 +27,8 @@ u
vv
w\w
x x
+YyyY
+zZZz
TEST_2:
@@ -55,6 +57,8 @@ u
u
vv
w\w
+XxxX
+yYYy
TEST_3:
diff --git a/src/version.c b/src/version.c
index 072005f9..82eca728 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 873,
+/**/
872,
/**/
871,