summaryrefslogtreecommitdiffstats
path: root/src/repl/mod.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-21 07:57:02 +0800
committerGitHub <noreply@github.com>2024-04-21 07:57:02 +0800
commitc5506fe39377d864f80175821712b33949241583 (patch)
treeaa910f226cef456ff5a7652a8458c5193a6352de /src/repl/mod.rs
parentb3162a72b50f88d78ca3d57c1f8b3421cecfe2b4 (diff)
downloadaichat-c5506fe39377d864f80175821712b33949241583.tar.gz
refactor: tell user session compression (#426)
Diffstat (limited to 'src/repl/mod.rs')
-rw-r--r--src/repl/mod.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/repl/mod.rs b/src/repl/mod.rs
index 73196bc..412d0be 100644
--- a/src/repl/mod.rs
+++ b/src/repl/mod.rs
@@ -14,6 +14,7 @@ use crate::utils::{create_abort_signal, set_text, AbortSignal};
use anyhow::{bail, Context, Result};
use fancy_regex::Regex;
use lazy_static::lazy_static;
+use nu_ansi_term::Color;
use reedline::{
default_emacs_keybindings, default_vi_insert_keybindings, default_vi_normal_keybindings,
ColumnarMenu, EditCommand, EditMode, Emacs, KeyCode, KeyModifiers, Keybindings, Reedline,
@@ -198,11 +199,14 @@ impl Repl {
}
}
}
- ".set" => {
- if let Some(args) = args {
+ ".set" => match args {
+ Some(args) => {
self.config.write().update(args)?;
}
- }
+ _ => {
+ println!("Usage: .set <key> <value>...")
+ }
+ },
".copy" => {
let config = self.config.read();
self.copy(config.last_reply())
@@ -266,6 +270,19 @@ impl Repl {
self.config.read().maybe_copy(&output);
if self.config.write().should_compress_session() {
let config = self.config.clone();
+ let color = if config.read().light_theme {
+ Color::LightGray
+ } else {
+ Color::DarkGray
+ };
+ print!(
+ "\n📢 {}{}{}\n",
+ color.normal().paint(
+ "Session compression is being activated because the current tokens exceed `"
+ ),
+ color.italic().paint("compress_threshold"),
+ color.normal().paint("`."),
+ );
std::thread::spawn(move || -> anyhow::Result<()> {
let _ = compress_session(&config);
config.write().end_compressing_session();