diff options
| author | sigoden <sigoden@gmail.com> | 2023-10-30 10:07:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-30 10:07:01 +0800 |
| commit | b276dfedd2d13de9918b9b87a3d543e7b5eca95e (patch) | |
| tree | 33e1f864ef38e45ebc297e15ce519ee8105b8757 /src/render/mod.rs | |
| parent | 632a6fcc0bfb5b33858cd0fa3876e43ce2073cb3 (diff) | |
| download | aichat-b276dfedd2d13de9918b9b87a3d543e7b5eca95e.tar.gz | |
feat: support textwrap (#171)
* feat: support textwrap
* improve cmd_render_stream
* done cmd_render_stream
* add `-w` alias to `--wrap`
* done repl_render_stream
* add `config.wrap_code`
* remove cached config.wrap_width
* fix unxpected duplicate lines on kitty
* refactor markdown render
* improve render
* fix test
Diffstat (limited to 'src/render/mod.rs')
| -rw-r--r-- | src/render/mod.rs | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/render/mod.rs b/src/render/mod.rs index e7c6228..9d7b06a 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -4,7 +4,7 @@ mod repl; use self::cmd::cmd_render_stream; #[allow(clippy::module_name_repetitions)] -pub use self::markdown::MarkdownRender; +pub use self::markdown::{MarkdownRender, RenderOptions}; use self::repl::repl_render_stream; use crate::client::Client; @@ -26,26 +26,27 @@ pub fn render_stream( abort: SharedAbortSignal, wg: WaitGroup, ) -> Result<String> { - let (highlight, light_theme) = config.read().get_render_options(); - let mut stream_handler = if highlight { + let render_options = config.read().get_render_options(); + let mut stream_handler = { let (tx, rx) = unbounded(); let abort_clone = abort.clone(); spawn(move || { - let err = if repl { - repl_render_stream(&rx, light_theme, &abort) - } else { - cmd_render_stream(&rx, light_theme, &abort) + let run = move || { + if repl { + let mut render = MarkdownRender::init(render_options)?; + repl_render_stream(&rx, &mut render, &abort) + } else { + let mut render = MarkdownRender::init(render_options)?; + cmd_render_stream(&rx, &mut render, &abort) + } }; - if let Err(err) = err { + if let Err(err) = run() { let err = format!("{err:?}"); print_now!("{}\n\n", err.trim()); } drop(wg); }); - ReplyStreamHandler::new(Some(tx), repl, abort_clone) - } else { - drop(wg); - ReplyStreamHandler::new(None, repl, abort) + ReplyStreamHandler::new(tx, abort_clone) }; client.send_message_streaming(input, &mut stream_handler)?; let buffer = stream_handler.get_buffer(); |
