mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
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)
This commit is contained in:
16
src/screen.c
16
src/screen.c
@@ -3704,14 +3704,16 @@ win_line(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
/* Cursor line highlighting for 'cursorline' in the current window. Not
|
// Cursor line highlighting for 'cursorline' in the current window.
|
||||||
* when Visual mode is active, because it's not clear what is selected
|
if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
|
||||||
* then. */
|
|
||||||
if (wp->w_p_cul && lnum == wp->w_cursor.lnum
|
|
||||||
&& !(wp == curwin && VIsual_active))
|
|
||||||
{
|
{
|
||||||
line_attr = HL_ATTR(HLF_CUL);
|
// Do not show the cursor line when Visual mode is active, because it's
|
||||||
area_highlighting = TRUE;
|
// 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;
|
wp->w_last_cursorline = wp->w_cursor.lnum;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
12
src/testdir/dumps/Test_cursorline_with_visualmode_01.dump
Normal file
12
src/testdir/dumps/Test_cursorline_with_visualmode_01.dump
Normal file
@@ -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|%|
|
@@ -552,3 +552,23 @@ func Test_cursorline_after_yank()
|
|||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
call delete('Xtest_cursorline_yank')
|
call delete('Xtest_cursorline_yank')
|
||||||
endfunc
|
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
|
||||||
|
@@ -779,6 +779,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1001,
|
||||||
/**/
|
/**/
|
||||||
1000,
|
1000,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user