From f2b414c678c54c02b2e8ecd9351aa6cd108beded Mon Sep 17 00:00:00 2001 From: tison Date: Fri, 16 Aug 2024 01:27:07 +0800 Subject: [PATCH] feat: impl ClearScreen with crossterm's Clear (#813) * feat: add ClearDisplay event Signed-off-by: tison * take 2 - reimpl clear_screen Signed-off-by: tison --------- Signed-off-by: tison --- src/painting/painter.rs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/painting/painter.rs b/src/painting/painter.rs index 233e98f8..8365f072 100644 --- a/src/painting/painter.rs +++ b/src/painting/painter.rs @@ -510,23 +510,18 @@ impl Painter { /// Clear the screen by printing enough whitespace to start the prompt or /// other output back at the first line of the terminal. pub(crate) fn clear_screen(&mut self) -> Result<()> { - self.stdout.queue(cursor::Hide)?; - let (_, num_lines) = terminal::size()?; - for _ in 0..2 * num_lines { - self.stdout.queue(Print("\n"))?; - } - self.stdout.queue(MoveTo(0, 0))?; - self.stdout.queue(cursor::Show)?; - - self.stdout.flush()?; + self.stdout + .queue(Clear(ClearType::All))? + .queue(MoveTo(0, 0))? + .flush()?; self.initialize_prompt_position(None) } pub(crate) fn clear_scrollback(&mut self) -> Result<()> { self.stdout - .queue(crossterm::terminal::Clear(ClearType::All))? - .queue(crossterm::terminal::Clear(ClearType::Purge))? - .queue(cursor::MoveTo(0, 0))? + .queue(Clear(ClearType::All))? + .queue(Clear(ClearType::Purge))? + .queue(MoveTo(0, 0))? .flush()?; self.initialize_prompt_position(None) }