changeset 16265:7feb5b90be5f v8.1.1137

patch 8.1.1137: xterm mouse wheel escape sequence is not tested commit https://github.com/vim/vim/commit/049736fa8af211886848d4a847b45d5d991c9687 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 7 21:55:07 2019 +0200 patch 8.1.1137: xterm mouse wheel escape sequence is not tested Problem: Xterm mouse wheel escape sequence is not tested. Solution: Add a test using low-level input. (Dominique Pelle, closes https://github.com/vim/vim/issues/4221)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Apr 2019 22:00:04 +0200
parents c9aaabbfa627
children a904f7ffa001
files src/testdir/test_termcodes.vim src/version.c
diffstat 2 files changed, 68 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -45,3 +45,69 @@ func Test_xterm_mouse_click()
   bwipe!
 endfunc
 
+func Test_xterm_mouse_wheel()
+  new
+  let save_mouse = &mouse
+  let save_term = &term
+  let save_ttymouse = &ttymouse
+  set mouse=a
+  set term=xterm
+  call setline(1, range(1, 100))
+
+  " Test Xterm mouse wheel.
+  set ttymouse=xterm
+  let button = 0x41 " wheel down.
+  let row = 1 + 32  " cursor position for mouse wheel is not relevant.
+  let col = 1 + 32
+
+  call assert_equal(1, line('w0'))
+  call assert_equal([0, 1, 1, 0], getpos('.'))
+  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
+  call assert_equal(4, line('w0'))
+  call assert_equal([0, 4, 1, 0], getpos('.'))
+  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
+  call assert_equal(7, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+
+  let button = 0x40  " wheel up.
+
+  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
+  call assert_equal(4, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
+  call assert_equal(1, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+
+  " Test SGR mouse wheel.
+  set ttymouse=sgr
+  go
+  let button = 0x41 " wheel down.
+  let row = 1       " cursor position for mouse wheel is not relevant.
+  let col = 1
+
+  call assert_equal(1, line('w0'))
+  call assert_equal([0, 1, 1, 0], getpos('.'))
+  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
+  call assert_equal(4, line('w0'))
+  call assert_equal([0, 4, 1, 0], getpos('.'))
+  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
+  call assert_equal(7, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+
+  let button = 0x40  " wheel up.
+
+  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
+  call assert_equal(4, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
+  call assert_equal(1, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
+  call assert_equal(1, line('w0'))
+  call assert_equal([0, 7, 1, 0], getpos('.'))
+
+  let &mouse = save_mouse
+  let &term = save_term
+  let &ttymouse = save_ttymouse
+  bwipe!
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1137,
+/**/
     1136,
 /**/
     1135,