From: Bram Moolenaar Date: Sat, 9 Mar 2019 10:46:15 +0000 (+0100) Subject: patch 8.1.1001: Visual area not correct when using 'cursorline' X-Git-Tag: v8.1.1001 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8156ed37558231a8167a1a61a147713d84c9af59;p=vim patch 8.1.1001: Visual area not correct when using 'cursorline' Problem: Visual area not correct when using 'cursorline'. Solution: Update w_last_cursorline also in Visual mode. (Hirohito Higashi, closes #4086) --- 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\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 @@ -779,6 +779,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1001, /**/ 1000, /**/