diff options
-rw-r--r-- | src/nvim/state.c | 15 | ||||
-rw-r--r-- | test/functional/ex_cmds/cmd_map_spec.lua | 6 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/nvim/state.c b/src/nvim/state.c index 056828574f..6f4bab62d1 100644 --- a/src/nvim/state.c +++ b/src/nvim/state.c @@ -187,22 +187,17 @@ void get_mode(char *buf) if (State & VREPLACE_FLAG) { buf[i++] = 'R'; buf[i++] = 'v'; - if (ins_compl_active()) { - buf[i++] = 'c'; - } else if (ctrl_x_mode_not_defined_yet()) { - buf[i++] = 'x'; - } } else { if (State & REPLACE_FLAG) { buf[i++] = 'R'; } else { buf[i++] = 'i'; } - if (ins_compl_active()) { - buf[i++] = 'c'; - } else if (ctrl_x_mode_not_defined_yet()) { - buf[i++] = 'x'; - } + } + if (ins_compl_active()) { + buf[i++] = 'c'; + } else if (ctrl_x_mode_not_defined_yet()) { + buf[i++] = 'x'; } } else if ((State & CMDLINE) || exmode_active) { buf[i++] = 'c'; diff --git a/test/functional/ex_cmds/cmd_map_spec.lua b/test/functional/ex_cmds/cmd_map_spec.lua index dbbfadabd8..42e97757db 100644 --- a/test/functional/ex_cmds/cmd_map_spec.lua +++ b/test/functional/ex_cmds/cmd_map_spec.lua @@ -136,6 +136,12 @@ describe('mappings with <Cmd>', function() ]]) end) + it('handles character containing K_SPECIAL (0x80) byte correctly', function() + command([[noremap <F3> <Cmd>let g:str = '‥'<CR>]]) + feed('<F3>') + eq('‥', eval('g:str')) + end) + it('works in various modes and sees correct `mode()` value', function() -- normal mode feed('<F3>') |