From cfcf624e3be72364b4c3123e4f48be559f1edb40 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 12 Jul 2024 17:58:04 +0800 Subject: [PATCH] refactor: `.starter` rendered in markdown format (#708) --- src/config/mod.rs | 6 ++++++ src/main.rs | 10 +++------- src/repl/mod.rs | 10 +--------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/config/mod.rs b/src/config/mod.rs index 220b7c8..563ee55 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -1291,6 +1291,12 @@ impl Config { Ok(RenderOptions::new(theme, wrap, self.wrap_code, truecolor)) } + pub fn markdown_render(&self, text: &str) -> Result { + let render_options = self.render_options()?; + let mut markdown_render = MarkdownRender::init(render_options)?; + Ok(markdown_render.render(text)) + } + pub fn render_prompt_left(&self) -> String { let variables = self.generate_prompt_context(); let left_prompt = self.left_prompt.as_deref().unwrap_or(LEFT_PROMPT); diff --git a/src/main.rs b/src/main.rs index 2583b73..13276a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,7 @@ use crate::config::{ EXPLAIN_SHELL_ROLE, SHELL_ROLE, TEMP_SESSION_NAME, }; use crate::function::{eval_tool_calls, need_send_tool_results}; -use crate::render::{render_error, MarkdownRender}; +use crate::render::render_error; use crate::repl::Repl; use crate::utils::{ create_abort_signal, create_spinner, detect_shell, extract_block, run_command, AbortSignal, @@ -187,9 +187,7 @@ async fn start_directive( text.clone() }; if *IS_STDOUT_TERMINAL { - let render_options = config.read().render_options()?; - let mut markdown_render = MarkdownRender::init(render_options)?; - println!("{}", markdown_render.render(&text).trim()); + println!("{}", config.read().markdown_render(&text)?); } else { println!("{}", text); } @@ -242,10 +240,8 @@ async fn shell_execute(config: &GlobalConfig, shell: &Shell, mut input: Input) - config .write() .after_chat_completion(&input, &eval_str, &[])?; - let render_options = config.read().render_options()?; - let mut markdown_render = MarkdownRender::init(render_options)?; if config.read().dry_run { - println!("{}", markdown_render.render(&eval_str).trim()); + println!("{}", config.read().markdown_render(&eval_str)?); return Ok(()); } if *IS_STDOUT_TERMINAL { diff --git a/src/repl/mod.rs b/src/repl/mod.rs index 0100cb0..e151745 100644 --- a/src/repl/mod.rs +++ b/src/repl/mod.rs @@ -286,15 +286,7 @@ impl Repl { } None => { let banner = self.config.read().agent_banner()?; - let output = format!( - r#"Usage: .starter ... - -Tips: use to autocomplete conversation starter text. ---------------------------------------------------------- - -{banner}"# - ); - + let output = self.config.read().markdown_render(&banner)?; println!("{output}"); } },