From 0bbca540f7377889e2154aa5731f6eeffcb5c0cc Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 11 Jan 2022 13:14:54 +0000 Subject: [PATCH] patch 8.2.4062: match highlighting of tab too short 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 | 5 +++-- .../dumps/Test_match_tab_linebreak.dump | 10 ++++++++++ src/testdir/test_match.vim | 18 ++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/testdir/dumps/Test_match_tab_linebreak.dump diff --git a/src/drawline.c b/src/drawline.c index 8a042ed3ea..1cf468137a 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -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 index 0000000000..9a525d1cf4 --- /dev/null +++ b/src/testdir/dumps/Test_match_tab_linebreak.dump @@ -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| diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim index 0af45a49a7..a912b78a12 100644 --- a/src/testdir/test_match.vim +++ b/src/testdir/test_match.vim @@ -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 diff --git a/src/version.c b/src/version.c index 3fe45ea4c4..36525af3db 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4062, /**/ 4061, /**/