mirror of
https://github.com/neovim/neovim.git
synced 2026-04-24 08:15:41 +00:00
'cpoptions': remove "<" flag; ignore <special>
Closes #6937 "nvim_get_keymap output is unreliable"
This commit is contained in:
@@ -256,40 +256,38 @@ describe('get_keymap', function()
|
||||
return ret
|
||||
end
|
||||
|
||||
command('set cpo-=< cpo+=B')
|
||||
command('set cpo+=B')
|
||||
command('nnoremap \\<C-a><C-a><LT>C-a>\\ \\<C-b><C-b><LT>C-b>\\')
|
||||
command('nnoremap <special> \\<C-c><C-c><LT>C-c>\\ \\<C-d><C-d><LT>C-d>\\')
|
||||
|
||||
command('set cpo+=B<')
|
||||
command('set cpo+=B')
|
||||
command('xnoremap \\<C-a><C-a><LT>C-a>\\ \\<C-b><C-b><LT>C-b>\\')
|
||||
command('xnoremap <special> \\<C-c><C-c><LT>C-c>\\ \\<C-d><C-d><LT>C-d>\\')
|
||||
|
||||
command('set cpo-=B<')
|
||||
command('set cpo-=B')
|
||||
command('snoremap \\<C-a><C-a><LT>C-a>\\ \\<C-b><C-b><LT>C-b>\\')
|
||||
command('snoremap <special> \\<C-c><C-c><LT>C-c>\\ \\<C-d><C-d><LT>C-d>\\')
|
||||
|
||||
command('set cpo-=B cpo+=<')
|
||||
command('set cpo-=B')
|
||||
command('onoremap \\<C-a><C-a><LT>C-a>\\ \\<C-b><C-b><LT>C-b>\\')
|
||||
command('onoremap <special> \\<C-c><C-c><LT>C-c>\\ \\<C-d><C-d><LT>C-d>\\')
|
||||
|
||||
for _, cmd in ipairs({
|
||||
'set cpo-=B cpo+=<',
|
||||
'set cpo-=B<',
|
||||
'set cpo+=B<',
|
||||
'set cpo-=< cpo+=B',
|
||||
'set cpo-=B',
|
||||
'set cpo+=B',
|
||||
}) do
|
||||
command(cmd)
|
||||
eq({cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'n'),
|
||||
cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'n')},
|
||||
meths.get_keymap('n'))
|
||||
eq({cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'x'),
|
||||
cpomap('\\<lt>C-a><lt>C-a><lt>LT>C-a>\\', '\\<lt>C-b><lt>C-b><lt>LT>C-b>\\', 'x')},
|
||||
cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'x')},
|
||||
meths.get_keymap('x'))
|
||||
eq({cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 's'),
|
||||
cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 's')},
|
||||
meths.get_keymap('s'))
|
||||
eq({cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 'o'),
|
||||
cpomap('<lt>C-a><lt>C-a><lt>LT>C-a> ', '<lt>C-b><lt>C-b><lt>LT>C-b>', 'o')},
|
||||
cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 'o')},
|
||||
meths.get_keymap('o'))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -373,6 +373,11 @@ describe('api', function()
|
||||
'<NL>x<Esc>x<CR>x<lt>x', true, true, true))
|
||||
end)
|
||||
|
||||
it('does not convert keycodes if special=false', function()
|
||||
eq('<NL>x<Esc>x<CR>x<lt>x', helpers.nvim('replace_termcodes',
|
||||
'<NL>x<Esc>x<CR>x<lt>x', true, true, false))
|
||||
end)
|
||||
|
||||
it('does not crash when transforming an empty string', function()
|
||||
-- Actually does not test anything, because current code will use NULL for
|
||||
-- an empty string.
|
||||
@@ -391,13 +396,13 @@ describe('api', function()
|
||||
-- notice the special char(…) \xe2\80\xa6
|
||||
nvim('feedkeys', ':let x1="…"\n', '', true)
|
||||
|
||||
-- Both replace_termcodes and feedkeys escape \x80
|
||||
-- Both nvim_replace_termcodes and nvim_feedkeys escape \x80
|
||||
local inp = helpers.nvim('replace_termcodes', ':let x2="…"<CR>', true, true, true)
|
||||
nvim('feedkeys', inp, '', true)
|
||||
nvim('feedkeys', inp, '', true) -- escape_csi=true
|
||||
|
||||
-- Disabling CSI escaping in feedkeys
|
||||
-- nvim_feedkeys with CSI escaping disabled
|
||||
inp = helpers.nvim('replace_termcodes', ':let x3="…"<CR>', true, true, true)
|
||||
nvim('feedkeys', inp, '', false)
|
||||
nvim('feedkeys', inp, '', false) -- escape_csi=false
|
||||
|
||||
helpers.stop()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user