patch 9.0.0772: the libvterm code is outdated
Problem: The libvterm code is outdated.
Solution: Include libvterm changes from revision 790 to 801.
diff --git a/src/libvterm/t/26state_query.test b/src/libvterm/t/26state_query.test
index c543b92..e4513de 100644
--- a/src/libvterm/t/26state_query.test
+++ b/src/libvterm/t/26state_query.test
@@ -6,6 +6,11 @@
PUSH "\e[c"
output "\e[?1;2c"
+!XTVERSION
+RESET
+PUSH "\e[>q"
+ output "\eP>|libvterm(0.2)\e\\"
+
!DSR
RESET
PUSH "\e[5n"
@@ -57,6 +62,6 @@
output "\x{9b}0n"
PUSH "\e F"
-!Truncation on attempted buffer overflow
-PUSH "\e[6n" x 30
- output "\e[10;10R" x 25
+#!Truncation on attempted buffer overflow
+#PUSH "\e[6n" x 30
+# output "\e[10;10R" x 25
diff --git a/src/libvterm/t/60screen_ascii.test b/src/libvterm/t/60screen_ascii.test
index e679b98..57729c5 100644
--- a/src/libvterm/t/60screen_ascii.test
+++ b/src/libvterm/t/60screen_ascii.test
@@ -18,11 +18,11 @@
?screen_eol 0,3 = 1
PUSH "\e[H"
movecursor 0,0
- ?screen_chars 0,0,1,80 = "ABC"
+ ?screen_row 0 = "ABC"
?screen_text 0,0,1,80 = 0x41,0x42,0x43
PUSH "E"
movecursor 0,1
- ?screen_chars 0,0,1,80 = "EBC"
+ ?screen_row 0 = "EBC"
?screen_text 0,0,1,80 = 0x45,0x42,0x43
WANTSCREEN -c
@@ -30,14 +30,14 @@
!Erase
RESET
PUSH "ABCDE\e[H\e[K"
- ?screen_chars 0,0,1,80 =
+ ?screen_row 0 = ""
?screen_text 0,0,1,80 =
!Copycell
RESET
PUSH "ABC\e[H\e[@"
PUSH "1"
- ?screen_chars 0,0,1,80 = "1ABC"
+ ?screen_row 0 = "1ABC"
RESET
PUSH "ABC\e[H\e[P"
@@ -48,7 +48,7 @@
!Space padding
RESET
PUSH "Hello\e[CWorld"
- ?screen_chars 0,0,1,80 = "Hello World"
+ ?screen_row 0 = "Hello World"
?screen_text 0,0,1,80 = 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64
!Linefeed padding
@@ -60,10 +60,10 @@
!Altscreen
RESET
PUSH "P"
- ?screen_chars 0,0,1,80 = "P"
+ ?screen_row 0 = "P"
PUSH "\e[?1049h"
- ?screen_chars 0,0,1,80 =
+ ?screen_row 0 = ""
PUSH "\e[2K\e[HA"
- ?screen_chars 0,0,1,80 = "A"
+ ?screen_row 0 = "A"
PUSH "\e[?1049l"
- ?screen_chars 0,0,1,80 = "P"
+ ?screen_row 0 = "P"
diff --git a/src/libvterm/t/61screen_unicode.test b/src/libvterm/t/61screen_unicode.test
index 6f5602d..8bde2bd 100644
--- a/src/libvterm/t/61screen_unicode.test
+++ b/src/libvterm/t/61screen_unicode.test
@@ -7,7 +7,7 @@
# U+00E9 = 0xC3 0xA9 name: LATIN SMALL LETTER E WITH ACUTE
RESET
PUSH "\xC3\x81\xC3\xA9"
- ?screen_chars 0,0,1,80 = 0xc1,0xe9
+ ?screen_row 0 = 0xc1,0xe9
?screen_text 0,0,1,80 = 0xc3,0x81,0xc3,0xa9
?screen_cell 0,0 = {0xc1} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
@@ -16,7 +16,7 @@
RESET
PUSH "0123\e[H"
PUSH "\xEF\xBC\x90"
- ?screen_chars 0,0,1,80 = 0xff10,0x32,0x33
+ ?screen_row 0 = 0xff10,0x32,0x33
?screen_text 0,0,1,80 = 0xef,0xbc,0x90,0x32,0x33
?screen_cell 0,0 = {0xff10} width=2 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
@@ -25,7 +25,7 @@
RESET
PUSH "0123\e[H"
PUSH "e\xCC\x81"
- ?screen_chars 0,0,1,80 = 0x65,0x301,0x31,0x32,0x33
+ ?screen_row 0 = 0x65,0x301,0x31,0x32,0x33
?screen_text 0,0,1,80 = 0x65,0xcc,0x81,0x31,0x32,0x33
?screen_cell 0,0 = {0x65,0x301} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
diff --git a/src/libvterm/t/62screen_damage.test b/src/libvterm/t/62screen_damage.test
index 32cac2d..3b1b238 100644
--- a/src/libvterm/t/62screen_damage.test
+++ b/src/libvterm/t/62screen_damage.test
@@ -152,4 +152,4 @@
DAMAGEFLUSH
moverect 1..25,0..80 -> 0..24,0..80
damage 24..25,0..80
- ?screen_chars 23,0,24,5 = "ABE"
+ ?screen_row 23 = "ABE"
diff --git a/src/libvterm/t/63screen_resize.test b/src/libvterm/t/63screen_resize.test
index 87b88d6..6835222 100644
--- a/src/libvterm/t/63screen_resize.test
+++ b/src/libvterm/t/63screen_resize.test
@@ -28,20 +28,20 @@
RESET
RESIZE 25,80
PUSH "Top\e[10HLine 10"
- ?screen_chars 0,0,1,80 = "Top"
- ?screen_chars 9,0,10,80 = "Line 10"
+ ?screen_row 0 = "Top"
+ ?screen_row 9 = "Line 10"
?cursor = 9,7
RESIZE 20,80
- ?screen_chars 0,0,1,80 = "Top"
- ?screen_chars 9,0,10,80 = "Line 10"
+ ?screen_row 0 = "Top"
+ ?screen_row 9 = "Line 10"
?cursor = 9,7
!Resize shorter with content must scroll
RESET
RESIZE 25,80
PUSH "Top\e[25HLine 25\e[15H"
- ?screen_chars 0,0,1,80 = "Top"
- ?screen_chars 24,0,25,80 = "Line 25"
+ ?screen_row 0 = "Top"
+ ?screen_row 24 = "Line 25"
?cursor = 14,0
WANTSCREEN b
RESIZE 20,80
@@ -50,8 +50,8 @@
sb_pushline 80 =
sb_pushline 80 =
sb_pushline 80 =
- ?screen_chars 0,0,1,80 =
- ?screen_chars 19,0,20,80 = "Line 25"
+ ?screen_row 0 = ""
+ ?screen_row 19 = "Line 25"
?cursor = 9,0
!Resize shorter does not lose line with cursor
@@ -62,11 +62,11 @@
WANTSCREEN b
PUSH "\e[24HLine 24\r\nLine 25\r\n"
sb_pushline 80 =
- ?screen_chars 23,0,24,10 = "Line 25"
+ ?screen_row 23 = "Line 25"
?cursor = 24,0
RESIZE 24,80
sb_pushline 80 =
- ?screen_chars 22,0,23,10 = "Line 25"
+ ?screen_row 22 = "Line 25"
?cursor = 23,0
!Resize shorter does not send the cursor to a negative row
@@ -90,8 +90,8 @@
WANTSCREEN -b
RESIZE 25,80
PUSH "Line 1\e[25HBottom\e[15H"
- ?screen_chars 0,0,1,80 = "Line 1"
- ?screen_chars 24,0,25,80 = "Bottom"
+ ?screen_row 0 = "Line 1"
+ ?screen_row 24 = "Bottom"
?cursor = 14,0
WANTSCREEN b
RESIZE 30,80
@@ -100,9 +100,9 @@
sb_popline 80
sb_popline 80
sb_popline 80
- ?screen_chars 0,0,1,80 = "ABCDE"
- ?screen_chars 5,0,6,80 = "Line 1"
- ?screen_chars 29,0,30,80 = "Bottom"
+ ?screen_row 0 = "ABCDE"
+ ?screen_row 5 = "Line 1"
+ ?screen_row 29 = "Bottom"
?cursor = 19,0
WANTSCREEN -b
@@ -112,6 +112,6 @@
RESIZE 25,80
PUSH "Main screen\e[?1049h\e[HAlt screen"
RESIZE 30,80
- ?screen_chars 0,0,1,3 = "Alt"
+ ?screen_row 0 = "Alt screen"
PUSH "\e[?1049l"
- ?screen_chars 0,0,1,3 = "Mai"
+ ?screen_row 0 = "Main screen"
diff --git a/src/libvterm/t/65screen_protect.test b/src/libvterm/t/65screen_protect.test
index 718f853..ec412a5 100644
--- a/src/libvterm/t/65screen_protect.test
+++ b/src/libvterm/t/65screen_protect.test
@@ -4,13 +4,13 @@
!Selective erase
RESET
PUSH "A\e[1\"qB\e[\"qC"
- ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
+ ?screen_row 0 = "ABC"
PUSH "\e[G\e[?J"
- ?screen_chars 0,0,1,3 = 0x20,0x42
+ ?screen_row 0 = " B"
!Non-selective erase
RESET
PUSH "A\e[1\"qB\e[\"qC"
- ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
+ ?screen_row 0 = "ABC"
PUSH "\e[G\e[J"
- ?screen_chars 0,0,1,3 =
+ ?screen_row 0 = ""
diff --git a/src/libvterm/t/harness.c b/src/libvterm/t/harness.c
index 07babb6..4e24198 100644
--- a/src/libvterm/t/harness.c
+++ b/src/libvterm/t/harness.c
@@ -1001,7 +1001,14 @@
size_t len;
while(linep[0] == ' ')
linep++;
- if(sscanf(linep, "%d,%d,%d,%d", &rect.start_row, &rect.start_col, &rect.end_row, &rect.end_col) < 4) {
+ if(sscanf(linep, "%d,%d,%d,%d", &rect.start_row, &rect.start_col, &rect.end_row, &rect.end_col) == 4)
+ ; // fine
+ else if(sscanf(linep, "%d", &rect.start_row) == 1) {
+ rect.end_row = rect.start_row + 1;
+ rect.start_col = 0;
+ vterm_get_size(vt, NULL, &rect.end_col);
+ }
+ else {
printf("! screen_chars unrecognised input\n");
goto abort_line;
}
diff --git a/src/libvterm/t/run-test.pl b/src/libvterm/t/run-test.pl
index 2e359cc..7d5cc7b 100644
--- a/src/libvterm/t/run-test.pl
+++ b/src/libvterm/t/run-test.pl
@@ -139,17 +139,23 @@
# ?screen_row assertion is emulated here
elsif( $line =~ s/^\?screen_row\s+(\d+)\s*=\s*// ) {
my $row = $1;
- my $row1 = $row + 1;
- my $want = eval($line);
+ my $want;
+
+ if( $line =~ m/^"/ ) {
+ $want = eval($line);
+ }
+ else {
+ # Turn 0xDD,0xDD,... directly into bytes
+ $want = pack "C*", map { hex } split m/,/, $line;
+ }
do_onetest if defined $command;
- # TODO: may not be 80
- $hin->print( "\?screen_chars $row,0,$row1,80\n" );
+ $hin->print( "\?screen_chars $row\n" );
my $response = <$hout>;
chomp $response;
- $response = pack "C*", map hex, split m/,/, $response;
+ $response = pack "C*", map { hex } split m/,/, $response;
if( $response ne $want ) {
print "# line $linenum: Assert ?screen_row $row failed:\n" .
"# Expected: $want\n" .