summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-04-09 13:41:59 +0200
committerBram Moolenaar <Bram@vim.org>2017-04-09 13:41:59 +0200
commit1cc482069a3407132aeb43a55d6dc284153e79c7 (patch)
tree704149ab8249608dfd5e6d59ead636b38d533077
parent9f4de1f5435b900e43e19766da1a5bed4686cf44 (diff)
downloadvim-git-1cc482069a3407132aeb43a55d6dc284153e79c7.tar.gz
patch 8.0.0554: toupper and tolower don't work properly for Turkishv8.0.0554
Problem: Toupper and tolower don't work properly for Turkish when 'casemap' contains "keepascii". (Bjorn Linse) Solution: When 'casemap' contains "keepascii" use ASCII toupper/tolower.
-rw-r--r--src/charset.c4
-rw-r--r--src/testdir/test_normal.vim11
-rw-r--r--src/version.c2
3 files changed, 17 insertions, 0 deletions
diff --git a/src/charset.c b/src/charset.c
index cdb9e48e4..d649179dd 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1733,6 +1733,8 @@ vim_toupper(int c)
if (enc_latin1like)
return latin1upper[c];
}
+ if (c < 0x80 && (cmp_flags & CMP_KEEPASCII))
+ return TOUPPER_ASC(c);
return TOUPPER_LOC(c);
}
@@ -1757,6 +1759,8 @@ vim_tolower(int c)
if (enc_latin1like)
return latin1lower[c];
}
+ if (c < 0x80 && (cmp_flags & CMP_KEEPASCII))
+ return TOLOWER_ASC(c);
return TOLOWER_LOC(c);
}
#endif
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index aa82992a7..155ddbfb3 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -1619,6 +1619,17 @@ fun! Test_normal30_changecase()
call assert_equal("i\u0131", getline(1))
call assert_equal("i\u0131", tolower("iI"))
+ set casemap&
+ call setline(1, 'iI')
+ 1normal gUU
+ call assert_equal("II", getline(1))
+ call assert_equal("II", toupper("iI"))
+
+ call setline(1, 'iI')
+ 1normal guu
+ call assert_equal("ii", getline(1))
+ call assert_equal("ii", tolower("iI"))
+
lang en_US.UTF-8
catch /E197:/
" can't use Turkish locale
diff --git a/src/version.c b/src/version.c
index 9fb32c945..578cfe3bf 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 554,
+/**/
553,
/**/
552,