aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick <patrick@bitscope.com>2016-07-01 15:35:57 +1000
committerPatrick <patrick@bitscope.com>2016-07-08 16:50:22 +1000
commit3e2daf7125242f647fc419f53f6cd55967db5ffa (patch)
tree39f494bcc322951caa3eea6e7a6900aca9a77328
parent0d5edcef4a34bd0de4cf1eb267b8a40ed12e32fa (diff)
downloadrneovim-3e2daf7125242f647fc419f53f6cd55967db5ffa.tar.gz
rneovim-3e2daf7125242f647fc419f53f6cd55967db5ffa.tar.bz2
rneovim-3e2daf7125242f647fc419f53f6cd55967db5ffa.zip
vim-patch:7.4.1140
Problem: Recognizing <sid> does not work when the language is Turkish. (Christian Brabandt) Solution: Use MB_STNICMP() instead of STNICMP(). https://github.com/vim/vim/commit/e266d6d664d6d743c79797af400b2c01ec746216 Note: Added new test
-rw-r--r--src/nvim/eval.c10
-rw-r--r--src/nvim/version.c2
-rw-r--r--test/functional/viml/lang_spec.lua22
3 files changed, 30 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index ac0daa226a..3594848a70 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -20155,11 +20155,15 @@ theend:
*/
static int eval_fname_script(char_u *p)
{
- if (p[0] == '<' && (STRNICMP(p + 1, "SID>", 4) == 0
- || STRNICMP(p + 1, "SNR>", 4) == 0))
+ // Use mb_stricmp() because in Turkish comparing the "I" may not work with
+ // the standard library function.
+ if (p[0] == '<' && (mb_strnicmp(p + 1, (char_u *)"SID>", 4) == 0
+ || mb_strnicmp(p + 1, (char_u *)"SNR>", 4) == 0)) {
return 5;
- if (p[0] == 's' && p[1] == ':')
+ }
+ if (p[0] == 's' && p[1] == ':') {
return 2;
+ }
return 0;
}
diff --git a/src/nvim/version.c b/src/nvim/version.c
index b2c6b332d1..cc0a9b80c6 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -554,7 +554,7 @@ static int included_patches[] = {
1143,
1142,
1141,
- // 1140,
+ 1140,
// 1139 NA
// 1138 NA
1137,
diff --git a/test/functional/viml/lang_spec.lua b/test/functional/viml/lang_spec.lua
new file mode 100644
index 0000000000..240fe58402
--- /dev/null
+++ b/test/functional/viml/lang_spec.lua
@@ -0,0 +1,22 @@
+local helpers = require('test.functional.helpers')(after_each)
+local clear, eval, eq = helpers.clear, helpers.eval, helpers.eq
+local execute, source = helpers.execute, helpers.source
+
+describe('turkish', function()
+ before_each(clear)
+
+ it('applies locale to \'i\' in `<SID>` comparison', function()
+ execute('lang ctype tr_TR.UTF-8')
+ if string.find(eval('v:errmsg'), '^E197: ') then
+ pending("Locale tr_TR.UTF-8 not supported")
+ return
+ end
+ source([[
+ func! <sid>_dummy_function()
+ echo 1
+ endfunc
+ au VimEnter * call <sid>_dummy_function()
+ ]])
+ eq(nil, string.find(eval('v:errmsg'), '^E129'))
+ end)
+end)