diff options
| author | sigoden <sigoden@gmail.com> | 2025-08-01 18:17:30 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-01 18:17:30 +0800 |
| commit | a5d484c7275a1bf438eedc7dda7c217c78d9d2d7 (patch) | |
| tree | 3dc00496752a74f3a26cd6f7396f64f882935b4f /src | |
| parent | 08cdfae79bbbfe9328712321545548dd096cdd07 (diff) | |
| download | aichat-a5d484c7275a1bf438eedc7dda7c217c78d9d2d7.tar.gz | |
feat: switch to raw stream renderer when no_color/no_highlight (#1371)
Diffstat (limited to 'src')
| -rw-r--r-- | src/render/mod.rs | 2 | ||||
| -rw-r--r-- | src/render/stream.rs | 13 |
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() { |
