Make language registry optional in parse_markdown (#23221)

Motivation for this is using markdown for keymap error notifications in
#23113

Release Notes:

- N/A
This commit is contained in:
Michael Sloan 2025-01-16 03:56:46 -07:00 committed by GitHub
parent 0dbe34d2ae
commit 55e1e831a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 14 additions and 10 deletions

View file

@ -538,7 +538,7 @@ async fn parse_markdown(text: &str, language_registry: &Arc<LanguageRegistry>) -
markdown::parse_markdown_block( markdown::parse_markdown_block(
text, text,
language_registry, Some(language_registry),
None, None,
&mut parsed_message.text, &mut parsed_message.text,
&mut parsed_message.highlights, &mut parsed_message.highlights,

View file

@ -189,7 +189,7 @@ impl Editor {
if let Some(mut signature_help) = signature_help_task.await.into_iter().next() { if let Some(mut signature_help) = signature_help_task.await.into_iter().next() {
let mut parsed_content = parse_markdown( let mut parsed_content = parse_markdown(
signature_help.markdown.as_str(), signature_help.markdown.as_str(),
&language_registry, Some(&language_registry),
language, language,
) )
.await; .await;

View file

@ -256,7 +256,7 @@ pub async fn prepare_completion_documentation(
} }
lsp::MarkupKind::Markdown => { lsp::MarkupKind::Markdown => {
let parsed = parse_markdown(value, language_registry, language).await; let parsed = parse_markdown(value, Some(language_registry), language).await;
Documentation::MultiLineMarkdown(parsed) Documentation::MultiLineMarkdown(parsed)
} }
}, },

View file

@ -121,7 +121,7 @@ impl Link {
/// Parses a string of Markdown. /// Parses a string of Markdown.
pub async fn parse_markdown( pub async fn parse_markdown(
markdown: &str, markdown: &str,
language_registry: &Arc<LanguageRegistry>, language_registry: Option<&Arc<LanguageRegistry>>,
language: Option<Arc<Language>>, language: Option<Arc<Language>>,
) -> ParsedMarkdown { ) -> ParsedMarkdown {
let mut text = String::new(); let mut text = String::new();
@ -151,7 +151,7 @@ pub async fn parse_markdown(
/// Parses a Markdown block. /// Parses a Markdown block.
pub async fn parse_markdown_block( pub async fn parse_markdown_block(
markdown: &str, markdown: &str,
language_registry: &Arc<LanguageRegistry>, language_registry: Option<&Arc<LanguageRegistry>>,
language: Option<Arc<Language>>, language: Option<Arc<Language>>,
text: &mut String, text: &mut String,
highlights: &mut Vec<(Range<usize>, MarkdownHighlight)>, highlights: &mut Vec<(Range<usize>, MarkdownHighlight)>,
@ -247,10 +247,13 @@ pub async fn parse_markdown_block(
Tag::CodeBlock(kind) => { Tag::CodeBlock(kind) => {
new_paragraph(text, &mut list_stack); new_paragraph(text, &mut list_stack);
current_language = if let CodeBlockKind::Fenced(language) = kind { current_language = if let CodeBlockKind::Fenced(language) = kind {
language_registry match language_registry {
None => None,
Some(language_registry) => language_registry
.language_for_name_or_extension(language.as_ref()) .language_for_name_or_extension(language.as_ref())
.await .await
.ok() .ok(),
}
} else { } else {
language.clone() language.clone()
} }

View file

@ -4418,7 +4418,8 @@ impl LspStore {
Documentation::Undocumented Documentation::Undocumented
} else if response.documentation_is_markdown { } else if response.documentation_is_markdown {
Documentation::MultiLineMarkdown( Documentation::MultiLineMarkdown(
markdown::parse_markdown(&response.documentation, &language_registry, None).await, markdown::parse_markdown(&response.documentation, Some(&language_registry), None)
.await,
) )
} else if response.documentation.lines().count() <= 1 { } else if response.documentation.lines().count() <= 1 {
Documentation::SingleLine(response.documentation) Documentation::SingleLine(response.documentation)