Mercurial > vim
comparison src/testdir/test_termcodes.vim @ 16489:42910f306377 v8.1.1248
patch 8.1.1248: no test for dec mouse
commit https://github.com/vim/vim/commit/92fd599e0d85bdd7462926b2e5bcf7ce65fccc50
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu May 2 23:00:22 2019 +0200
patch 8.1.1248: no test for dec mouse
Problem: No test for dec mouse.
Solution: Add some tests for dec mouse. Add "no_query_mouse".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 02 May 2019 23:15:06 +0200 |
parents | a4732cdcfaaf |
children | 4912193bc5e7 |
comparison
equal
deleted
inserted
replaced
16488:08a98bd701fd | 16489:42910f306377 |
---|---|
6 endif | 6 endif |
7 | 7 |
8 source shared.vim | 8 source shared.vim |
9 | 9 |
10 " xterm2 and sgr always work, urxvt is optional. | 10 " xterm2 and sgr always work, urxvt is optional. |
11 let s:test_ttymouse = ['xterm2', 'sgr'] | 11 let s:ttymouse_values = ['xterm2', 'sgr'] |
12 if has('mouse_urxvt') | 12 if has('mouse_urxvt') |
13 call add(s:test_ttymouse, 'urxvt') | 13 call add(s:ttymouse_values, 'urxvt') |
14 endif | |
15 | |
16 " dec doesn't support all the functionality | |
17 if has('mouse_dec') | |
18 let s:ttymouse_dec = ['dec'] | |
19 else | |
20 let s:ttymouse_dec = [] | |
14 endif | 21 endif |
15 | 22 |
16 " Helper function to emit a terminal escape code. | 23 " Helper function to emit a terminal escape code. |
17 func TerminalEscapeCode(code, row, col, m) | 24 func TerminalEscapeCode(code, row, col, m) |
18 if &ttymouse ==# 'xterm2' | 25 if &ttymouse ==# 'xterm2' |
30 elseif &ttymouse ==# 'urxvt' | 37 elseif &ttymouse ==# 'urxvt' |
31 call feedkeys(printf("\<Esc>[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!') | 38 call feedkeys(printf("\<Esc>[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!') |
32 endif | 39 endif |
33 endfunc | 40 endfunc |
34 | 41 |
42 func DecEscapeCode(code, down, row, col) | |
43 call feedkeys(printf("\<Esc>[%d;%d;%d;%d&w", a:code, a:down, a:row, a:col), 'Lx!') | |
44 endfunc | |
45 | |
35 func MouseLeftClick(row, col) | 46 func MouseLeftClick(row, col) |
36 call TerminalEscapeCode(0, a:row, a:col, 'M') | 47 if &ttymouse ==# 'dec' |
48 call DecEscapeCode(2, 4, a:row, a:col) | |
49 else | |
50 call TerminalEscapeCode(0, a:row, a:col, 'M') | |
51 endif | |
37 endfunc | 52 endfunc |
38 | 53 |
39 func MouseMiddleClick(row, col) | 54 func MouseMiddleClick(row, col) |
40 call TerminalEscapeCode(1, a:row, a:col, 'M') | 55 if &ttymouse ==# 'dec' |
56 call DecEscapeCode(4, 2, a:row, a:col) | |
57 else | |
58 call TerminalEscapeCode(1, a:row, a:col, 'M') | |
59 endif | |
41 endfunc | 60 endfunc |
42 | 61 |
43 func MouseCtrlLeftClick(row, col) | 62 func MouseCtrlLeftClick(row, col) |
44 let ctrl = 0x10 | 63 let ctrl = 0x10 |
45 call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M') | 64 call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M') |
49 let ctrl = 0x10 | 68 let ctrl = 0x10 |
50 call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') | 69 call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') |
51 endfunc | 70 endfunc |
52 | 71 |
53 func MouseLeftRelease(row, col) | 72 func MouseLeftRelease(row, col) |
54 call TerminalEscapeCode(3, a:row, a:col, 'm') | 73 if &ttymouse ==# 'dec' |
74 call DecEscapeCode(3, 0, a:row, a:col) | |
75 else | |
76 call TerminalEscapeCode(3, a:row, a:col, 'm') | |
77 endif | |
55 endfunc | 78 endfunc |
56 | 79 |
57 func MouseMiddleRelease(row, col) | 80 func MouseMiddleRelease(row, col) |
58 call TerminalEscapeCode(3, a:row, a:col, 'm') | 81 if &ttymouse ==# 'dec' |
82 call DecEscapeCode(5, 0, a:row, a:col) | |
83 else | |
84 call TerminalEscapeCode(3, a:row, a:col, 'm') | |
85 endif | |
59 endfunc | 86 endfunc |
60 | 87 |
61 func MouseRightRelease(row, col) | 88 func MouseRightRelease(row, col) |
62 call TerminalEscapeCode(3, a:row, a:col, 'm') | 89 call TerminalEscapeCode(3, a:row, a:col, 'm') |
63 endfunc | 90 endfunc |
64 | 91 |
65 func MouseLeftDrag(row, col) | 92 func MouseLeftDrag(row, col) |
66 call TerminalEscapeCode(0x20, a:row, a:col, 'M') | 93 if &ttymouse ==# 'dec' |
94 call DecEscapeCode(1, 4, a:row, a:col) | |
95 else | |
96 call TerminalEscapeCode(0x20, a:row, a:col, 'M') | |
97 endif | |
67 endfunc | 98 endfunc |
68 | 99 |
69 func MouseWheelUp(row, col) | 100 func MouseWheelUp(row, col) |
70 call TerminalEscapeCode(0x40, a:row, a:col, 'M') | 101 call TerminalEscapeCode(0x40, a:row, a:col, 'M') |
71 endfunc | 102 endfunc |
72 | 103 |
73 func MouseWheelDown(row, col) | 104 func MouseWheelDown(row, col) |
74 call TerminalEscapeCode(0x41, a:row, a:col, 'M') | 105 call TerminalEscapeCode(0x41, a:row, a:col, 'M') |
75 endfunc | 106 endfunc |
76 | 107 |
77 func Test_xterm_mouse_left_click() | 108 func Test_term_mouse_left_click() |
78 new | 109 new |
79 let save_mouse = &mouse | 110 let save_mouse = &mouse |
80 let save_term = &term | 111 let save_term = &term |
81 let save_ttymouse = &ttymouse | 112 let save_ttymouse = &ttymouse |
113 call test_override('no_query_mouse', 1) | |
82 set mouse=a term=xterm | 114 set mouse=a term=xterm |
83 call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) | 115 call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) |
84 | 116 |
85 for ttymouse_val in s:test_ttymouse | 117 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
86 let msg = 'ttymouse=' .. ttymouse_val | 118 let msg = 'ttymouse=' .. ttymouse_val |
87 exe 'set ttymouse=' .. ttymouse_val | 119 exe 'set ttymouse=' .. ttymouse_val |
88 go | 120 go |
89 call assert_equal([0, 1, 1, 0], getpos('.'), msg) | 121 call assert_equal([0, 1, 1, 0], getpos('.'), msg) |
90 let row = 2 | 122 let row = 2 |
95 endfor | 127 endfor |
96 | 128 |
97 let &mouse = save_mouse | 129 let &mouse = save_mouse |
98 let &term = save_term | 130 let &term = save_term |
99 let &ttymouse = save_ttymouse | 131 let &ttymouse = save_ttymouse |
132 call test_override('no_query_mouse', 0) | |
100 bwipe! | 133 bwipe! |
101 endfunc | 134 endfunc |
102 | 135 |
103 " Test that <C-LeftMouse> jumps to help tag and <C-RightMouse> jumps back. | 136 " Test that <C-LeftMouse> jumps to help tag and <C-RightMouse> jumps back. |
104 func Test_xterm_mouse_ctrl_click() | 137 func Test_xterm_mouse_ctrl_click() |
105 let save_mouse = &mouse | 138 let save_mouse = &mouse |
106 let save_term = &term | 139 let save_term = &term |
107 let save_ttymouse = &ttymouse | 140 let save_ttymouse = &ttymouse |
108 set mouse=a term=xterm | 141 set mouse=a term=xterm |
109 | 142 |
110 for ttymouse_val in s:test_ttymouse | 143 for ttymouse_val in s:ttymouse_values |
111 let msg = 'ttymouse=' .. ttymouse_val | 144 let msg = 'ttymouse=' .. ttymouse_val |
112 exe 'set ttymouse=' .. ttymouse_val | 145 exe 'set ttymouse=' .. ttymouse_val |
113 help | 146 help |
114 /usr_02.txt | 147 /usr_02.txt |
115 norm! zt | 148 norm! zt |
119 call MouseLeftRelease(row, col) | 152 call MouseLeftRelease(row, col) |
120 call assert_match('usr_02.txt$', bufname('%'), msg) | 153 call assert_match('usr_02.txt$', bufname('%'), msg) |
121 call assert_equal('*usr_02.txt*', expand('<cWORD>')) | 154 call assert_equal('*usr_02.txt*', expand('<cWORD>')) |
122 | 155 |
123 call MouseCtrlRightClick(row, col) | 156 call MouseCtrlRightClick(row, col) |
124 call MouseLeftRelease(row, col) | 157 call MouseRightRelease(row, col) |
125 call assert_match('help.txt$', bufname('%'), msg) | 158 call assert_match('help.txt$', bufname('%'), msg) |
126 call assert_equal('|usr_02.txt|', expand('<cWORD>')) | 159 call assert_equal('|usr_02.txt|', expand('<cWORD>')) |
127 | 160 |
128 helpclose | 161 helpclose |
129 endfor | 162 endfor |
131 let &mouse = save_mouse | 164 let &mouse = save_mouse |
132 let &term = save_term | 165 let &term = save_term |
133 let &ttymouse = save_ttymouse | 166 let &ttymouse = save_ttymouse |
134 endfunc | 167 endfunc |
135 | 168 |
136 func Test_xterm_mouse_middle_click() | 169 func Test_term_mouse_middle_click() |
137 if !WorkingClipboard() | 170 if !WorkingClipboard() |
138 throw 'Skipped: No working clipboard' | 171 throw 'Skipped: No working clipboard' |
139 endif | 172 endif |
140 | 173 |
141 new | 174 new |
142 let save_mouse = &mouse | 175 let save_mouse = &mouse |
143 let save_term = &term | 176 let save_term = &term |
144 let save_ttymouse = &ttymouse | 177 let save_ttymouse = &ttymouse |
178 call test_override('no_query_mouse', 1) | |
145 let save_quotestar = @* | 179 let save_quotestar = @* |
146 let @* = 'abc' | 180 let @* = 'abc' |
147 set mouse=a term=xterm | 181 set mouse=a term=xterm |
148 | 182 |
149 for ttymouse_val in s:test_ttymouse | 183 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
150 let msg = 'ttymouse=' .. ttymouse_val | 184 let msg = 'ttymouse=' .. ttymouse_val |
151 exe 'set ttymouse=' .. ttymouse_val | 185 exe 'set ttymouse=' .. ttymouse_val |
152 call setline(1, ['123456789', '123456789']) | 186 call setline(1, ['123456789', '123456789']) |
153 | 187 |
154 " Middle-click in the middle of the line pastes text where clicked. | 188 " Middle-click in the middle of the line pastes text where clicked. |
173 endfor | 207 endfor |
174 | 208 |
175 let &mouse = save_mouse | 209 let &mouse = save_mouse |
176 let &term = save_term | 210 let &term = save_term |
177 let &ttymouse = save_ttymouse | 211 let &ttymouse = save_ttymouse |
212 call test_override('no_query_mouse', 0) | |
178 let @* = save_quotestar | 213 let @* = save_quotestar |
179 bwipe! | 214 bwipe! |
180 endfunc | 215 endfunc |
181 | 216 |
182 func Test_xterm_mouse_wheel() | 217 " TODO: for unclear reasons this test fails if it comes after |
218 " Test_xterm_mouse_ctrl_click() | |
219 func Test_1xterm_mouse_wheel() | |
183 new | 220 new |
184 let save_mouse = &mouse | 221 let save_mouse = &mouse |
185 let save_term = &term | 222 let save_term = &term |
186 let save_ttymouse = &ttymouse | 223 let save_ttymouse = &ttymouse |
187 set mouse=a term=xterm | 224 set mouse=a term=xterm |
188 call setline(1, range(1, 100)) | 225 call setline(1, range(1, 100)) |
189 | 226 |
190 for ttymouse_val in s:test_ttymouse | 227 for ttymouse_val in s:ttymouse_values |
191 let msg = 'ttymouse=' .. ttymouse_val | 228 let msg = 'ttymouse=' .. ttymouse_val |
192 exe 'set ttymouse=' .. ttymouse_val | 229 exe 'set ttymouse=' .. ttymouse_val |
193 go | 230 go |
194 call assert_equal(1, line('w0'), msg) | 231 call assert_equal(1, line('w0'), msg) |
195 call assert_equal([0, 1, 1, 0], getpos('.'), msg) | 232 call assert_equal([0, 1, 1, 0], getpos('.'), msg) |
215 let &term = save_term | 252 let &term = save_term |
216 let &ttymouse = save_ttymouse | 253 let &ttymouse = save_ttymouse |
217 bwipe! | 254 bwipe! |
218 endfunc | 255 endfunc |
219 | 256 |
220 func Test_xterm_mouse_drag_window_separator() | 257 func Test_term_mouse_drag_window_separator() |
221 let save_mouse = &mouse | 258 let save_mouse = &mouse |
222 let save_term = &term | 259 let save_term = &term |
223 let save_ttymouse = &ttymouse | 260 let save_ttymouse = &ttymouse |
261 call test_override('no_query_mouse', 1) | |
224 set mouse=a term=xterm | 262 set mouse=a term=xterm |
225 | 263 |
226 for ttymouse_val in s:test_ttymouse | 264 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
227 let msg = 'ttymouse=' .. ttymouse_val | 265 let msg = 'ttymouse=' .. ttymouse_val |
228 exe 'set ttymouse=' .. ttymouse_val | 266 exe 'set ttymouse=' .. ttymouse_val |
229 | 267 |
230 " Split horizontally and test dragging the horizontal window separator. | 268 " Split horizontally and test dragging the horizontal window separator. |
231 split | 269 split |
269 endfor | 307 endfor |
270 | 308 |
271 let &mouse = save_mouse | 309 let &mouse = save_mouse |
272 let &term = save_term | 310 let &term = save_term |
273 let &ttymouse = save_ttymouse | 311 let &ttymouse = save_ttymouse |
274 endfunc | 312 call test_override('no_query_mouse', 0) |
275 | 313 endfunc |
276 func Test_xterm_mouse_drag_statusline() | 314 |
277 let save_mouse = &mouse | 315 func Test_term_mouse_drag_statusline() |
278 let save_term = &term | 316 let save_mouse = &mouse |
279 let save_ttymouse = &ttymouse | 317 let save_term = &term |
318 let save_ttymouse = &ttymouse | |
319 call test_override('no_query_mouse', 1) | |
280 let save_laststatus = &laststatus | 320 let save_laststatus = &laststatus |
281 set mouse=a term=xterm laststatus=2 | 321 set mouse=a term=xterm laststatus=2 |
282 | 322 |
283 for ttymouse_val in s:test_ttymouse | 323 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
284 let msg = 'ttymouse=' .. ttymouse_val | 324 let msg = 'ttymouse=' .. ttymouse_val |
285 exe 'set ttymouse=' .. ttymouse_val | 325 exe 'set ttymouse=' .. ttymouse_val |
286 | 326 |
287 call assert_equal(1, &cmdheight, msg) | 327 call assert_equal(1, &cmdheight, msg) |
288 let rowstatusline = winheight(0) + 1 | 328 let rowstatusline = winheight(0) + 1 |
309 endfor | 349 endfor |
310 | 350 |
311 let &mouse = save_mouse | 351 let &mouse = save_mouse |
312 let &term = save_term | 352 let &term = save_term |
313 let &ttymouse = save_ttymouse | 353 let &ttymouse = save_ttymouse |
354 call test_override('no_query_mouse', 0) | |
314 let &laststatus = save_laststatus | 355 let &laststatus = save_laststatus |
315 endfunc | 356 endfunc |
316 | 357 |
317 func Test_xterm_mouse_click_tab() | 358 func Test_term_mouse_click_tab() |
318 let save_mouse = &mouse | 359 let save_mouse = &mouse |
319 let save_term = &term | 360 let save_term = &term |
320 let save_ttymouse = &ttymouse | 361 let save_ttymouse = &ttymouse |
362 call test_override('no_query_mouse', 1) | |
321 set mouse=a term=xterm | 363 set mouse=a term=xterm |
322 let row = 1 | 364 let row = 1 |
323 | 365 |
324 for ttymouse_val in s:test_ttymouse | 366 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
325 let msg = 'ttymouse=' .. ttymouse_val | 367 let msg = 'ttymouse=' .. ttymouse_val |
326 exe 'set ttymouse=' .. ttymouse_val | 368 exe 'set ttymouse=' .. ttymouse_val |
327 e Xfoo | 369 e Xfoo |
328 tabnew Xbar | 370 tabnew Xbar |
329 | 371 |
357 endfor | 399 endfor |
358 | 400 |
359 let &mouse = save_mouse | 401 let &mouse = save_mouse |
360 let &term = save_term | 402 let &term = save_term |
361 let &ttymouse = save_ttymouse | 403 let &ttymouse = save_ttymouse |
362 endfunc | 404 call test_override('no_query_mouse', 0) |
363 | 405 endfunc |
364 func Test_xterm_mouse_click_X_to_close_tab() | 406 |
365 let save_mouse = &mouse | 407 func Test_term_mouse_click_X_to_close_tab() |
366 let save_term = &term | 408 let save_mouse = &mouse |
367 let save_ttymouse = &ttymouse | 409 let save_term = &term |
410 let save_ttymouse = &ttymouse | |
411 call test_override('no_query_mouse', 1) | |
368 set mouse=a term=xterm | 412 set mouse=a term=xterm |
369 let row = 1 | 413 let row = 1 |
370 let col = &columns | 414 let col = &columns |
371 | 415 |
372 for ttymouse_val in s:test_ttymouse | 416 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
373 if ttymouse_val ==# 'xterm2' && col > 223 | 417 if ttymouse_val ==# 'xterm2' && col > 223 |
374 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. | 418 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. |
375 continue | 419 continue |
376 endif | 420 endif |
377 let msg = 'ttymouse=' .. ttymouse_val | 421 let msg = 'ttymouse=' .. ttymouse_val |
403 endfor | 447 endfor |
404 | 448 |
405 let &mouse = save_mouse | 449 let &mouse = save_mouse |
406 let &term = save_term | 450 let &term = save_term |
407 let &ttymouse = save_ttymouse | 451 let &ttymouse = save_ttymouse |
408 endfunc | 452 call test_override('no_query_mouse', 0) |
409 | 453 endfunc |
410 func Test_xterm_mouse_drag_to_move_tab() | 454 |
411 let save_mouse = &mouse | 455 func Test_term_mouse_drag_to_move_tab() |
412 let save_term = &term | 456 let save_mouse = &mouse |
413 let save_ttymouse = &ttymouse | 457 let save_term = &term |
458 let save_ttymouse = &ttymouse | |
459 call test_override('no_query_mouse', 1) | |
414 " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop | 460 " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop |
415 set mouse=a term=xterm mousetime=1 | 461 set mouse=a term=xterm mousetime=1 |
416 let row = 1 | 462 let row = 1 |
417 | 463 |
418 for ttymouse_val in s:test_ttymouse | 464 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
419 let msg = 'ttymouse=' .. ttymouse_val | 465 let msg = 'ttymouse=' .. ttymouse_val |
420 exe 'set ttymouse=' .. ttymouse_val | 466 exe 'set ttymouse=' .. ttymouse_val |
421 e Xtab1 | 467 e Xtab1 |
422 tabnew Xtab2 | 468 tabnew Xtab2 |
423 | 469 |
449 endfor | 495 endfor |
450 | 496 |
451 let &mouse = save_mouse | 497 let &mouse = save_mouse |
452 let &term = save_term | 498 let &term = save_term |
453 let &ttymouse = save_ttymouse | 499 let &ttymouse = save_ttymouse |
500 call test_override('no_query_mouse', 0) | |
454 set mousetime& | 501 set mousetime& |
455 endfunc | 502 endfunc |
456 | 503 |
457 func Test_xterm_mouse_double_click_to_create_tab() | 504 func Test_term_mouse_double_click_to_create_tab() |
458 let save_mouse = &mouse | 505 let save_mouse = &mouse |
459 let save_term = &term | 506 let save_term = &term |
460 let save_ttymouse = &ttymouse | 507 let save_ttymouse = &ttymouse |
508 call test_override('no_query_mouse', 1) | |
461 " Set 'mousetime' to a small value, so that double-click works but we don't | 509 " Set 'mousetime' to a small value, so that double-click works but we don't |
462 " have to wait long to avoid a triple-click. | 510 " have to wait long to avoid a triple-click. |
463 set mouse=a term=xterm mousetime=100 | 511 set mouse=a term=xterm mousetime=100 |
464 let row = 1 | 512 let row = 1 |
465 let col = 10 | 513 let col = 10 |
466 | 514 |
467 let round = 0 | 515 let round = 0 |
468 for ttymouse_val in s:test_ttymouse | 516 for ttymouse_val in s:ttymouse_values + s:ttymouse_dec |
469 let msg = 'ttymouse=' .. ttymouse_val | 517 let msg = 'ttymouse=' .. ttymouse_val |
470 exe 'set ttymouse=' .. ttymouse_val | 518 exe 'set ttymouse=' .. ttymouse_val |
471 e Xtab1 | 519 e Xtab1 |
472 tabnew Xtab2 | 520 tabnew Xtab2 |
473 | 521 |
505 endfor | 553 endfor |
506 | 554 |
507 let &mouse = save_mouse | 555 let &mouse = save_mouse |
508 let &term = save_term | 556 let &term = save_term |
509 let &ttymouse = save_ttymouse | 557 let &ttymouse = save_ttymouse |
558 call test_override('no_query_mouse', 0) | |
510 set mousetime& | 559 set mousetime& |
511 endfunc | 560 endfunc |
512 | 561 |
513 func Test_xterm_mouse_click_in_fold_columns() | 562 func Test_xterm_mouse_click_in_fold_columns() |
514 new | 563 new |