view src/libvterm/t/15state_mode.test @ 34257:8a91d18f1789 v9.1.0069

patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang Commit: https://github.com/vim/vim/commit/fd472655a93fd539c731c8daf3adc4e65ddce341 Author: Olaf Seibert <rhialto@falu.nl> Date: Thu Feb 1 21:11:16 2024 +0100 patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang Problem: ScreenLines may not be correctly initialized, causing hang (Olaf Seibert, after 9.0.0220) Solution: always initialize ScreneLines when allocating a screen (Olaf Seibert) ScreenLines and related structures could be left uninitialized causing a screen update to run into an infinite loop when using latin1 encoding. Partly caused because by patch 9.0.0220, which makes mb_ptr2len return zero for NUL related: #12671 closes: #13946 Signed-off-by: Olaf Seibert <rhialto@falu.nl> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 01 Feb 2024 21:30:02 +0100
parents b8299e742f41
children
line wrap: on
line source

INIT
UTF8 1
WANTSTATE gme

!Insert/Replace Mode
RESET
  erase 0..25,0..80
  ?cursor = 0,0
PUSH "AC\e[DB"
  putglyph 0x41 1 0,0
  putglyph 0x43 1 0,1
  putglyph 0x42 1 0,1
PUSH "\e[4h"
PUSH "\e[G"
PUSH "AC\e[DB"
  moverect 0..1,0..79 -> 0..1,1..80
  erase 0..1,0..1
  putglyph 0x41 1 0,0
  moverect 0..1,1..79 -> 0..1,2..80
  erase 0..1,1..2
  putglyph 0x43 1 0,1
  moverect 0..1,1..79 -> 0..1,2..80
  erase 0..1,1..2
  putglyph 0x42 1 0,1

!Insert mode only happens once for UTF-8 combining
PUSH "e"
  moverect 0..1,2..79 -> 0..1,3..80
  erase 0..1,2..3
  putglyph 0x65 1 0,2
PUSH "\xCC\x81"
  putglyph 0x65,0x301 1 0,2

!Newline/Linefeed mode
RESET
  erase 0..25,0..80
  ?cursor = 0,0
PUSH "\e[5G\n"
  ?cursor = 1,4
PUSH "\e[20h"
PUSH "\e[5G\n"
  ?cursor = 2,0

!DEC origin mode
RESET
  erase 0..25,0..80
  ?cursor = 0,0
PUSH "\e[5;15r"
PUSH "\e[H"
  ?cursor = 0,0
PUSH "\e[3;3H"
  ?cursor = 2,2
PUSH "\e[?6h"
PUSH "\e[H"
  ?cursor = 4,0
PUSH "\e[3;3H"
  ?cursor = 6,2

!DECRQM on DECOM
PUSH "\e[?6h"
PUSH "\e[?6\$p"
  output "\e[?6;1\$y"
PUSH "\e[?6l"
PUSH "\e[?6\$p"
  output "\e[?6;2\$y"

!Origin mode with DECSLRM
PUSH "\e[?6h"
PUSH "\e[?69h"
PUSH "\e[20;60s"
PUSH "\e[H"
  ?cursor = 4,19

PUSH "\e[?69l"

!Origin mode bounds cursor to scrolling region
PUSH "\e[H"
PUSH "\e[10A"
  ?cursor = 4,0
PUSH "\e[20B"
  ?cursor = 14,0

!Origin mode without scroll region
PUSH "\e[?6l"
PUSH "\e[r\e[?6h"
  ?cursor = 0,0