blob: 13d6e9e11ac080203850771607837f1e7eb2adf6 [file] [log] [blame]
" Test for the matchparen plugin
if !has('gui_running') && has('unix')
set term=ansi
endif
source view_util.vim
source check.vim
source screendump.vim
" Test for scrolling that modifies buffer during visual block
func Test_visual_block_scroll()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set scrolloff=1
call setline(1, ['a', 'b', 'c', 'd', 'e', '', '{', '}', '{', 'f', 'g', '}'])
call cursor(5, 1)
END
let filename = 'Xvisualblockmodifiedscroll'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 7})
call term_sendkeys(buf, "V\<C-D>\<C-D>")
call VerifyScreenDump(buf, 'Test_display_visual_block_scroll', {})
call StopVimInTerminal(buf)
endfunc
" Test for clearing paren highlight when switching buffers
func Test_matchparen_clear_highlight()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set hidden
call setline(1, ['()'])
normal 0
func OtherBuffer()
enew
exe "normal iaa\<Esc>0"
endfunc
END
call writefile(lines, 'XMatchparenClear', 'D')
let buf = RunVimInTerminal('-S XMatchparenClear', #{rows: 5})
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
call term_sendkeys(buf, ":call OtherBuffer()\<CR>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
call term_sendkeys(buf, "\<C-^>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
call term_sendkeys(buf, "\<C-^>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
call StopVimInTerminal(buf)
endfunc
" Test for matchparen highlight when switching buffer in win_execute()
func Test_matchparen_win_execute()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
let s:win = win_getid()
call setline(1, '{}')
split
func SwitchBuf()
call win_execute(s:win, 'enew | buffer #')
endfunc
END
call writefile(lines, 'XMatchparenWinExecute', 'D')
let buf = RunVimInTerminal('-S XMatchparenWinExecute', #{rows: 5})
call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
" Switching buffer away and back shouldn't change matchparen highlight.
call term_sendkeys(buf, ":call SwitchBuf()\<CR>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
call StopVimInTerminal(buf)
endfunc
" Test for scrolling that modifies buffer during visual block
func Test_matchparen_pum_clear()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set completeopt=menuone
call setline(1, ['aa', 'aaa', 'aaaa', '(a)'])
call cursor(4, 3)
END
let filename = 'Xmatchparen'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 10})
call term_sendkeys(buf, "i\<C-N>\<C-N>")
call VerifyScreenDump(buf, 'Test_matchparen_pum_clear_1', {})
call StopVimInTerminal(buf)
endfunc
" Test that matchparen works with multibyte chars in 'matchpairs'
func Test_matchparen_mbyte()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
call setline(1, ['aaaaaaaa(', 'bbbb)cc'])
set matchpairs+=(:)
END
call writefile(lines, 'XmatchparenMbyte', 'D')
let buf = RunVimInTerminal('-S XmatchparenMbyte', #{rows: 10})
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_1', {})
call term_sendkeys(buf, "$")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_2', {})
call term_sendkeys(buf, "j")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_3', {})
call term_sendkeys(buf, "2h")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_4', {})
call term_sendkeys(buf, "0")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_5', {})
call term_sendkeys(buf, "kA")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_6', {})
call term_sendkeys(buf, "\<Down>")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_7', {})
call term_sendkeys(buf, "\<C-W>")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_8', {})
call StopVimInTerminal(buf)
endfunc
" Test for ignoring certain parenthesis
func Test_matchparen_ignore_sh_case()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set ft=sh
call setline(1, [
\ '#!/bin/sh',
\ 'SUSUWU_PRINT() (',
\ ' case "${LEVEL}" in',
\ ' "$SUSUWU_SH_NOTICE")',
\ ' ${SUSUWU_S} && return 1',
\ ' ;;',
\ ' "$SUSUWU_SH_DEBUG")',
\ ' (! ${SUSUWU_VERBOSE}) && return 1',
\ ' ;;',
\ ' esac',
\ ' # snip',
\ ')'
\ ])
call cursor(4, 26)
END
let filename = 'Xmatchparen_sh'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 10})
call VerifyScreenDump(buf, 'Test_matchparen_sh_case_1', {})
" Send keys one by one so that CursorMoved is triggered.
for c in 'A foobar'
call term_sendkeys(buf, c)
call term_wait(buf)
endfor
call VerifyScreenDump(buf, 'Test_matchparen_sh_case_2', {})
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab