1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
" 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
" vim: shiftwidth=2 sts=2 expandtab
|