]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1574: Dead code in mbyte.c v9.1.1574
authorDamien Lejay <damien@lejay.be>
Mon, 21 Jul 2025 18:25:33 +0000 (20:25 +0200)
committerChristian Brabandt <cb@256bit.org>
Mon, 21 Jul 2025 18:25:33 +0000 (20:25 +0200)
Problem:  Dead code in mbyte.c
Solution: Delete the dead wcwidth()/iswprint() code
          (Damien Lejay)

These library calls have been disabled since patch 6.2.446 (2002) due to
display issues with Hebrew. They are also non-portable: wcwidth() is a
POSIX function and not available on MSVC or other non-POSIX platforms.
Keeping this code path adds complexity without benefit.

closes: #17811

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/mbyte.c
src/version.c

index cc8d628ed59b88192b771c3d3b5f28825360acfa..3255277258f1cfa4a83fa199101a7070cd9e671d 100644 (file)
 # include <wchar.h>
 #endif
 
-#if 0
-// This has been disabled, because several people reported problems with the
-// wcwidth() and iswprint() library functions, esp. for Hebrew.
-# ifdef __STDC_ISO_10646__
-#  define USE_WCHAR_FUNCTIONS
-# endif
-#endif
-
 static int dbcs_char2len(int c);
 static int dbcs_char2bytes(int c, char_u *buf);
 static int dbcs_ptr2len(char_u *p);
@@ -1593,11 +1585,7 @@ utf_char2cells(int c)
 #ifdef FEAT_EVAL
     // Use the value from setcellwidths() at 0x80 and higher, unless the
     // character is not printable.
-    if (c >= 0x80 &&
-# ifdef USE_WCHAR_FUNCTIONS
-           wcwidth(c) >= 1 &&
-# endif
-           vim_isprintc(c))
+    if (c >= 0x80 && vim_isprintc(c))
     {
        int n = cw_value(c);
        if (n != 0)
@@ -1607,25 +1595,10 @@ utf_char2cells(int c)
 
     if (c >= 0x100)
     {
-#ifdef USE_WCHAR_FUNCTIONS
-       int     n;
-
-       /*
-        * Assume the library function wcwidth() works better than our own
-        * stuff.  It should return 1 for ambiguous width chars!
-        */
-       n = wcwidth(c);
-
-       if (n < 0)
-           return 6;           // unprintable, displays <xxxx>
-       if (n > 1)
-           return n;
-#else
        if (!utf_printable(c))
            return 6;           // unprintable, displays <xxxx>
        if (intable(doublewidth, sizeof(doublewidth), c))
            return 2;
-#endif
        if (p_emoji && intable(emoji_wide, sizeof(emoji_wide), c))
            return 2;
     }
@@ -2712,12 +2685,6 @@ utf_iscomposing(int c)
     int
 utf_printable(int c)
 {
-#ifdef USE_WCHAR_FUNCTIONS
-    /*
-     * Assume the iswprint() library function works better than our own stuff.
-     */
-    return iswprint(c);
-#else
     // Sorted list of non-overlapping intervals.
     // 0xd800-0xdfff is reserved for UTF-16, actually illegal.
     static struct interval nonprint[] =
@@ -2728,7 +2695,6 @@ utf_printable(int c)
     };
 
     return !intable(nonprint, sizeof(nonprint), c);
-#endif
 }
 
 // Sorted list of non-overlapping intervals of all Emoji characters,
index 251b4decb0e6f9cf2b04441973b032c27ed51f05..f90728701aae8ae042345b3448890f1024614b27 100644 (file)
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1574,
 /**/
     1573,
 /**/