summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-10-01 14:35:02 +0200
committerBram Moolenaar <Bram@vim.org>2017-10-01 14:35:02 +0200
commit5ece3e359c4b96d0f9bf1ce690223545f40f34b8 (patch)
tree2ea61f5f760f534f3e0e2578fae00d1fc1256ace
parent0aa398f55a327282c70f56e0bac2dcb9521da378 (diff)
patch 8.0.1169: highlignting one char too many with 'list' and 'cul'v8.0.1169
Problem: Highlignting one char too many with 'list' and 'cul'. Solution: Check for 'list' being active. (Ozaki Kiichi, closes #2177)
-rw-r--r--src/screen.c3
-rw-r--r--src/testdir/test_highlight.vim28
-rw-r--r--src/version.c2
3 files changed, 31 insertions, 2 deletions
diff --git a/src/screen.c b/src/screen.c
index 8349e5f6b7..3e08b600f6 100644
--- 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
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index 5205d425e2..f3d7d0f2a0 100644
--- 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_vertsplit()
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_vertsplit()
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_rightleft()
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_rightleft()
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_linewrap()
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_linewrap()
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_linewrap()
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_linewrap()
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_sign()
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_sign()
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_breakindent()
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_breakindent()
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
diff --git a/src/version.c b/src/version.c
index a129ec97d0..23859a1176 100644
--- 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,