diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-11-20 02:24:46 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-11-20 02:24:46 -0500 |
commit | dd42df358df7889a42fc23b07140fa99c6249ae7 (patch) | |
tree | 41bcf041c3d053131b9ad6f32f134ede1a4fb2bc /src | |
parent | 49f6a8ba69764e99d6674147cd716e32254dfc30 (diff) | |
download | vt100-rust-dd42df358df7889a42fc23b07140fa99c6249ae7.tar.gz vt100-rust-dd42df358df7889a42fc23b07140fa99c6249ae7.zip |
more cursor_state_formatted fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/grid.rs | 23 |
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(), |