fix(compatibility): various ansi fixes (#1324)
* fix(compatibility): rotate scroll region up properly * fix(compatibility): rotate scroll region down properly * style(fmt): rustfmt
This commit is contained in:
parent
6822b9a475
commit
cd99d3a547
4 changed files with 161 additions and 6 deletions
|
|
@ -822,12 +822,17 @@ impl Grid {
|
|||
.scroll_region
|
||||
.or(Some((0, self.height.saturating_sub(1))))
|
||||
{
|
||||
self.pad_lines_until(scroll_region_bottom, EMPTY_TERMINAL_CHARACTER);
|
||||
for _ in 0..count {
|
||||
if self.cursor.y >= scroll_region_top && self.cursor.y <= scroll_region_bottom {
|
||||
self.pad_lines_until(scroll_region_bottom, EMPTY_TERMINAL_CHARACTER);
|
||||
if self.viewport.get(scroll_region_bottom).is_some() {
|
||||
self.viewport.remove(scroll_region_bottom);
|
||||
}
|
||||
let mut pad_character = EMPTY_TERMINAL_CHARACTER;
|
||||
pad_character.styles = self.cursor.pending_styles;
|
||||
let columns = VecDeque::from(vec![pad_character; self.width]);
|
||||
self.viewport
|
||||
.insert(scroll_region_top, Row::from_columns(columns).canonical());
|
||||
}
|
||||
}
|
||||
self.output_buffer.update_all_lines(); // TODO: only update scroll region lines
|
||||
|
|
@ -838,12 +843,14 @@ impl Grid {
|
|||
.scroll_region
|
||||
.or(Some((0, self.height.saturating_sub(1))))
|
||||
{
|
||||
for _ in 0..count {
|
||||
if self.cursor.y >= scroll_region_top && self.cursor.y <= scroll_region_bottom {
|
||||
self.pad_lines_until(scroll_region_top, EMPTY_TERMINAL_CHARACTER);
|
||||
self.viewport.remove(scroll_region_top);
|
||||
self.pad_lines_until(scroll_region_bottom, EMPTY_TERMINAL_CHARACTER);
|
||||
}
|
||||
let mut pad_character = EMPTY_TERMINAL_CHARACTER;
|
||||
pad_character.styles = self.cursor.pending_styles;
|
||||
for _ in 0..count {
|
||||
self.viewport.remove(scroll_region_top);
|
||||
let columns = VecDeque::from(vec![pad_character; self.width]);
|
||||
self.viewport
|
||||
.insert(scroll_region_bottom, Row::from_columns(columns).canonical());
|
||||
}
|
||||
self.output_buffer.update_all_lines(); // TODO: only update scroll region lines
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1707,6 +1707,40 @@ pub fn scroll_down_ansi() {
|
|||
assert_snapshot!(format!("{:?}", grid));
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn ansi_capital_t() {
|
||||
let mut vte_parser = vte::Parser::new();
|
||||
let mut grid = Grid::new(
|
||||
51,
|
||||
112,
|
||||
Palette::default(),
|
||||
Rc::new(RefCell::new(LinkHandler::new())),
|
||||
Rc::new(RefCell::new(None)),
|
||||
);
|
||||
let content = "foo\u{1b}[14Tbar".as_bytes();
|
||||
for byte in content {
|
||||
vte_parser.advance(&mut grid, *byte);
|
||||
}
|
||||
assert_snapshot!(format!("{:?}", grid));
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn ansi_capital_s() {
|
||||
let mut vte_parser = vte::Parser::new();
|
||||
let mut grid = Grid::new(
|
||||
51,
|
||||
112,
|
||||
Palette::default(),
|
||||
Rc::new(RefCell::new(LinkHandler::new())),
|
||||
Rc::new(RefCell::new(None)),
|
||||
);
|
||||
let content = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfoo\u{1b}[14Sbar".as_bytes();
|
||||
for byte in content {
|
||||
vte_parser.advance(&mut grid, *byte);
|
||||
}
|
||||
assert_snapshot!(format!("{:?}", grid));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn terminal_pixel_size_reports() {
|
||||
let mut vte_parser = vte::Parser::new();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
source: zellij-server/src/panes/./unit/grid_tests.rs
|
||||
assertion_line: 1741
|
||||
expression: "format!(\"{:?}\", grid)"
|
||||
---
|
||||
00 (C):
|
||||
01 (C):
|
||||
02 (C):
|
||||
03 (C):
|
||||
04 (C):
|
||||
05 (C):
|
||||
06 (C): foo
|
||||
07 (C):
|
||||
08 (C):
|
||||
09 (C):
|
||||
10 (C):
|
||||
11 (C):
|
||||
12 (C):
|
||||
13 (C):
|
||||
14 (C):
|
||||
15 (C):
|
||||
16 (C):
|
||||
17 (C):
|
||||
18 (C):
|
||||
19 (C):
|
||||
20 (C): bar
|
||||
21 (C):
|
||||
22 (C):
|
||||
23 (C):
|
||||
24 (C):
|
||||
25 (C):
|
||||
26 (C):
|
||||
27 (C):
|
||||
28 (C):
|
||||
29 (C):
|
||||
30 (C):
|
||||
31 (C):
|
||||
32 (C):
|
||||
33 (C):
|
||||
34 (C):
|
||||
35 (C):
|
||||
36 (C):
|
||||
37 (C):
|
||||
38 (C):
|
||||
39 (C):
|
||||
40 (C):
|
||||
41 (C):
|
||||
42 (C):
|
||||
43 (C):
|
||||
44 (C):
|
||||
45 (C):
|
||||
46 (C):
|
||||
47 (C):
|
||||
48 (C):
|
||||
49 (C):
|
||||
50 (C):
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
source: zellij-server/src/panes/./unit/grid_tests.rs
|
||||
assertion_line: 1724
|
||||
expression: "format!(\"{:?}\", grid)"
|
||||
---
|
||||
00 (C): bar
|
||||
01 (C):
|
||||
02 (C):
|
||||
03 (C):
|
||||
04 (C):
|
||||
05 (C):
|
||||
06 (C):
|
||||
07 (C):
|
||||
08 (C):
|
||||
09 (C):
|
||||
10 (C):
|
||||
11 (C):
|
||||
12 (C):
|
||||
13 (C):
|
||||
14 (C): foo
|
||||
15 (C):
|
||||
16 (C):
|
||||
17 (C):
|
||||
18 (C):
|
||||
19 (C):
|
||||
20 (C):
|
||||
21 (C):
|
||||
22 (C):
|
||||
23 (C):
|
||||
24 (C):
|
||||
25 (C):
|
||||
26 (C):
|
||||
27 (C):
|
||||
28 (C):
|
||||
29 (C):
|
||||
30 (C):
|
||||
31 (C):
|
||||
32 (C):
|
||||
33 (C):
|
||||
34 (C):
|
||||
35 (C):
|
||||
36 (C):
|
||||
37 (C):
|
||||
38 (C):
|
||||
39 (C):
|
||||
40 (C):
|
||||
41 (C):
|
||||
42 (C):
|
||||
43 (C):
|
||||
44 (C):
|
||||
45 (C):
|
||||
46 (C):
|
||||
47 (C):
|
||||
48 (C):
|
||||
49 (C):
|
||||
50 (C):
|
||||
|
||||
Loading…
Add table
Reference in a new issue