summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-06-16 13:04:45 +0100
committerBram Moolenaar <Bram@vim.org>2022-06-16 13:04:45 +0100
commit7a1d32809bb5c1527314000983e75125d79192e0 (patch)
tree453ba22001b7fd204dc3ec34f9dc8a598f6966d8
parent308660bd263367a4f1a75498cbd2e29cade47f4d (diff)
downloadvim-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.c2
-rw-r--r--src/normal.c3
-rw-r--r--src/testdir/dumps/Test_mode_updated_1.dump5
-rw-r--r--src/testdir/test_normal.vim19
-rw-r--r--src/version.c2
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,