From 5056d40b16a3a97fc927c81ca3aa8f8bd6e44e4b Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sat, 8 Sep 2018 09:23:19 +0200 Subject: getchar: allow in mapping --- src/nvim/getchar.c | 10 ++++++++-- test/functional/ex_cmds/cmd_map_spec.lua | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 8f1e5bb6c1..061b220f0e 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -4315,8 +4315,14 @@ char_u * getcmdkeycmd(int promptc, void *cookie, int indent) EMSG(e_cmdmap_repeated); aborted = true; } else if (IS_SPECIAL(c1)) { - EMSG2(e_cmdmap_key, get_special_key_name(c1, cmod)); - aborted = true; + if (c1 == K_SNR) { + ga_append(&line_ga, (char)K_SPECIAL); + ga_append(&line_ga, (char)KS_EXTRA); + ga_append(&line_ga, (char)KE_SNR); + } else { + EMSG2(e_cmdmap_key, get_special_key_name(c1, cmod)); + aborted = true; + } } else { ga_append(&line_ga, (char)c1); } diff --git a/test/functional/ex_cmds/cmd_map_spec.lua b/test/functional/ex_cmds/cmd_map_spec.lua index acb76e382d..67b3ab49d6 100644 --- a/test/functional/ex_cmds/cmd_map_spec.lua +++ b/test/functional/ex_cmds/cmd_map_spec.lua @@ -8,6 +8,7 @@ local eval = helpers.eval local funcs = helpers.funcs local insert = helpers.insert local exc_exec = helpers.exc_exec +local source = helpers.source local Screen = require('test.functional.ui.screen') describe('mappings with ', function() @@ -794,5 +795,16 @@ describe('mappings with ', function() ]]) end) + it("works with mappings", function() + source([[ + map call do_it() + function! s:do_it() + let g:x = 10 + endfunction + ]]) + feed('') + eq('', eval('v:errmsg')) + eq(10, eval('g:x')) + end) end) -- cgit