]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.5109: mode not updated after CTRL-O CTRL-C in Insert mode v8.2.5109
authorBram Moolenaar <Bram@vim.org>
Thu, 16 Jun 2022 12:04:45 +0000 (13:04 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 16 Jun 2022 12:04:45 +0000 (13:04 +0100)
Problem:    Mode not updated after CTRL-O CTRL-C in Insert mode.
Solution:   Set redraw_mode and use it. (closes #10581)

src/main.c
src/normal.c
src/testdir/dumps/Test_mode_updated_1.dump [new file with mode: 0644]
src/testdir/test_normal.vim
src/version.c

index 3d867969061198f9de56434f4b6bc3040a634f03..2ffee142268d63a20d0d665604e8e9d974b28f62 100644 (file)
@@ -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)
index fdbc5c838365531dcbedb69737e6dd5ddac08597..4788bc2e818a82f8464aada7764b5a40caae7922 100644 (file)
@@ -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 (file)
index 0000000..6bbded4
--- /dev/null
@@ -0,0 +1,5 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| 
index ec2f9bc39cfb7fb7bcb46cc6a648e91d6422cec8..50c0d5d274666df61f78e83ccf74f14a3a4801bc 100644 (file)
@@ -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()
index 385c8ffbe066ebacc1f171fa24575f81a860f12c..e581f1a02c7ba93fd0fac57d50014f20e92da41e 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    5109,
 /**/
     5108,
 /**/