mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
fix(terminal): don't send unknown special keys to terminal
Special keys are negative integers, so sending them to terminal leads to strange behavior.
This commit is contained in:
parent
98b22867c3
commit
6b76fd9109
@ -766,7 +766,7 @@ void terminal_send_key(Terminal *term, int c)
|
||||
|
||||
if (key) {
|
||||
vterm_keyboard_key(term->vt, key, mod);
|
||||
} else {
|
||||
} else if (!IS_SPECIAL(c)) {
|
||||
vterm_keyboard_unichar(term->vt, (uint32_t)c, mod);
|
||||
}
|
||||
}
|
||||
|
@ -431,6 +431,30 @@ it('terminal truncates number of composing characters to 5', function()
|
||||
retry(nil, nil, function() eq('a' .. composing:rep(5), meths.get_current_line()) end)
|
||||
end)
|
||||
|
||||
describe('terminal input', function()
|
||||
before_each(function()
|
||||
clear()
|
||||
exec_lua([[
|
||||
_G.input_data = ''
|
||||
vim.api.nvim_open_term(0, { on_input = function(_, _, _, data)
|
||||
_G.input_data = _G.input_data .. data
|
||||
end })
|
||||
]])
|
||||
command('startinsert')
|
||||
poke_eventloop()
|
||||
end)
|
||||
|
||||
it('<C-Space> is sent as NUL byte', function()
|
||||
feed('aaa<C-Space>bbb')
|
||||
eq('aaa\0bbb', exec_lua([[return _G.input_data]]))
|
||||
end)
|
||||
|
||||
it('unknown special keys are not sent', function()
|
||||
feed('aaa<Help>bbb')
|
||||
eq('aaabbb', exec_lua([[return _G.input_data]]))
|
||||
end)
|
||||
end)
|
||||
|
||||
if is_os('win') then
|
||||
describe(':terminal in Windows', function()
|
||||
local screen
|
||||
|
Loading…
Reference in New Issue
Block a user