call TerminalEscapeCode(0x21, 1, a:row, a:col, 'M')
endfunc
+func MouseCtrlLeftClick(row, col)
+ let ctrl = 0x10
+ call TerminalEscapeCode(0x20 + ctrl, 0 + ctrl, a:row, a:col, 'M')
+endfunc
+
+func MouseCtrlRightClick(row, col)
+ let ctrl = 0x10
+ call TerminalEscapeCode(0x22 + ctrl, 2 + ctrl, a:row, a:col, 'M')
+endfunc
+
func MouseLeftRelease(row, col)
call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
endfunc
call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
endfunc
+func MouseRightRelease(row, col)
+ call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
+endfunc
+
func MouseLeftDrag(row, col)
call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M')
endfunc
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
go
call assert_equal([0, 1, 1, 0], getpos('.'), msg)
let row = 2
bwipe!
endfunc
+" Test that <C-LeftMouse> jumps to help tag and <C-RightMouse> jumps back.
+func Test_xterm_mouse_ctrl_click()
+ let save_mouse = &mouse
+ let save_term = &term
+ let save_ttymouse = &ttymouse
+ set mouse=a term=xterm
+
+ for ttymouse_val in ['xterm2', 'sgr']
+ let msg = 'ttymouse=' .. ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
+ help
+ /usr_02.txt
+ norm! zt
+ let row = 1
+ let col = 1
+ call MouseCtrlLeftClick(row, col)
+ call MouseLeftRelease(row, col)
+ call assert_match('usr_02.txt$', bufname('%'), msg)
+ call assert_equal('*usr_02.txt*', expand('<cWORD>'))
+
+ call MouseCtrlRightClick(row, col)
+ call MouseLeftRelease(row, col)
+ call assert_match('help.txt$', bufname('%'), msg)
+ call assert_equal('|usr_02.txt|', expand('<cWORD>'))
+
+ helpclose
+ endfor
+
+ let &mouse = save_mouse
+ let &term = save_term
+ let &ttymouse = save_ttymouse
+endfunc
+
func Test_xterm_mouse_middle_click()
if !WorkingClipboard()
throw 'Skipped: No working clipboard'
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
call setline(1, ['123456789', '123456789'])
" Middle-click in the middle of the line pastes text where clicked.
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
go
call assert_equal(1, line('w0'), msg)
call assert_equal([0, 1, 1, 0], getpos('.'), msg)
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
" Split horizontally and test dragging the horizontal window separator.
split
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
call assert_equal(1, &cmdheight, msg)
let rowstatusline = winheight(0) + 1
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
e Xfoo
tabnew Xbar
continue
endif
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
e Xtab1
tabnew Xtab2
tabnew Xtab3
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
e Xtab1
tabnew Xtab2
for ttymouse_val in ['xterm2', 'sgr']
let msg = 'ttymouse=' .. ttymouse_val
- exe 'set ttymouse=' . ttymouse_val
+ exe 'set ttymouse=' .. ttymouse_val
e Xtab1
tabnew Xtab2