Skip to content

Commit

Permalink
fix(input): remove reinterpreted ALT/META chords from recorded macro
Browse files Browse the repository at this point in the history
  • Loading branch information
zeertzjq committed Jan 28, 2022
1 parent af9a2a2 commit 75f4741
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/nvim/getchar.c
Expand Up @@ -1598,8 +1598,9 @@ int vgetc(void)
if (!no_mapping && KeyTyped && !(State & TERM_FOCUS)
&& (mod_mask == MOD_MASK_ALT || mod_mask == MOD_MASK_META)) {
mod_mask = 0;
ins_char_typebuf(c, 0);
ins_char_typebuf(ESC, 0);
int len = ins_char_typebuf(c, 0);
(void)ins_char_typebuf(ESC, 0);
ungetchars(len + 3); // The ALT/META modifier takes three more bytes
continue;
}

Expand Down
16 changes: 16 additions & 0 deletions test/functional/editor/meta_key_spec.lua
Expand Up @@ -104,4 +104,20 @@ describe('meta-keys #8226 #13042', function()
eq({ 0, 2, 1, 0, }, funcs.getpos('.'))
eq('nt', eval('mode(1)'))
end)

it('ALT/META when recording a macro #13235', function()
feed('ifoo<CR>bar<CR>baz<Esc>gg0')
-- <M-"> is reinterpreted as <Esc>"
feed('qrviw"ayC// This is some text: <M-">apq')
expect([[
// This is some text: foo
bar
baz]])
-- Should not insert an extra double quote when replaying
feed('j0@rj0@@')
expect([[
// This is some text: foo
// This is some text: bar
// This is some text: baz]])
end)
end)

0 comments on commit 75f4741

Please sign in to comment.