Patch 8.2.0780
Problem:    Libvterm code lags behind the upstream version.
Solution:   Include revisions 724 - 726.
Files:      Filelist, src/libvterm/t/40screen_ascii.test,
            src/libvterm/t/60screen_ascii.test,
            src/libvterm/t/41screen_unicode.test,
            src/libvterm/t/61screen_unicode.test,
            src/libvterm/t/42screen_damage.test,
            src/libvterm/t/62screen_damage.test,
            src/libvterm/t/43screen_resize.test,
            src/libvterm/t/63screen_resize.test,
            src/libvterm/t/44screen_pen.test,
            src/libvterm/t/64screen_pen.test,
            src/libvterm/t/45screen_protect.test,
            src/libvterm/t/65screen_protect.test,
            src/libvterm/t/46screen_extent.test,
            src/libvterm/t/66screen_extent.test,
            src/libvterm/t/47screen_dbl_wh.test,
            src/libvterm/t/67screen_dbl_wh.test,
            src/libvterm/t/48screen_termprops.test,
            src/libvterm/t/68screen_termprops.test, src/libvterm/t/30pen.test,
            src/libvterm/t/30state_pen.test, src/libvterm/t/92lp1805050.test,
            src/libvterm/t/31state_rep.test, src/libvterm/doc/seqs.txt


*** ../vim-8.2.0779/Filelist    2020-05-17 14:59:24.063410405 +0200
--- Filelist    2020-05-17 16:28:04.824101968 +0200
***************
*** 344,359 ****
                src/libvterm/t/27state_reset.test \
                src/libvterm/t/28state_dbl_wh.test \
                src/libvterm/t/29state_fallback.test \
!               src/libvterm/t/30pen.test \
!               src/libvterm/t/40screen_ascii.test \
!               src/libvterm/t/41screen_unicode.test \
!               src/libvterm/t/42screen_damage.test \
!               src/libvterm/t/43screen_resize.test \
!               src/libvterm/t/44screen_pen.test \
!               src/libvterm/t/45screen_protect.test \
!               src/libvterm/t/46screen_extent.test \
!               src/libvterm/t/47screen_dbl_wh.test \
!               src/libvterm/t/48screen_termprops.test \
                src/libvterm/t/90vttest_01-movement-1.test \
                src/libvterm/t/90vttest_01-movement-2.test \
                src/libvterm/t/90vttest_01-movement-3.test \
--- 344,360 ----
                src/libvterm/t/27state_reset.test \
                src/libvterm/t/28state_dbl_wh.test \
                src/libvterm/t/29state_fallback.test \
!               src/libvterm/t/30state_pen.test \
!               src/libvterm/t/31state_rep.test \
!               src/libvterm/t/60screen_ascii.test \
!               src/libvterm/t/61screen_unicode.test \
!               src/libvterm/t/62screen_damage.test \
!               src/libvterm/t/63screen_resize.test \
!               src/libvterm/t/64screen_pen.test \
!               src/libvterm/t/65screen_protect.test \
!               src/libvterm/t/66screen_extent.test \
!               src/libvterm/t/67screen_dbl_wh.test \
!               src/libvterm/t/68screen_termprops.test \
                src/libvterm/t/90vttest_01-movement-1.test \
                src/libvterm/t/90vttest_01-movement-2.test \
                src/libvterm/t/90vttest_01-movement-3.test \
