From 5ce35abae6427dac7ac2b147bae8f16adcd8ddff Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 4 Nov 2021 21:43:05 +0800 Subject: fix(input): never reinterpret unmapped ALT- chrods in Terminal mode (#16222) --- test/functional/editor/meta_key_spec.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'test') diff --git a/test/functional/editor/meta_key_spec.lua b/test/functional/editor/meta_key_spec.lua index c219204409..2280f5bb24 100644 --- a/test/functional/editor/meta_key_spec.lua +++ b/test/functional/editor/meta_key_spec.lua @@ -1,6 +1,8 @@ local helpers = require('test.functional.helpers')(after_each) local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert local command = helpers.command +local exec_lua = helpers.exec_lua +local eval = helpers.eval local expect = helpers.expect local funcs = helpers.funcs local eq = helpers.eq @@ -61,4 +63,30 @@ describe('meta-keys #8226 #13042', function() feed('u') expect('hello') end) + + it('ALT/META terminal-mode', function() + exec_lua([[ + _G.input_data = '' + vim.api.nvim_open_term(0, { on_input = function(_, _, _, data) + _G.input_data = _G.input_data .. vim.fn.strtrans(data) + end }) + ]]) + -- Mapped ALT-chord behaves as mapped. + command('tnoremap meta-l') + command('tnoremap alt-j') + feed('i xxx ') + eq('meta-l xxx alt-j', exec_lua([[return _G.input_data]])) + -- Unmapped ALT-chord is sent to terminal as-is. #16220 + exec_lua([[_G.input_data = '']]) + command('tunmap ') + feed('') + local meta_l_seq = exec_lua([[return _G.input_data]]) + command('tnoremap ') + feed('yyy') + eq(meta_l_seq .. 'yyy' .. meta_l_seq .. 'alt-j', exec_lua([[return _G.input_data]])) + eq('t', eval('mode(1)')) + feed('j') + eq({ 0, 2, 1, 0, }, funcs.getpos('.')) + eq('nt', eval('mode(1)')) + end) end) -- cgit