From dd42df358df7889a42fc23b07140fa99c6249ae7 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 20 Nov 2021 02:24:46 -0500 Subject: more cursor_state_formatted fixes --- src/grid.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src') 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(), -- cgit v1.2.3-54-g00ecf