fix(ansi): pad line end when erasing characters (#2259)

This commit is contained in:
Aram Drevekenin 2023-03-09 16:58:15 +01:00 committed by GitHub
parent aa17374d13
commit 263f5cbfd2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 85 additions and 77 deletions

View file

@ -1616,10 +1616,17 @@ impl Grid {
} }
self.output_buffer.update_line(self.cursor.y); self.output_buffer.update_line(self.cursor.y);
} }
pub fn erase_characters(&mut self, count: usize, empty_char_style: CharacterStyles) { fn erase_characters(&mut self, count: usize, empty_char_style: CharacterStyles) {
let mut empty_character = EMPTY_TERMINAL_CHARACTER; let mut empty_character = EMPTY_TERMINAL_CHARACTER;
empty_character.styles = empty_char_style; empty_character.styles = empty_char_style;
let current_row = self.viewport.get_mut(self.cursor.y).unwrap(); let current_row = self.viewport.get_mut(self.cursor.y).unwrap();
// pad row if needed
if current_row.width_cached() < self.width {
let padding_count = self.width - current_row.width_cached();
let mut columns_padding = VecDeque::from(vec![EMPTY_TERMINAL_CHARACTER; padding_count]);
current_row.columns.append(&mut columns_padding);
}
for _ in 0..count { for _ in 0..count {
let deleted_character = current_row.delete_and_return_character(self.cursor.x); let deleted_character = current_row.delete_and_return_character(self.cursor.x);
let excess_width = deleted_character let excess_width = deleted_character
@ -1629,6 +1636,7 @@ impl Grid {
for _ in 0..excess_width { for _ in 0..excess_width {
current_row.insert_character_at(empty_character, self.cursor.x); current_row.insert_character_at(empty_character, self.cursor.x);
} }
current_row.push(empty_character);
} }
self.output_buffer.update_line(self.cursor.y); self.output_buffer.update_line(self.cursor.y);
} }

View file

@ -1,9 +1,9 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 831 assertion_line: 833
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): [aram@green zellij]$ 🏠🏠🏠 00 (C): [aram@green zellij]$ 🏠🏠🏠
01 (C): 01 (C):
02 (C): 02 (C):
03 (C): 03 (C):

View file

@ -1,9 +1,9 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 809 assertion_line: 811
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): [aram@green zellij]$ 🏠 def abc 00 (C): [aram@green zellij]$ 🏠 def abc
01 (C): 01 (C):
02 (C): 02 (C):
03 (C): 03 (C):

View file

@ -1,9 +1,9 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 941 assertion_line: 943
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): 12 4 00 (C): 12 4
01 (C): 01 (C):
02 (C): 02 (C):
03 (C): 03 (C):

View file

@ -1,7 +1,7 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 1432
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): 00 (C):
01 (C): 1 [|||||||||| 16.9%] Tasks: 110, 512 thr; 1 running 01 (C): 1 [|||||||||| 16.9%] Tasks: 110, 512 thr; 1 running
@ -11,24 +11,24 @@ expression: "format!(\"{:?}\", grid)"
05 (C): Mem[|||||||||||||||||||||||||||||||||||||8.80G/15.3G] 05 (C): Mem[|||||||||||||||||||||||||||||||||||||8.80G/15.3G]
06 (C): Swp[| 2.82M/16.0G] 06 (C): Swp[| 2.82M/16.0G]
07 (C): 07 (C):
08 (C): PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 08 (C): PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
09 (C): 20 0 8576 4508 3356 R 1.3 0.0 0:00.11 htop 09 (C): 20 0 8576 4508 3356 R 1.3 0.0 0:00.11 htop
10 (C): 20 0 171M 10868 7804 S 0.0 0.1 2:08.38 /sbin/init 10 (C): 20 0 171M 10868 7804 S 0.0 0.1 2:08.38 /sbin/init
11 (C): 20 0 107M 29364 28092 S 0.0 0.2 0:03.42 /usr/lib/systemd/systemd-journald 11 (C): 20 0 107M 29364 28092 S 0.0 0.2 0:03.42 /usr/lib/systemd/systemd-journald
12 (C): 20 0 32648 9568 6616 S 0.0 0.1 0:01.87 /usr/lib/systemd/systemd-udevd 12 (C): 20 0 32648 9568 6616 S 0.0 0.1 0:01.87 /usr/lib/systemd/systemd-udevd
13 (C): 20 0 78060 992 856 S 0.0 0.0 0:00.00 /usr/bin/lvmetad -f 13 (C): 20 0 78060 992 856 S 0.0 0.0 0:00.00 /usr/bin/lvmetad -f
14 (C): 20 0 6952 4356 3492 S 0.0 0.0 0:57.67 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidf 14 (C): 20 0 6952 4356 3492 S 0.0 0.0 0:57.67 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidf
15 (C): 20 0 14824 7552 5984 S 0.0 0.0 0:12.93 /usr/bin/connmand -n --nodnsproxy 15 (C): 20 0 14824 7552 5984 S 0.0 0.0 0:12.93 /usr/bin/connmand -n --nodnsproxy
16 (C): 20 0 17696 7940 6696 S 0.0 0.0 0:01.25 /usr/lib/systemd/systemd-logind 16 (C): 20 0 17696 7940 6696 S 0.0 0.0 0:01.25 /usr/lib/systemd/systemd-logind
17 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:27.24 /usr/bin/dockerd -H fd:// 17 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:27.24 /usr/bin/dockerd -H fd://
18 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:38.37 /usr/bin/dockerd -H fd:// 18 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:38.37 /usr/bin/dockerd -H fd://
19 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.01 /usr/bin/dockerd -H fd:// 19 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.01 /usr/bin/dockerd -H fd://
20 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// 20 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd://
21 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// 21 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd://
22 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// 22 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd://
23 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.55 /usr/bin/dockerd -H fd:// 23 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.55 /usr/bin/dockerd -H fd://
24 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:26.19 /usr/bin/dockerd -H fd:// 24 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:26.19 /usr/bin/dockerd -H fd://
25 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:40.77 /usr/bin/dockerd -H fd:// 25 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:40.77 /usr/bin/dockerd -H fd://
26 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.26 /usr/bin/dockerd -H fd:// 26 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.26 /usr/bin/dockerd -H fd://
27 (C): F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit 27 (C): F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit

