Implement MarkedString rendering
Solves typescript and python documentation rendering
This commit is contained in:
parent
8f7ada12ac
commit
e128a8702e
1 changed files with 21 additions and 11 deletions
|
@ -4660,18 +4660,28 @@ fn hover(cx: &mut Context) {
|
||||||
move |editor: &mut Editor, compositor: &mut Compositor, response: Option<lsp::Hover>| {
|
move |editor: &mut Editor, compositor: &mut Compositor, response: Option<lsp::Hover>| {
|
||||||
if let Some(hover) = response {
|
if let Some(hover) = response {
|
||||||
// hover.contents / .range <- used for visualizing
|
// hover.contents / .range <- used for visualizing
|
||||||
|
|
||||||
|
fn marked_string_to_markdown(contents: lsp::MarkedString) -> String {
|
||||||
|
match contents {
|
||||||
|
lsp::MarkedString::String(contents) => contents,
|
||||||
|
lsp::MarkedString::LanguageString(string) => {
|
||||||
|
log::error!("MarkedString {}: {}", string.language, string.value);
|
||||||
|
if string.language == "markdown" {
|
||||||
|
string.value
|
||||||
|
} else {
|
||||||
|
format!("```{}\n{}\n```", string.language, string.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let contents = match hover.contents {
|
let contents = match hover.contents {
|
||||||
lsp::HoverContents::Scalar(contents) => {
|
lsp::HoverContents::Scalar(contents) => marked_string_to_markdown(contents),
|
||||||
// markedstring(string/languagestring to be highlighted)
|
lsp::HoverContents::Array(contents) => contents
|
||||||
// TODO
|
.into_iter()
|
||||||
log::error!("hover contents {:?}", contents);
|
.map(marked_string_to_markdown)
|
||||||
return;
|
.collect::<Vec<_>>()
|
||||||
}
|
.join("\n\n"),
|
||||||
lsp::HoverContents::Array(contents) => {
|
|
||||||
log::error!("hover contents {:?}", contents);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// TODO: render markdown
|
|
||||||
lsp::HoverContents::Markup(contents) => contents.value,
|
lsp::HoverContents::Markup(contents) => contents.value,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue