]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.4062: match highlighting of tab too short v8.2.4062
authorBram Moolenaar <Bram@vim.org>
Tue, 11 Jan 2022 13:14:54 +0000 (13:14 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 11 Jan 2022 13:14:54 +0000 (13:14 +0000)
Problem:    Match highlighting of tab too short.
Solution:   Do not stop match highlighting if on a Tab. (Christian Brabandt,
            closes #9507, closes #9500)

src/drawline.c
src/testdir/dumps/Test_match_tab_linebreak.dump [new file with mode: 0644]
src/testdir/test_match.vim
src/version.c

index 8a042ed3ea01ebd044d2f87c02cf72923cd29653..1cf468137aa881f9821b8eaf698205e67a31ce75 100644 (file)
@@ -2043,9 +2043,10 @@ win_line(
                        if (n_extra < 0)
                            n_extra = 0;
                    }
-                   if (on_last_col)
+                   if (on_last_col && c != TAB)
                        // Do not continue search/match highlighting over the
-                       // line break.
+                       // line break, but for TABs the highlighting should
+                       // include the complete width of the character
                        search_attr = 0;
 
                    if (c == TAB && n_extra + col > wp->w_width)
diff --git a/src/testdir/dumps/Test_match_tab_linebreak.dump b/src/testdir/dumps/Test_match_tab_linebreak.dump
new file mode 100644 (file)
index 0000000..9a525d1
--- /dev/null
@@ -0,0 +1,10 @@
+| +0#ffffff16#e000002@6> |i+0#0000000#ffffff0|x| @64
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1|-|8| @8|A|l@1| 
index 0af45a49a7baab898c72d883d5a6b2299e94bfca..a912b78a126150000501ec28c8f2c439535cab9d 100644 (file)
@@ -407,4 +407,22 @@ func Test_matchdelete_redraw()
   bw!
 endfunc
 
+func Test_match_tab_with_linebreak()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    set linebreak
+    call setline(1, "\tix")
+    call matchadd('ErrorMsg', '\t')
+  END
+  call writefile(lines, 'XscriptMatchTabLinebreak')
+  let buf = RunVimInTerminal('-S XscriptMatchTabLinebreak', #{rows: 10})
+  call TermWait(buf)
+  call VerifyScreenDump(buf, 'Test_match_tab_linebreak', {})
+
+  call StopVimInTerminal(buf)
+  call delete('XscriptMatchTabLinebreak')
+endfunc
+
+
 " vim: shiftwidth=2 sts=2 expandtab
index 3fe45ea4c458e14e38265d4fdf5d00640e7a0df3..36525af3dbf18146f8a953cea1b4734d8c67ee77 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4062,
 /**/
     4061,
 /**/