]> granicus.if.org Git - vim/commitdiff
patch 8.2.3444: concealed text not revealed when leaving insert mode v8.2.3444
authorBram Moolenaar <Bram@vim.org>
Thu, 16 Sep 2021 20:32:15 +0000 (22:32 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 16 Sep 2021 20:32:15 +0000 (22:32 +0200)
Problem:    concealed text not revealed when leaving insert mode. (Michael
            Soyka)
Solution:   Check if concealing changed when leaving insert mode.
            (closes #8880)

src/edit.c
src/testdir/dumps/Test_conceal_two_windows_07in.dump [new file with mode: 0644]
src/testdir/test_conceal.vim
src/version.c

index e1e796f0bb35dba979257c17bb321e493f6b3533..070d84c609ef8467ab4731060a71b2500af9b5f3 100644 (file)
@@ -3582,6 +3582,11 @@ ins_esc(
 {
     int                temp;
     static int disabled_redraw = FALSE;
+#ifdef FEAT_CONCEAL
+    // Remember if the cursor line was concealed before changing State.
+    int                cursor_line_was_concealed = curwin->w_p_cole > 0
+                                               && conceal_cursor_line(curwin);
+#endif
 
 #ifdef FEAT_SPELL
     check_spell_redraw();
@@ -3701,6 +3706,11 @@ ins_esc(
        // Re-enable modifyOtherKeys.
        out_str(T_CTI);
     }
+#ifdef FEAT_CONCEAL
+    // Check if the cursor line needs redrawing after changing State.  If
+    // 'concealcursor' is "i" it needs to be redrawn without concealing.
+    conceal_check_cursor_line(cursor_line_was_concealed);
+#endif
 
     // When recording or for CTRL-O, need to display the new mode.
     // Otherwise remove the mode message.
diff --git a/src/testdir/dumps/Test_conceal_two_windows_07in.dump b/src/testdir/dumps/Test_conceal_two_windows_07in.dump
new file mode 100644 (file)
index 0000000..67c8cdb
--- /dev/null
@@ -0,0 +1,20 @@
+|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55
+|t|w|o| @1|h|e|r|e| @65
+|t|h|r|e@1| @1|t|h|r|e@1| @62
+|S|e|c|o|n|d| |w|i|n|d|o|w| @61
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1
+|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55
+|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57
+|t|h|r|e@1| @1|t|h|r|e@1| @62
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1
+| +0&&@74
index b555682d2dfb1918d585c66efbfc4d391b7cab98..3a24b7fd96542303e7448b2aec26f60a1e128a6f 100644 (file)
@@ -59,9 +59,11 @@ func Test_conceal_two_windows()
   " Check that with cursor line is only concealed in Insert mode
   call term_sendkeys(buf, ":set concealcursor=i\r")
   call VerifyScreenDump(buf, 'Test_conceal_two_windows_07n', {})
-  call term_sendkeys(buf, "a")
+  call term_sendkeys(buf, "14|a")
   call VerifyScreenDump(buf, 'Test_conceal_two_windows_07i', {})
-  call term_sendkeys(buf, "\<Esc>/e")
+  call term_sendkeys(buf, "\<Esc>")
+  call VerifyScreenDump(buf, 'Test_conceal_two_windows_07in', {})
+  call term_sendkeys(buf, "/e")
   call VerifyScreenDump(buf, 'Test_conceal_two_windows_07c', {})
   call term_sendkeys(buf, "\<Esc>v")
   call VerifyScreenDump(buf, 'Test_conceal_two_windows_07v', {})
index 4d559248e5c59701f181ec11c9d99483826906bd..0b714bf46f23794649332f68b06386a503896f77 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3444,
 /**/
     3443,
 /**/