]> granicus.if.org Git - vim/commitdiff
updated for version 7.1-061 v7.1.061
authorBram Moolenaar <Bram@vim.org>
Sat, 11 Aug 2007 11:58:23 +0000 (11:58 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 11 Aug 2007 11:58:23 +0000 (11:58 +0000)
src/mbyte.c
src/regexp.c
src/version.c
src/vim.h

index 7edab446511c225ab1cfbd0784f64914ee6f52f1..bf6fbb339978d9bdee3f769ea15eff70401db950 100644 (file)
@@ -2320,7 +2320,7 @@ mb_strnicmp(s1, s2, nn)
                /* Single byte: first check normally, then with ignore case. */
                if (s1[i] != s2[i])
                {
-                   cdiff = TOLOWER_LOC(s1[i]) - TOLOWER_LOC(s2[i]);
+                   cdiff = MB_TOLOWER(s1[i]) - MB_TOLOWER(s2[i]);
                    if (cdiff != 0)
                        return cdiff;
                }
index 6db9139269d8e4c1eb2590657b1da58f77a58f03..b62f877a824633cc165fca46ce40dae464065e35 100644 (file)
@@ -2220,7 +2220,7 @@ collection:
                                break;
                            case CLASS_LOWER:
                                for (cu = 1; cu <= 255; cu++)
-                                   if (islower(cu))
+                                   if (MB_ISLOWER(cu))
                                        regc(cu);
                                break;
                            case CLASS_PRINT:
@@ -2240,7 +2240,7 @@ collection:
                                break;
                            case CLASS_UPPER:
                                for (cu = 1; cu <= 255; cu++)
-                                   if (isupper(cu))
+                                   if (MB_ISUPPER(cu))
                                        regc(cu);
                                break;
                            case CLASS_XDIGIT:
@@ -3465,7 +3465,7 @@ vim_regexec_both(line, col)
                        (enc_utf8 && utf_fold(prog->regstart) == utf_fold(c)))
                        || (c < 255 && prog->regstart < 255 &&
 #endif
-                           TOLOWER_LOC(prog->regstart) == TOLOWER_LOC(c)))))
+                           MB_TOLOWER(prog->regstart) == MB_TOLOWER(c)))))
            retval = regtry(prog, col);
        else
            retval = 0;
@@ -4200,7 +4200,7 @@ regmatch(scan)
 #ifdef FEAT_MBYTE
                            !enc_utf8 &&
 #endif
-                           TOLOWER_LOC(*opnd) != TOLOWER_LOC(*reginput))))
+                           MB_TOLOWER(*opnd) != MB_TOLOWER(*reginput))))
                    status = RA_NOMATCH;
                else if (*opnd == NUL)
                {
@@ -4733,10 +4733,10 @@ regmatch(scan)
                    rst.nextb = *OPERAND(next);
                    if (ireg_ic)
                    {
-                       if (isupper(rst.nextb))
-                           rst.nextb_ic = TOLOWER_LOC(rst.nextb);
+                       if (MB_ISUPPER(rst.nextb))
+                           rst.nextb_ic = MB_TOLOWER(rst.nextb);
                        else
-                           rst.nextb_ic = TOUPPER_LOC(rst.nextb);
+                           rst.nextb_ic = MB_TOUPPER(rst.nextb);
                    }
                    else
                        rst.nextb_ic = rst.nextb;
@@ -5558,11 +5558,12 @@ do_class:
            int     cu, cl;
 
            /* This doesn't do a multi-byte character, because a MULTIBYTECODE
-            * would have been used for it. */
+            * would have been used for it.  It does handle single-byte
+            * characters, such as latin1. */
            if (ireg_ic)
            {
-               cu = TOUPPER_LOC(*opnd);
-               cl = TOLOWER_LOC(*opnd);
+               cu = MB_TOUPPER(*opnd);
+               cl = MB_TOLOWER(*opnd);
                while (count < maxcount && (*scan == cu || *scan == cl))
                {
                    count++;
@@ -6490,10 +6491,10 @@ cstrchr(s, c)
        cc = utf_fold(c);
     else
 #endif
-        if (isupper(c))
-       cc = TOLOWER_LOC(c);
-    else if (islower(c))
-       cc = TOUPPER_LOC(c);
+        if (MB_ISUPPER(c))
+       cc = MB_TOLOWER(c);
+    else if (MB_ISLOWER(c))
+       cc = MB_TOUPPER(c);
     else
        return vim_strchr(s, c);
 
index 4bcde445233db7c17d2f396566f2c4b342d3c990..cc32d9a4ec073df74cb5934c73c4203aa8a0d04c 100644 (file)
@@ -666,6 +666,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    61,
 /**/
     60,
 /**/
index 16331e190477abdc6f7d2b2028b493d1cf5f5c92..05efc9a20e99b7adf55c40f91d8006643a22d078 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1380,8 +1380,14 @@ typedef enum
 #endif
 
 #ifdef FEAT_MBYTE
-# define MB_STRICMP(d, s)      (has_mbyte ? mb_strnicmp((char_u *)(d), (char_u *)(s), (int)MAXCOL) : STRICMP((d), (s)))
-# define MB_STRNICMP(d, s, n)  (has_mbyte ? mb_strnicmp((char_u *)(d), (char_u *)(s), (int)(n)) : STRNICMP((d), (s), (n)))
+/* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
+ * encoding because mb_stricmp() takes care of all ascii and non-ascii
+ * encodings, including characters with umluats in latin1, etc., while
+ * STRICMP() only handles the system locale version, which often does not
+ * handle non-ascii properly. */
+
+# define MB_STRICMP(d, s)      mb_strnicmp((char_u *)(d), (char_u *)(s), (int)MAXCOL)
+# define MB_STRNICMP(d, s, n)  mb_strnicmp((char_u *)(d), (char_u *)(s), (int)(n))
 #else
 # define MB_STRICMP(d, s)      STRICMP((d), (s))
 # define MB_STRNICMP(d, s, n)  STRNICMP((d), (s), (n))