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);
}
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;
empty_character.styles = empty_char_style;
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 {
let deleted_character = current_row.delete_and_return_character(self.cursor.x);
let excess_width = deleted_character
@ -1629,6 +1636,7 @@ impl Grid {
for _ in 0..excess_width {
current_row.insert_character_at(empty_character, self.cursor.x);
}
current_row.push(empty_character);
}
self.output_buffer.update_line(self.cursor.y);
}

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
---
source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 1432
expression: "format!(\"{:?}\", grid)"
---
00 (C):
01 (C): 1 [|||||||||| 16.9%] Tasks: 110, 512 thr; 1 running

View file

@ -1,6 +1,6 @@
---
source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 465
assertion_line: 569
expression: "format!(\"{:?}\", grid)"
---
00 (C): ABAAAAAAAAAAAAAAAAA

View file

@ -1,7 +1,7 @@
---
source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 591
expression: "format!(\"{:?}\", grid)"
---
00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

View file

@ -1,7 +1,7 @@
---
source: zellij-server/src/panes/./unit/grid_tests.rs
assertion_line: 613
expression: "format!(\"{:?}\", grid)"
---
00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB