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