]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.1.0746: highlighting not updated with conceal and 'cursorline' v8.1.0746
authorBram Moolenaar <Bram@vim.org>
Mon, 14 Jan 2019 20:51:40 +0000 (21:51 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 14 Jan 2019 20:51:40 +0000 (21:51 +0100)
Problem:    Highlighting not updated with conceal and 'cursorline'. (Jason
            Franklin)
Solution:   Do not use a zero line number.  Check if 'conceallevel' is set for
            the current window.

src/main.c
src/testdir/dumps/Test_conceal_cul_01.dump [new file with mode: 0644]
src/testdir/dumps/Test_conceal_cul_02.dump [new file with mode: 0644]
src/testdir/dumps/Test_conceal_cul_03.dump [new file with mode: 0644]
src/testdir/test_conceal.vim
src/version.c

index b69380016013cdec493f9326e24ae1d27c4ac1ee..9e23606ccb1b2a595a37ca639382d1f9c618d6f3 100644 (file)
@@ -1170,6 +1170,10 @@ main_loop(
            // locked, this would be a good time to handle the drop.
            handle_any_postponed_drop();
 #endif
+#ifdef FEAT_CONCEAL
+           if (curwin->w_p_cole == 0)
+               conceal_update_lines = FALSE;
+#endif
 
            /* Trigger CursorMoved if the cursor moved. */
            if (!finish_op && (
@@ -1201,6 +1205,7 @@ main_loop(
                        || need_cursor_line_redraw))
            {
                if (conceal_old_cursor_line != conceal_new_cursor_line
+                       && conceal_old_cursor_line != 0
                        && conceal_old_cursor_line
                                                <= curbuf->b_ml.ml_line_count)
                    redrawWinline(curwin, conceal_old_cursor_line);
diff --git a/src/testdir/dumps/Test_conceal_cul_01.dump b/src/testdir/dumps/Test_conceal_cul_01.dump
new file mode 100644 (file)
index 0000000..6d698d1
--- /dev/null
@@ -0,0 +1,20 @@
+|o+0&#ffffff0|n|e| @71
+|t|w|o| @71
+>t+8&&|h|r|e@1| @69
+|f+0&&|o|u|r| @70
+|f|i|v|e| @70
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1
+| +0&&@74
+|t+8&&|h|i|s| |i|s| |a| |t|e|s|t| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1
+| +0&&@74
diff --git a/src/testdir/dumps/Test_conceal_cul_02.dump b/src/testdir/dumps/Test_conceal_cul_02.dump
new file mode 100644 (file)
index 0000000..46b296c
--- /dev/null
@@ -0,0 +1,20 @@
+|o+0&#ffffff0|n|e| @71
+|t|w|o| @71
+|t+8&&|h|r|e@1| @69
+|f+0&&|o|u|r| @70
+|f|i|v|e| @70
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1
+| +0&&@74
+|t+8&&|h|i|s| |i|s| |a| |t|e|s>t| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1
+|:+0&&|w|i|n|c|m|d| |w| @65
diff --git a/src/testdir/dumps/Test_conceal_cul_03.dump b/src/testdir/dumps/Test_conceal_cul_03.dump
new file mode 100644 (file)
index 0000000..275f35c
--- /dev/null
@@ -0,0 +1,20 @@
+|o+0&#ffffff0|n|e| @71
+|t|w|o| @71
+|t+8&&|h|r|e@1| @69
+|f+0&&|o|u|r| @70
+|f|i|v|e| @70
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1
+> +8&&@74
+|t+0&&|h|i|s| |i|s| |a| |t|e|s|t| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|0|-|1| @9|A|l@1
+|:+0&&|w|i|n|c|m|d| |w| @65
index 4a05387587573d2c8a3c2ca0b6f8a680b8f43e5f..685c891759bcea429fe16423a88fb8d187d6e4e5 100644 (file)
@@ -109,3 +109,28 @@ func Test_conceal_two_windows()
   call StopVimInTerminal(buf)
   call delete('XTest_conceal')
 endfunc
+
+func Test_conceal_with_cursorline()
+  " Opens a help window, where 'conceal' is set, switches to the other window
+  " where 'cursorline' needs to be updated when the cursor moves.
+  call writefile([
+       \ 'set cursorline',
+       \ 'normal othis is a test',
+       \ 'new',
+       \ 'call setline(1, ["one", "two", "three", "four", "five"])',
+       \ 'set ft=help',
+       \ 'normal M',
+       \ ], 'XTest_conceal_cul')
+  let buf = RunVimInTerminal('-S XTest_conceal_cul', {})
+  call VerifyScreenDump(buf, 'Test_conceal_cul_01', {})
+
+  call term_sendkeys(buf, ":wincmd w\r")
+  call VerifyScreenDump(buf, 'Test_conceal_cul_02', {})
+
+  call term_sendkeys(buf, "k")
+  call VerifyScreenDump(buf, 'Test_conceal_cul_03', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XTest_conceal_cul')
+endfunc
index 60d82d20697b9777714c7a30627fbf233dc71b37..4b21d288cb85c519652cc24f4f1fe17f747f72c5 100644 (file)
@@ -795,6 +795,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    746,
 /**/
     745,
 /**/