mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -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:
@@ -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
|
||||||
|
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user