# HG changeset patch # User Bram Moolenaar # Date 1548881105 -3600 # Node ID adc6442118b80c1147355428eef9828c92e54237 # Parent e871f9bd86c1c7dc19084aa7e41c8489a3abecd0 patch 8.1.0849: cursorline highlight is not always updated commit https://github.com/vim/vim/commit/c07ff5c60ad35982e9cdaa9dd72d3d1669935e87 Author: Bram Moolenaar 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. diff --git a/src/popupmnu.c b/src/popupmnu.c --- 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(); } diff --git a/src/screen.c b/src/screen.c --- 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 diff --git a/src/testdir/dumps/Test_cursorline_yank_01.dump b/src/testdir/dumps/Test_cursorline_yank_01.dump 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| diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim --- 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -784,6 +784,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 849, +/**/ 848, /**/ 847,