vim-patch:8.2.5109: mode not updated after CTRL-O CTRL-C in Insert mode

Problem:    Mode not updated after CTRL-O CTRL-C in Insert mode.
Solution:   Set redraw_mode and use it. (closes vim/vim#10581)
7a1d32809b
This commit is contained in:
zeertzjq 2022-06-26 15:54:00 +08:00
parent 93ba821831
commit 55da52963b
3 changed files with 44 additions and 3 deletions

View File

@ -1284,7 +1284,7 @@ static void normal_redraw(NormalState *s)
update_screen(INVERTED);
} else if (must_redraw) {
update_screen(0);
} else if (redraw_cmdline || clear_cmdline) {
} else if (redraw_cmdline || clear_cmdline || redraw_mode) {
showmode();
}
@ -6930,6 +6930,10 @@ static void nv_esc(cmdarg_T *cap)
}
}
if (restart_edit != 0) {
redraw_mode = true; // remove "-- (insert) --"
}
restart_edit = 0;
if (cmdwin_type != 0) {

View File

@ -3,6 +3,7 @@
source shared.vim
source check.vim
source view_util.vim
source screendump.vim
func Setup_NewWindow()
10new
@ -2038,9 +2039,9 @@ func Test_normal33_g_cmd2()
call assert_equal(2, line('.'))
call assert_fails(':norm! g;', 'E662')
call assert_fails(':norm! g,', 'E663')
let &ul=&ul
let &ul = &ul
call append('$', ['a', 'b', 'c', 'd'])
let &ul=&ul
let &ul = &ul
call append('$', ['Z', 'Y', 'X', 'W'])
let a = execute(':changes')
call assert_match('2\s\+0\s\+2', a)
@ -2889,6 +2890,20 @@ func Test_message_when_using_ctrl_c()
bwipe!
endfunc
func Test_mode_updated_after_ctrl_c()
CheckScreendump
let buf = RunVimInTerminal('', {'rows': 5})
call term_sendkeys(buf, "i")
call term_sendkeys(buf, "\<C-O>")
" wait a moment so that the "-- (insert) --" message is displayed
call TermWait(buf, 50)
call term_sendkeys(buf, "\<C-C>")
call VerifyScreenDump(buf, 'Test_mode_updated_1', {})
call StopVimInTerminal(buf)
endfunc
" Test for '[m', ']m', '[M' and ']M'
" Jumping to beginning and end of methods in Java-like languages
func Test_java_motion()

View File

@ -402,6 +402,28 @@ describe('messages', function()
|
]])
end)
-- oldtest: Test_mode_updated_after_ctrl_c()
it('pressing Ctrl-C in i_CTRL-O', function()
feed('i<C-O>')
screen:expect([[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{2:-- (insert) --} |
]])
feed('<C-C>')
screen:expect([[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
|
]])
end)
end)
-- oldtest: Test_ask_yesno()