view src/testdir/test_termcodes.vim @ 16263:d3377393e3d9 v8.1.1136

patch 8.1.1136: decoding of mouse click escape sequence is not tested commit https://github.com/vim/vim/commit/905dd905debfde403b2a18178ccc1f8e118f4f2b Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 7 14:21:47 2019 +0200 patch 8.1.1136: decoding of mouse click escape sequence is not tested Problem: Decoding of mouse click escape sequence is not tested. Solution: Add a test for xterm and SGR using low-level input. Make low-level input execution with feedkeys() work.
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Apr 2019 14:30:06 +0200
parents
children 7feb5b90be5f
line wrap: on
line source

" Tests for decoding escape sequences sent by the terminal.

" This only works for Unix in a terminal
if has('gui_running') || !has('unix')
  finish
endif

func Test_xterm_mouse_click()
  new
  let save_mouse = &mouse
  let save_term = &term
  let save_ttymouse = &ttymouse
  set mouse=a
  set term=xterm
  call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
  redraw

  " Xterm mouse click
  set ttymouse=xterm
  let button = 0x20  " left down
  let row = 2 + 32
  let col = 6 + 32
  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')

  let button = 0x23  " release
  call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')

  call assert_equal([0, 2, 6, 0], getpos('.'))

  " SGR mouse click
  set ttymouse=sgr
  let button = 0  " left down
  let row = 3
  let col = 9
  call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')

  let button = 3  " release
  call feedkeys(printf("\<Esc>[<%d;%d;%dm", button, col, row), 'Lx!')

  call assert_equal([0, 3, 9, 0], getpos('.'))

  let &mouse = save_mouse
  let &term = save_term
  let &ttymouse = save_ttymouse
  bwipe!
endfunc