summaryrefslogtreecommitdiffstats
path: root/src/render/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/mod.rs')
-rw-r--r--src/render/mod.rs25
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();