View file

@ -1,9 +1,9 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 465 assertion_line: 569
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): ABAAAAAAAAAAAAAAAAA 00 (C): ABAAAAAAAAAAAAAAAAA
01 (C): 01 (C):
02 (C): 02 (C):
03 (C): Test of 'Delete Character'. The top line should be 'AB'. Push <RETURN> 03 (C): Test of 'Delete Character'. The top line should be 'AB'. Push <RETURN>

View file

@ -1,32 +1,32 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 591
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
03 (C): The right column should be staggered DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 03 (C): The right column should be staggered DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
04 (C): by one. Push <RETURN>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 04 (C): by one. Push <RETURN>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
14 (C): OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 14 (C): OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
15 (C): PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP 15 (C): PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
16 (C): QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 16 (C): QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
17 (C): RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR 17 (C): RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
18 (C): SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 18 (C): SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
19 (C): TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT 19 (C): TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
20 (C): UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 20 (C): UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
21 (C): VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 21 (C): VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
22 (C): WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 22 (C): WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
23 (C): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 23 (C): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
24 (C): 24 (C):
25 (C): 25 (C):
26 (C): 26 (C):

View file

@ -1,32 +1,32 @@
--- ---
source: zellij-server/src/panes/./unit/grid_tests.rs source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 613
expression: "format!(\"{:?}\", grid)" expression: "format!(\"{:?}\", grid)"
--- ---
00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
03 (C): The right column should be staggered 03 (C): The right column should be staggered
04 (C): by one. Push <RETURN>EEEEEEEEEEEEE 04 (C): by one. Push <RETURN>EEEEEEEEEEEEE
05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKK 10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLL 11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLL
12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMM 12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMM
13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNN 13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNN
14 (C): OOOOOOOOOOOOOOOOOOOOOOOOO 14 (C): OOOOOOOOOOOOOOOOOOOOOOOOO
15 (C): PPPPPPPPPPPPPPPPPPPPPPPP 15 (C): PPPPPPPPPPPPPPPPPPPPPPPP
16 (C): QQQQQQQQQQQQQQQQQQQQQQQ 16 (C): QQQQQQQQQQQQQQQQQQQQQQQ
17 (C): RRRRRRRRRRRRRRRRRRRRRR 17 (C): RRRRRRRRRRRRRRRRRRRRRR
18 (C): SSSSSSSSSSSSSSSSSSSSS 18 (C): SSSSSSSSSSSSSSSSSSSSS
19 (C): TTTTTTTTTTTTTTTTTTTT 19 (C): TTTTTTTTTTTTTTTTTTTT
20 (C): UUUUUUUUUUUUUUUUUUU 20 (C): UUUUUUUUUUUUUUUUUUU
21 (C): VVVVVVVVVVVVVVVVVV 21 (C): VVVVVVVVVVVVVVVVVV
22 (C): WWWWWWWWWWWWWWWWW 22 (C): WWWWWWWWWWWWWWWWW
23 (C): XXXXXXXXXXXXXXXX 23 (C): XXXXXXXXXXXXXXXX
24 (C): 24 (C):
25 (C): 25 (C):
26 (C): 26 (C):