]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1141: 'cursorcolumn' and 'colorcolumn' wrong after concealing v9.0.1141
authorAlexey Radkov <alexey.radkov@gmail.com>
Wed, 4 Jan 2023 11:15:30 +0000 (11:15 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 4 Jan 2023 11:15:30 +0000 (11:15 +0000)
Problem:    'cursorcolumn' and 'colorcolumn' wrong after concealing and
            wrapping line.
Solution:   Reset "wlv.vcol_off" after each screen line. (Alexey Radkov,
            closes #11777)

src/drawline.c
src/testdir/dumps/Test_conceal_cuc_01.dump [new file with mode: 0644]
src/testdir/dumps/Test_conceal_cuc_02.dump [new file with mode: 0644]
src/testdir/test_conceal.vim
src/version.c

index 11cfb7782ffb381e6ec720eda2c64230d3921b82..a82a5e49f53e8f22ebd56e61d3724d39d3253f07 100644 (file)
@@ -3893,6 +3893,7 @@ win_line(
            wlv_screen_line(wp, &wlv, FALSE);
            wlv.col += wlv.boguscols;
            wlv.boguscols = 0;
+           wlv.vcol_off = 0;
 #else
            wlv_screen_line(wp, &wlv, FALSE);
 #endif
diff --git a/src/testdir/dumps/Test_conceal_cuc_01.dump b/src/testdir/dumps/Test_conceal_cuc_01.dump
new file mode 100644 (file)
index 0000000..bf42819
--- /dev/null
@@ -0,0 +1,10 @@
+|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @1|o|n|e| |o|n|e| |o|n|e| |o+0&#e0e0e08|n+0&#ffffff0|e| @11
+| +0#4040ff13&|>@2| |o+0#0000000&|n|e| |o+0&#ffd7d7255|n+0&#ffffff0|e| |o|n|e| |o|n|e| @19
+|t|w|o| |t|w|o| |t|w|o| |t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| |t|w|o| |t|w|o| @2
+|t|h|r|e@1| @1|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| |t+0&#e0e0e08|h+0&#ffffff0|r|e@1| @9
+| +0#4040ff13&|>@2| |t+0#0000000&|h|r|e|e+0&#ffd7d7255| +0&#ffffff0|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @11
+|~+0#4040ff13&| @38
+|~| @38
+|~| @38
+|~| @38
+|/+0#0000000&|h|e|r|e| @16|2|,|2|6| @9|A|l@1| 
diff --git a/src/testdir/dumps/Test_conceal_cuc_02.dump b/src/testdir/dumps/Test_conceal_cuc_02.dump
new file mode 100644 (file)
index 0000000..1b6662e
--- /dev/null
@@ -0,0 +1,10 @@
+|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @1|o|n|e| |o|n|e| |o|n|e| |o|n|e| @11
+| +0#4040ff13&|>@2| |o+0#0000000&|n|e| |o+0&#ffd7d7255|n+0&#ffffff0|e| |o|n|e| |o|n|e| @19
+|t|w|o| |t|w|o| |t|w|o| |t|w|o| |||h|i|d@1|e|n||| |h|e|r|e| |t|w|o| |t|w>o| @2
+|t|h|r|e@1| @1|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @9
+| +0#4040ff13&|>@2| |t+0#0000000&|h|r|e|e+0&#ffd7d7255| +0&#ffffff0|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @11
+|~+0#4040ff13&| @38
+|~| @38
+|~| @38
+|~| @38
+|/+0#0000000&|h|e|r|e| @16|2|,|3|7| @9|A|l@1| 
index 385d42b5448e457e9ac56cab67ba6399e0c158f3..d9a76441186a23b7ac8fb28cafa996ed351eef41 100644 (file)
@@ -139,6 +139,38 @@ func Test_conceal_with_cursorline()
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_conceal_with_cursorcolumn()
+  CheckScreendump
+
+  " Check that cursorcolumn and colorcolumn don't get broken in presence of
+  " wrapped lines containing concealed text
+  let code =<< trim [CODE]
+    let lines = ["one one one |hidden| one one one one one one one one",
+          \ "two two two two |hidden| here two two",
+          \ "three |hidden| three three three three three three three three"]
+    call setline(1, lines)
+    set wrap linebreak
+    set showbreak=\ >>>\ 
+    syntax match test /|hidden|/ conceal
+    set conceallevel=2
+    set concealcursor=
+    exe "normal /here\r"
+    set cursorcolumn
+    set colorcolumn=50
+  [CODE]
+
+  call writefile(code, 'XTest_conceal_cuc', 'D')
+  let buf = RunVimInTerminal('-S XTest_conceal_cuc', {'rows': 10, 'cols': 40})
+  call VerifyScreenDump(buf, 'Test_conceal_cuc_01', {})
+
+  " move cursor to the end of line (the cursor jumps to the next screen line)
+  call term_sendkeys(buf, "$")
+  call VerifyScreenDump(buf, 'Test_conceal_cuc_02', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_conceal_resize_term()
   CheckScreendump
 
index bc0d3fd8c1694a0594610193b67f4162d20f1a64..3bfa6d46ffe158fbb7b33abb08bf95664ea5e459 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1141,
 /**/
     1140,
 /**/