changeset 12582:97f0c74976c6 v8.0.1169

patch 8.0.1169: highlignting one char too many with 'list' and 'cul' commit https://github.com/vim/vim/commit/5ece3e359c4b96d0f9bf1ce690223545f40f34b8 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 1 14:35:02 2017 +0200 patch 8.0.1169: highlignting one char too many with 'list' and 'cul' Problem: Highlignting one char too many with 'list' and 'cul'. Solution: Check for 'list' being active. (Ozaki Kiichi, closes https://github.com/vim/vim/issues/2177)
author Christian Brabandt <cb@256bit.org>
date Sun, 01 Oct 2017 14:45:04 +0200
parents 727965036b90
children ccd0799982bd
files src/screen.c src/testdir/test_highlight.vim src/version.c
diffstat 3 files changed, 31 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -4169,7 +4169,8 @@ win_line(
 			cur = cur->next;
 		}
 		/* Only highlight one character after the last column. */
-		if (*ptr == NUL && did_line_attr >= 1)
+		if (*ptr == NUL && (did_line_attr >= 1
+				    || (wp->w_p_list && lcs_eol_one == -1)))
 		    search_attr = 0;
 	    }
 #endif
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -59,6 +59,16 @@ function! HiCursorLine()
   return [hiCursorLine, hi_ul, hi_bg]
 endfunction
 
+function! Check_lcs_eol_attrs(attrs, row, col)
+  let save_lcs = &lcs
+  set list
+
+  call assert_equal(a:attrs, ScreenAttrs(a:row, a:col)[0])
+
+  set nolist
+  let &lcs = save_lcs
+endfunction
+
 func Test_highlight_eol_with_cursorline()
   let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
 
@@ -83,7 +93,8 @@ func Test_highlight_eol_with_cursorline(
   " expected:
   " 'abcd      '
   "  ^^^^         underline
-  "      ^^^^^^   'Search' highlight with underline
+  "      ^        'Search' highlight with underline
+  "       ^^^^^   underline
   let attrs = ScreenAttrs(1, 10)[0]
   call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
   call assert_equal([attrs[4]] + repeat([attrs[5]], 5), attrs[4:9])
@@ -91,6 +102,7 @@ func Test_highlight_eol_with_cursorline(
   call assert_notequal(attrs[4], attrs[5])
   call assert_notequal(attrs0[0], attrs[0])
   call assert_notequal(attrs0[4], attrs[4])
+  call Check_lcs_eol_attrs(attrs, 1, 10)
 
   if IsColorable()
     " bg-color
@@ -109,6 +121,7 @@ func Test_highlight_eol_with_cursorline(
     call assert_notequal(attrs[4], attrs[5])
     call assert_notequal(attrs0[0], attrs[0])
     call assert_notequal(attrs0[5], attrs[5])
+    call Check_lcs_eol_attrs(attrs, 1, 10)
   endif
 
   call CloseWindow()
@@ -168,6 +181,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs[5], attrs[6])
   call assert_notequal(attrs0[0], attrs[0])
   call assert_notequal(attrs0[4], attrs[4])
+  call Check_lcs_eol_attrs(attrs, 1, 15)
 
   if IsColorable()
     " bg-color
@@ -187,6 +201,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs[5], attrs[6])
     call assert_notequal(attrs0[0], attrs[0])
     call assert_equal(attrs0[4], attrs[4])
+    call Check_lcs_eol_attrs(attrs, 1, 15)
   endif
 
   call CloseWindow()
@@ -223,6 +238,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs[4], attrs[5])
   call assert_notequal(attrs0[9], attrs[9])
   call assert_notequal(attrs0[5], attrs[5])
+  call Check_lcs_eol_attrs(attrs, 1, 10)
 
   if IsColorable()
     " bg-color
@@ -241,6 +257,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs[5], attrs[4])
     call assert_notequal(attrs0[9], attrs[9])
     call assert_notequal(attrs0[4], attrs[4])
+    call Check_lcs_eol_attrs(attrs, 1, 10)
   endif
 
   call CloseWindow()
@@ -274,6 +291,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs[4], attrs[5])
   call assert_notequal(attrs0[0], attrs[0])
   call assert_notequal(attrs0[4], attrs[4])
+  call Check_lcs_eol_attrs(attrs, 5, 10)
 
   if IsColorable()
     " bg-color
@@ -292,6 +310,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs[4], attrs[5])
     call assert_notequal(attrs0[0], attrs[0])
     call assert_notequal(attrs0[5], attrs[5])
+    call Check_lcs_eol_attrs(attrs, 5, 10)
   endif
 
   setlocal nocursorline nowrap
@@ -314,6 +333,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs[6], attrs[7])
   call assert_notequal(attrs0[0], attrs[0])
   call assert_notequal(attrs0[6], attrs[6])
+  call Check_lcs_eol_attrs(attrs, 1, 10)
 
   if IsColorable()
     " bg-color
@@ -332,6 +352,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs[6], attrs[7])
     call assert_notequal(attrs0[0], attrs[0])
     call assert_notequal(attrs0[7], attrs[7])
+    call Check_lcs_eol_attrs(attrs, 1, 10)
   endif
 
   call CloseWindow()
@@ -370,6 +391,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs[6], attrs[7])
   call assert_notequal(attrs0[2], attrs[2])
   call assert_notequal(attrs0[6], attrs[6])
+  call Check_lcs_eol_attrs(attrs, 1, 10)
 
   if IsColorable()
     " bg-color
@@ -389,6 +411,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs[6], attrs[7])
     call assert_notequal(attrs0[2], attrs[2])
     call assert_notequal(attrs0[7], attrs[7])
+    call Check_lcs_eol_attrs(attrs, 1, 10)
   endif
 
   sign unplace 1
@@ -431,6 +454,7 @@ func Test_highlight_eol_with_cursorline_
   call assert_notequal(attrs0[2], attrs[2])
   call assert_notequal(attrs0[3], attrs[3])
   call assert_notequal(attrs0[6], attrs[6])
+  call Check_lcs_eol_attrs(attrs, 2, 10)
 
   if IsColorable()
     " bg-color
@@ -455,6 +479,7 @@ func Test_highlight_eol_with_cursorline_
     call assert_notequal(attrs0[2], attrs[2])
     call assert_notequal(attrs0[3], attrs[3])
     call assert_notequal(attrs0[7], attrs[7])
+    call Check_lcs_eol_attrs(attrs, 2, 10)
   endif
 
   call CloseWindow()
@@ -484,6 +509,7 @@ func Test_highlight_eol_on_diff()
   call assert_notequal(attrs[0], attrs[2])
   call assert_notequal(attrs[0], attrs[6])
   call assert_notequal(attrs[2], attrs[6])
+  call Check_lcs_eol_attrs(attrs, 1, 10)
 
   bwipe!
   diffoff
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1169,
+/**/
     1168,
 /**/
     1167,