# HG changeset patch # User Bram Moolenaar # Date 1556824505 -7200 # Node ID a4732cdcfaaffa710a5de1c77d736d67c1b81a72 # Parent 2a84ef3a5cdeefc9a6eb4d89ac349b50900eea2d patch 8.1.1247: urxvt mouse codes are not tested commit https://github.com/vim/vim/commit/d0621d85a6ceb17e1e6fb17415c3f94a755aaafa Author: Bram Moolenaar Date: Thu May 2 21:12:19 2019 +0200 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. diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim --- a/src/testdir/test_termcodes.vim +++ b/src/testdir/test_termcodes.vim @@ -7,11 +7,17 @@ endif 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. -func TerminalEscapeCode(code_xterm, code_sgr, row, col, m) +func TerminalEscapeCode(code, row, col, m) if &ttymouse ==# 'xterm2' " 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') let bytes = iconv(str, 'utf-8', 'latin1') else @@ -20,50 +26,52 @@ func TerminalEscapeCode(code_xterm, code endif call feedkeys("\[M" .. bytes, 'Lx!') elseif &ttymouse ==# 'sgr' - call feedkeys(printf("\[<%d;%d;%d%s", a:code_sgr, a:col, a:row, a:m), 'Lx!') + call feedkeys(printf("\[<%d;%d;%d%s", a:code, a:col, a:row, a:m), 'Lx!') + elseif &ttymouse ==# 'urxvt' + call feedkeys(printf("\[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!') endif endfunc func MouseLeftClick(row, col) - call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M') + call TerminalEscapeCode(0, a:row, a:col, 'M') endfunc func MouseMiddleClick(row, col) - call TerminalEscapeCode(0x21, 1, a:row, a:col, 'M') + call TerminalEscapeCode(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') + call TerminalEscapeCode(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') + call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') endfunc func MouseLeftRelease(row, col) - call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') + call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseMiddleRelease(row, col) - call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') + call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseRightRelease(row, col) - call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm') + call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseLeftDrag(row, col) - call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M') + call TerminalEscapeCode(0x20, a:row, a:col, 'M') endfunc func MouseWheelUp(row, col) - call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M') + call TerminalEscapeCode(0x40, a:row, a:col, 'M') endfunc func MouseWheelDown(row, col) - call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M') + call TerminalEscapeCode(0x41, a:row, a:col, 'M') endfunc func Test_xterm_mouse_left_click() @@ -74,7 +82,7 @@ func Test_xterm_mouse_left_click() set mouse=a term=xterm 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 exe 'set ttymouse=' .. ttymouse_val go @@ -99,7 +107,7 @@ func Test_xterm_mouse_ctrl_click() let save_ttymouse = &ttymouse set mouse=a term=xterm - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val help @@ -138,7 +146,7 @@ func Test_xterm_mouse_middle_click() let @* = 'abc' set mouse=a term=xterm - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val call setline(1, ['123456789', '123456789']) @@ -179,7 +187,7 @@ func Test_xterm_mouse_wheel() set mouse=a term=xterm call setline(1, range(1, 100)) - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val go @@ -215,7 +223,7 @@ func Test_xterm_mouse_drag_window_separa let save_ttymouse = &ttymouse set mouse=a term=xterm - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val @@ -272,7 +280,7 @@ func Test_xterm_mouse_drag_statusline() let save_laststatus = &laststatus 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 exe 'set ttymouse=' .. ttymouse_val @@ -313,7 +321,7 @@ func Test_xterm_mouse_click_tab() set mouse=a term=xterm let row = 1 - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xfoo @@ -361,7 +369,7 @@ func Test_xterm_mouse_click_X_to_close_t let row = 1 let col = &columns - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse if ttymouse_val ==# 'xterm2' && col > 223 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. continue @@ -407,7 +415,7 @@ func Test_xterm_mouse_drag_to_move_tab() set mouse=a term=xterm mousetime=1 let row = 1 - for ttymouse_val in ['xterm2', 'sgr'] + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xtab1 @@ -456,12 +464,20 @@ func Test_xterm_mouse_double_click_to_cr let row = 1 let col = 10 - for ttymouse_val in ['xterm2', 'sgr'] + let round = 0 + for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xtab1 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") call assert_equal(['Tab page 1', \ ' Xtab1', @@ -485,11 +501,6 @@ func Test_xterm_mouse_double_click_to_cr \ 'Tab page 3', \ ' 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! endfor diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1247, +/**/ 1246, /**/ 1245,