1INIT
2WANTSTATE
3WANTSCREEN
4
5!Resize wider preserves cells
6RESET
7RESIZE 25,80
8PUSH "AB\r\nCD"
9  ?screen_chars 0,0,1,80 = "AB"
10  ?screen_chars 1,0,2,80 = "CD"
11RESIZE 25,100
12  ?screen_chars 0,0,1,100 = "AB"
13  ?screen_chars 1,0,2,100 = "CD"
14
15!Resize wider allows print in new area
16RESET
17RESIZE 25,80
18PUSH "AB\e[79GCD"
19  ?screen_chars 0,0,1,2 = "AB"
20  ?screen_chars 0,78,1,80 = "CD"
21RESIZE 25,100
22  ?screen_chars 0,0,1,2 = "AB"
23  ?screen_chars 0,78,1,80 = "CD"
24PUSH "E"
25  ?screen_chars 0,78,1,81 = "CDE"
26
27!Resize shorter with blanks just truncates
28RESET
29RESIZE 25,80
30PUSH "Top\e[10HLine 10"
31  ?screen_chars 0,0,1,80 = "Top"
32  ?screen_chars 9,0,10,80 = "Line 10"
33  ?cursor = 9,7
34RESIZE 20,80
35  ?screen_chars 0,0,1,80 = "Top"
36  ?screen_chars 9,0,10,80 = "Line 10"
37  ?cursor = 9,7
38
39!Resize shorter with content must scroll
40RESET
41RESIZE 25,80
42PUSH "Top\e[25HLine 25\e[15H"
43  ?screen_chars 0,0,1,80 = "Top"
44  ?screen_chars 24,0,25,80 = "Line 25"
45  ?cursor = 14,0
46WANTSCREEN b
47RESIZE 20,80
48  sb_pushline 80 = 54 6F 70
49  sb_pushline 80 =
50  sb_pushline 80 =
51  sb_pushline 80 =
52  sb_pushline 80 =
53  ?screen_chars 0,0,1,80 =
54  ?screen_chars 19,0,20,80 = "Line 25"
55  ?cursor = 9,0
56
57!Resize shorter does not lose line with cursor
58# See also https://github.com/neovim/libvterm/commit/1b745d29d45623aa8d22a7b9288c7b0e331c7088
59RESET
60WANTSCREEN -b
61RESIZE 25,80
62WANTSCREEN b
63PUSH "\e[24HLine 24\r\nLine 25\r\n"
64  sb_pushline 80 =
65  ?screen_chars 23,0,24,10 = "Line 25"
66  ?cursor = 24,0
67RESIZE 24,80
68  sb_pushline 80 =
69  ?screen_chars 22,0,23,10 = "Line 25"
70  ?cursor = 23,0
71
72!Resize shorter does not send the cursor to a negative row
73# See also https://github.com/vim/vim/pull/6141
74RESET
75WANTSCREEN -b
76RESIZE 25,80
77WANTSCREEN b
78PUSH "\e[24HLine 24\r\nLine 25\e[H"
79  ?cursor = 0,0
80RESIZE 20,80
81  sb_pushline 80 =
82  sb_pushline 80 =
83  sb_pushline 80 =
84  sb_pushline 80 =
85  sb_pushline 80 =
86  ?cursor = 0,0
87
88!Resize taller attempts to pop scrollback
89RESET
90WANTSCREEN -b
91RESIZE 25,80
92PUSH "Line 1\e[25HBottom\e[15H"
93  ?screen_chars 0,0,1,80 = "Line 1"
94  ?screen_chars 24,0,25,80 = "Bottom"
95  ?cursor = 14,0
96WANTSCREEN b
97RESIZE 30,80
98  sb_popline 80
99  sb_popline 80
100  sb_popline 80
101  sb_popline 80
102  sb_popline 80
103  ?screen_chars 0,0,1,80 = "ABCDE"
104  ?screen_chars 5,0,6,80 = "Line 1"
105  ?screen_chars 29,0,30,80 = "Bottom"
106  ?cursor = 19,0
107WANTSCREEN -b
108
109!Resize can operate on altscreen
110RESET
111WANTSCREEN a
112RESIZE 25,80
113PUSH "Main screen\e[?1049h\e[HAlt screen"
114RESIZE 30,80
115  ?screen_chars 0,0,1,3 = "Alt"
116PUSH "\e[?1049l"
117  ?screen_chars 0,0,1,3 = "Mai"
118