vim-patch:8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"

Problem:    'cursorline' not always updated with 'cursorlineopt' is
            "screenline".
Solution:   Call check_redraw_cursorline() more often. (closes vim/vim#10013)
bf269ed0b0

Code was reverted in patch 8.2.4638, so this just ports the test.
This commit is contained in:
zeertzjq 2022-03-28 05:10:15 +08:00
parent 4baeb96c1b
commit ab02b28b4e
2 changed files with 70 additions and 10 deletions

View File

@ -293,5 +293,26 @@ func Test_cursorline_callback()
call delete('Xcul_timer')
endfunc
func Test_cursorline_screenline_update()
CheckScreendump
let lines =<< trim END
call setline(1, repeat('xyz ', 30))
set cursorline cursorlineopt=screenline
inoremap <F2> <Cmd>call cursor(1, 1)<CR>
END
call writefile(lines, 'Xcul_screenline')
let buf = RunVimInTerminal('-S Xcul_screenline', #{rows: 8})
call term_sendkeys(buf, "A")
call VerifyScreenDump(buf, 'Test_cursorline_screenline_1', {})
call term_sendkeys(buf, "\<F2>")
call VerifyScreenDump(buf, 'Test_cursorline_screenline_2', {})
call term_sendkeys(buf, "\<Esc>")
call StopVimInTerminal(buf)
call delete('Xcul_screenline')
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -937,17 +937,18 @@ describe('CursorLine and CursorLineNr highlights', function()
[2] = {foreground = Screen.colors.Yellow};
[3] = {foreground = Screen.colors.Red, background = Screen.colors.Green};
[4] = {foreground = Screen.colors.Green, background = Screen.colors.Red};
[5] = {bold = true}, -- ModeMsg
})
screen:attach()
feed_command('set wrap cursorline cursorlineopt=screenline')
feed_command('set showbreak=>>>')
feed_command('highlight clear NonText')
feed_command('highlight clear CursorLine')
feed_command('highlight NonText guifg=Yellow gui=NONE')
feed_command('highlight LineNr guifg=Red guibg=Green gui=NONE')
feed_command('highlight CursorLine guifg=Black guibg=White gui=NONE')
feed_command('highlight CursorLineNr guifg=Green guibg=Red gui=NONE')
command('set wrap cursorline cursorlineopt=screenline')
command('set showbreak=>>>')
command('highlight clear NonText')
command('highlight clear CursorLine')
command('highlight NonText guifg=Yellow gui=NONE')
command('highlight LineNr guifg=Red guibg=Green gui=NONE')
command('highlight CursorLine guifg=Black guibg=White gui=NONE')
command('highlight CursorLineNr guifg=Green guibg=Red gui=NONE')
feed('30iø<esc>o<esc>30ia<esc>')
@ -977,7 +978,7 @@ describe('CursorLine and CursorLineNr highlights', function()
]])
-- CursorLineNr should not apply to line number when 'cursorlineopt' does not contain "number"
feed_command('set relativenumber numberwidth=2')
command('set relativenumber numberwidth=2')
screen:expect([[
{3:0 }{1:øøøøøøøøøøøø^øøøøøø}|
{3: }{2:>>>}øøøøøøøøøøøø |
@ -987,7 +988,7 @@ describe('CursorLine and CursorLineNr highlights', function()
]])
-- CursorLineNr should apply to line number when 'cursorlineopt' contains "number"
feed_command('set cursorlineopt+=number')
command('set cursorlineopt+=number')
screen:expect([[
{4:0 }{1:øøøøøøøøøøøø^øøøøøø}|
{3: }{2:>>>}øøøøøøøøøøøø |
@ -1019,6 +1020,44 @@ describe('CursorLine and CursorLineNr highlights', function()
{3: }{2:>>>}{1:aaaaaaaaa^aaa }|
|
]])
-- updated in Insert mode
feed('I')
screen:expect([[
{3:1 }øøøøøøøøøøøøøøøøøø|
{3: }{2:>>>}øøøøøøøøøøøø |
{4:0 }{1:^aaaaaaaaaaaaaaaaaa}|
{3: }{2:>>>}aaaaaaaaaaaa |
{5:-- INSERT --} |
]])
feed('<Esc>gg')
screen:expect([[
{4:0 }{1:^øøøøøøøøøøøøøøøøøø}|
{3: }{2:>>>}øøøøøøøøøøøø |
{3:1 }aaaaaaaaaaaaaaaaaa|
{3: }{2:>>>}aaaaaaaaaaaa |
|
]])
command('inoremap <F2> <Cmd>call cursor(1, 1)<CR>')
feed('A')
screen:expect([[
{4:0 }øøøøøøøøøøøøøøøøøø|
{3: }{2:>>>}{1:øøøøøøøøøøøø^ }|
{3:1 }aaaaaaaaaaaaaaaaaa|
{3: }{2:>>>}aaaaaaaaaaaa |
{5:-- INSERT --} |
]])
feed('<F2>')
screen:expect([[
{4:0 }{1:^øøøøøøøøøøøøøøøøøø}|
{3: }{2:>>>}øøøøøøøøøøøø |
{3:1 }aaaaaaaaaaaaaaaaaa|
{3: }{2:>>>}aaaaaaaaaaaa |
{5:-- INSERT --} |
]])
end)
it('always updated. vim-patch:8.1.0849', function()