# HG changeset patch # User Bram Moolenaar # Date 1672831805 -3600 # Node ID 68fed60575ca242da90801af548311693b6625f3 # Parent 41c656270d4e5d886c94ad5a867a31b8be3602ef patch 9.0.1141: 'cursorcolumn' and 'colorcolumn' wrong after concealing Commit: https://github.com/vim/vim/commit/aaa16b09180080284c4a5049fe16bdaccbb13b74 Author: Alexey Radkov Date: Wed Jan 4 11:15:30 2023 +0000 patch 9.0.1141: 'cursorcolumn' and 'colorcolumn' wrong after concealing Problem: 'cursorcolumn' and 'colorcolumn' wrong after concealing and wrapping line. Solution: Reset "wlv.vcol_off" after each screen line. (Alexey Radkov, closes #11777) diff --git a/src/drawline.c b/src/drawline.c --- a/src/drawline.c +++ b/src/drawline.c @@ -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 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cuc_01.dump @@ -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 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cuc_02.dump @@ -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| diff --git a/src/testdir/test_conceal.vim b/src/testdir/test_conceal.vim --- a/src/testdir/test_conceal.vim +++ b/src/testdir/test_conceal.vim @@ -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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1141, +/**/ 1140, /**/ 1139,