Mercurial > vim
diff src/testdir/test_termcodes.vim @ 16263:d3377393e3d9 v8.1.1136
patch 8.1.1136: decoding of mouse click escape sequence is not tested
commit https://github.com/vim/vim/commit/905dd905debfde403b2a18178ccc1f8e118f4f2b
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 7 14:21:47 2019 +0200
patch 8.1.1136: decoding of mouse click escape sequence is not tested
Problem: Decoding of mouse click escape sequence is not tested.
Solution: Add a test for xterm and SGR using low-level input. Make
low-level input execution with feedkeys() work.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 07 Apr 2019 14:30:06 +0200 |
parents | |
children | 7feb5b90be5f |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/testdir/test_termcodes.vim @@ -0,0 +1,47 @@ +" Tests for decoding escape sequences sent by the terminal. + +" This only works for Unix in a terminal +if has('gui_running') || !has('unix') + finish +endif + +func Test_xterm_mouse_click() + new + let save_mouse = &mouse + let save_term = &term + let save_ttymouse = &ttymouse + set mouse=a + set term=xterm + call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) + redraw + + " Xterm mouse click + set ttymouse=xterm + let button = 0x20 " left down + let row = 2 + 32 + let col = 6 + 32 + call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!') + + let button = 0x23 " release + call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!') + + call assert_equal([0, 2, 6, 0], getpos('.')) + + " SGR mouse click + set ttymouse=sgr + let button = 0 " left down + let row = 3 + let col = 9 + call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!') + + let button = 3 " release + call feedkeys(printf("\<Esc>[<%d;%d;%dm", button, col, row), 'Lx!') + + call assert_equal([0, 3, 9, 0], getpos('.')) + + let &mouse = save_mouse + let &term = save_term + let &ttymouse = save_ttymouse + bwipe! +endfunc +