Mercurial > vim
changeset 15683:adc6442118b8 v8.1.0849
patch 8.1.0849: cursorline highlight is not always updated
commit https://github.com/vim/vim/commit/c07ff5c60ad35982e9cdaa9dd72d3d1669935e87
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jan 30 21:41:14 2019 +0100
patch 8.1.0849: cursorline highlight is not always updated
Problem: Cursorline highlight is not always updated.
Solution: Set w_last_cursorline when redrawing. Fix resetting cursor flags
when using the popup menu.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 30 Jan 2019 21:45:05 +0100 |
parents | e871f9bd86c1 |
children | fcf0076c0fa4 |
files | src/popupmnu.c src/screen.c src/testdir/dumps/Test_cursorline_yank_01.dump src/testdir/test_highlight.vim src/version.c |
diffstat | 5 files changed, 35 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/popupmnu.c +++ b/src/popupmnu.c @@ -368,7 +368,7 @@ pum_call_update_screen() // Update the cursor position to be able to compute the popup menu // position. The cursor line length may have changed because of the // inserted completion. - curwin->w_valid &= VALID_CROW|VALID_CHEIGHT; + curwin->w_valid &= ~(VALID_CROW|VALID_CHEIGHT); validate_cursor(); }
--- a/src/screen.c +++ b/src/screen.c @@ -3712,6 +3712,7 @@ win_line( { line_attr = HL_ATTR(HLF_CUL); area_highlighting = TRUE; + wp->w_last_cursorline = wp->w_cursor.lnum; } #endif
new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_yank_01.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|3| | +0#0000000&@70 +| +0#af5f00255&@1|2| |1+0#0000000&| @69 +| +0#af5f00255&@1|1| |2+0#0000000&| @69 +| +0#af5f00255&@1|0| >3+8#0000000&| @69 +| +0#af5f00255&@1|1| | +0#0000000&@70 +|~+0#4040ff13&| @73 +|~| @73 +|4+0#0000000&| |l|i|n|e|s| |y|a|n|k|e|d| @42|4|,|1| @10|A|l@1|
--- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -1,6 +1,7 @@ " Tests for ":highlight" and highlighting. source view_util.vim +source screendump.vim func Test_highlight() " basic test if ":highlight" doesn't crash @@ -129,10 +130,6 @@ func Test_highlight_eol_with_cursorline( endfunc func Test_highlight_eol_with_cursorline_vertsplit() - if !has('vertsplit') - return - endif - let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine() call NewWindow('topleft 5', 5) @@ -533,3 +530,25 @@ func Test_termguicolors() set t_Co=0 redraw endfunc + +func Test_cursorline_after_yank() + if !CanRunVimInTerminal() + return + endif + + call writefile([ + \ 'set cul rnu', + \ 'call setline(1, ["","1","2","3",""])', + \ ], 'Xtest_cursorline_yank') + let buf = RunVimInTerminal('-S Xtest_cursorline_yank', {'rows': 8}) + call term_wait(buf) + call term_sendkeys(buf, "Gy3k") + call term_wait(buf) + call term_sendkeys(buf, "jj") + + call VerifyScreenDump(buf, 'Test_cursorline_yank_01', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('Xtest_cursorline_yank') +endfunc