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
|
" Tests for popup windows
if !has('textprop')
finish
endif
source screendump.vim
func Test_simple_popup()
if !CanRunVimInTerminal()
return
endif
call writefile([
\ "call setline(1, range(1, 100))",
\ "hi PopupColor1 ctermbg=lightblue",
\ "hi PopupColor2 ctermbg=lightcyan",
\ "hi Comment ctermfg=red",
\ "call prop_type_add('comment', {'highlight': 'Comment'})",
\ "let winid = popup_create('hello there', {'line': 3, 'col': 11, 'highlight': 'PopupColor1'})",
\ "let winid2 = popup_create(['another one', 'another two', 'another three'], {'line': 3, 'col': 25})",
\ "call setwinvar(winid2, '&wincolor', 'PopupColor2')",
\], 'XtestPopup')
let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10})
call VerifyScreenDump(buf, 'Test_popupwin_01', {})
" Add a tabpage
call term_sendkeys(buf, ":tabnew\<CR>")
call term_sendkeys(buf, ":call popup_create(["
\ .. "{'text': 'other tab'},"
\ .. "{'text': 'a comment line', 'props': [{"
\ .. "'col': 3, 'length': 7, 'type': 'comment'"
\ .. "}]},"
\ .. "], {'line': 4, 'col': 9})\<CR>")
call VerifyScreenDump(buf, 'Test_popupwin_02', {})
" switch back to first tabpage
call term_sendkeys(buf, "gt")
call VerifyScreenDump(buf, 'Test_popupwin_03', {})
" close that tabpage
call term_sendkeys(buf, ":quit!\<CR>")
call VerifyScreenDump(buf, 'Test_popupwin_04', {})
" clean up
call StopVimInTerminal(buf)
call delete('XtestPopup')
endfunc
func Test_popup_time()
if !has('timers')
return
endif
topleft vnew
call setline(1, 'hello')
call popup_create('world', {
\ 'line': 1,
\ 'col': 1,
\ 'time': 500,
\})
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('world', line)
sleep 700m
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('hello', line)
call popup_create('on the command line', {
\ 'line': &lines,
\ 'col': 10,
\ 'time': 500,
\})
redraw
let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '')
call assert_match('.*on the command line.*', line)
sleep 700m
redraw
let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '')
call assert_notmatch('.*on the command line.*', line)
bwipe!
endfunc
func Test_popup_hide()
topleft vnew
call setline(1, 'hello')
let winid = popup_create('world', {
\ 'line': 1,
\ 'col': 1,
\})
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('world', line)
call popup_hide(winid)
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('hello', line)
call popup_show(winid)
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('world', line)
call popup_close(winid)
redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('hello', line)
" error is given for existing non-popup window
call assert_fails('call popup_hide(win_getid())', 'E993:')
" no error non-existing window
call popup_hide(1234234)
call popup_show(41234234)
bwipe!
endfunc
|