*** ../vim-8.2.0779/src/libvterm/t/40screen_ascii.test  2017-06-30 
22:14:57.000000000 +0200
--- src/libvterm/t/40screen_ascii.test  1970-01-01 01:00:00.000000000 +0100
***************
*** 1,69 ****
- INIT
- WANTSCREEN c
- 
- !Get
- RESET
- PUSH "ABC"
-   movecursor 0,3
-   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
-   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43
-   ?screen_text 0,0,1,3 = 0x41,0x42,0x43
-   ?screen_text 0,0,1,80 = 0x41,0x42,0x43
-   ?screen_cell 0,0 = {0x41} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
-   ?screen_cell 0,1 = {0x42} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
-   ?screen_cell 0,2 = {0x43} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
-   ?screen_row 0 = "ABC"
-   ?screen_eol 0,0 = 0
-   ?screen_eol 0,2 = 0
-   ?screen_eol 0,3 = 1
- PUSH "\e[H"
-   movecursor 0,0
-   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43
-   ?screen_text 0,0,1,80 = 0x41,0x42,0x43
- PUSH "E"
-   movecursor 0,1
-   ?screen_chars 0,0,1,80 = 0x45,0x42,0x43
-   ?screen_text 0,0,1,80 = 0x45,0x42,0x43
- 
- WANTSCREEN -c
- 
- !Erase
- RESET
- PUSH "ABCDE\e[H\e[K"
-   ?screen_chars 0,0,1,80 = 
-   ?screen_text 0,0,1,80 = 
- 
- !Copycell
- RESET
- PUSH "ABC\e[H\e[@"
- PUSH "1"
-   ?screen_chars 0,0,1,80 = 0x31,0x41,0x42,0x43
- 
- RESET
- PUSH "ABC\e[H\e[P"
-   ?screen_chars 0,0,1,1 = 0x42
-   ?screen_chars 0,1,1,2 = 0x43
-   ?screen_chars 0,0,1,80 = 0x42,0x43
- 
- !Space padding
- RESET
- PUSH "Hello\e[CWorld"
-   ?screen_chars 0,0,1,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64
-   ?screen_text 0,0,1,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64
- 
- !Linefeed padding
- RESET
- PUSH "Hello\r\nWorld"
-   ?screen_chars 0,0,2,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x0a,0x57,0x6f,0x72,0x6c,0x64
-   ?screen_text 0,0,2,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x0a,0x57,0x6f,0x72,0x6c,0x64
- 
- !Altscreen
- RESET
- PUSH "P"
-   ?screen_chars 0,0,1,80 = 0x50
- PUSH "\e[?1049h"
-   ?screen_chars 0,0,1,80 = 
- PUSH "\e[2K\e[HA"
-   ?screen_chars 0,0,1,80 = 0x41
- PUSH "\e[?1049l"
-   ?screen_chars 0,0,1,80 = 0x50
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/60screen_ascii.test  2020-05-17 
16:23:18.149505926 +0200
--- src/libvterm/t/60screen_ascii.test  2017-06-30 22:14:57.000000000 +0200
***************
*** 0 ****
--- 1,69 ----
+ INIT
+ WANTSCREEN c
+ 
+ !Get
+ RESET
+ PUSH "ABC"
+   movecursor 0,3
+   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
+   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43
+   ?screen_text 0,0,1,3 = 0x41,0x42,0x43
+   ?screen_text 0,0,1,80 = 0x41,0x42,0x43
+   ?screen_cell 0,0 = {0x41} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+   ?screen_cell 0,1 = {0x42} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+   ?screen_cell 0,2 = {0x43} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+   ?screen_row 0 = "ABC"
+   ?screen_eol 0,0 = 0
+   ?screen_eol 0,2 = 0
+   ?screen_eol 0,3 = 1
+ PUSH "\e[H"
+   movecursor 0,0
+   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43
+   ?screen_text 0,0,1,80 = 0x41,0x42,0x43
+ PUSH "E"
+   movecursor 0,1
+   ?screen_chars 0,0,1,80 = 0x45,0x42,0x43
+   ?screen_text 0,0,1,80 = 0x45,0x42,0x43
+ 
+ WANTSCREEN -c
+ 
+ !Erase
+ RESET
+ PUSH "ABCDE\e[H\e[K"
+   ?screen_chars 0,0,1,80 = 
+   ?screen_text 0,0,1,80 = 
+ 
+ !Copycell
+ RESET
+ PUSH "ABC\e[H\e[@"
+ PUSH "1"
+   ?screen_chars 0,0,1,80 = 0x31,0x41,0x42,0x43
+ 
+ RESET
+ PUSH "ABC\e[H\e[P"
+   ?screen_chars 0,0,1,1 = 0x42
+   ?screen_chars 0,1,1,2 = 0x43
+   ?screen_chars 0,0,1,80 = 0x42,0x43
+ 
+ !Space padding
+ RESET
+ PUSH "Hello\e[CWorld"
+   ?screen_chars 0,0,1,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64
+   ?screen_text 0,0,1,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64
+ 
+ !Linefeed padding
+ RESET
+ PUSH "Hello\r\nWorld"
+   ?screen_chars 0,0,2,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x0a,0x57,0x6f,0x72,0x6c,0x64
+   ?screen_text 0,0,2,80 = 
0x48,0x65,0x6c,0x6c,0x6f,0x0a,0x57,0x6f,0x72,0x6c,0x64
+ 
+ !Altscreen
+ RESET
+ PUSH "P"
+   ?screen_chars 0,0,1,80 = 0x50
+ PUSH "\e[?1049h"
+   ?screen_chars 0,0,1,80 = 
+ PUSH "\e[2K\e[HA"
+   ?screen_chars 0,0,1,80 = 0x41
+ PUSH "\e[?1049l"
+   ?screen_chars 0,0,1,80 = 0x50
*** ../vim-8.2.0779/src/libvterm/t/41screen_unicode.test        2020-01-26 
21:59:25.624718145 +0100
--- src/libvterm/t/41screen_unicode.test        1970-01-01 01:00:00.000000000 
+0100
***************
*** 1,47 ****
- INIT
- UTF8 1
- WANTSCREEN
- 
- !Single width UTF-8
- # U+00C1 = 0xC3 0x81  name: LATIN CAPITAL LETTER A WITH ACUTE
- # 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_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)
- 
- !Wide char
- # U+FF10 = 0xEF 0xBC 0x90  name: FULLWIDTH DIGIT ZERO
- RESET
- PUSH "0123\e[H"
- PUSH "\xEF\xBC\x90"
-   ?screen_chars 0,0,1,80 = 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)
- 
- !Combining char
- # U+0301 = 0xCC 0x81  name: COMBINING ACUTE
- RESET
- PUSH "0123\e[H"
- PUSH "e\xCC\x81"
-   ?screen_chars 0,0,1,80 = 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)
- 
- !10 combining accents should not crash
- RESET
- PUSH 
"e\xCC\x81\xCC\x82\xCC\x83\xCC\x84\xCC\x85\xCC\x86\xCC\x87\xCC\x88\xCC\x89\xCC\x8A"
-   ?screen_cell 0,0 = {0x65,0x301,0x302,0x303,0x304,0x305} width=1 attrs={} 
fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !40 combining accents in two split writes of 20 should not crash
- RESET
- PUSH 
"e\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
- PUSH  
"\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
-   ?screen_cell 0,0 = {0x65,0x301,0x301,0x301,0x301,0x301} width=1 attrs={} 
fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !Outputting CJK doublewidth in 80th column should wraparound to next line and 
not crash"
- RESET
- PUSH "\e[80G\xEF\xBC\x90"
-   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
-   ?screen_cell 1,0 = {0xff10} width=2 attrs={} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/61screen_unicode.test        2020-05-17 
16:23:18.157505903 +0200
--- src/libvterm/t/61screen_unicode.test        2020-01-26 21:53:39.258270923 
+0100
***************
*** 0 ****
--- 1,47 ----
+ INIT
+ UTF8 1
+ WANTSCREEN
+ 
+ !Single width UTF-8
+ # U+00C1 = 0xC3 0x81  name: LATIN CAPITAL LETTER A WITH ACUTE
+ # 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_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)
+ 
+ !Wide char
+ # U+FF10 = 0xEF 0xBC 0x90  name: FULLWIDTH DIGIT ZERO
+ RESET
+ PUSH "0123\e[H"
+ PUSH "\xEF\xBC\x90"
+   ?screen_chars 0,0,1,80 = 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)
+ 
+ !Combining char
+ # U+0301 = 0xCC 0x81  name: COMBINING ACUTE
+ RESET
+ PUSH "0123\e[H"
+ PUSH "e\xCC\x81"
+   ?screen_chars 0,0,1,80 = 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)
+ 
+ !10 combining accents should not crash
+ RESET
+ PUSH 
"e\xCC\x81\xCC\x82\xCC\x83\xCC\x84\xCC\x85\xCC\x86\xCC\x87\xCC\x88\xCC\x89\xCC\x8A"
+   ?screen_cell 0,0 = {0x65,0x301,0x302,0x303,0x304,0x305} width=1 attrs={} 
fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !40 combining accents in two split writes of 20 should not crash
+ RESET
+ PUSH 
"e\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
+ PUSH  
"\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
+   ?screen_cell 0,0 = {0x65,0x301,0x301,0x301,0x301,0x301} width=1 attrs={} 
fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !Outputting CJK doublewidth in 80th column should wraparound to next line and 
not crash"
+ RESET
+ PUSH "\e[80G\xEF\xBC\x90"
+   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+   ?screen_cell 1,0 = {0xff10} width=2 attrs={} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
*** ../vim-8.2.0779/src/libvterm/t/42screen_damage.test 2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/42screen_damage.test 1970-01-01 01:00:00.000000000 +0100
***************
*** 1,155 ****
- INIT
- WANTSCREEN Db
- 
- !Putglyph
- RESET
-   damage 0..25,0..80
- PUSH "123"
-   damage 0..1,0..1 = 0<31>
-   damage 0..1,1..2 = 0<32>
-   damage 0..1,2..3 = 0<33>
- 
- !Erase
- PUSH "\e[H"
- PUSH "\e[3X"
-   damage 0..1,0..3
- 
- !Scroll damages entire line in two chunks
- PUSH "\e[H\e[5@"
-   damage 0..1,5..80
-   damage 0..1,0..5
- 
- !Scroll down damages entire screen in two chunks
- PUSH "\e[T"
-   damage 1..25,0..80
-   damage 0..1,0..80
- 
- !Altscreen damages entire area
- PUSH "\e[?1049h"
-   damage 0..25,0..80
- PUSH "\e[?1049l"
-   damage 0..25,0..80
- 
- WANTSCREEN m
- 
- !Scroll invokes moverect but not damage
- PUSH "\e[5@"
-   moverect 0..1,0..75 -> 0..1,5..80
-   damage 0..1,0..5
- 
- WANTSCREEN -m
- 
- !Merge to cells
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE CELL
- 
- PUSH "A"
-   damage 0..1,0..1 = 0<41>
- PUSH "B"
-   damage 0..1,1..2 = 0<42>
- PUSH "C"
-   damage 0..1,2..3 = 0<43>
- 
- !Merge entire rows
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE ROW
- 
- PUSH "ABCDE\r\nEFGH"
-   damage 0..1,0..5 = 0<41 42 43 44 45>
- DAMAGEFLUSH
-   damage 1..2,0..4 = 1<45 46 47 48>
- PUSH "\e[3;6r\e[6H\eD"
-   damage 2..5,0..80
- DAMAGEFLUSH
-   damage 5..6,0..80
- 
- !Merge entire screen
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE SCREEN
- 
- PUSH "ABCDE\r\nEFGH"
- DAMAGEFLUSH
-   damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
- PUSH "\e[3;6r\e[6H\eD"
- DAMAGEFLUSH
-   damage 2..6,0..80
- 
- !Merge entire screen with moverect
- WANTSCREEN m
- 
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE SCREEN
- 
- PUSH "ABCDE\r\nEFGH"
- PUSH "\e[3;6r\e[6H\eD"
-   damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
-   moverect 3..6,0..80 -> 2..5,0..80
- DAMAGEFLUSH
-   damage 5..6,0..80
- 
- !Merge scroll
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE SCROLL
- 
- PUSH "\e[H1\r\n2\r\n3"
- PUSH "\e[25H\n\n\n"
-   sb_pushline 80 = 31
-   sb_pushline 80 = 32
-   sb_pushline 80 = 33
- DAMAGEFLUSH
-   moverect 3..25,0..80 -> 0..22,0..80
-   damage 0..25,0..80
- 
- !Merge scroll with damage
- PUSH "\e[25H"
- PUSH "ABCDE\r\nEFGH\r\n"
-   sb_pushline 80 =
-   sb_pushline 80 =
- DAMAGEFLUSH
-   moverect 2..25,0..80 -> 0..23,0..80
-   damage 22..25,0..80 = 22<41 42 43 44 45> 23<45 46 47 48>
- 
- !Merge scroll with damage past region
- PUSH "\e[3;6r\e[6H1\r\n2\r\n3\r\n4\r\n5"
- DAMAGEFLUSH
-   damage 2..6,0..80 = 2<32> 3<33> 4<34> 5<35>
- 
- !Damage entirely outside scroll region
- PUSH "\e[HABC\e[3;6r\e[6H\r\n6"
-   damage 0..1,0..3 = 0<41 42 43>
- DAMAGEFLUSH
-   moverect 3..6,0..80 -> 2..5,0..80
-   damage 5..6,0..80 = 5<36>
- 
- !Damage overlapping scroll region
- PUSH "\e[H\e[2J"
- DAMAGEFLUSH
-   damage 0..25,0..80
- 
- PUSH "\e[HABCD\r\nEFGH\r\nIJKL\e[2;5r\e[5H\r\nMNOP"
- DAMAGEFLUSH
-   moverect 2..5,0..80 -> 1..4,0..80
-   damage 0..5,0..80 = 0<41 42 43 44> 1<49 4A 4B 4C>
-   ## TODO: is this right?
- 
- !Merge scroll*2 with damage
- RESET
-   damage 0..25,0..80
- DAMAGEMERGE SCROLL
- 
- PUSH "\e[25H\r\nABCDE\b\b\b\e[2P\r\n"
-   sb_pushline 80 =
-   moverect 1..25,0..80 -> 0..24,0..80
-   damage 24..25,0..80 = 24<41 42 43 44 45>
-   moverect 24..25,4..80 -> 24..25,2..78
-   damage 24..25,78..80
-   sb_pushline 80 =
- DAMAGEFLUSH
-   moverect 1..25,0..80 -> 0..24,0..80
-   damage 24..25,0..80
-   ?screen_chars 23,0,24,5 = 0x41,0x42,0x45
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/62screen_damage.test 2020-05-17 
16:23:18.161505894 +0200
--- src/libvterm/t/62screen_damage.test 2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,155 ----
+ INIT
+ WANTSCREEN Db
+ 
+ !Putglyph
+ RESET
+   damage 0..25,0..80
+ PUSH "123"
+   damage 0..1,0..1 = 0<31>
+   damage 0..1,1..2 = 0<32>
+   damage 0..1,2..3 = 0<33>
+ 
+ !Erase
+ PUSH "\e[H"
+ PUSH "\e[3X"
+   damage 0..1,0..3
+ 
+ !Scroll damages entire line in two chunks
+ PUSH "\e[H\e[5@"
+   damage 0..1,5..80
+   damage 0..1,0..5
+ 
+ !Scroll down damages entire screen in two chunks
+ PUSH "\e[T"
+   damage 1..25,0..80
+   damage 0..1,0..80
+ 
+ !Altscreen damages entire area
+ PUSH "\e[?1049h"
+   damage 0..25,0..80
+ PUSH "\e[?1049l"
+   damage 0..25,0..80
+ 
+ WANTSCREEN m
+ 
+ !Scroll invokes moverect but not damage
+ PUSH "\e[5@"
+   moverect 0..1,0..75 -> 0..1,5..80
+   damage 0..1,0..5
+ 
+ WANTSCREEN -m
+ 
+ !Merge to cells
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE CELL
+ 
+ PUSH "A"
+   damage 0..1,0..1 = 0<41>
+ PUSH "B"
+   damage 0..1,1..2 = 0<42>
+ PUSH "C"
+   damage 0..1,2..3 = 0<43>
+ 
+ !Merge entire rows
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE ROW
+ 
+ PUSH "ABCDE\r\nEFGH"
+   damage 0..1,0..5 = 0<41 42 43 44 45>
+ DAMAGEFLUSH
+   damage 1..2,0..4 = 1<45 46 47 48>
+ PUSH "\e[3;6r\e[6H\eD"
+   damage 2..5,0..80
+ DAMAGEFLUSH
+   damage 5..6,0..80
+ 
+ !Merge entire screen
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE SCREEN
+ 
+ PUSH "ABCDE\r\nEFGH"
+ DAMAGEFLUSH
+   damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
+ PUSH "\e[3;6r\e[6H\eD"
+ DAMAGEFLUSH
+   damage 2..6,0..80
+ 
+ !Merge entire screen with moverect
+ WANTSCREEN m
+ 
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE SCREEN
+ 
+ PUSH "ABCDE\r\nEFGH"
+ PUSH "\e[3;6r\e[6H\eD"
+   damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
+   moverect 3..6,0..80 -> 2..5,0..80
+ DAMAGEFLUSH
+   damage 5..6,0..80
+ 
+ !Merge scroll
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE SCROLL
+ 
+ PUSH "\e[H1\r\n2\r\n3"
+ PUSH "\e[25H\n\n\n"
+   sb_pushline 80 = 31
+   sb_pushline 80 = 32
+   sb_pushline 80 = 33
+ DAMAGEFLUSH
+   moverect 3..25,0..80 -> 0..22,0..80
+   damage 0..25,0..80
+ 
+ !Merge scroll with damage
+ PUSH "\e[25H"
+ PUSH "ABCDE\r\nEFGH\r\n"
+   sb_pushline 80 =
+   sb_pushline 80 =
+ DAMAGEFLUSH
+   moverect 2..25,0..80 -> 0..23,0..80
+   damage 22..25,0..80 = 22<41 42 43 44 45> 23<45 46 47 48>
+ 
+ !Merge scroll with damage past region
+ PUSH "\e[3;6r\e[6H1\r\n2\r\n3\r\n4\r\n5"
+ DAMAGEFLUSH
+   damage 2..6,0..80 = 2<32> 3<33> 4<34> 5<35>
+ 
+ !Damage entirely outside scroll region
+ PUSH "\e[HABC\e[3;6r\e[6H\r\n6"
+   damage 0..1,0..3 = 0<41 42 43>
+ DAMAGEFLUSH
+   moverect 3..6,0..80 -> 2..5,0..80
+   damage 5..6,0..80 = 5<36>
+ 
+ !Damage overlapping scroll region
+ PUSH "\e[H\e[2J"
+ DAMAGEFLUSH
+   damage 0..25,0..80
+ 
+ PUSH "\e[HABCD\r\nEFGH\r\nIJKL\e[2;5r\e[5H\r\nMNOP"
+ DAMAGEFLUSH
+   moverect 2..5,0..80 -> 1..4,0..80
+   damage 0..5,0..80 = 0<41 42 43 44> 1<49 4A 4B 4C>
+   ## TODO: is this right?
+ 
+ !Merge scroll*2 with damage
+ RESET
+   damage 0..25,0..80
+ DAMAGEMERGE SCROLL
+ 
+ PUSH "\e[25H\r\nABCDE\b\b\b\e[2P\r\n"
+   sb_pushline 80 =
+   moverect 1..25,0..80 -> 0..24,0..80
+   damage 24..25,0..80 = 24<41 42 43 44 45>
+   moverect 24..25,4..80 -> 24..25,2..78
+   damage 24..25,78..80
+   sb_pushline 80 =
+ DAMAGEFLUSH
+   moverect 1..25,0..80 -> 0..24,0..80
+   damage 24..25,0..80
+   ?screen_chars 23,0,24,5 = 0x41,0x42,0x45
*** ../vim-8.2.0779/src/libvterm/t/43screen_resize.test 2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/43screen_resize.test 1970-01-01 01:00:00.000000000 +0100
***************
*** 1,90 ****
- INIT
- WANTSTATE
- WANTSCREEN
- 
- !Resize wider preserves cells
- RESET
- RESIZE 25,80
- PUSH "AB\r\nCD"
-   ?screen_chars 0,0,1,80 = 0x41,0x42
-   ?screen_chars 1,0,2,80 = 0x43,0x44
- RESIZE 25,100
-   ?screen_chars 0,0,1,100 = 0x41,0x42
-   ?screen_chars 1,0,2,100 = 0x43,0x44
- 
- !Resize wider allows print in new area
- RESET
- RESIZE 25,80
- PUSH "AB\e[79GCD"
-   ?screen_chars 0,0,1,2 = 0x41,0x42
-   ?screen_chars 0,78,1,80 = 0x43,0x44
- RESIZE 25,100
-   ?screen_chars 0,0,1,2 = 0x41,0x42
-   ?screen_chars 0,78,1,80 = 0x43,0x44
- PUSH "E"
-   ?screen_chars 0,78,1,81 = 0x43,0x44,0x45
- 
- !Resize shorter with blanks just truncates
- RESET
- RESIZE 25,80
- PUSH "Top\e[10HLine 10"
-   ?screen_chars 0,0,1,80 = 0x54,0x6f,0x70
-   ?screen_chars 9,0,10,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31,0x30
-   ?cursor = 9,7
- RESIZE 20,80
-   ?screen_chars 0,0,1,80 = 0x54,0x6f,0x70
-   ?screen_chars 9,0,10,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31,0x30
-   ?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 = 0x54,0x6f,0x70
-   ?screen_chars 24,0,25,80 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
-   ?cursor = 14,0
- WANTSCREEN b
- RESIZE 20,80
-   sb_pushline 80 = 54 6F 70
-   sb_pushline 80 =
-   sb_pushline 80 =
-   sb_pushline 80 =
-   sb_pushline 80 =
-   ?screen_chars 0,0,1,80 = 
-   ?screen_chars 19,0,20,80 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
-   ?cursor = 9,0
- 
- !Resize shorter does not lose line with cursor
- # See also 
https://github.com/neovim/libvterm/commit/1b745d29d45623aa8d22a7b9288c7b0e331c7088
- RESET
- WANTSCREEN -b
- RESIZE 25,80
- WANTSCREEN b
- PUSH "\e[24HLine 24\r\nLine 25\r\n"
-   sb_pushline 80 =
-   ?screen_chars 23,0,24,10 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
-   ?cursor = 24,0
- RESIZE 24,80
-   sb_pushline 80 =
-   ?screen_chars 22,0,23,10 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
-   ?cursor = 23,0
- 
- !Resize taller attempts to pop scrollback
- RESET
- WANTSCREEN -b
- RESIZE 25,80
- PUSH "Line 1\e[25HBottom\e[15H"
-   ?screen_chars 0,0,1,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31
-   ?screen_chars 24,0,25,80 = 0x42,0x6f,0x74,0x74,0x6f,0x6d
-   ?cursor = 14,0
- WANTSCREEN b
- RESIZE 30,80
-   sb_popline 80
-   sb_popline 80
-   sb_popline 80
-   sb_popline 80
-   sb_popline 80
-   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43,0x44,0x45
-   ?screen_chars 5,0,6,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31
-   ?screen_chars 29,0,30,80 = 0x42,0x6f,0x74,0x74,0x6f,0x6d
-   ?cursor = 19,0
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/63screen_resize.test 2020-05-17 
16:23:18.169505871 +0200
--- src/libvterm/t/63screen_resize.test 2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,90 ----
+ INIT
+ WANTSTATE
+ WANTSCREEN
+ 
+ !Resize wider preserves cells
+ RESET
+ RESIZE 25,80
+ PUSH "AB\r\nCD"
+   ?screen_chars 0,0,1,80 = 0x41,0x42
+   ?screen_chars 1,0,2,80 = 0x43,0x44
+ RESIZE 25,100
+   ?screen_chars 0,0,1,100 = 0x41,0x42
+   ?screen_chars 1,0,2,100 = 0x43,0x44
+ 
+ !Resize wider allows print in new area
+ RESET
+ RESIZE 25,80
+ PUSH "AB\e[79GCD"
+   ?screen_chars 0,0,1,2 = 0x41,0x42
+   ?screen_chars 0,78,1,80 = 0x43,0x44
+ RESIZE 25,100
+   ?screen_chars 0,0,1,2 = 0x41,0x42
+   ?screen_chars 0,78,1,80 = 0x43,0x44
+ PUSH "E"
+   ?screen_chars 0,78,1,81 = 0x43,0x44,0x45
+ 
+ !Resize shorter with blanks just truncates
+ RESET
+ RESIZE 25,80
+ PUSH "Top\e[10HLine 10"
+   ?screen_chars 0,0,1,80 = 0x54,0x6f,0x70
+   ?screen_chars 9,0,10,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31,0x30
+   ?cursor = 9,7
+ RESIZE 20,80
+   ?screen_chars 0,0,1,80 = 0x54,0x6f,0x70
+   ?screen_chars 9,0,10,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31,0x30
+   ?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 = 0x54,0x6f,0x70
+   ?screen_chars 24,0,25,80 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
+   ?cursor = 14,0
+ WANTSCREEN b
+ RESIZE 20,80
+   sb_pushline 80 = 54 6F 70
+   sb_pushline 80 =
+   sb_pushline 80 =
+   sb_pushline 80 =
+   sb_pushline 80 =
+   ?screen_chars 0,0,1,80 = 
+   ?screen_chars 19,0,20,80 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
+   ?cursor = 9,0
+ 
+ !Resize shorter does not lose line with cursor
+ # See also 
https://github.com/neovim/libvterm/commit/1b745d29d45623aa8d22a7b9288c7b0e331c7088
+ RESET
+ WANTSCREEN -b
+ RESIZE 25,80
+ WANTSCREEN b
+ PUSH "\e[24HLine 24\r\nLine 25\r\n"
+   sb_pushline 80 =
+   ?screen_chars 23,0,24,10 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
+   ?cursor = 24,0
+ RESIZE 24,80
+   sb_pushline 80 =
+   ?screen_chars 22,0,23,10 = 0x4c,0x69,0x6e,0x65,0x20,0x32,0x35
+   ?cursor = 23,0
+ 
+ !Resize taller attempts to pop scrollback
+ RESET
+ WANTSCREEN -b
+ RESIZE 25,80
+ PUSH "Line 1\e[25HBottom\e[15H"
+   ?screen_chars 0,0,1,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31
+   ?screen_chars 24,0,25,80 = 0x42,0x6f,0x74,0x74,0x6f,0x6d
+   ?cursor = 14,0
+ WANTSCREEN b
+ RESIZE 30,80
+   sb_popline 80
+   sb_popline 80
+   sb_popline 80
+   sb_popline 80
+   sb_popline 80
+   ?screen_chars 0,0,1,80 = 0x41,0x42,0x43,0x44,0x45
+   ?screen_chars 5,0,6,80 = 0x4c,0x69,0x6e,0x65,0x20,0x31
+   ?screen_chars 29,0,30,80 = 0x42,0x6f,0x74,0x74,0x6f,0x6d
+   ?cursor = 19,0
*** ../vim-8.2.0779/src/libvterm/t/44screen_pen.test    2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/44screen_pen.test    1970-01-01 01:00:00.000000000 +0100
***************
*** 1,55 ****
- INIT
- WANTSCREEN
- 
- RESET
- 
- !Plain
- PUSH "A"
-   ?screen_cell 0,0 = {0x41} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !Bold
- PUSH "\e[1mB"
-   ?screen_cell 0,1 = {0x42} width=1 attrs={B} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
- 
- !Italic
- PUSH "\e[3mC"
-   ?screen_cell 0,2 = {0x43} width=1 attrs={BI} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
- 
- !Underline
- PUSH "\e[4mD"
-   ?screen_cell 0,3 = {0x44} width=1 attrs={BU1I} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
- 
- !Reset
- PUSH "\e[mE"
-   ?screen_cell 0,4 = {0x45} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !Font
- PUSH "\e[11mF\e[m"
-   ?screen_cell 0,5 = {0x46} width=1 attrs={F1} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
- 
- !Foreground
- PUSH "\e[31mG\e[m"
-   ?screen_cell 0,6 = {0x47} width=1 attrs={} fg=rgb(224,0,0) bg=rgb(0,0,0)
- 
- !Background
- PUSH "\e[42mH\e[m"
-   ?screen_cell 0,7 = {0x48} width=1 attrs={} fg=rgb(240,240,240) 
bg=rgb(0,224,0)
- 
- !EL sets reverse and colours to end of line
- PUSH "\e[H\e[7;33;44m\e[K"
-   ?screen_cell 0,0  = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
-   ?screen_cell 0,79 = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
- 
- !DECSCNM xors reverse for entire screen
- PUSH "\e[?5h"
-   ?screen_cell 0,0  = {} width=1 attrs={} fg=rgb(224,224,0) bg=rgb(0,0,224)
-   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(224,224,0) bg=rgb(0,0,224)
-   ?screen_cell 1,0  = {} width=1 attrs={R} fg=rgb(240,240,240) bg=rgb(0,0,0)
- PUSH "\e[?5\$p"
-   output "\e[?5;1\$y"
- PUSH "\e[?5l"
-   ?screen_cell 0,0  = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
-   ?screen_cell 0,79 = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
-   ?screen_cell 1,0  = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
- PUSH "\e[?5\$p"
-   output "\e[?5;2\$y"
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/64screen_pen.test    2020-05-17 
16:23:18.177505848 +0200
--- src/libvterm/t/64screen_pen.test    2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,55 ----
+ INIT
+ WANTSCREEN
+ 
+ RESET
+ 
+ !Plain
+ PUSH "A"
+   ?screen_cell 0,0 = {0x41} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !Bold
+ PUSH "\e[1mB"
+   ?screen_cell 0,1 = {0x42} width=1 attrs={B} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+ 
+ !Italic
+ PUSH "\e[3mC"
+   ?screen_cell 0,2 = {0x43} width=1 attrs={BI} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+ 
+ !Underline
+ PUSH "\e[4mD"
+   ?screen_cell 0,3 = {0x44} width=1 attrs={BU1I} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+ 
+ !Reset
+ PUSH "\e[mE"
+   ?screen_cell 0,4 = {0x45} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !Font
+ PUSH "\e[11mF\e[m"
+   ?screen_cell 0,5 = {0x46} width=1 attrs={F1} fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+ 
+ !Foreground
+ PUSH "\e[31mG\e[m"
+   ?screen_cell 0,6 = {0x47} width=1 attrs={} fg=rgb(224,0,0) bg=rgb(0,0,0)
+ 
+ !Background
+ PUSH "\e[42mH\e[m"
+   ?screen_cell 0,7 = {0x48} width=1 attrs={} fg=rgb(240,240,240) 
bg=rgb(0,224,0)
+ 
+ !EL sets reverse and colours to end of line
+ PUSH "\e[H\e[7;33;44m\e[K"
+   ?screen_cell 0,0  = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
+   ?screen_cell 0,79 = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
+ 
+ !DECSCNM xors reverse for entire screen
+ PUSH "\e[?5h"
+   ?screen_cell 0,0  = {} width=1 attrs={} fg=rgb(224,224,0) bg=rgb(0,0,224)
+   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(224,224,0) bg=rgb(0,0,224)
+   ?screen_cell 1,0  = {} width=1 attrs={R} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ PUSH "\e[?5\$p"
+   output "\e[?5;1\$y"
+ PUSH "\e[?5l"
+   ?screen_cell 0,0  = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
+   ?screen_cell 0,79 = {} width=1 attrs={R} fg=rgb(224,224,0) bg=rgb(0,0,224)
+   ?screen_cell 1,0  = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ PUSH "\e[?5\$p"
+   output "\e[?5;2\$y"
*** ../vim-8.2.0779/src/libvterm/t/45screen_protect.test        2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/45screen_protect.test        1970-01-01 01:00:00.000000000 
+0100
***************
*** 1,16 ****
- INIT
- WANTSCREEN 
- 
- !Selective erase
- RESET
- PUSH "A\e[1\"qB\e[\"qC"
-   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
- PUSH "\e[G\e[?J"
-   ?screen_chars 0,0,1,3 = 0x20,0x42
- 
- !Non-selective erase
- RESET
- PUSH "A\e[1\"qB\e[\"qC"
-   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
- PUSH "\e[G\e[J"
-   ?screen_chars 0,0,1,3 = 
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/65screen_protect.test        2020-05-17 
16:23:18.185505825 +0200
--- src/libvterm/t/65screen_protect.test        2017-06-24 16:44:02.000000000 
+0200
***************
*** 0 ****
--- 1,16 ----
+ INIT
+ WANTSCREEN 
+ 
+ !Selective erase
+ RESET
+ PUSH "A\e[1\"qB\e[\"qC"
+   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
+ PUSH "\e[G\e[?J"
+   ?screen_chars 0,0,1,3 = 0x20,0x42
+ 
+ !Non-selective erase
+ RESET
+ PUSH "A\e[1\"qB\e[\"qC"
+   ?screen_chars 0,0,1,3 = 0x41,0x42,0x43
+ PUSH "\e[G\e[J"
+   ?screen_chars 0,0,1,3 = 
*** ../vim-8.2.0779/src/libvterm/t/46screen_extent.test 2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/46screen_extent.test 1970-01-01 01:00:00.000000000 +0100
***************
*** 1,11 ****
- INIT
- WANTSCREEN 
- 
- !Bold extent
- RESET
- PUSH "AB\e[1mCD\e[mE"
-   ?screen_attrs_extent 0,0 = 0,0-1,1
-   ?screen_attrs_extent 0,1 = 0,0-1,1
-   ?screen_attrs_extent 0,2 = 0,2-1,3
-   ?screen_attrs_extent 0,3 = 0,2-1,3
-   ?screen_attrs_extent 0,4 = 0,4-1,79
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/66screen_extent.test 2020-05-17 
16:23:18.189505812 +0200
--- src/libvterm/t/66screen_extent.test 2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,11 ----
+ INIT
+ WANTSCREEN 
+ 
+ !Bold extent
+ RESET
+ PUSH "AB\e[1mCD\e[mE"
+   ?screen_attrs_extent 0,0 = 0,0-1,1
+   ?screen_attrs_extent 0,1 = 0,0-1,1
+   ?screen_attrs_extent 0,2 = 0,2-1,3
+   ?screen_attrs_extent 0,3 = 0,2-1,3
+   ?screen_attrs_extent 0,4 = 0,4-1,79
*** ../vim-8.2.0779/src/libvterm/t/47screen_dbl_wh.test 2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/47screen_dbl_wh.test 1970-01-01 01:00:00.000000000 +0100
***************
*** 1,32 ****
- INIT
- WANTSCREEN
- 
- RESET
- 
- !Single Width, Single Height
- RESET
- PUSH "\e#5"
- PUSH "abcde"
-   ?screen_cell 0,0 = {0x61} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !Double Width, Single Height
- RESET
- PUSH "\e#6"
- PUSH "abcde"
-   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl fg=rgb(240,240,240) 
bg=rgb(0,0,0)
- 
- !Double Height
- RESET
- PUSH "\e#3"
- PUSH "abcde"
- PUSH "\r\n\e#4"
- PUSH "abcde"
-   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl dhl-top fg=rgb(240,240,240) 
bg=rgb(0,0,0)
-   ?screen_cell 1,0 = {0x61} width=1 attrs={} dwl dhl-bottom 
fg=rgb(240,240,240) bg=rgb(0,0,0)
- 
- !Late change
- RESET
- PUSH "abcde"
-   ?screen_cell 0,0 = {0x61} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
- PUSH "\e#6"
-   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl fg=rgb(240,240,240) 
bg=rgb(0,0,0)
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/67screen_dbl_wh.test 2020-05-17 
16:23:18.197505789 +0200
--- src/libvterm/t/67screen_dbl_wh.test 2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,32 ----
+ INIT
+ WANTSCREEN
+ 
+ RESET
+ 
+ !Single Width, Single Height
+ RESET
+ PUSH "\e#5"
+ PUSH "abcde"
+   ?screen_cell 0,0 = {0x61} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !Double Width, Single Height
+ RESET
+ PUSH "\e#6"
+ PUSH "abcde"
+   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+ 
+ !Double Height
+ RESET
+ PUSH "\e#3"
+ PUSH "abcde"
+ PUSH "\r\n\e#4"
+ PUSH "abcde"
+   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl dhl-top fg=rgb(240,240,240) 
bg=rgb(0,0,0)
+   ?screen_cell 1,0 = {0x61} width=1 attrs={} dwl dhl-bottom 
fg=rgb(240,240,240) bg=rgb(0,0,0)
+ 
+ !Late change
+ RESET
+ PUSH "abcde"
+   ?screen_cell 0,0 = {0x61} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
+ PUSH "\e#6"
+   ?screen_cell 0,0 = {0x61} width=1 attrs={} dwl fg=rgb(240,240,240) 
bg=rgb(0,0,0)
*** ../vim-8.2.0779/src/libvterm/t/48screen_termprops.test      2017-06-24 
16:44:02.000000000 +0200
--- src/libvterm/t/48screen_termprops.test      1970-01-01 01:00:00.000000000 
+0100
***************
*** 1,17 ****
- INIT
- WANTSCREEN p
- 
- RESET
-   settermprop 1 true
-   settermprop 2 true
-   settermprop 7 1
- 
- !Cursor visibility
- PUSH "\e[?25h"
-   settermprop 1 true
- PUSH "\e[?25l"
-   settermprop 1 false
- 
- !Title
- PUSH "\e]2;Here is my title\a"
-   settermprop 4 "Here is my title"
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/68screen_termprops.test      2020-05-17 
16:23:18.205505766 +0200
--- src/libvterm/t/68screen_termprops.test      2017-06-24 16:44:02.000000000 
+0200
***************
*** 0 ****
--- 1,17 ----
+ INIT
+ WANTSCREEN p
+ 
+ RESET
+   settermprop 1 true
+   settermprop 2 true
+   settermprop 7 1
+ 
+ !Cursor visibility
+ PUSH "\e[?25h"
+   settermprop 1 true
+ PUSH "\e[?25l"
+   settermprop 1 false
+ 
+ !Title
+ PUSH "\e]2;Here is my title\a"
+   settermprop 4 "Here is my title"
*** ../vim-8.2.0779/src/libvterm/t/30pen.test   2017-06-24 16:44:02.000000000 
+0200
--- src/libvterm/t/30pen.test   1970-01-01 01:00:00.000000000 +0100
***************
*** 1,106 ****
- INIT
- UTF8 1
- WANTSTATE
- 
- !Reset
- PUSH "\e[m"
-   ?pen bold = off
-   ?pen underline = 0
-   ?pen italic = off
-   ?pen blink = off
-   ?pen reverse = off
-   ?pen font = 0
-   ?pen foreground = rgb(240,240,240)
-   ?pen background = rgb(0,0,0)
- 
- !Bold
- PUSH "\e[1m"
-   ?pen bold = on
- PUSH "\e[22m"
-   ?pen bold = off
- PUSH "\e[1m\e[m"
-   ?pen bold = off
- 
- !Underline
- PUSH "\e[4m"
-   ?pen underline = 1
- PUSH "\e[21m"
-   ?pen underline = 2
- PUSH "\e[24m"
-   ?pen underline = 0
- PUSH "\e[4m\e[m"
-   ?pen underline = 0
- 
- !Italic
- PUSH "\e[3m"
-   ?pen italic = on
- PUSH "\e[23m"
-   ?pen italic = off
- PUSH "\e[3m\e[m"
-   ?pen italic = off
- 
- !Blink
- PUSH "\e[5m"
-   ?pen blink = on
- PUSH "\e[25m"
-   ?pen blink = off
- PUSH "\e[5m\e[m"
-   ?pen blink = off
- 
- !Reverse
- PUSH "\e[7m"
-   ?pen reverse = on
- PUSH "\e[27m"
-   ?pen reverse = off
- PUSH "\e[7m\e[m"
-   ?pen reverse = off
- 
- !Font Selection
- PUSH "\e[11m"
-   ?pen font = 1
- PUSH "\e[19m"
-   ?pen font = 9
- PUSH "\e[10m"
-   ?pen font = 0
- PUSH "\e[11m\e[m"
-   ?pen font = 0
- 
- !Foreground
- PUSH "\e[31m"
-   ?pen foreground = rgb(224,0,0)
- PUSH "\e[32m"
-   ?pen foreground = rgb(0,224,0)
- PUSH "\e[34m"
-   ?pen foreground = rgb(0,0,224)
- PUSH "\e[91m"
-   ?pen foreground = rgb(255,64,64)
- PUSH "\e[38:2:10:20:30m"
-   ?pen foreground = rgb(10,20,30)
- PUSH "\e[38:5:1m"
-   ?pen foreground = rgb(224,0,0)
- PUSH "\e[39m"
-   ?pen foreground = rgb(240,240,240)
- 
- !Background
- PUSH "\e[41m"
-   ?pen background = rgb(224,0,0)
- PUSH "\e[42m"
-   ?pen background = rgb(0,224,0)
- PUSH "\e[44m"
-   ?pen background = rgb(0,0,224)
- PUSH "\e[101m"
-   ?pen background = rgb(255,64,64)
- PUSH "\e[48:2:10:20:30m"
-   ?pen background = rgb(10,20,30)
- PUSH "\e[48:5:1m"
-   ?pen background = rgb(224,0,0)
- PUSH "\e[49m"
-   ?pen background = rgb(0,0,0)
- 
- !Bold+ANSI colour == highbright
- PUSH "\e[m\e[1;37m"
-   ?pen bold = on
-   ?pen foreground = rgb(255,255,255)
- PUSH "\e[m\e[37;1m"
-   ?pen bold = on
-   ?pen foreground = rgb(255,255,255)
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/30state_pen.test     2020-05-17 
16:23:18.213505743 +0200
--- src/libvterm/t/30state_pen.test     2017-06-24 16:44:02.000000000 +0200
***************
*** 0 ****
--- 1,106 ----
+ INIT
+ UTF8 1
+ WANTSTATE
+ 
+ !Reset
+ PUSH "\e[m"
+   ?pen bold = off
+   ?pen underline = 0
+   ?pen italic = off
+   ?pen blink = off
+   ?pen reverse = off
+   ?pen font = 0
+   ?pen foreground = rgb(240,240,240)
+   ?pen background = rgb(0,0,0)
+ 
+ !Bold
+ PUSH "\e[1m"
+   ?pen bold = on
+ PUSH "\e[22m"
+   ?pen bold = off
+ PUSH "\e[1m\e[m"
+   ?pen bold = off
+ 
+ !Underline
+ PUSH "\e[4m"
+   ?pen underline = 1
+ PUSH "\e[21m"
+   ?pen underline = 2
+ PUSH "\e[24m"
+   ?pen underline = 0
+ PUSH "\e[4m\e[m"
+   ?pen underline = 0
+ 
+ !Italic
+ PUSH "\e[3m"
+   ?pen italic = on
+ PUSH "\e[23m"
+   ?pen italic = off
+ PUSH "\e[3m\e[m"
+   ?pen italic = off
+ 
+ !Blink
+ PUSH "\e[5m"
+   ?pen blink = on
+ PUSH "\e[25m"
+   ?pen blink = off
+ PUSH "\e[5m\e[m"
+   ?pen blink = off
+ 
+ !Reverse
+ PUSH "\e[7m"
+   ?pen reverse = on
+ PUSH "\e[27m"
+   ?pen reverse = off
+ PUSH "\e[7m\e[m"
+   ?pen reverse = off
+ 
+ !Font Selection
+ PUSH "\e[11m"
+   ?pen font = 1
+ PUSH "\e[19m"
+   ?pen font = 9
+ PUSH "\e[10m"
+   ?pen font = 0
+ PUSH "\e[11m\e[m"
+   ?pen font = 0
+ 
+ !Foreground
+ PUSH "\e[31m"
+   ?pen foreground = rgb(224,0,0)
+ PUSH "\e[32m"
+   ?pen foreground = rgb(0,224,0)
+ PUSH "\e[34m"
+   ?pen foreground = rgb(0,0,224)
+ PUSH "\e[91m"
+   ?pen foreground = rgb(255,64,64)
+ PUSH "\e[38:2:10:20:30m"
+   ?pen foreground = rgb(10,20,30)
+ PUSH "\e[38:5:1m"
+   ?pen foreground = rgb(224,0,0)
+ PUSH "\e[39m"
+   ?pen foreground = rgb(240,240,240)
+ 
+ !Background
+ PUSH "\e[41m"
+   ?pen background = rgb(224,0,0)
+ PUSH "\e[42m"
+   ?pen background = rgb(0,224,0)
+ PUSH "\e[44m"
+   ?pen background = rgb(0,0,224)
+ PUSH "\e[101m"
+   ?pen background = rgb(255,64,64)
+ PUSH "\e[48:2:10:20:30m"
+   ?pen background = rgb(10,20,30)
+ PUSH "\e[48:5:1m"
+   ?pen background = rgb(224,0,0)
+ PUSH "\e[49m"
+   ?pen background = rgb(0,0,0)
+ 
+ !Bold+ANSI colour == highbright
+ PUSH "\e[m\e[1;37m"
+   ?pen bold = on
+   ?pen foreground = rgb(255,255,255)
+ PUSH "\e[m\e[37;1m"
+   ?pen bold = on
+   ?pen foreground = rgb(255,255,255)
*** ../vim-8.2.0779/src/libvterm/t/92lp1805050.test     2020-05-17 
16:03:58.500875755 +0200
--- src/libvterm/t/92lp1805050.test     1970-01-01 01:00:00.000000000 +0100
***************
*** 1,128 ****
- INIT
- UTF8 1
- WANTSTATE g
- 
- !REP no argument
- RESET
- PUSH "a\e[b"
-   putglyph 0x61 1 0,0
-   putglyph 0x61 1 0,1
- 
- !REP zero (zero should be interpreted as one)
- RESET
- PUSH "a\e[0b"
-   putglyph 0x61 1 0,0
-   putglyph 0x61 1 0,1
- 
- !REP lowercase a times two
- RESET
- PUSH "a\e[2b"
-   putglyph 0x61 1 0,0
-   putglyph 0x61 1 0,1
-   putglyph 0x61 1 0,2
- 
- !REP with UTF-8 1 char
- # U+00E9 = 0xC3 0xA9  name: LATIN SMALL LETTER E WITH ACUTE
- RESET
- PUSH "\xC3\xA9\e[b"
-   putglyph 0xe9 1 0,0
-   putglyph 0xe9 1 0,1
- 
- !REP with UTF-8 wide char
- # U+00E9 = 0xC3 0xA9  name: LATIN SMALL LETTER E WITH ACUTE
- RESET
- PUSH "\xEF\xBC\x90\e[b"
-   putglyph 0xff10 2 0,0
-   putglyph 0xff10 2 0,2
- 
- !REP with UTF-8 combining character
- RESET
- PUSH "e\xCC\x81\e[b"
-   putglyph 0x65,0x301 1 0,0
-   putglyph 0x65,0x301 1 0,1
- 
- !REP till end of line
- RESET
- PUSH "a\e[1000bb"
-   putglyph 0x61 1 0,0
-   putglyph 0x61 1 0,1
-   putglyph 0x61 1 0,2
-   putglyph 0x61 1 0,3
-   putglyph 0x61 1 0,4
-   putglyph 0x61 1 0,5
-   putglyph 0x61 1 0,6
-   putglyph 0x61 1 0,7
-   putglyph 0x61 1 0,8
-   putglyph 0x61 1 0,9
-   putglyph 0x61 1 0,10
-   putglyph 0x61 1 0,11
-   putglyph 0x61 1 0,12
-   putglyph 0x61 1 0,13
-   putglyph 0x61 1 0,14
-   putglyph 0x61 1 0,15
-   putglyph 0x61 1 0,16
-   putglyph 0x61 1 0,17
-   putglyph 0x61 1 0,18
-   putglyph 0x61 1 0,19
-   putglyph 0x61 1 0,20
-   putglyph 0x61 1 0,21
-   putglyph 0x61 1 0,22
-   putglyph 0x61 1 0,23
-   putglyph 0x61 1 0,24
-   putglyph 0x61 1 0,25
-   putglyph 0x61 1 0,26
-   putglyph 0x61 1 0,27
-   putglyph 0x61 1 0,28
-   putglyph 0x61 1 0,29
-   putglyph 0x61 1 0,30
-   putglyph 0x61 1 0,31
-   putglyph 0x61 1 0,32
-   putglyph 0x61 1 0,33
-   putglyph 0x61 1 0,34
-   putglyph 0x61 1 0,35
-   putglyph 0x61 1 0,36
-   putglyph 0x61 1 0,37
-   putglyph 0x61 1 0,38
-   putglyph 0x61 1 0,39
-   putglyph 0x61 1 0,40
-   putglyph 0x61 1 0,41
-   putglyph 0x61 1 0,42
-   putglyph 0x61 1 0,43
-   putglyph 0x61 1 0,44
-   putglyph 0x61 1 0,45
-   putglyph 0x61 1 0,46
-   putglyph 0x61 1 0,47
-   putglyph 0x61 1 0,48
-   putglyph 0x61 1 0,49
-   putglyph 0x61 1 0,50
-   putglyph 0x61 1 0,51
-   putglyph 0x61 1 0,52
-   putglyph 0x61 1 0,53
-   putglyph 0x61 1 0,54
-   putglyph 0x61 1 0,55
-   putglyph 0x61 1 0,56
-   putglyph 0x61 1 0,57
-   putglyph 0x61 1 0,58
-   putglyph 0x61 1 0,59
-   putglyph 0x61 1 0,60
-   putglyph 0x61 1 0,61
-   putglyph 0x61 1 0,62
-   putglyph 0x61 1 0,63
-   putglyph 0x61 1 0,64
-   putglyph 0x61 1 0,65
-   putglyph 0x61 1 0,66
-   putglyph 0x61 1 0,67
-   putglyph 0x61 1 0,68
-   putglyph 0x61 1 0,69
-   putglyph 0x61 1 0,70
-   putglyph 0x61 1 0,71
-   putglyph 0x61 1 0,72
-   putglyph 0x61 1 0,73
-   putglyph 0x61 1 0,74
-   putglyph 0x61 1 0,75
-   putglyph 0x61 1 0,76
-   putglyph 0x61 1 0,77
-   putglyph 0x61 1 0,78
-   putglyph 0x61 1 0,79
-   putglyph 0x62 1 1,0
- 
--- 0 ----
*** ../vim-8.2.0779/src/libvterm/t/31state_rep.test     2020-05-17 
16:23:18.217505729 +0200
--- src/libvterm/t/31state_rep.test     2020-05-17 15:55:34.414356523 +0200
***************
*** 0 ****
--- 1,128 ----
+ INIT
+ UTF8 1
+ WANTSTATE g
+ 
+ !REP no argument
+ RESET
+ PUSH "a\e[b"
+   putglyph 0x61 1 0,0
+   putglyph 0x61 1 0,1
+ 
+ !REP zero (zero should be interpreted as one)
+ RESET
+ PUSH "a\e[0b"
+   putglyph 0x61 1 0,0
+   putglyph 0x61 1 0,1
+ 
+ !REP lowercase a times two
+ RESET
+ PUSH "a\e[2b"
+   putglyph 0x61 1 0,0
+   putglyph 0x61 1 0,1
+   putglyph 0x61 1 0,2
+ 
+ !REP with UTF-8 1 char
+ # U+00E9 = 0xC3 0xA9  name: LATIN SMALL LETTER E WITH ACUTE
+ RESET
+ PUSH "\xC3\xA9\e[b"
+   putglyph 0xe9 1 0,0
+   putglyph 0xe9 1 0,1
+ 
+ !REP with UTF-8 wide char
+ # U+00E9 = 0xC3 0xA9  name: LATIN SMALL LETTER E WITH ACUTE
+ RESET
+ PUSH "\xEF\xBC\x90\e[b"
+   putglyph 0xff10 2 0,0
+   putglyph 0xff10 2 0,2
+ 
+ !REP with UTF-8 combining character
+ RESET
+ PUSH "e\xCC\x81\e[b"
+   putglyph 0x65,0x301 1 0,0
+   putglyph 0x65,0x301 1 0,1
+ 
+ !REP till end of line
+ RESET
+ PUSH "a\e[1000bb"
+   putglyph 0x61 1 0,0
+   putglyph 0x61 1 0,1
+   putglyph 0x61 1 0,2
+   putglyph 0x61 1 0,3
+   putglyph 0x61 1 0,4
+   putglyph 0x61 1 0,5
+   putglyph 0x61 1 0,6
+   putglyph 0x61 1 0,7
+   putglyph 0x61 1 0,8
+   putglyph 0x61 1 0,9
+   putglyph 0x61 1 0,10
+   putglyph 0x61 1 0,11
+   putglyph 0x61 1 0,12
+   putglyph 0x61 1 0,13
+   putglyph 0x61 1 0,14
+   putglyph 0x61 1 0,15
+   putglyph 0x61 1 0,16
+   putglyph 0x61 1 0,17
+   putglyph 0x61 1 0,18
+   putglyph 0x61 1 0,19
+   putglyph 0x61 1 0,20
+   putglyph 0x61 1 0,21
+   putglyph 0x61 1 0,22
+   putglyph 0x61 1 0,23
+   putglyph 0x61 1 0,24
+   putglyph 0x61 1 0,25
+   putglyph 0x61 1 0,26
+   putglyph 0x61 1 0,27
+   putglyph 0x61 1 0,28
+   putglyph 0x61 1 0,29
+   putglyph 0x61 1 0,30
+   putglyph 0x61 1 0,31
+   putglyph 0x61 1 0,32
+   putglyph 0x61 1 0,33
+   putglyph 0x61 1 0,34
+   putglyph 0x61 1 0,35
+   putglyph 0x61 1 0,36
+   putglyph 0x61 1 0,37
+   putglyph 0x61 1 0,38
+   putglyph 0x61 1 0,39
+   putglyph 0x61 1 0,40
+   putglyph 0x61 1 0,41
+   putglyph 0x61 1 0,42
+   putglyph 0x61 1 0,43
+   putglyph 0x61 1 0,44
+   putglyph 0x61 1 0,45
+   putglyph 0x61 1 0,46
+   putglyph 0x61 1 0,47
+   putglyph 0x61 1 0,48
+   putglyph 0x61 1 0,49
+   putglyph 0x61 1 0,50
+   putglyph 0x61 1 0,51
+   putglyph 0x61 1 0,52
+   putglyph 0x61 1 0,53
+   putglyph 0x61 1 0,54
+   putglyph 0x61 1 0,55
+   putglyph 0x61 1 0,56
+   putglyph 0x61 1 0,57
+   putglyph 0x61 1 0,58
+   putglyph 0x61 1 0,59
+   putglyph 0x61 1 0,60
+   putglyph 0x61 1 0,61
+   putglyph 0x61 1 0,62
+   putglyph 0x61 1 0,63
+   putglyph 0x61 1 0,64
+   putglyph 0x61 1 0,65
+   putglyph 0x61 1 0,66
+   putglyph 0x61 1 0,67
+   putglyph 0x61 1 0,68
+   putglyph 0x61 1 0,69
+   putglyph 0x61 1 0,70
+   putglyph 0x61 1 0,71
+   putglyph 0x61 1 0,72
+   putglyph 0x61 1 0,73
+   putglyph 0x61 1 0,74
+   putglyph 0x61 1 0,75
+   putglyph 0x61 1 0,76
+   putglyph 0x61 1 0,77
+   putglyph 0x61 1 0,78
+   putglyph 0x61 1 0,79
+   putglyph 0x62 1 1,0
+ 
*** ../vim-8.2.0779/src/libvterm/doc/seqs.txt   2018-03-25 14:54:41.000000000 
+0200
--- src/libvterm/doc/seqs.txt   2020-05-17 16:19:38.958141429 +0200
***************
*** 97,102 ****
--- 97,103 ----
        CSI Z            = CBT
        CSI `            = HPA
        CSI a            = HPR
+       CSI b            = REP
  123   CSI   c          = DA, device attributes
  123       0            =   DA
   23   CSI >   c        = DECSDA
*** ../vim-8.2.0779/src/version.c       2020-05-17 16:10:07.563800256 +0200
--- src/version.c       2020-05-17 16:22:57.081567017 +0200
***************
*** 748,749 ****
--- 748,751 ----
  {   /* Add new patch number below this line */
+ /**/
+     780,
  /**/

-- 
Support your right to bare arms!  Wear short sleeves!

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202005171430.04HEUSP3011522%40masaka.moolenaar.net.

Raspunde prin e-mail lui