From d876818df17ad7b25ebb38a678aa23c79b826e38 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sun, 5 Mar 2023 10:42:35 +0800 Subject: refactor: optimize clear screen (#16) --- src/repl.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/repl.rs') diff --git a/src/repl.rs b/src/repl.rs index 2ca1ea0..cd9e990 100644 --- a/src/repl.rs +++ b/src/repl.rs @@ -1,7 +1,7 @@ use crate::client::ChatGptClient; use crate::config::{Config, Role}; -use crate::editor; use crate::render::{self, MarkdownRender}; +use crate::term; use crate::utils::{copy, dump}; use anyhow::{anyhow, Result}; use crossbeam::channel::{unbounded, Sender}; @@ -115,7 +115,7 @@ impl Repl { dump_repl_help(); } ".clear" => match args { - Some("screen") => self.editor.clear_scrollback()?, + Some("screen") => term::clear_screen(0)?, Some("history") => { let history = Box::new(self.editor.history_mut()); history @@ -139,7 +139,7 @@ impl Repl { "// Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel)", 1, ); - let content = editor::edit()?; + let content = term::edit()?; dump("", 1); handler.handle(ReplCmd::Submit(content))?; } @@ -189,6 +189,11 @@ impl Repl { ReedlineEvent::MenuNext, ]), ); + keybindings.add_binding( + KeyModifiers::CONTROL, + KeyCode::Char('l'), + ReedlineEvent::ExecuteHostCommand(".clear screen".into()), + ); keybindings } -- cgit v1.2.3