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;
|
dont_sync_undo = kNone;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ESC:
|
||||||
|
// Esc after CTRL-G cancels it.
|
||||||
|
break;
|
||||||
|
|
||||||
// Unknown CTRL-G command, reserved for future expansion.
|
// Unknown CTRL-G command, reserved for future expansion.
|
||||||
default:
|
default:
|
||||||
vim_beep(BO_CTRLG);
|
vim_beep(BO_CTRLG);
|
||||||
|
@ -4720,6 +4720,11 @@ static void nv_vreplace(cmdarg_T *cap)
|
|||||||
if (cap->extra_char == Ctrl_V) { // get another character
|
if (cap->extra_char == Ctrl_V) { // get another character
|
||||||
cap->extra_char = get_literal(false);
|
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(cap->extra_char);
|
||||||
stuffcharReadbuff(ESC);
|
stuffcharReadbuff(ESC);
|
||||||
if (virtual_active()) {
|
if (virtual_active()) {
|
||||||
|
@ -2080,6 +2080,20 @@ func Test_edit_CTRL_hat()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
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
|
" Weird long file name was going over the end of NameBuff
|
||||||
func Test_edit_overlong_file_name()
|
func Test_edit_overlong_file_name()
|
||||||
CheckUnix
|
CheckUnix
|
||||||
|
Loading…
Reference in New Issue
Block a user