1515545e1SBram Moolenaar" Test for modeless selection
2515545e1SBram Moolenaar
3515545e1SBram Moolenaar" This only works for Unix in a terminal
4515545e1SBram Moolenaarsource check.vim
5515545e1SBram MoolenaarCheckNotGui
6515545e1SBram MoolenaarCheckUnix
7515545e1SBram Moolenaar
8515545e1SBram Moolenaarsource mouse.vim
9515545e1SBram Moolenaar
10515545e1SBram Moolenaar" Test for modeless characterwise selection (single click)
11515545e1SBram Moolenaarfunc Test_modeless_characterwise_selection()
12515545e1SBram Moolenaar  CheckFeature clipboard_working
13515545e1SBram Moolenaar  let save_mouse = &mouse
14515545e1SBram Moolenaar  let save_term = &term
15515545e1SBram Moolenaar  let save_ttymouse = &ttymouse
16515545e1SBram Moolenaar  call test_override('no_query_mouse', 1)
17515545e1SBram Moolenaar  set mouse=a term=xterm mousetime=200
18515545e1SBram Moolenaar  new
19515545e1SBram Moolenaar  call setline(1, ['one two three', 'foo bar baz'])
20515545e1SBram Moolenaar  redraw!
21515545e1SBram Moolenaar
22515545e1SBram Moolenaar  for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
23515545e1SBram Moolenaar    let msg = 'ttymouse=' .. ttymouse_val
24515545e1SBram Moolenaar    exe 'set ttymouse=' .. ttymouse_val
25515545e1SBram Moolenaar
26515545e1SBram Moolenaar    " select multiple characters within a line
27*91689ea8SBram Moolenaar    let @* = 'clean'
28515545e1SBram Moolenaar    call MouseRightClick(1, 1)
29515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
30515545e1SBram Moolenaar    let keys = ":"
31515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
32515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 10)
33515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 10)
34515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
35515545e1SBram Moolenaar    call feedkeys(keys, "x")
36515545e1SBram Moolenaar    call assert_equal("wo th", @*, msg)
37515545e1SBram Moolenaar
38515545e1SBram Moolenaar    " select multiple characters including the end of line
39*91689ea8SBram Moolenaar    let @* = 'clean'
40515545e1SBram Moolenaar    call MouseRightClick(1, 1)
41515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
42515545e1SBram Moolenaar    let keys = ":"
43515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 11)
44515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 16)
45515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 16)
46515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
47515545e1SBram Moolenaar    call feedkeys(keys, "x")
48515545e1SBram Moolenaar    call assert_equal("ree\n", @*, msg)
49515545e1SBram Moolenaar
50515545e1SBram Moolenaar    " extend a selection using right mouse click
51*91689ea8SBram Moolenaar    let @* = 'clean'
52515545e1SBram Moolenaar    call MouseRightClick(1, 1)
53515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
54515545e1SBram Moolenaar    set mousemodel=extend
55515545e1SBram Moolenaar    let keys = ":"
56515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 2)
57515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 5)
58515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 5)
59515545e1SBram Moolenaar    let keys ..= MouseRightClickCode(1, 10)
60515545e1SBram Moolenaar    let keys ..= MouseRightReleaseCode(1, 10)
61515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
62515545e1SBram Moolenaar    call feedkeys(keys, "x")
63515545e1SBram Moolenaar    call assert_equal("ne two th", @*, msg)
64515545e1SBram Moolenaar    set mousemodel&
65515545e1SBram Moolenaar
66515545e1SBram Moolenaar    " extend a selection backwards using right mouse click
67*91689ea8SBram Moolenaar    let @* = 'clean'
68515545e1SBram Moolenaar    call MouseRightClick(1, 1)
69515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
70515545e1SBram Moolenaar    set mousemodel=extend
71515545e1SBram Moolenaar    let keys = ":"
72515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 7)
73515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 11)
74515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 11)
75515545e1SBram Moolenaar    let keys ..= MouseRightClickCode(1, 3)
76515545e1SBram Moolenaar    let keys ..= MouseRightReleaseCode(1, 3)
77515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
78515545e1SBram Moolenaar    call feedkeys(keys, "x")
79515545e1SBram Moolenaar    call assert_equal("e two thr", @*, msg)
80515545e1SBram Moolenaar    set mousemodel&
81515545e1SBram Moolenaar
82515545e1SBram Moolenaar    " select multiple characters within a line backwards
83*91689ea8SBram Moolenaar    let @* = 'clean'
84515545e1SBram Moolenaar    call MouseRightClick(1, 1)
85515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
86515545e1SBram Moolenaar    let keys = ":"
87515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 9)
88515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 3)
89515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 3)
90515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
91515545e1SBram Moolenaar    call feedkeys(keys, "x")
92515545e1SBram Moolenaar    call assert_equal("e two t", @*, msg)
93515545e1SBram Moolenaar
94515545e1SBram Moolenaar    " select multiple characters across lines with (end row > start row) and
95515545e1SBram Moolenaar    " (end column < start column)
96*91689ea8SBram Moolenaar    let @* = 'clean'
97515545e1SBram Moolenaar    call MouseRightClick(1, 1)
98515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
99515545e1SBram Moolenaar    let keys = ":"
100515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 9)
101515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 3)
102515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 3)
103515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
104515545e1SBram Moolenaar    call feedkeys(keys, "x")
105515545e1SBram Moolenaar    call assert_equal("three\nfoo", @*, msg)
106515545e1SBram Moolenaar
107515545e1SBram Moolenaar    " select multiple characters across lines with (end row > start row) and
108515545e1SBram Moolenaar    " (end column > start column)
109*91689ea8SBram Moolenaar    let @* = 'clean'
110515545e1SBram Moolenaar    call MouseRightClick(1, 1)
111515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
112515545e1SBram Moolenaar    let keys = ":"
113515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 4)
114515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 8)
115515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 8)
116515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
117515545e1SBram Moolenaar    call feedkeys(keys, "x")
118515545e1SBram Moolenaar    call assert_equal(" two three\nfoo bar ", @*, msg)
119515545e1SBram Moolenaar
120515545e1SBram Moolenaar    " select multiple characters across lines with (end row < start row) and
121515545e1SBram Moolenaar    " (end column < start column)
122*91689ea8SBram Moolenaar    let @* = 'clean'
123515545e1SBram Moolenaar    call MouseRightClick(1, 1)
124515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
125515545e1SBram Moolenaar    let keys = ":"
126515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 7)
127515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 5)
128515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 5)
129515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
130515545e1SBram Moolenaar    call feedkeys(keys, "x")
131515545e1SBram Moolenaar    call assert_equal("two three\nfoo bar", @*, msg)
132515545e1SBram Moolenaar
133515545e1SBram Moolenaar    " select multiple characters across lines with (end row < start row) and
134515545e1SBram Moolenaar    " (end column > start column)
135*91689ea8SBram Moolenaar    let @* = 'clean'
136515545e1SBram Moolenaar    call MouseRightClick(1, 1)
137515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
138515545e1SBram Moolenaar    let keys = ":"
139515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 11)
140515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 13)
141515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 13)
142515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
143515545e1SBram Moolenaar    call feedkeys(keys, "x")
144515545e1SBram Moolenaar    call assert_equal("e\nfoo bar baz", @*, msg)
145515545e1SBram Moolenaar
146515545e1SBram Moolenaar    " select multiple characters across lines with (end row < start row) and
147515545e1SBram Moolenaar    " the end column is greater than the line length
148*91689ea8SBram Moolenaar    let @* = 'clean'
149515545e1SBram Moolenaar    call MouseRightClick(1, 1)
150515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
151515545e1SBram Moolenaar    let keys = ":"
152515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 7)
153515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 16)
154515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 16)
155515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
156515545e1SBram Moolenaar    call feedkeys(keys, "x")
157515545e1SBram Moolenaar    call assert_equal("\nfoo bar", @*, msg)
158515545e1SBram Moolenaar
159515545e1SBram Moolenaar    " select multiple characters across lines with start/end row and start/end
160515545e1SBram Moolenaar    " column outside the lines in the buffer
161*91689ea8SBram Moolenaar    let @* = 'clean'
162515545e1SBram Moolenaar    call MouseRightClick(1, 1)
163515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
164515545e1SBram Moolenaar    let keys = ":"
165515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(4, 3)
166515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(3, 2)
167515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(3, 2)
168515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
169515545e1SBram Moolenaar    call feedkeys(keys, "x")
170515545e1SBram Moolenaar    call assert_equal("\n~  ", @*, msg)
171515545e1SBram Moolenaar
172515545e1SBram Moolenaar    " change selection using right mouse click within the selected text
173*91689ea8SBram Moolenaar    let @* = 'clean'
174515545e1SBram Moolenaar    call MouseRightClick(1, 1)
175515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
176515545e1SBram Moolenaar    set mousemodel=extend
177515545e1SBram Moolenaar    let keys = ":"
178515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 5)
179515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 13)
180515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 13)
181515545e1SBram Moolenaar    let keys ..= MouseRightClickCode(1, 7)
182515545e1SBram Moolenaar    let keys ..= MouseRightReleaseCode(1, 7)
183515545e1SBram Moolenaar    let keys ..= MouseRightClickCode(1, 11)
184515545e1SBram Moolenaar    let keys ..= MouseRightReleaseCode(1, 11)
185515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
186515545e1SBram Moolenaar    call feedkeys(keys, "x")
187515545e1SBram Moolenaar    call assert_equal("o thr", @*, msg)
188515545e1SBram Moolenaar    set mousemodel&
189515545e1SBram Moolenaar
190515545e1SBram Moolenaar    " select text multiple times at different places
191*91689ea8SBram Moolenaar    let @* = 'clean'
192515545e1SBram Moolenaar    call MouseRightClick(1, 1)
193515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
194515545e1SBram Moolenaar    let keys = ":"
195515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 3)
196515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 5)
197515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 5)
198515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 7)
199515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 9)
200515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 9)
201515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
202515545e1SBram Moolenaar    call feedkeys(keys, "x")
203515545e1SBram Moolenaar    call assert_equal("r b", @*, msg)
204515545e1SBram Moolenaar
205515545e1SBram Moolenaar    " Test for 'clipboard' set to 'autoselectml' to automatically copy the
206515545e1SBram Moolenaar    " modeless selection to the clipboard
207515545e1SBram Moolenaar    set clipboard=autoselectml
208*91689ea8SBram Moolenaar    let @* = 'clean'
209515545e1SBram Moolenaar    let keys = ":"
210515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 5)
211515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 7)
212515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 7)
213515545e1SBram Moolenaar    let keys ..= "\<CR>"
214515545e1SBram Moolenaar    call feedkeys(keys, "x")
215515545e1SBram Moolenaar    call assert_equal("bar", @*)
216515545e1SBram Moolenaar    set clipboard&
217515545e1SBram Moolenaar
218515545e1SBram Moolenaar    " quadruple click should start characterwise selectmode
219*91689ea8SBram Moolenaar    let @* = 'clean'
220515545e1SBram Moolenaar    call MouseRightClick(1, 1)
221515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
222515545e1SBram Moolenaar    let keys = ":"
223515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 10)
224515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 10)
225515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 10)
226515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 10)
227515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 10)
228515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 10)
229515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 10)
230515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 11)
231515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 11)
232515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
233515545e1SBram Moolenaar    call feedkeys(keys, "x")
234515545e1SBram Moolenaar    call assert_equal("hree", @*, msg)
235515545e1SBram Moolenaar  endfor
236515545e1SBram Moolenaar
237515545e1SBram Moolenaar  let &mouse = save_mouse
238515545e1SBram Moolenaar  let &term = save_term
239515545e1SBram Moolenaar  let &ttymouse = save_ttymouse
240515545e1SBram Moolenaar  set mousetime&
241515545e1SBram Moolenaar  call test_override('no_query_mouse', 0)
242515545e1SBram Moolenaar  close!
243515545e1SBram Moolenaarendfunc
244515545e1SBram Moolenaar
245515545e1SBram Moolenaar" Test for modeless word selection (double click)
246515545e1SBram Moolenaarfunc Test_modeless_word_selection()
247515545e1SBram Moolenaar  CheckFeature clipboard_working
248515545e1SBram Moolenaar  let save_mouse = &mouse
249515545e1SBram Moolenaar  let save_term = &term
250515545e1SBram Moolenaar  let save_ttymouse = &ttymouse
251515545e1SBram Moolenaar  call test_override('no_query_mouse', 1)
252515545e1SBram Moolenaar  set mouse=a term=xterm mousetime=200
253515545e1SBram Moolenaar  new
254515545e1SBram Moolenaar  call setline(1, ['one two three', 'foo bar baz'])
255515545e1SBram Moolenaar  redraw!
256515545e1SBram Moolenaar
257515545e1SBram Moolenaar  for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
258515545e1SBram Moolenaar    let msg = 'ttymouse=' .. ttymouse_val
259515545e1SBram Moolenaar    exe 'set ttymouse=' .. ttymouse_val
260515545e1SBram Moolenaar
261515545e1SBram Moolenaar    " select multiple words within a line
262*91689ea8SBram Moolenaar    let @* = 'clean'
263515545e1SBram Moolenaar    call MouseRightClick(1, 1)
264515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
265515545e1SBram Moolenaar    let keys = ":"
266515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
267515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 6)
268515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
269515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 10)
270515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 10)
271515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
272515545e1SBram Moolenaar    call feedkeys(keys, "x")
273515545e1SBram Moolenaar    call assert_equal("two three", @*, msg)
274515545e1SBram Moolenaar
275515545e1SBram Moolenaar    " select a single word
276*91689ea8SBram Moolenaar    let @* = 'clean'
277515545e1SBram Moolenaar    call MouseRightClick(1, 1)
278515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
279515545e1SBram Moolenaar    let keys = ":"
280515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 6)
281515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 6)
282515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 6)
283515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 6)
284515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
285515545e1SBram Moolenaar    call feedkeys(keys, "x")
286515545e1SBram Moolenaar    call assert_equal("bar", @*, msg)
287515545e1SBram Moolenaar
288515545e1SBram Moolenaar    " select multiple words backwards within a line
289*91689ea8SBram Moolenaar    let @* = 'clean'
290515545e1SBram Moolenaar    call MouseRightClick(1, 1)
291515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
292515545e1SBram Moolenaar    let keys = ":"
293515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 11)
294515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 11)
295515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 11)
296515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 7)
297515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 7)
298515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
299515545e1SBram Moolenaar    call feedkeys(keys, "x")
300515545e1SBram Moolenaar    call assert_equal("bar baz", @*, msg)
301515545e1SBram Moolenaar
302515545e1SBram Moolenaar    " select multiple words backwards across lines
303*91689ea8SBram Moolenaar    let @* = 'clean'
304515545e1SBram Moolenaar    call MouseRightClick(1, 1)
305515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
306515545e1SBram Moolenaar    let keys = ":"
307515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 7)
308515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 7)
309515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 7)
310515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 6)
311515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 6)
312515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
313515545e1SBram Moolenaar    call feedkeys(keys, "x")
314515545e1SBram Moolenaar    call assert_equal("two three\nfoo bar", @*, msg)
315515545e1SBram Moolenaar  endfor
316515545e1SBram Moolenaar
317515545e1SBram Moolenaar  let &mouse = save_mouse
318515545e1SBram Moolenaar  let &term = save_term
319515545e1SBram Moolenaar  let &ttymouse = save_ttymouse
320515545e1SBram Moolenaar  set mousetime&
321515545e1SBram Moolenaar  call test_override('no_query_mouse', 0)
322515545e1SBram Moolenaar  close!
323515545e1SBram Moolenaarendfunc
324515545e1SBram Moolenaar
325515545e1SBram Moolenaar" Test for modeless line selection (triple click)
326515545e1SBram Moolenaarfunc Test_modeless_line_selection()
327515545e1SBram Moolenaar  CheckFeature clipboard_working
328515545e1SBram Moolenaar  let save_mouse = &mouse
329515545e1SBram Moolenaar  let save_term = &term
330515545e1SBram Moolenaar  let save_ttymouse = &ttymouse
331515545e1SBram Moolenaar  call test_override('no_query_mouse', 1)
332515545e1SBram Moolenaar  set mouse=a term=xterm mousetime=200
333515545e1SBram Moolenaar  new
334515545e1SBram Moolenaar  call setline(1, ['one two three', 'foo bar baz'])
335515545e1SBram Moolenaar  redraw!
336515545e1SBram Moolenaar
337515545e1SBram Moolenaar  for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
338515545e1SBram Moolenaar    let msg = 'ttymouse=' .. ttymouse_val
339515545e1SBram Moolenaar    exe 'set ttymouse=' .. ttymouse_val
340515545e1SBram Moolenaar
341515545e1SBram Moolenaar    " select single line
342*91689ea8SBram Moolenaar    let @* = 'clean'
343515545e1SBram Moolenaar    call MouseRightClick(1, 1)
344515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
345515545e1SBram Moolenaar    let keys = ":"
346515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 6)
347515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 6)
348515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 6)
349515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 6)
350515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 6)
351515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 6)
352515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
353515545e1SBram Moolenaar    call feedkeys(keys, "x")
354515545e1SBram Moolenaar    call assert_equal("foo bar baz\n", @*, msg)
355515545e1SBram Moolenaar
356515545e1SBram Moolenaar    " select multiple lines
357*91689ea8SBram Moolenaar    let @* = 'clean'
358515545e1SBram Moolenaar    call MouseRightClick(1, 1)
359515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
360515545e1SBram Moolenaar    let keys = ":"
361515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
362515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 6)
363515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
364515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 6)
365515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(1, 6)
366515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(2, 12)
367515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 12)
368515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
369515545e1SBram Moolenaar    call feedkeys(keys, "x")
370515545e1SBram Moolenaar    call assert_equal("one two three\nfoo bar baz\n", @*, msg)
371515545e1SBram Moolenaar
372515545e1SBram Moolenaar    " select multiple lines backwards
373*91689ea8SBram Moolenaar    let @* = 'clean'
374515545e1SBram Moolenaar    call MouseRightClick(1, 1)
375515545e1SBram Moolenaar    call MouseRightRelease(1, 1)
376515545e1SBram Moolenaar    let keys = ":"
377515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 10)
378515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 10)
379515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 10)
380515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(2, 10)
381515545e1SBram Moolenaar    let keys ..= MouseLeftClickCode(2, 10)
382515545e1SBram Moolenaar    let keys ..= MouseLeftDragCode(1, 3)
383515545e1SBram Moolenaar    let keys ..= MouseLeftReleaseCode(1, 3)
384515545e1SBram Moolenaar    let keys ..= "\<C-Y>\<CR>"
385515545e1SBram Moolenaar    call feedkeys(keys, "x")
386515545e1SBram Moolenaar    call assert_equal("one two three\nfoo bar baz\n", @*, msg)
387515545e1SBram Moolenaar  endfor
388515545e1SBram Moolenaar
389515545e1SBram Moolenaar  let &mouse = save_mouse
390515545e1SBram Moolenaar  let &term = save_term
391515545e1SBram Moolenaar  let &ttymouse = save_ttymouse
392515545e1SBram Moolenaar  set mousetime&
393515545e1SBram Moolenaar  call test_override('no_query_mouse', 0)
394515545e1SBram Moolenaar  close!
395515545e1SBram Moolenaarendfunc
396515545e1SBram Moolenaar
397515545e1SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
398