mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.0.1354: "gr CTRL-G" stays in virtual replace mode
Problem: "gr CTRL-G" stays in virtual replace mode. (Pierre Ganty)
Solution: Prepend CTRL-V before control characters. (closes vim/vim#12045)
d6a4ea3aa0
Cherry-pick Test_edit_gr_special() from patch 9.0.1347.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
48990a7077
commit
5e846978e3
@ -3444,6 +3444,10 @@ static void ins_ctrl_g(void)
|
||||
dont_sync_undo = kNone;
|
||||
break;
|
||||
|
||||
case ESC:
|
||||
// Esc after CTRL-G cancels it.
|
||||
break;
|
||||
|
||||
// Unknown CTRL-G command, reserved for future expansion.
|
||||
default:
|
||||
vim_beep(BO_CTRLG);
|
||||
|
@ -4720,6 +4720,11 @@ static void nv_vreplace(cmdarg_T *cap)
|
||||
if (cap->extra_char == Ctrl_V) { // get another character
|
||||
cap->extra_char = get_literal(false);
|
||||
}
|
||||
if (cap->extra_char < ' ') {
|
||||
// Prefix a control character with CTRL-V to avoid it being used as
|
||||
// a command.
|
||||
stuffcharReadbuff(Ctrl_V);
|
||||
}
|
||||
stuffcharReadbuff(cap->extra_char);
|
||||
stuffcharReadbuff(ESC);
|
||||
if (virtual_active()) {
|
||||
|
@ -2080,6 +2080,20 @@ func Test_edit_CTRL_hat()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Test "gr" followed by an Insert mode command does get out of Insert mode.
|
||||
func Test_edit_gr_special()
|
||||
enew
|
||||
call setline(1, ['abcdef', 'xxxxxx'])
|
||||
exe "normal! gr\<C-O>lx"
|
||||
call assert_equal("\<C-O>def", getline(1))
|
||||
|
||||
call setline(1, 'abcdef')
|
||||
exe "normal! 0gr\<C-G>lx"
|
||||
call assert_equal("\<C-G>def", getline(1))
|
||||
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Weird long file name was going over the end of NameBuff
|
||||
func Test_edit_overlong_file_name()
|
||||
CheckUnix
|
||||
|
Loading…
Reference in New Issue
Block a user