diff options
author | Nikolai Aleksandrovich Pavlov <kp-pav@yandex.ru> | 2017-07-09 11:40:46 +0300 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-07-09 10:40:46 +0200 |
commit | 702c94aacfdca34b71eadf753c21b3d92d886cf0 (patch) | |
tree | cc58c5a9727f6038a9f7bc3a4800cacbee01369f /test/functional/eval/map_functions_spec.lua | |
parent | 619838f85da24d692221ba7cc310d6839ebbe2a5 (diff) | |
download | rneovim-702c94aacfdca34b71eadf753c21b3d92d886cf0.tar.gz rneovim-702c94aacfdca34b71eadf753c21b3d92d886cf0.tar.bz2 rneovim-702c94aacfdca34b71eadf753c21b3d92d886cf0.zip |
mbyte: Fix crash when using multibyte chars in maparg() return (#6986)
This is a refactoring typo from #6947.
Fixes #6985
Combined with #6947 where typo was made it also fixes vim/vim#1827 which was
present in Neovim.
Diffstat (limited to 'test/functional/eval/map_functions_spec.lua')
-rw-r--r-- | test/functional/eval/map_functions_spec.lua | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/test/functional/eval/map_functions_spec.lua b/test/functional/eval/map_functions_spec.lua index a260522aa3..e914f674aa 100644 --- a/test/functional/eval/map_functions_spec.lua +++ b/test/functional/eval/map_functions_spec.lua @@ -1,11 +1,12 @@ - local helpers = require('test.functional.helpers')(after_each) + local clear = helpers.clear local eq = helpers.eq local eval = helpers.eval local funcs = helpers.funcs local nvim = helpers.nvim local source = helpers.source +local command = helpers.command describe('maparg()', function() before_each(clear) @@ -117,4 +118,42 @@ describe('maparg()', function() eq(1, map_dict['expr']) eq('i', map_dict['mode']) end) + + it('works with combining characters', function() + -- Using addacutes to make combining character better visible + local function ac(s) + local acute = '\204\129' -- U+0301 COMBINING ACUTE ACCENT + local ret = s:gsub('`', acute) + return ret + end + command(ac([[ + nnoremap a b` + nnoremap c` d + nnoremap e` f` + ]])) + eq(ac('b`'), funcs.maparg(ac('a'))) + eq(ac(''), funcs.maparg(ac('c'))) + eq(ac('d'), funcs.maparg(ac('c`'))) + eq(ac('f`'), funcs.maparg(ac('e`'))) + + local function acmap(lhs, rhs) + return { + lhs = ac(lhs), + rhs = ac(rhs), + + buffer = 0, + expr = 0, + mode = 'n', + noremap = 1, + nowait = 0, + sid = 0, + silent = 0, + } + end + + eq({}, funcs.maparg(ac('c'), 'n', 0, 1)) + eq(acmap('a', 'b`'), funcs.maparg(ac('a'), 'n', 0, 1)) + eq(acmap('c`', 'd'), funcs.maparg(ac('c`'), 'n', 0, 1)) + eq(acmap('e`', 'f`'), funcs.maparg(ac('e`'), 'n', 0, 1)) + end) end) |