changeset 30655:0fbf3e042602 v9.0.0662

patch 9.0.0662: concealed characters do not work correctly Commit: https://github.com/vim/vim/commit/75008661821eee6989476908feaf64a9dea03e05 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Oct 4 22:40:56 2022 +0100 patch 9.0.0662: concealed characters do not work correctly Problem: Concealed characters do not work correctly. Solution: Subtract boguscols instead of adding them. (closes https://github.com/vim/vim/issues/11273)
author Bram Moolenaar <Bram@vim.org>
date Tue, 04 Oct 2022 23:45:02 +0200
parents 84e4434535d6
children c34ca163ed25
files src/drawline.c src/testdir/dumps/Test_conceal_linebreak_1.dump src/testdir/test_conceal.vim src/version.c
diffstat 4 files changed, 38 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -3689,9 +3689,9 @@ win_line(
 		)
 	{
 #ifdef FEAT_CONCEAL
-	    wlv.col += wlv.boguscols;
+	    wlv.col -= wlv.boguscols;
 	    wlv_screen_line(wp, &wlv, FALSE);
-	    wlv.col -= wlv.boguscols;
+	    wlv.col += wlv.boguscols;
 	    wlv.boguscols = 0;
 #else
 	    wlv_screen_line(wp, &wlv, FALSE);
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_linebreak_1.dump
@@ -0,0 +1,8 @@
+>x+0&#ffffff0@74
+| @74
+|a@63| @10
+|++0#4040ff13&| |b+0#0000000&@66| @5
+|++0#4040ff13&| |c+0#0000000&@5| @66
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
--- a/src/testdir/test_conceal.vim
+++ b/src/testdir/test_conceal.vim
@@ -159,6 +159,32 @@ func Test_conceal_resize_term()
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_conceal_linebreak()
+  CheckScreendump
+
+  let code =<< trim [CODE]
+      vim9script
+      &wrap = true
+      &conceallevel = 2
+      &concealcursor = 'nc'
+      &linebreak = true
+      &showbreak = '+ '
+      var line: string = 'a`a`a`a`'
+          .. 'a'->repeat(&columns - 15)
+          .. ' b`b`'
+          .. 'b'->repeat(&columns - 10)
+          .. ' cccccc'
+      ['x'->repeat(&columns), '', line]->setline(1)
+      syntax region CodeSpan matchgroup=Delimiter start=/\z(`\+\)/ end=/\z1/ concealends
+  [CODE]
+  call writefile(code, 'XTest_conceal_linebreak', 'D')
+  let buf = RunVimInTerminal('-S XTest_conceal_linebreak', {'rows': 8})
+  call VerifyScreenDump(buf, 'Test_conceal_linebreak_1', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+endfunc
+
 " Tests for correct display (cursor column position) with +conceal and
 " tabulators.  Need to run this test in a separate Vim instance. Otherwise the
 " screen is not updated (lazy redraw) and the cursor position is wrong.
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    662,
+/**/
     661,
 /**/
     660,