on master help sign in
Refactor our Markdown construction in completion doc
commit0f844ef191af69da62c7a65b93db8a7e02cf86ff authorGokul Soumya <gokulps15@gmail.com> dateMon 6 Feb 2023, 03:48 (4 years ago) parent937825e
1 file changed+13−27
helix-term/src/ui/completion.rs+13−27
helix-term/src/ui/completion.rs+13−27
@@ -399,6 +399,16 @@ impl Component for Completion {
399399 .expect("cursor must be in view");
400400 let cursor_pos = coords.row as u16;
401401
402+ let markdowned = |lang: &str, detail: Option<&str>, doc: Option<&str>| {
403+ let md = match (detail, doc) {
404+ (Some(detail), Some(doc)) => format!("```{lang}\n{detail}\n```\n{doc}"),
405+ (Some(detail), None) => format!("```{lang}\n{detail}\n```"),
406+ (None, Some(doc)) => doc.to_string(),
407+ (None, None) => String::new(),
408+ };
409+ Markdown::new(md, cx.editor.syn_loader.clone())
410+ };
411+
402412 let mut markdown_doc = match &option.documentation {
403413 Some(lsp::Documentation::String(contents))
404414 | Some(lsp::Documentation::MarkupContent(lsp::MarkupContent {
@@ -406,42 +416,18 @@ impl Component for Completion {
406416 value: contents,
407417 })) => {
408418 // TODO: convert to wrapped text
409− Markdown::new(
410− format!(
411− "```{}\n{}\n```\n{}",
412− language,
413− option.detail.as_deref().unwrap_or_default(),
414− contents
415− ),
416− cx.editor.syn_loader.clone(),
417− )
419+ markdowned(language, option.detail.as_deref(), Some(contents))
418420 }
419421 Some(lsp::Documentation::MarkupContent(lsp::MarkupContent {
420422 kind: lsp::MarkupKind::Markdown,
421423 value: contents,
422424 })) => {
423425 // TODO: set language based on doc scope
424− if let Some(detail) = &option.detail.as_deref() {
425− Markdown::new(
426− format!("```{}\n{}\n```\n{}", language, detail, contents),
427− cx.editor.syn_loader.clone(),
428− )
429− } else {
430− Markdown::new(contents.to_string(), cx.editor.syn_loader.clone())
431− }
426+ markdowned(language, option.detail.as_deref(), Some(contents))
432427 }
433428 None if option.detail.is_some() => {
434− // TODO: copied from above
435−
436429 // TODO: set language based on doc scope
437− Markdown::new(
438− format!(
439− "```{}\n{}\n```",
440− language,
441− option.detail.as_deref().unwrap_or_default(),
442− ),
443− cx.editor.syn_loader.clone(),
444− )
430+ markdowned(language, option.detail.as_deref(), None)
445431 }
446432 None => return,
447433 };