# HG changeset patch # User Bram Moolenaar # Date 1655381703 -7200 # Node ID 432e1535ef2c2588e084d7ecd331f894e99edadf # Parent 5c6a9452357fb9d35f4ed31c4749d58b194d6e38 patch 8.2.5109: mode not updated after CTRL-O CTRL-C in Insert mode Commit: https://github.com/vim/vim/commit/7a1d32809bb5c1527314000983e75125d79192e0 Author: Bram Moolenaar Date: Thu Jun 16 13:04:45 2022 +0100 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 https://github.com/vim/vim/issues/10581) diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -1419,7 +1419,7 @@ main_loop( update_screen(0); mch_enable_flush(); } - else if (redraw_cmdline || clear_cmdline) + else if (redraw_cmdline || clear_cmdline || redraw_mode) showmode(); redraw_statuslines(); if (need_maketitle) diff --git a/src/normal.c b/src/normal.c --- a/src/normal.c +++ b/src/normal.c @@ -6788,6 +6788,9 @@ nv_esc(cmdarg_T *cap) msg(_("Type :qa and press to exit Vim")); } + if (restart_edit != 0) + redraw_mode = TRUE; // remove "-- (insert) --" + // Don't reset "restart_edit" when 'insertmode' is set, it won't be // set again below when halfway a mapping. if (!p_im) diff --git a/src/testdir/dumps/Test_mode_updated_1.dump b/src/testdir/dumps/Test_mode_updated_1.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_mode_updated_1.dump @@ -0,0 +1,5 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim --- a/src/testdir/test_normal.vim +++ b/src/testdir/test_normal.vim @@ -4,6 +4,7 @@ source shared.vim source check.vim source view_util.vim import './vim9.vim' as v9 +source screendump.vim func Setup_NewWindow() 10new @@ -2458,9 +2459,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) @@ -3266,6 +3267,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, "\") + " wait a moment so that the "-- (insert) --" message is displayed + call TermWait(buf, 50) + call term_sendkeys(buf, "\") + 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() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 5109, +/**/ 5108, /**/ 5107,