0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

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.
This commit is contained in:
Bram Moolenaar
2019-05-02 21:12:19 +02:00
parent bb7e1b4ba8
commit d0621d85a6
2 changed files with 41 additions and 28 deletions

View File

@@ -7,11 +7,17 @@ endif
source shared.vim source shared.vim
" xterm2 and sgr always work, urxvt is optional.
let s:test_ttymouse = ['xterm2', 'sgr']
if has('mouse_urxvt')
call add(s:test_ttymouse, 'urxvt')
endif
" Helper function to emit a terminal escape code. " Helper function to emit a terminal escape code.
func TerminalEscapeCode(code_xterm, code_sgr, row, col, m) func TerminalEscapeCode(code, row, col, m)
if &ttymouse ==# 'xterm2' if &ttymouse ==# 'xterm2'
" need to use byte encoding here. " need to use byte encoding here.
let str = list2str([a:code_xterm, a:col + 0x20, a:row + 0x20]) let str = list2str([a:code + 0x20, a:col + 0x20, a:row + 0x20])
if has('iconv') if has('iconv')
let bytes = iconv(str, 'utf-8', 'latin1') let bytes = iconv(str, 'utf-8', 'latin1')
else else
@@ -20,50 +26,52 @@ func TerminalEscapeCode(code_xterm, code_sgr, row, col, m)
endif endif
call feedkeys("\<Esc>[M" .. bytes, 'Lx!') call feedkeys("\<Esc>[M" .. bytes, 'Lx!')
elseif &ttymouse ==# 'sgr' elseif &ttymouse ==# 'sgr'
call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code_sgr, a:col, a:row, a:m), 'Lx!') call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code, a:col, a:row, a:m), 'Lx!')
elseif &ttymouse ==# 'urxvt'
call feedkeys(printf("\<Esc>[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!')
endif endif
endfunc endfunc
func MouseLeftClick(row, col) func MouseLeftClick(row, col)
call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M') call TerminalEscapeCode(0, a:row, a:col, 'M')
endfunc endfunc
func MouseMiddleClick(row, col) func MouseMiddleClick(row, col)
call TerminalEscapeCode(0x21, 1, a:row, a:col, 'M') call TerminalEscapeCode(1, a:row, a:col, 'M')
endfunc endfunc
func MouseCtrlLeftClick(row, col) func MouseCtrlLeftClick(row, col)
let ctrl = 0x10 let ctrl = 0x10
call TerminalEscapeCode(0x20 + ctrl, 0 + ctrl, a:row, a:col, 'M') call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M')
endfunc endfunc
func MouseCtrlRightClick(row, col) func MouseCtrlRightClick(row, col)
let ctrl = 0x10 let ctrl = 0x10
call TerminalEscapeCode(0x22 + ctrl, 2 + ctrl, a:row, a:col, 'M') call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M')
endfunc endfunc
func MouseLeftRelease(row, col) func MouseLeftRelease(row, col)
call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') call TerminalEscapeCode(3, a:row, a:col, 'm')
endfunc endfunc
func MouseMiddleRelease(row, col) func MouseMiddleRelease(row, col)
call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') call TerminalEscapeCode(3, a:row, a:col, 'm')
endfunc endfunc
func MouseRightRelease(row, col) func MouseRightRelease(row, col)
call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') call TerminalEscapeCode(3, a:row, a:col, 'm')
endfunc endfunc
func MouseLeftDrag(row, col) func MouseLeftDrag(row, col)
call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M') call TerminalEscapeCode(0x20, a:row, a:col, 'M')
endfunc endfunc
func MouseWheelUp(row, col) func MouseWheelUp(row, col)
call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M') call TerminalEscapeCode(0x40, a:row, a:col, 'M')
endfunc endfunc
func MouseWheelDown(row, col) func MouseWheelDown(row, col)
call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M') call TerminalEscapeCode(0x41, a:row, a:col, 'M')
endfunc endfunc
func Test_xterm_mouse_left_click() func Test_xterm_mouse_left_click()
@@ -74,7 +82,7 @@ func Test_xterm_mouse_left_click()
set mouse=a term=xterm set mouse=a term=xterm
call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
go go
@@ -99,7 +107,7 @@ func Test_xterm_mouse_ctrl_click()
let save_ttymouse = &ttymouse let save_ttymouse = &ttymouse
set mouse=a term=xterm set mouse=a term=xterm
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
help help
@@ -138,7 +146,7 @@ func Test_xterm_mouse_middle_click()
let @* = 'abc' let @* = 'abc'
set mouse=a term=xterm set mouse=a term=xterm
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
call setline(1, ['123456789', '123456789']) call setline(1, ['123456789', '123456789'])
@@ -179,7 +187,7 @@ func Test_xterm_mouse_wheel()
set mouse=a term=xterm set mouse=a term=xterm
call setline(1, range(1, 100)) call setline(1, range(1, 100))
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
go go
@@ -215,7 +223,7 @@ func Test_xterm_mouse_drag_window_separator()
let save_ttymouse = &ttymouse let save_ttymouse = &ttymouse
set mouse=a term=xterm set mouse=a term=xterm
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
@@ -272,7 +280,7 @@ func Test_xterm_mouse_drag_statusline()
let save_laststatus = &laststatus let save_laststatus = &laststatus
set mouse=a term=xterm laststatus=2 set mouse=a term=xterm laststatus=2
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
@@ -313,7 +321,7 @@ func Test_xterm_mouse_click_tab()
set mouse=a term=xterm set mouse=a term=xterm
let row = 1 let row = 1
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
e Xfoo e Xfoo
@@ -361,7 +369,7 @@ func Test_xterm_mouse_click_X_to_close_tab()
let row = 1 let row = 1
let col = &columns let col = &columns
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
if ttymouse_val ==# 'xterm2' && col > 223 if ttymouse_val ==# 'xterm2' && col > 223
" When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported.
continue continue
@@ -407,7 +415,7 @@ func Test_xterm_mouse_drag_to_move_tab()
set mouse=a term=xterm mousetime=1 set mouse=a term=xterm mousetime=1
let row = 1 let row = 1
for ttymouse_val in ['xterm2', 'sgr'] for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
e Xtab1 e Xtab1
@@ -456,12 +464,20 @@ func Test_xterm_mouse_double_click_to_create_tab()
let row = 1 let row = 1
let col = 10 let col = 10
for ttymouse_val in ['xterm2', 'sgr'] let round = 0
for ttymouse_val in s:test_ttymouse
let msg = 'ttymouse=' .. ttymouse_val let msg = 'ttymouse=' .. ttymouse_val
exe 'set ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val
e Xtab1 e Xtab1
tabnew Xtab2 tabnew Xtab2
if round > 0
" We need to sleep, or else the first MouseLeftClick() will be
" interpreted as a spurious triple-click.
sleep 100m
endif
let round += 1
let a = split(execute(':tabs'), "\n") let a = split(execute(':tabs'), "\n")
call assert_equal(['Tab page 1', call assert_equal(['Tab page 1',
\ ' Xtab1', \ ' Xtab1',
@@ -485,11 +501,6 @@ func Test_xterm_mouse_double_click_to_create_tab()
\ 'Tab page 3', \ 'Tab page 3',
\ ' Xtab2'], a, msg) \ ' Xtab2'], a, msg)
if ttymouse_val !=# 'sgr'
" We need to sleep, or else MouseLeftClick() in next loop
" iteration will be interpreted as a spurious triple-click.
sleep 100m
endif
%bwipe! %bwipe!
endfor endfor

View File

@@ -767,6 +767,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1247,
/**/ /**/
1246, 1246,
/**/ /**/