aboutsummaryrefslogtreecommitdiff
path: root/test/functional/eval/map_functions_spec.lua
diff options
context:
space:
mode:
authorNikolai Aleksandrovich Pavlov <kp-pav@yandex.ru>2017-07-09 11:40:46 +0300
committerJustin M. Keyes <justinkz@gmail.com>2017-07-09 10:40:46 +0200
commit702c94aacfdca34b71eadf753c21b3d92d886cf0 (patch)
treecc58c5a9727f6038a9f7bc3a4800cacbee01369f /test/functional/eval/map_functions_spec.lua
parent619838f85da24d692221ba7cc310d6839ebbe2a5 (diff)
downloadrneovim-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.lua41
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)