diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-03-09 11:46:15 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-03-09 11:46:15 +0100 |
commit | 8156ed37558231a8167a1a61a147713d84c9af59 (patch) | |
tree | bc5a5e5b636c6f4d67e3c18ba07266e648f3f93e | |
parent | fd731b0e31df9f167098c4a77ff894fea6cb7f5c (diff) |
patch 8.1.1001: Visual area not correct when using 'cursorline'v8.1.1001
Problem: Visual area not correct when using 'cursorline'.
Solution: Update w_last_cursorline also in Visual mode. (Hirohito Higashi,
closes #4086)
-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 eabf7c1868..111c77d8a0 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 0000000000..b6e20b7ce6 --- /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 b37684c6f5..e16abf1837 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 e4e6b3ce8f..248b8414b7 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, |