diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-06-16 13:04:45 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-06-16 13:04:45 +0100 |
commit | 7a1d32809bb5c1527314000983e75125d79192e0 (patch) | |
tree | 453ba22001b7fd204dc3ec34f9dc8a598f6966d8 | |
parent | 308660bd263367a4f1a75498cbd2e29cade47f4d (diff) | |
download | vim-git-7a1d32809bb5c1527314000983e75125d79192e0.tar.gz |
patch 8.2.5109: mode not updated after CTRL-O CTRL-C in Insert modev8.2.5109
Problem: Mode not updated after CTRL-O CTRL-C in Insert mode.
Solution: Set redraw_mode and use it. (closes #10581)
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/normal.c | 3 | ||||
-rw-r--r-- | src/testdir/dumps/Test_mode_updated_1.dump | 5 | ||||
-rw-r--r-- | src/testdir/test_normal.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 28 insertions, 3 deletions
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 <Enter> 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, "\<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() diff --git a/src/version.c b/src/version.c index 385c8ffbe..e581f1a02 100644 --- 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, |