Skip to content

Commit

Permalink
feat: impl ClearScreen with crossterm's Clear (#813)
Browse files Browse the repository at this point in the history
* feat: add ClearDisplay event

Signed-off-by: tison <[email protected]>

* take 2 - reimpl clear_screen

Signed-off-by: tison <[email protected]>

---------

Signed-off-by: tison <[email protected]>
  • Loading branch information
tisonkun authored Aug 15, 2024
1 parent ad56a23 commit f2b414c
Showing 1 changed file with 7 additions and 12 deletions.
19 changes: 7 additions & 12 deletions src/painting/painter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down

0 comments on commit f2b414c

Please sign in to comment.