summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-30 21:41:14 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-30 21:41:14 +0100
commitc07ff5c60ad35982e9cdaa9dd72d3d1669935e87 (patch)
tree44d2c989bbe002e8698dd4f81514c407a6a85b06
parentb191be2f0000bf1de09a79226cfd405d9387caa3 (diff)
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.
-rw-r--r--src/popupmnu.c2
-rw-r--r--src/screen.c1
-rw-r--r--src/testdir/dumps/Test_cursorline_yank_01.dump8
-rw-r--r--src/testdir/test_highlight.vim27
-rw-r--r--src/version.c2
5 files changed, 35 insertions, 5 deletions
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 2f2bde0bb5..755dba45a6 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 570910e29f..1370773f8f 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 0000000000..3de1bff031
--- /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 67c7506133..b37684c6f5 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 114539abb1..864ca44c2b 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,