From 953073a679dfe8ae4aff86e8a9bff680d14a5523 Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Wed, 26 Jul 2023 10:26:56 -0500 Subject: [PATCH] highlighted_code_block: Take input text as &str This removes a handful of allocations for functions calling into the function, which is nice because the prompt may call this function on every keypress. --- helix-term/src/ui/lsp.rs | 4 ++-- helix-term/src/ui/markdown.rs | 6 +++--- helix-term/src/ui/prompt.rs | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/helix-term/src/ui/lsp.rs b/helix-term/src/ui/lsp.rs index 44050aa1..880df6d8 100644 --- a/helix-term/src/ui/lsp.rs +++ b/helix-term/src/ui/lsp.rs @@ -62,7 +62,7 @@ impl Component for SignatureHelp { }); let sig_text = crate::ui::markdown::highlighted_code_block( - self.signature.clone(), + &self.signature, &self.language, Some(&cx.editor.theme), Arc::clone(&self.config_loader), @@ -109,7 +109,7 @@ impl Component for SignatureHelp { let max_text_width = (viewport.0 - PADDING).min(120); let signature_text = crate::ui::markdown::highlighted_code_block( - self.signature.clone(), + &self.signature, &self.language, None, Arc::clone(&self.config_loader), diff --git a/helix-term/src/ui/markdown.rs b/helix-term/src/ui/markdown.rs index cb2abf68..1433381d 100644 --- a/helix-term/src/ui/markdown.rs +++ b/helix-term/src/ui/markdown.rs @@ -17,7 +17,7 @@ use helix_view::{ Theme, }; -fn styled_multiline_text<'a>(text: String, style: Style) -> Text<'a> { +fn styled_multiline_text<'a>(text: &str, style: Style) -> Text<'a> { let spans: Vec<_> = text .lines() .map(|line| Span::styled(line.to_string(), style)) @@ -27,7 +27,7 @@ fn styled_multiline_text<'a>(text: String, style: Style) -> Text<'a> { } pub fn highlighted_code_block<'a>( - text: String, + text: &str, language: &str, theme: Option<&Theme>, config_loader: Arc, @@ -267,7 +267,7 @@ impl Markdown { CodeBlockKind::Indented => "", }; let tui_text = highlighted_code_block( - text.to_string(), + &text, language, theme, Arc::clone(&self.config_loader), diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs index f376b9c9..1352f493 100644 --- a/helix-term/src/ui/prompt.rs +++ b/helix-term/src/ui/prompt.rs @@ -476,7 +476,7 @@ impl Prompt { } } else if let Some((language, loader)) = self.language.as_ref() { let mut text: ui::text::Text = crate::ui::markdown::highlighted_code_block( - self.line.clone(), + &self.line, language, Some(&cx.editor.theme), loader.clone(),