diff options
-rw-r--r-- | src/screen.c | 16 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cursorline_with_visualmode_01.dump | 12 | ||||
-rw-r--r-- | src/testdir/test_highlight.vim | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 43 insertions, 7 deletions
diff --git a/src/screen.c b/src/screen.c index eabf7c186..111c77d8a 100644 --- a/src/screen.c +++ b/src/screen.c @@ -3704,14 +3704,16 @@ win_line( #endif #ifdef FEAT_SYN_HL - /* Cursor line highlighting for 'cursorline' in the current window. Not - * when Visual mode is active, because it's not clear what is selected - * then. */ - if (wp->w_p_cul && lnum == wp->w_cursor.lnum - && !(wp == curwin && VIsual_active)) + // Cursor line highlighting for 'cursorline' in the current window. + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) { - line_attr = HL_ATTR(HLF_CUL); - area_highlighting = TRUE; + // Do not show the cursor line when Visual mode is active, because it's + // not clear what is selected then. Do update w_last_cursorline. + if (!(wp == curwin && VIsual_active)) + { + 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_with_visualmode_01.dump b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump new file mode 100644 index 000000000..b6e20b7ce --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump @@ -0,0 +1,12 @@ +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +>a|b+0&#e0e0e08|c| | +0&#ffffff0@70 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|-+2&&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@29|1|2| @7|1|2|,|1| @9|1|5|%| diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim index b37684c6f..e16abf183 100644 --- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -552,3 +552,23 @@ func Test_cursorline_after_yank() call StopVimInTerminal(buf) call delete('Xtest_cursorline_yank') endfunc + +func Test_cursorline_with_visualmode() + if !CanRunVimInTerminal() + return + endif + + call writefile([ + \ 'set cul', + \ 'call setline(1, repeat(["abc"], 50))', + \ ], 'Xtest_cursorline_with_visualmode') + let buf = RunVimInTerminal('-S Xtest_cursorline_with_visualmode', {'rows': 12}) + call term_wait(buf) + call term_sendkeys(buf, "V\<C-f>kkkjk") + + call VerifyScreenDump(buf, 'Test_cursorline_with_visualmode_01', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('Xtest_cursorline_with_visualmode') +endfunc diff --git a/src/version.c b/src/version.c index e4e6b3ce8..248b8414b 100644 --- a/src/version.c +++ b/src/version.c @@ -780,6 +780,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1001, +/**/ 1000, /**/ 999, |