view src/libvterm/t/12state_scroll.test @ 12865:ebb4f6c93598 v8.0.1309

patch 8.0.1309: cannot use 'balloonexpr' in a terminal commit https://github.com/vim/vim/commit/51b0f3701ecb440aa72ab6017c1df6940c0e0f6f Author: Bram Moolenaar <Bram@vim.org> Date: Sat Nov 18 18:52:04 2017 +0100 patch 8.0.1309: cannot use 'balloonexpr' in a terminal Problem: Cannot use 'balloonexpr' in a terminal. Solution: Add 'balloonevalterm' and add code to handle mouse movements in a terminal. Initial implementation for Unix with GUI.
author Christian Brabandt <cb@256bit.org>
date Sat, 18 Nov 2017 19:00:06 +0100
parents b8299e742f41
children 747a270eb1db
line wrap: on
line source

INIT
UTF8 1
WANTSTATE s

!Linefeed
PUSH "\n"x24
  ?cursor = 24,0
PUSH "\n"
  scrollrect 0..25,0..80 => +1,+0
  ?cursor = 24,0

RESET

!Index
PUSH "\e[25H"
PUSH "\eD"
  scrollrect 0..25,0..80 => +1,+0

RESET

!Reverse Index
PUSH "\eM"
  scrollrect 0..25,0..80 => -1,+0

RESET

!Linefeed in DECSTBM
PUSH "\e[1;10r"
  ?cursor = 0,0
PUSH "\n"x9
  ?cursor = 9,0
PUSH "\n"
  scrollrect 0..10,0..80 => +1,+0
  ?cursor = 9,0

!Linefeed outside DECSTBM
PUSH "\e[20H"
  ?cursor = 19,0
PUSH "\n"
  ?cursor = 20,0

!Index in DECSTBM
PUSH "\e[10H"
PUSH "\e[9;10r"
PUSH "\eM"
  ?cursor = 8,0
PUSH "\eM"
  scrollrect 8..10,0..80 => -1,+0

!Reverse Index in DECSTBM
PUSH "\e[25H"
  ?cursor = 24,0
PUSH "\n"
  # no scrollrect
  ?cursor = 24,0

!Linefeed in DECSTBM+DECSLRM
PUSH "\e[?69h"
PUSH "\e[3;10r\e[10;40s"
PUSH "\e[10;10H\n"
  scrollrect 2..10,9..40 => +1,+0

!IND/RI in DECSTBM+DECSLRM
PUSH "\eD"
  scrollrect 2..10,9..40 => +1,+0
PUSH "\e[3;10H\eM"
  scrollrect 2..10,9..40 => -1,+0

!DECRQSS on DECSTBM
PUSH "\eP\$qr\e\\"
  output "\eP1\$r3;10r\e\\"

!DECRQSS on DECSLRM
PUSH "\eP\$qs\e\\"
  output "\eP1\$r10;40s\e\\"

!Setting invalid DECSLRM with !DECVSSM is still rejected
PUSH "\e[?69l\e[;0s\e[?69h"

RESET

!Scroll Down
PUSH "\e[S"
  scrollrect 0..25,0..80 => +1,+0
  ?cursor = 0,0
PUSH "\e[2S"
  scrollrect 0..25,0..80 => +2,+0
  ?cursor = 0,0
PUSH "\e[100S"
  scrollrect 0..25,0..80 => +25,+0

!Scroll Up
PUSH "\e[T"
  scrollrect 0..25,0..80 => -1,+0
  ?cursor = 0,0
PUSH "\e[2T"
  scrollrect 0..25,0..80 => -2,+0
  ?cursor = 0,0
PUSH "\e[100T"
  scrollrect 0..25,0..80 => -25,+0

!SD/SU in DECSTBM
PUSH "\e[5;20r"
PUSH "\e[S"
  scrollrect 4..20,0..80 => +1,+0
PUSH "\e[T"
  scrollrect 4..20,0..80 => -1,+0

RESET

!SD/SU in DECSTBM+DECSLRM
PUSH "\e[?69h"
PUSH "\e[3;10r\e[10;40s"
  ?cursor = 0,0
PUSH "\e[3;10H"
  ?cursor = 2,9
PUSH "\e[S"
  scrollrect 2..10,9..40 => +1,+0
PUSH "\e[?69l"
PUSH "\e[S"
  scrollrect 2..10,0..80 => +1,+0

!Invalid boundaries
RESET

PUSH "\e[100;105r\eD"
PUSH "\e[5;2r\eD"

RESET
WANTSTATE -s+me

!Scroll Down move+erase emulation
PUSH "\e[S"
  moverect 1..25,0..80 -> 0..24,0..80
  erase 24..25,0..80
  ?cursor = 0,0
PUSH "\e[2S"
  moverect 2..25,0..80 -> 0..23,0..80
  erase 23..25,0..80
  ?cursor = 0,0

!Scroll Up move+erase emulation
PUSH "\e[T"
  moverect 0..24,0..80 -> 1..25,0..80
  erase 0..1,0..80
  ?cursor = 0,0
PUSH "\e[2T"
  moverect 0..23,0..80 -> 2..25,0..80
  erase 0..2,0..80
  ?cursor = 0,0