aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/mbyte.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2017-04-08 16:45:38 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2017-04-10 12:01:40 +0200
commitdb9ef6263ec5b7885782ccf0a93e06b0c71f6944 (patch)
treeb8be451ab6edf79c97f198be7f6dddaf004f8455 /src/nvim/mbyte.c
parent3b88e37b839fede81f40b5454490b6b8a89db5b7 (diff)
downloadrneovim-db9ef6263ec5b7885782ccf0a93e06b0c71f6944.tar.gz
rneovim-db9ef6263ec5b7885782ccf0a93e06b0c71f6944.tar.bz2
rneovim-db9ef6263ec5b7885782ccf0a93e06b0c71f6944.zip
mbyte: replace vim_tolower with mb_tolower handling locale correctly
Diffstat (limited to 'src/nvim/mbyte.c')
-rw-r--r--src/nvim/mbyte.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c
index 460528b85f..5f5abbeac5 100644
--- a/src/nvim/mbyte.c
+++ b/src/nvim/mbyte.c
@@ -1174,11 +1174,16 @@ int utf_fold(int a)
return utf_convert(a, foldCase, ARRAY_SIZE(foldCase));
}
+// Vim's own character class functions. These exist because many library
+// islower()/toupper() etc. do not work properly: they crash when used with
+// invalid values or can't handle latin1 when the locale is C.
+// Speed is most important here.
+
/*
* Return the upper-case equivalent of "a", which is a UCS-4 character. Use
* simple case folding.
*/
-int utf_toupper(int a)
+int mb_toupper(int a)
{
/* If 'casemap' contains "keepascii" use ASCII style toupper(). */
if (a < 128 && (cmp_flags & CMP_KEEPASCII))
@@ -1198,17 +1203,17 @@ int utf_toupper(int a)
return utf_convert(a, toUpper, ARRAY_SIZE(toUpper));
}
-bool utf_islower(int a)
+bool mb_islower(int a)
{
/* German sharp s is lower case but has no upper case equivalent. */
- return (utf_toupper(a) != a) || a == 0xdf;
+ return (mb_toupper(a) != a) || a == 0xdf;
}
/*
* Return the lower-case equivalent of "a", which is a UCS-4 character. Use
* simple case folding.
*/
-int utf_tolower(int a)
+int mb_tolower(int a)
{
/* If 'casemap' contains "keepascii" use ASCII style tolower(). */
if (a < 128 && (cmp_flags & CMP_KEEPASCII))
@@ -1228,9 +1233,9 @@ int utf_tolower(int a)
return utf_convert(a, toLower, ARRAY_SIZE(toLower));
}
-bool utf_isupper(int a)
+bool mb_isupper(int a)
{
- return utf_tolower(a) != a;
+ return mb_tolower(a) != a;
}
static int utf_strnicmp(const char_u *s1, const char_u *s2, size_t n1,