From 7a1d32809bb5c1527314000983e75125d79192e0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 16 Jun 2022 13:04:45 +0100 Subject: 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 #10581) --- src/main.c | 2 +- src/normal.c | 3 +++ src/testdir/dumps/Test_mode_updated_1.dump | 5 +++++ src/testdir/test_normal.vim | 19 +++++++++++++++++-- src/version.c | 2 ++ 5 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 src/testdir/dumps/Test_mode_updated_1.dump diff --git a/src/main.c b/src/main.c index 3d8679690..2ffee1422 100644 --- 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 index fdbc5c838..4788bc2e8 100644 --- 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 index 000000000..6bbded42d --- /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 index ec2f9bc39..50c0d5d27 100644 --- 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 index 385c8ffbe..e581f1a02 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 5109, /**/ 5108, /**/ -- cgit v1.2.1