aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-11-20 02:24:46 -0500
committerJesse Luehrs <doy@tozt.net>2021-11-20 02:24:46 -0500
commitdd42df358df7889a42fc23b07140fa99c6249ae7 (patch)
tree41bcf041c3d053131b9ad6f32f134ede1a4fb2bc /src
parent49f6a8ba69764e99d6674147cd716e32254dfc30 (diff)
downloadvt100-rust-dd42df358df7889a42fc23b07140fa99c6249ae7.tar.gz
vt100-rust-dd42df358df7889a42fc23b07140fa99c6249ae7.zip
more cursor_state_formatted fixes
Diffstat (limited to 'src')
-rw-r--r--src/grid.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/grid.rs b/src/grid.rs
index 970909c..263e846 100644
--- a/src/grid.rs
+++ b/src/grid.rs
@@ -322,17 +322,40 @@ impl Grid {
}
let cell = self.visible_cell(pos).unwrap();
if cell.has_contents() {
+ // not sure why this is triggering here, seems like a
+ // clippy bug
+ #[allow(clippy::option_if_let_else)]
if let Some(prev_pos) = prev_pos {
if prev_pos.row != i
|| prev_pos.col < self.size.cols
{
crate::term::MoveFromTo::new(prev_pos, pos)
.write_buf(contents);
+ cell.attrs().write_escape_code_diff(
+ contents,
+ &prev_attrs.unwrap_or_default(),
+ );
contents.extend(cell.contents().as_bytes());
+ if let Some(prev_attrs) = prev_attrs {
+ prev_attrs.write_escape_code_diff(
+ contents,
+ cell.attrs(),
+ );
+ }
}
} else {
crate::term::MoveTo::new(pos).write_buf(contents);
+ cell.attrs().write_escape_code_diff(
+ contents,
+ &prev_attrs.unwrap_or_default(),
+ );
contents.extend(cell.contents().as_bytes());
+ if let Some(prev_attrs) = prev_attrs {
+ prev_attrs.write_escape_code_diff(
+ contents,
+ cell.attrs(),
+ );
+ }
}
contents.extend(
"\n".repeat((orig_row - i) as usize).as_bytes(),