diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-07-14 14:03:29 -0400 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-08-06 21:56:39 -0400 |
commit | 11bd0b887080574e9596449be1226729a1ae7d98 (patch) | |
tree | 128c8aca7b7dfa99a9254041a289160c0475bbcb | |
parent | a920ae89e958d1ae912b127cdbedfb90ed4c3ed4 (diff) | |
download | rneovim-11bd0b887080574e9596449be1226729a1ae7d98.tar.gz rneovim-11bd0b887080574e9596449be1226729a1ae7d98.tar.bz2 rneovim-11bd0b887080574e9596449be1226729a1ae7d98.zip |
vim-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 vim/vim#2177)
https://github.com/vim/vim/commit/5ece3e359c4b96d0f9bf1ce690223545f40f34b8
-rw-r--r-- | src/nvim/screen.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_highlight.vim | 28 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 256a3ed4b5..d4cbe36bd5 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -3027,7 +3027,9 @@ 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; } } diff --git a/src/nvim/testdir/test_highlight.vim b/src/nvim/testdir/test_highlight.vim index 215490868a..6ee994bb9a 100644 --- a/src/nvim/testdir/test_highlight.vim +++ b/src/nvim/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 |