To: vim_dev@googlegroups.com Subject: Patch 8.1.1247 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.1247 Problem: Urxvt mouse codes are not tested. Solution: Also set 'ttymouse' to "urxvt" in the termcodes test. Files: src/testdir/test_termcodes.vim *** ../vim-8.1.1246/src/testdir/test_termcodes.vim 2019-05-01 23:13:53.270968846 +0200 --- src/testdir/test_termcodes.vim 2019-05-02 21:09:32.053517694 +0200 *************** *** 7,17 **** source shared.vim " Helper function to emit a terminal escape code. ! func TerminalEscapeCode(code_xterm, code_sgr, row, col, m) if &ttymouse ==# 'xterm2' " need to use byte encoding here. ! let str = list2str([a:code_xterm, a:col + 0x20, a:row + 0x20]) if has('iconv') let bytes = iconv(str, 'utf-8', 'latin1') else --- 7,23 ---- 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, row, col, m) if &ttymouse ==# 'xterm2' " need to use byte encoding here. ! let str = list2str([a:code + 0x20, a:col + 0x20, a:row + 0x20]) if has('iconv') let bytes = iconv(str, 'utf-8', 'latin1') else *************** *** 20,69 **** 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!') endif endfunc func MouseLeftClick(row, col) ! call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M') endfunc func MouseMiddleClick(row, col) ! 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 func MouseMiddleRelease(row, col) ! 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 func MouseWheelUp(row, col) ! call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M') endfunc func MouseWheelDown(row, col) ! call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M') endfunc func Test_xterm_mouse_left_click() --- 26,77 ---- endif call feedkeys("\[M" .. bytes, 'Lx!') elseif &ttymouse ==# 'sgr' ! 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(0, a:row, a:col, 'M') endfunc func MouseMiddleClick(row, col) ! call TerminalEscapeCode(1, a:row, a:col, 'M') endfunc func MouseCtrlLeftClick(row, col) let ctrl = 0x10 ! call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M') endfunc func MouseCtrlRightClick(row, col) let ctrl = 0x10 ! call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') endfunc func MouseLeftRelease(row, col) ! call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseMiddleRelease(row, col) ! call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseRightRelease(row, col) ! call TerminalEscapeCode(3, a:row, a:col, 'm') endfunc func MouseLeftDrag(row, col) ! call TerminalEscapeCode(0x20, a:row, a:col, 'M') endfunc func MouseWheelUp(row, col) ! call TerminalEscapeCode(0x40, a:row, a:col, 'M') endfunc func MouseWheelDown(row, col) ! call TerminalEscapeCode(0x41, a:row, a:col, 'M') endfunc func Test_xterm_mouse_left_click() *************** *** 74,80 **** set mouse=a term=xterm call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val go --- 82,88 ---- set mouse=a term=xterm call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer']) ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val go *************** *** 99,105 **** 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 --- 107,113 ---- let save_ttymouse = &ttymouse set mouse=a term=xterm ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val help *************** *** 138,144 **** let @* = 'abc' set mouse=a term=xterm ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val call setline(1, ['123456789', '123456789']) --- 146,152 ---- let @* = 'abc' set mouse=a term=xterm ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val call setline(1, ['123456789', '123456789']) *************** *** 179,185 **** set mouse=a term=xterm call setline(1, range(1, 100)) ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val go --- 187,193 ---- set mouse=a term=xterm call setline(1, range(1, 100)) ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val go *************** *** 215,221 **** 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 --- 223,229 ---- let save_ttymouse = &ttymouse set mouse=a term=xterm ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val *************** *** 272,278 **** let save_laststatus = &laststatus set mouse=a term=xterm laststatus=2 ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val --- 280,286 ---- let save_laststatus = &laststatus set mouse=a term=xterm laststatus=2 ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val *************** *** 313,319 **** set mouse=a term=xterm let row = 1 ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xfoo --- 321,327 ---- set mouse=a term=xterm let row = 1 ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xfoo *************** *** 361,367 **** let row = 1 let col = &columns ! for ttymouse_val in ['xterm2', 'sgr'] if ttymouse_val ==# 'xterm2' && col > 223 " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported. continue --- 369,375 ---- let row = 1 let col = &columns ! 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,413 **** set mouse=a term=xterm mousetime=1 let row = 1 ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xtab1 --- 415,421 ---- set mouse=a term=xterm mousetime=1 let row = 1 ! for ttymouse_val in s:test_ttymouse let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xtab1 *************** *** 456,467 **** let row = 1 let col = 10 ! for ttymouse_val in ['xterm2', 'sgr'] let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val e Xtab1 tabnew Xtab2 let a = split(execute(':tabs'), "\n") call assert_equal(['Tab page 1', \ ' Xtab1', --- 464,483 ---- let row = 1 let col = 10 ! 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,495 **** \ '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 --- 501,506 ---- *** ../vim-8.1.1246/src/version.c 2019-05-02 20:24:08.624617859 +0200 --- src/version.c 2019-05-02 21:11:40.708817159 +0200 *************** *** 769,770 **** --- 769,772 ---- { /* Add new patch number below this line */ + /**/ + 1247, /**/ -- Vi beats Emacs to death, and then again! http://linuxtoday.com/stories/5764.html /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///