view src/libvterm/t/12state_scroll.test @ 13476:d130044d4f1f v8.0.1612

patch 8.0.1612: need to close terminal after shell stopped commit https://github.com/vim/vim/commit/1dd98334d6daee8abefcd640291d4b777d9f0f96 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Mar 16 22:54:53 2018 +0100 patch 8.0.1612: need to close terminal after shell stopped Problem: Need to close terminal after shell stopped. Solution: Make :terminal without argument close the window by default.
author Christian Brabandt <cb@256bit.org>
date Fri, 16 Mar 2018 23:00:07 +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