Mercurial > vim
comparison src/testdir/test_termcodes.vim @ 16487:a4732cdcfaaf v8.1.1247
patch 8.1.1247: urxvt mouse codes are not tested
commit https://github.com/vim/vim/commit/d0621d85a6ceb17e1e6fb17415c3f94a755aaafa
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu May 2 21:12:19 2019 +0200
patch 8.1.1247: urxvt mouse codes are not tested
Problem: Urxvt mouse codes are not tested.
Solution: Also set 'ttymouse' to "urxvt" in the termcodes test.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 02 May 2019 21:15:05 +0200 |
parents | 8428e0edba1b |
children | 42910f306377 |
comparison
equal
deleted
inserted
replaced
16486:2a84ef3a5cde | 16487:a4732cdcfaaf |
---|---|
5 finish | 5 finish |
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. | |
11 let s:test_ttymouse = ['xterm2', 'sgr'] | |
12 if has('mouse_urxvt') | |
13 call add(s:test_ttymouse, 'urxvt') | |
14 endif | |
15 | |
10 " Helper function to emit a terminal escape code. | 16 " Helper function to emit a terminal escape code. |
11 func TerminalEscapeCode(code_xterm, code_sgr, row, col, m) | 17 func TerminalEscapeCode(code, row, col, m) |
12 if &ttymouse ==# 'xterm2' | 18 if &ttymouse ==# 'xterm2' |
13 " need to use byte encoding here. | 19 " need to use byte encoding here. |
14 let str = list2str([a:code_xterm, a:col + 0x20, a:row + 0x20]) | 20 let str = list2str([a:code + 0x20, a:col + 0x20, a:row + 0x20]) |
15 if has('iconv') | 21 if has('iconv') |
16 let bytes = iconv(str, 'utf-8', 'latin1') | 22 let bytes = iconv(str, 'utf-8', 'latin1') |
17 else | 23 else |
18 " Hopefully the numbers are not too big. | 24 " Hopefully the numbers are not too big. |
19 let bytes = str | 25 let bytes = str |
20 endif | 26 endif |
21 call feedkeys("\<Esc>[M" .. bytes, 'Lx!') | 27 call feedkeys("\<Esc>[M" .. bytes, 'Lx!') |
22 elseif &ttymouse ==# 'sgr' | 28 elseif &ttymouse ==# 'sgr' |
23 call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code_sgr, a:col, a:row, a:m), 'Lx!') | 29 call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code, a:col, a:row, a:m), 'Lx!') |
30 elseif &ttymouse ==# 'urxvt' | |
31 call feedkeys(printf("\<Esc>[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!') | |
24 endif | 32 endif |
25 endfunc | 33 endfunc |
26 | 34 |
27 func MouseLeftClick(row, col) | 35 func MouseLeftClick(row, col) |
28 call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M') | 36 call TerminalEscapeCode(0, a:row, a:col, 'M') |
29 endfunc | 37 endfunc |
30 | 38 |
31 func MouseMiddleClick(row, col) | 39 func MouseMiddleClick(row, col) |
32 call TerminalEscapeCode(0x21, 1, a:row, a:col, 'M') | 40 call TerminalEscapeCode(1, a:row, a:col, 'M') |
33 endfunc | 41 endfunc |
34 | 42 |
35 func MouseCtrlLeftClick(row, col) | 43 func MouseCtrlLeftClick(row, col) |
36 let ctrl = 0x10 | 44 let ctrl = 0x10 |
37 call TerminalEscapeCode(0x20 + ctrl, 0 + ctrl, a:row, a:col, 'M') | 45 call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M') |
38 endfunc | 46 endfunc |
39 | 47 |
40 func MouseCtrlRightClick(row, col) | 48 func MouseCtrlRightClick(row, col) |
41 let ctrl = 0x10 | 49 let ctrl = 0x10 |
42 call TerminalEscapeCode(0x22 + ctrl, 2 + ctrl, a:row, a:col, 'M') | 50 call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') |
43 endfunc | 51 endfunc |
44 | 52 |
45 func MouseLeftRelease(row, col) | 53 func MouseLeftRelease(row, col) |
46 call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') | 54 call TerminalEscapeCode(3, a:row, a:col, 'm') |
47 endfunc | 55 endfunc |
48 | 56 |
49 func MouseMiddleRelease(row, col) | 57 func MouseMiddleRelease(row, col) |
50 call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') | 58 call TerminalEscapeCode(3, a:row, a:col, 'm') |
51 endfunc | 59 endfunc |
52 | 60 |
53 func MouseRightRelease(row, col) | 61 func MouseRightRelease(row, col) |
54 call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') | 62 call TerminalEscapeCode(3, a:row, a:col, 'm') |
55 endfunc | 63 endfunc |
56 | 64 |
57 func MouseLeftDrag(row, col) | 65 func MouseLeftDrag(row, col) |
58 call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M') | 66 call TerminalEscapeCode(0x20, a:row, a:col, 'M') |
59 endfunc | 67 endfunc |
60 | 68 |
61 func MouseWheelUp(row, col) | 69 func MouseWheelUp(row, col) |
62 call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M') | 70 call TerminalEscapeCode(0x40, a:row, a:col, 'M') |
63 endfunc | 71 endfunc |
64 | 72 |
65 func MouseWheelDown(row, col) | 73 func MouseWheelDown(row, col) |
66 call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M') | 74 call TerminalEscapeCode(0x41, a:row, a:col, 'M') |
67 endfunc | 75 endfunc |
68 | 76 |
69 func Test_xterm_mouse_left_click() | 77 func Test_xterm_mouse_left_click() |
70 new | 78 new |
71 let save_mouse = &mouse | 79 let save_mouse = &mouse |
72 let save_term = &term | 80 let save_term = &term |
73 let save_ttymouse = &ttymouse | 81 let save_ttymouse = &ttymouse |
74 set mouse=a term=xterm | 82 set mouse=a term=xterm |
75 call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) | 83 call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) |
76 | 84 |
77 for ttymouse_val in ['xterm2', 'sgr'] | 85 for ttymouse_val in s:test_ttymouse |
78 let msg = 'ttymouse=' .. ttymouse_val | 86 let msg = 'ttymouse=' .. ttymouse_val |
79 exe 'set ttymouse=' .. ttymouse_val | 87 exe 'set ttymouse=' .. ttymouse_val |
80 go | 88 go |
81 call assert_equal([0, 1, 1, 0], getpos('.'), msg) | 89 call assert_equal([0, 1, 1, 0], getpos('.'), msg) |
82 let row = 2 | 90 let row = 2 |
97 let save_mouse = &mouse | 105 let save_mouse = &mouse |
98 let save_term = &term | 106 let save_term = &term |
99 let save_ttymouse = &ttymouse | 107 let save_ttymouse = &ttymouse |
100 set mouse=a term=xterm | 108 set mouse=a term=xterm |
101 | 109 |
102 for ttymouse_val in ['xterm2', 'sgr'] | 110 for ttymouse_val in s:test_ttymouse |
103 let msg = 'ttymouse=' .. ttymouse_val | 111 let msg = 'ttymouse=' .. ttymouse_val |
104 exe 'set ttymouse=' .. ttymouse_val | 112 exe 'set ttymouse=' .. ttymouse_val |
105 help | 113 help |
106 /usr_02.txt | 114 /usr_02.txt |
107 norm! zt | 115 norm! zt |
136 let save_ttymouse = &ttymouse | 144 let save_ttymouse = &ttymouse |
137 let save_quotestar = @* | 145 let save_quotestar = @* |
138 let @* = 'abc' | 146 let @* = 'abc' |
139 set mouse=a term=xterm | 147 set mouse=a term=xterm |
140 | 148 |
141 for ttymouse_val in ['xterm2', 'sgr'] | 149 for ttymouse_val in s:test_ttymouse |
142 let msg = 'ttymouse=' .. ttymouse_val | 150 let msg = 'ttymouse=' .. ttymouse_val |
143 exe 'set ttymouse=' .. ttymouse_val | 151 exe 'set ttymouse=' .. ttymouse_val |
144 call setline(1, ['123456789', '123456789']) | 152 call setline(1, ['123456789', '123456789']) |
145 | 153 |
146 " Middle-click in the middle of the line pastes text where clicked. | 154 " Middle-click in the middle of the line pastes text where clicked. |
177 let save_term = &term | 185 let save_term = &term |
178 let save_ttymouse = &ttymouse | 186 let save_ttymouse = &ttymouse |
179 set mouse=a term=xterm | 187 set mouse=a term=xterm |
180 call setline(1, range(1, 100)) | 188 call setline(1, range(1, 100)) |
181 | 189 |
182 for ttymouse_val in ['xterm2', 'sgr'] | 190 for ttymouse_val in s:test_ttymouse |
183 let msg = 'ttymouse=' .. ttymouse_val | 191 let msg = 'ttymouse=' .. ttymouse_val |
184 exe 'set ttymouse=' .. ttymouse_val | 192 exe 'set ttymouse=' .. ttymouse_val |
185 go | 193 go |
186 call assert_equal(1, line('w0'), msg) | 194 call assert_equal(1, line('w0'), msg) |
187 call assert_equal([0, 1, 1, 0], getpos('.'), msg) | 195 call assert_equal([0, 1, 1, 0], getpos('.'), msg) |
213 let save_mouse = &mouse | 221 let save_mouse = &mouse |
214 let save_term = &term | 222 let save_term = &term |
215 let save_ttymouse = &ttymouse | 223 let save_ttymouse = &ttymouse |
216 set mouse=a term=xterm | 224 set mouse=a term=xterm |
217 | 225 |
218 for ttymouse_val in ['xterm2', 'sgr'] | 226 for ttymouse_val in s:test_ttymouse |
219 let msg = 'ttymouse=' .. ttymouse_val | 227 let msg = 'ttymouse=' .. ttymouse_val |
220 exe 'set ttymouse=' .. ttymouse_val | 228 exe 'set ttymouse=' .. ttymouse_val |
221 | 229 |
222 " Split horizontally and test dragging the horizontal window separator. | 230 " Split horizontally and test dragging the horizontal window separator. |
223 split | 231 split |
270 let save_term = &term | 278 let save_term = &term |
271 let save_ttymouse = &ttymouse | 279 let save_ttymouse = &ttymouse |
272 let save_laststatus = &laststatus | 280 let save_laststatus = &laststatus |
273 set mouse=a term=xterm laststatus=2 | 281 set mouse=a term=xterm laststatus=2 |
274 | 282 |
275 for ttymouse_val in ['xterm2', 'sgr'] | 283 for ttymouse_val in s:test_ttymouse |
276 let msg = 'ttymouse=' .. ttymouse_val | 284 let msg = 'ttymouse=' .. ttymouse_val |
277 exe 'set ttymouse=' .. ttymouse_val | 285 exe 'set ttymouse=' .. ttymouse_val |
278 | 286 |
279 call assert_equal(1, &cmdheight, msg) | 287 call assert_equal(1, &cmdheight, msg) |
280 let rowstatusline = winheight(0) + 1 | 288 let rowstatusline = winheight(0) + 1 |
311 let save_term = &term | 319 let save_term = &term |
312 let save_ttymouse = &ttymouse | 320 let save_ttymouse = &ttymouse |
313 set mouse=a term=xterm | 321 set mouse=a term=xterm |
314 let row = 1 | 322 let row = 1 |
315 | 323 |
316 for ttymouse_val in ['xterm2', 'sgr'] | 324 for ttymouse_val in s:test_ttymouse |
317 let msg = 'ttymouse=' .. ttymouse_val | 325 let msg = 'ttymouse=' .. ttymouse_val |
318 exe 'set ttymouse=' .. ttymouse_val | 326 exe 'set ttymouse=' .. ttymouse_val |
319 e Xfoo | 327 e Xfoo |
320 tabnew Xbar | 328 tabnew Xbar |
321 | 329 |
359 let save_ttymouse = &ttymouse | 367 let save_ttymouse = &ttymouse |
360 set mouse=a term=xterm | 368 set mouse=a term=xterm |
361 let row = 1 | 369 let row = 1 |
362 let col = &columns | 370 let col = &columns |
363 | 371 |
364 for ttymouse_val in ['xterm2', 'sgr'] | 372 for ttymouse_val in s:test_ttymouse |
365 if ttymouse_val ==# 'xterm2' && col > 223 | 373 if ttymouse_val ==# 'xterm2' && col > 223 |
366 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. | 374 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. |
367 continue | 375 continue |
368 endif | 376 endif |
369 let msg = 'ttymouse=' .. ttymouse_val | 377 let msg = 'ttymouse=' .. ttymouse_val |
405 let save_ttymouse = &ttymouse | 413 let save_ttymouse = &ttymouse |
406 " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop | 414 " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop |
407 set mouse=a term=xterm mousetime=1 | 415 set mouse=a term=xterm mousetime=1 |
408 let row = 1 | 416 let row = 1 |
409 | 417 |
410 for ttymouse_val in ['xterm2', 'sgr'] | 418 for ttymouse_val in s:test_ttymouse |
411 let msg = 'ttymouse=' .. ttymouse_val | 419 let msg = 'ttymouse=' .. ttymouse_val |
412 exe 'set ttymouse=' .. ttymouse_val | 420 exe 'set ttymouse=' .. ttymouse_val |
413 e Xtab1 | 421 e Xtab1 |
414 tabnew Xtab2 | 422 tabnew Xtab2 |
415 | 423 |
454 " have to wait long to avoid a triple-click. | 462 " have to wait long to avoid a triple-click. |
455 set mouse=a term=xterm mousetime=100 | 463 set mouse=a term=xterm mousetime=100 |
456 let row = 1 | 464 let row = 1 |
457 let col = 10 | 465 let col = 10 |
458 | 466 |
459 for ttymouse_val in ['xterm2', 'sgr'] | 467 let round = 0 |
468 for ttymouse_val in s:test_ttymouse | |
460 let msg = 'ttymouse=' .. ttymouse_val | 469 let msg = 'ttymouse=' .. ttymouse_val |
461 exe 'set ttymouse=' .. ttymouse_val | 470 exe 'set ttymouse=' .. ttymouse_val |
462 e Xtab1 | 471 e Xtab1 |
463 tabnew Xtab2 | 472 tabnew Xtab2 |
473 | |
474 if round > 0 | |
475 " We need to sleep, or else the first MouseLeftClick() will be | |
476 " interpreted as a spurious triple-click. | |
477 sleep 100m | |
478 endif | |
479 let round += 1 | |
464 | 480 |
465 let a = split(execute(':tabs'), "\n") | 481 let a = split(execute(':tabs'), "\n") |
466 call assert_equal(['Tab page 1', | 482 call assert_equal(['Tab page 1', |
467 \ ' Xtab1', | 483 \ ' Xtab1', |
468 \ 'Tab page 2', | 484 \ 'Tab page 2', |
483 \ 'Tab page 2', | 499 \ 'Tab page 2', |
484 \ '> [No Name]', | 500 \ '> [No Name]', |
485 \ 'Tab page 3', | 501 \ 'Tab page 3', |
486 \ ' Xtab2'], a, msg) | 502 \ ' Xtab2'], a, msg) |
487 | 503 |
488 if ttymouse_val !=# 'sgr' | |
489 " We need to sleep, or else MouseLeftClick() in next loop | |
490 " iteration will be interpreted as a spurious triple-click. | |
491 sleep 100m | |
492 endif | |
493 %bwipe! | 504 %bwipe! |
494 endfor | 505 endfor |
495 | 506 |
496 let &mouse = save_mouse | 507 let &mouse = save_mouse |
497 let &term = save_term | 508 let &term = save_term |