From 6c3b0fb831da89aac679da69a0fd5df43c27af80 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Sun, 26 Aug 2018 21:23:59 -0700 Subject: vim-patch:8.1.0344: 'hlsearch' highlighting has a gap after /$ Problem: 'hlsearch' highlighting has a gap after /$. Solution: Remove suspicious code. (Ricky Zhou, closes vim/vim#3400) https://github.com/vim/vim/commit/7ee3f15b21042cb8148980ea486137eaf1b55bcd --- src/nvim/screen.c | 8 -------- src/nvim/testdir/test_hlsearch.vim | 14 +++++++++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 91840026a5..81911fb928 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -3916,14 +3916,6 @@ win_line ( * At end of the text line. */ if (c == NUL) { - if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol - && lnum == wp->w_cursor.lnum) { - /* highlight last char after line */ - --col; - --off; - --vcol; - } - /* Highlight 'cursorcolumn' & 'colorcolumn' past end of the line. */ if (wp->w_p_wrap) v = wp->w_skipcol; diff --git a/src/nvim/testdir/test_hlsearch.vim b/src/nvim/testdir/test_hlsearch.vim index 066fdd0250..1fc7b04f88 100644 --- a/src/nvim/testdir/test_hlsearch.vim +++ b/src/nvim/testdir/test_hlsearch.vim @@ -4,7 +4,6 @@ function! Test_hlsearch() new call setline(1, repeat(['aaa'], 10)) set hlsearch nolazyredraw - let r=[] " redraw is needed to make hlsearch highlight the matches exe "normal! /aaa\" | redraw let r1 = screenattr(1, 1) @@ -32,3 +31,16 @@ function! Test_hlsearch() call getchar(1) enew! endfunction + +func Test_hlsearch_eol_highlight() + new + call append(1, repeat([''], 9)) + set hlsearch nolazyredraw + exe "normal! /$\" | redraw + let attr = screenattr(1, 1) + for row in range(2, 10) + call assert_equal(attr, screenattr(row, 1), 'in line ' . row) + endfor + set nohlsearch + bwipe! +endfunc -- cgit From 2694fa759f72b9d923be5e2108110685a1583faf Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Sun, 26 Aug 2018 21:23:55 -0700 Subject: Add tests for highlighting after the end of a line. --- test/functional/ui/searchhl_spec.lua | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/test/functional/ui/searchhl_spec.lua b/test/functional/ui/searchhl_spec.lua index 168080a092..87167553f3 100644 --- a/test/functional/ui/searchhl_spec.lua +++ b/test/functional/ui/searchhl_spec.lua @@ -93,6 +93,59 @@ describe('search highlighting', function() ]]) end) + it('highlights after EOL', function() + insert("\n\n\n\n\n\n") + + feed("gg/^") + screen:expect([[ + {2: } | + {2:^ } | + {2: } | + {2: } | + {2: } | + {2: } | + /^ | + ]]) + + -- Test that highlights are preserved after moving the cursor. + feed("j") + screen:expect([[ + {2: } | + {2: } | + {2:^ } | + {2: } | + {2: } | + {2: } | + /^ | + ]]) + + -- Repeat the test in rightleft mode. + feed_command("nohlsearch") + feed_command("set rightleft") + feed("gg/^") + + screen:expect([[ + {2: }| + {2:^ }| + {2: }| + {2: }| + {2: }| + {2: }| + ^/ | + ]]) + + feed("j") + screen:expect([[ + {2: }| + {2: }| + {2:^ }| + {2: }| + {2: }| + {2: }| + ^/ | + ]]) + end) + it('is preserved during :terminal activity', function() if iswin() then feed([[:terminal for /L \%I in (1,1,5000) do @(echo xxx & echo xxx & echo xxx)]]) -- cgit