summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2025-08-01 18:17:30 +0800
committerGitHub <noreply@github.com>2025-08-01 18:17:30 +0800
commita5d484c7275a1bf438eedc7dda7c217c78d9d2d7 (patch)
tree3dc00496752a74f3a26cd6f7396f64f882935b4f
parent08cdfae79bbbfe9328712321545548dd096cdd07 (diff)
downloadaichat-a5d484c7275a1bf438eedc7dda7c217c78d9d2d7.tar.gz
feat: switch to raw stream renderer when no_color/no_highlight (#1371)
-rw-r--r--src/render/mod.rs2
-rw-r--r--src/render/stream.rs13
2 files changed, 12 insertions, 3 deletions
diff --git a/src/render/mod.rs b/src/render/mod.rs
index 9d93203..0aa3184 100644
--- a/src/render/mod.rs
+++ b/src/render/mod.rs
@@ -15,7 +15,7 @@ pub async fn render_stream(
config: &GlobalConfig,
abort_signal: AbortSignal,
) -> Result<()> {
- let ret = if *IS_STDOUT_TERMINAL {
+ let ret = if *IS_STDOUT_TERMINAL && config.read().highlight {
let render_options = config.read().render_options()?;
let mut render = MarkdownRender::init(render_options)?;
markdown_stream(rx, &mut render, &abort_signal).await
diff --git a/src/render/stream.rs b/src/render/stream.rs
index a6233a5..d6cadde 100644
--- a/src/render/stream.rs
+++ b/src/render/stream.rs
@@ -36,11 +36,17 @@ pub async fn raw_stream(
mut rx: UnboundedReceiver<SseEvent>,
abort_signal: &AbortSignal,
) -> Result<()> {
+ let mut spinner = Some(spawn_spinner("Generating"));
+
loop {
if abort_signal.aborted() {
- return Ok(());
+ break;
}
if let Some(evt) = rx.recv().await {
+ if let Some(spinner) = spinner.take() {
+ spinner.stop();
+ }
+
match evt {
SseEvent::Text(text) => {
print!("{text}");
@@ -52,6 +58,9 @@ pub async fn raw_stream(
}
}
}
+ if let Some(spinner) = spinner.take() {
+ spinner.stop();
+ }
Ok(())
}
@@ -70,7 +79,7 @@ async fn markdown_stream_inner(
'outer: loop {
if abort_signal.aborted() {
- return Ok(());
+ break;
}
for reply_event in gather_events(&mut rx).await {
if let Some(spinner) = spinner.take() {