forked from aniani/vim
Problem: Highlighting not updated with conceal and 'cursorline'. (Jason
Franklin)
Solution: Do not use a zero line number. Check if 'conceallevel' is set for
the current window.
137 lines
4.9 KiB
VimL
137 lines
4.9 KiB
VimL
" Tests for 'conceal'.
|
|
" Also see test88.in (should be converted to a test function here).
|
|
|
|
if !has('conceal')
|
|
finish
|
|
endif
|
|
|
|
source screendump.vim
|
|
if !CanRunVimInTerminal()
|
|
finish
|
|
endif
|
|
|
|
func Test_conceal_two_windows()
|
|
call writefile([
|
|
\ 'let lines = ["one one one one one", "two |hidden| here", "three |hidden| three"]',
|
|
\ 'call setline(1, lines)',
|
|
\ 'syntax match test /|hidden|/ conceal',
|
|
\ 'set conceallevel=2',
|
|
\ 'set concealcursor=',
|
|
\ 'exe "normal /here\r"',
|
|
\ 'new',
|
|
\ 'call setline(1, lines)',
|
|
\ 'call setline(4, "Second window")',
|
|
\ 'syntax match test /|hidden|/ conceal',
|
|
\ 'set conceallevel=2',
|
|
\ 'set concealcursor=nc',
|
|
\ 'exe "normal /here\r"',
|
|
\ ], 'XTest_conceal')
|
|
" Check that cursor line is concealed
|
|
let buf = RunVimInTerminal('-S XTest_conceal', {})
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_01', {})
|
|
|
|
" Check that with concealed text vertical cursor movement is correct.
|
|
call term_sendkeys(buf, "k")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_02', {})
|
|
|
|
" Check that with cursor line is not concealed
|
|
call term_sendkeys(buf, "j")
|
|
call term_sendkeys(buf, ":set concealcursor=\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_03', {})
|
|
|
|
" Check that with cursor line is not concealed when moving cursor down
|
|
call term_sendkeys(buf, "j")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_04', {})
|
|
|
|
" Check that with cursor line is not concealed when switching windows
|
|
call term_sendkeys(buf, "\<C-W>\<C-W>")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_05', {})
|
|
|
|
" Check that with cursor line is only concealed in Normal mode
|
|
call term_sendkeys(buf, ":set concealcursor=n\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_06n', {})
|
|
call term_sendkeys(buf, "a")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_06i', {})
|
|
call term_sendkeys(buf, "\<Esc>/e")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_06c', {})
|
|
call term_sendkeys(buf, "\<Esc>v")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_06v', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" Check that with cursor line is only concealed in Insert mode
|
|
call term_sendkeys(buf, ":set concealcursor=i\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_07n', {})
|
|
call term_sendkeys(buf, "a")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_07i', {})
|
|
call term_sendkeys(buf, "\<Esc>/e")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_07c', {})
|
|
call term_sendkeys(buf, "\<Esc>v")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_07v', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" Check that with cursor line is only concealed in Command mode
|
|
call term_sendkeys(buf, ":set concealcursor=c\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_08n', {})
|
|
call term_sendkeys(buf, "a")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_08i', {})
|
|
call term_sendkeys(buf, "\<Esc>/e")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_08c', {})
|
|
call term_sendkeys(buf, "\<Esc>v")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_08v', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" Check that with cursor line is only concealed in Visual mode
|
|
call term_sendkeys(buf, ":set concealcursor=v\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_09n', {})
|
|
call term_sendkeys(buf, "a")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_09i', {})
|
|
call term_sendkeys(buf, "\<Esc>/e")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_09c', {})
|
|
call term_sendkeys(buf, "\<Esc>v")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_09v', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" Check moving the cursor while in insert mode.
|
|
call term_sendkeys(buf, ":set concealcursor=\r")
|
|
call term_sendkeys(buf, "a")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_10', {})
|
|
call term_sendkeys(buf, "\<Down>")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_11', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" Check the "o" command
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_12', {})
|
|
call term_sendkeys(buf, "o")
|
|
call VerifyScreenDump(buf, 'Test_conceal_two_windows_13', {})
|
|
call term_sendkeys(buf, "\<Esc>")
|
|
|
|
" clean up
|
|
call StopVimInTerminal(buf)
|
|
call delete('XTest_conceal')
|
|
endfunc
|
|
|
|
func Test_conceal_with_cursorline()
|
|
" Opens a help window, where 'conceal' is set, switches to the other window
|
|
" where 'cursorline' needs to be updated when the cursor moves.
|
|
call writefile([
|
|
\ 'set cursorline',
|
|
\ 'normal othis is a test',
|
|
\ 'new',
|
|
\ 'call setline(1, ["one", "two", "three", "four", "five"])',
|
|
\ 'set ft=help',
|
|
\ 'normal M',
|
|
\ ], 'XTest_conceal_cul')
|
|
let buf = RunVimInTerminal('-S XTest_conceal_cul', {})
|
|
call VerifyScreenDump(buf, 'Test_conceal_cul_01', {})
|
|
|
|
call term_sendkeys(buf, ":wincmd w\r")
|
|
call VerifyScreenDump(buf, 'Test_conceal_cul_02', {})
|
|
|
|
call term_sendkeys(buf, "k")
|
|
call VerifyScreenDump(buf, 'Test_conceal_cul_03', {})
|
|
|
|
" clean up
|
|
call StopVimInTerminal(buf)
|
|
call delete('XTest_conceal_cul')
|
|
endfunc
|