diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-01-30 21:41:14 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-01-30 21:41:14 +0100 |
commit | c07ff5c60ad35982e9cdaa9dd72d3d1669935e87 (patch) | |
tree | 44d2c989bbe002e8698dd4f81514c407a6a85b06 /src | |
parent | b191be2f0000bf1de09a79226cfd405d9387caa3 (diff) | |
download | vim-git-c07ff5c60ad35982e9cdaa9dd72d3d1669935e87.tar.gz |
patch 8.1.0849: cursorline highlight is not always updatedv8.1.0849
Problem: Cursorline highlight is not always updated.
Solution: Set w_last_cursorline when redrawing. Fix resetting cursor flags
when using the popup menu.
Diffstat (limited to 'src')
-rw-r--r-- | src/popupmnu.c | 2 | ||||
-rw-r--r-- | src/screen.c | 1 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cursorline_yank_01.dump | 8 | ||||
-rw-r--r-- | src/testdir/test_highlight.vim | 27 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 35 insertions, 5 deletions
diff --git a/src/popupmnu.c b/src/popupmnu.c index 2f2bde0bb..755dba45a 100644 --- 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 index 570910e29..1370773f8 100644 --- 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 index 000000000..3de1bff03 --- /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 index 67c750613..b37684c6f 100644 --- 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 index 114539abb..864ca44c2 100644 --- 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, |