aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-28 17:35:45 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-28 17:55:44 +0800
commitc0e76fcc441064aca807a8596c7cb5908de0380d (patch)
treea86fbcf2bf0e1e38f9d6b252320781930e8f05c2
parent0c5b03d83a6941e77bb5ffac561d1301cecccd1c (diff)
downloadrneovim-c0e76fcc441064aca807a8596c7cb5908de0380d.tar.gz
rneovim-c0e76fcc441064aca807a8596c7cb5908de0380d.tar.bz2
rneovim-c0e76fcc441064aca807a8596c7cb5908de0380d.zip
vim-patch:partial:8.2.1235: Not all mouse codes covered by tests
Problem: Not all mouse codes covered by tests. Solution: Add more tests for the mouse. (Yegappan Lakshmanan, closes vim/vim#6472) https://github.com/vim/vim/commit/2764d06ab7140c95b6317e344d853e4a32c76e9a Cherry-pick typo fixes from patch 8.2.0020.
-rw-r--r--test/old/testdir/mouse.vim12
-rw-r--r--test/old/testdir/test_termcodes.vim193
2 files changed, 203 insertions, 2 deletions
diff --git a/test/old/testdir/mouse.vim b/test/old/testdir/mouse.vim
index dd2d6c465b..b9f1714dd9 100644
--- a/test/old/testdir/mouse.vim
+++ b/test/old/testdir/mouse.vim
@@ -34,6 +34,18 @@ func MouseCtrlRightClick(row, col)
call feedkeys('', 'x!')
endfunc
+func MouseAltLeftClick(row, col)
+ call nvim_input_mouse('left', 'press', 'A', 0, a:row - 1, a:col - 1)
+ call getchar(1)
+ call feedkeys('', 'x!')
+endfunc
+
+func MouseAltRightClick(row, col)
+ call nvim_input_mouse('right', 'press', 'A', 0, a:row - 1, a:col - 1)
+ call getchar(1)
+ call feedkeys('', 'x!')
+endfunc
+
func MouseLeftRelease(row, col)
call nvim_input_mouse('left', 'release', '', 0, a:row - 1, a:col - 1)
call getchar(1)
diff --git a/test/old/testdir/test_termcodes.vim b/test/old/testdir/test_termcodes.vim
index b38bb2a51d..11cc8fb884 100644
--- a/test/old/testdir/test_termcodes.vim
+++ b/test/old/testdir/test_termcodes.vim
@@ -61,7 +61,7 @@ func Test_xterm_mouse_right_click_extends_visual()
call MouseRightClick(2, 2)
call MouseRightRelease(2, 2)
- " Right click extends bottom bottom right of visual area.
+ " Right click extends bottom right of visual area.
call MouseRightClick(6, 6)
call MouseRightRelease(6, 6)
norm! r1gv
@@ -257,7 +257,7 @@ func Test_1xterm_mouse_wheel()
endfunc
" Test that dragging beyond the window (at the bottom and at the top)
-" scrolls window content by the number of of lines beyond the window.
+" scrolls window content by the number of lines beyond the window.
func Test_term_mouse_drag_beyond_window()
let save_mouse = &mouse
let save_term = &term
@@ -745,6 +745,53 @@ func Test_term_mouse_multiple_clicks_to_visually_select()
call assert_equal("\<c-v>", mode(), msg)
norm! r4
call assert_equal(['34333333333333333', 'foo'], getline(1, '$'), msg)
+
+ " Double-click on a space character should visually select all the
+ " consecutive space characters.
+ %d
+ call setline(1, ' one two')
+ call MouseLeftClick(1, 2)
+ call MouseLeftRelease(1, 2)
+ call MouseLeftClick(1, 2)
+ call MouseLeftRelease(1, 2)
+ call assert_equal('v', mode(), msg)
+ norm! r1
+ call assert_equal(['1111one two'], getline(1, '$'), msg)
+
+ " Double-click on a word with exclusive selection
+ set selection=exclusive
+ let @" = ''
+ call MouseLeftClick(1, 10)
+ call MouseLeftRelease(1, 10)
+ call MouseLeftClick(1, 10)
+ call MouseLeftRelease(1, 10)
+ norm! y
+ call assert_equal('two', @", msg)
+
+ " Double click to select a block of text with exclusive selection
+ %d
+ call setline(1, 'one (two) three')
+ call MouseLeftClick(1, 5)
+ call MouseLeftRelease(1, 5)
+ call MouseLeftClick(1, 5)
+ call MouseLeftRelease(1, 5)
+ norm! y
+ call assert_equal(5, col("'<"), msg)
+ call assert_equal(10, col("'>"), msg)
+
+ call MouseLeftClick(1, 9)
+ call MouseLeftRelease(1, 9)
+ call MouseLeftClick(1, 9)
+ call MouseLeftRelease(1, 9)
+ norm! y
+ call assert_equal(5, col("'<"), msg)
+ call assert_equal(10, col("'>"), msg)
+ set selection&
+
+ " Click somewhere else so that the clicks above is not combined with the
+ " clicks in the next iteration.
+ call MouseRightClick(3, 10)
+ call MouseRightRelease(3, 10)
endfor
let &mouse = save_mouse
@@ -755,6 +802,42 @@ func Test_term_mouse_multiple_clicks_to_visually_select()
bwipe!
endfunc
+" Test for selecting text in visual blockwise mode using Alt-LeftClick
+func Test_mouse_alt_leftclick()
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " call test_override('no_query_mouse', 1)
+ " set mouse=a term=xterm mousetime=200
+ set mouse=a mousetime=200
+ set mousemodel=popup
+ new
+ call setline(1, 'one (two) three')
+
+ for ttymouse_val in g:Ttymouse_values
+ let msg = 'ttymouse=' .. ttymouse_val
+ " exe 'set ttymouse=' .. ttymouse_val
+
+ " Left click with the Alt modifier key should extend the selection in
+ " blockwise visual mode.
+ let @" = ''
+ call MouseLeftClick(1, 3)
+ call MouseLeftRelease(1, 3)
+ call MouseAltLeftClick(1, 11)
+ call MouseLeftRelease(1, 11)
+ call assert_equal("\<C-V>", mode(), msg)
+ normal! y
+ call assert_equal('e (two) t', @")
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+ set mousetime& mousemodel&
+ " call test_override('no_query_mouse', 0)
+ close!
+endfunc
+
func Test_xterm_mouse_click_in_fold_columns()
new
let save_mouse = &mouse
@@ -809,6 +892,112 @@ func Test_xterm_mouse_click_in_fold_columns()
bwipe!
endfunc
+" Test for the 'h' flag in the 'mouse' option. Using mouse in the help window.
+func Test_term_mouse_help_window()
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " call test_override('no_query_mouse', 1)
+ " set mouse=h term=xterm mousetime=200
+ set mouse=h mousetime=200
+
+ for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
+ let msg = 'ttymouse=' .. ttymouse_val
+ " exe 'set ttymouse=' .. ttymouse_val
+ help
+ let @" = ''
+ call MouseLeftClick(2, 5)
+ call MouseLeftRelease(2, 5)
+ call MouseLeftClick(1, 1)
+ call MouseLeftDrag(1, 10)
+ call MouseLeftRelease(1, 10)
+ norm! y
+ call assert_equal('*help.txt*', @", msg)
+ helpclose
+
+ " Click somewhere else to make sure the left click above is not combined
+ " with the next left click and treated as a double click
+ call MouseRightClick(5, 10)
+ call MouseRightRelease(5, 10)
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+ set mousetime&
+ " call test_override('no_query_mouse', 0)
+ %bw!
+endfunc
+
+" Test for the translation of various mouse terminal codes
+func Test_mouse_termcodes()
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " call test_override('no_query_mouse', 1)
+ " set mouse=a term=xterm mousetime=200
+
+ new
+ for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec + g:Ttymouse_netterm
+ let msg = 'ttymouse=' .. ttymouse_val
+ " exe 'set ttymouse=' .. ttymouse_val
+
+ let mouse_codes = [
+ \ ["\<LeftMouse>", "<LeftMouse>"],
+ \ ["\<MiddleMouse>", "<MiddleMouse>"],
+ \ ["\<RightMouse>", "<RightMouse>"],
+ \ ["\<S-LeftMouse>", "<S-LeftMouse>"],
+ \ ["\<S-MiddleMouse>", "<S-MiddleMouse>"],
+ \ ["\<S-RightMouse>", "<S-RightMouse>"],
+ \ ["\<C-LeftMouse>", "<C-LeftMouse>"],
+ \ ["\<C-MiddleMouse>", "<C-MiddleMouse>"],
+ \ ["\<C-RightMouse>", "<C-RightMouse>"],
+ \ ["\<M-LeftMouse>", "<M-LeftMouse>"],
+ \ ["\<M-MiddleMouse>", "<M-MiddleMouse>"],
+ \ ["\<M-RightMouse>", "<M-RightMouse>"],
+ \ ["\<2-LeftMouse>", "<2-LeftMouse>"],
+ \ ["\<2-MiddleMouse>", "<2-MiddleMouse>"],
+ \ ["\<2-RightMouse>", "<2-RightMouse>"],
+ \ ["\<3-LeftMouse>", "<3-LeftMouse>"],
+ \ ["\<3-MiddleMouse>", "<3-MiddleMouse>"],
+ \ ["\<3-RightMouse>", "<3-RightMouse>"],
+ \ ["\<4-LeftMouse>", "<4-LeftMouse>"],
+ \ ["\<4-MiddleMouse>", "<4-MiddleMouse>"],
+ \ ["\<4-RightMouse>", "<4-RightMouse>"],
+ \ ["\<LeftDrag>", "<LeftDrag>"],
+ \ ["\<MiddleDrag>", "<MiddleDrag>"],
+ \ ["\<RightDrag>", "<RightDrag>"],
+ \ ["\<LeftRelease>", "<LeftRelease>"],
+ \ ["\<MiddleRelease>", "<MiddleRelease>"],
+ \ ["\<RightRelease>", "<RightRelease>"],
+ \ ["\<ScrollWheelUp>", "<ScrollWheelUp>"],
+ \ ["\<S-ScrollWheelUp>", "<S-ScrollWheelUp>"],
+ \ ["\<C-ScrollWheelUp>", "<C-ScrollWheelUp>"],
+ \ ["\<ScrollWheelDown>", "<ScrollWheelDown>"],
+ \ ["\<S-ScrollWheelDown>", "<S-ScrollWheelDown>"],
+ \ ["\<C-ScrollWheelDown>", "<C-ScrollWheelDown>"],
+ \ ["\<ScrollWheelLeft>", "<ScrollWheelLeft>"],
+ \ ["\<S-ScrollWheelLeft>", "<S-ScrollWheelLeft>"],
+ \ ["\<C-ScrollWheelLeft>", "<C-ScrollWheelLeft>"],
+ \ ["\<ScrollWheelRight>", "<ScrollWheelRight>"],
+ \ ["\<S-ScrollWheelRight>", "<S-ScrollWheelRight>"],
+ \ ["\<C-ScrollWheelRight>", "<C-ScrollWheelRight>"]
+ \ ]
+
+ for [code, outstr] in mouse_codes
+ exe "normal ggC\<C-K>" . code
+ call assert_equal(outstr, getline(1), msg)
+ endfor
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+ set mousetime&
+ " call test_override('no_query_mouse', 0)
+ %bw!
+endfunc
+
" Test for translation of special key codes (<xF1>, <xF2>, etc.)
func Test_Keycode_Translation()
let keycodes = [