changeset 11337:f0fbebf19b80 v8.0.0554

patch 8.0.0554: toupper and tolower don't work properly for Turkish commit https://github.com/vim/vim/commit/1cc482069a3407132aeb43a55d6dc284153e79c7 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 9 13:41:59 2017 +0200 patch 8.0.0554: toupper and tolower don't work properly for Turkish 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.
author Christian Brabandt <cb@256bit.org>
date Sun, 09 Apr 2017 13:45:03 +0200
parents ac6a09f23e1b
children 55c85b4497cc
files src/charset.c src/testdir/test_normal.vim src/version.c
diffstat 3 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- 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,