# HG changeset patch # User Christian Brabandt # Date 1491738303 -7200 # Node ID f0fbebf19b80753819221d6e9b9f96979ffa87b4 # Parent ac6a09f23e1b906733ad8bc2adcdecfd70ee0394 patch 8.0.0554: toupper and tolower don't work properly for Turkish commit https://github.com/vim/vim/commit/1cc482069a3407132aeb43a55d6dc284153e79c7 Author: Bram Moolenaar 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. diff --git a/src/charset.c b/src/charset.c --- 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 --- 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 --- 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,