Fix clang popovers (#20090)
Closes #15498 Release Notes: - Fixed info popups from clangd missing information
This commit is contained in:
parent
770886880f
commit
4084ba36f9
2 changed files with 56 additions and 0 deletions
|
@ -1351,6 +1351,61 @@ mod tests {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
// https://github.com/zed-industries/zed/issues/15498
|
||||||
|
async fn test_info_hover_with_hrs(cx: &mut gpui::TestAppContext) {
|
||||||
|
init_test(cx, |_| {});
|
||||||
|
|
||||||
|
let mut cx = EditorLspTestContext::new_rust(
|
||||||
|
lsp::ServerCapabilities {
|
||||||
|
hover_provider: Some(lsp::HoverProviderCapability::Simple(true)),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
cx.set_state(indoc! {"
|
||||||
|
fn fuˇnc(abc def: i32) -> u32 {
|
||||||
|
}
|
||||||
|
"});
|
||||||
|
|
||||||
|
cx.lsp.handle_request::<lsp::request::HoverRequest, _, _>({
|
||||||
|
|_, _| async move {
|
||||||
|
Ok(Some(lsp::Hover {
|
||||||
|
contents: lsp::HoverContents::Markup(lsp::MarkupContent {
|
||||||
|
kind: lsp::MarkupKind::Markdown,
|
||||||
|
value: indoc!(
|
||||||
|
r#"
|
||||||
|
### function `errands_data_read`
|
||||||
|
|
||||||
|
---
|
||||||
|
→ `char *`
|
||||||
|
Function to read a file into a string
|
||||||
|
|
||||||
|
---
|
||||||
|
```cpp
|
||||||
|
static char *errands_data_read()
|
||||||
|
```
|
||||||
|
"#
|
||||||
|
)
|
||||||
|
.to_string(),
|
||||||
|
}),
|
||||||
|
range: None,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
cx.update_editor(|editor, cx| hover(editor, &Default::default(), cx));
|
||||||
|
cx.run_until_parked();
|
||||||
|
|
||||||
|
cx.update_editor(|editor, cx| {
|
||||||
|
let popover = editor.hover_state.info_popovers.first().unwrap();
|
||||||
|
let content = popover.get_rendered_text(cx);
|
||||||
|
|
||||||
|
assert!(content.contains("Function to read a file"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#[gpui::test]
|
#[gpui::test]
|
||||||
async fn test_hover_inlay_label_parts(cx: &mut gpui::TestAppContext) {
|
async fn test_hover_inlay_label_parts(cx: &mut gpui::TestAppContext) {
|
||||||
init_test(cx, |settings| {
|
init_test(cx, |settings| {
|
||||||
|
|
|
@ -7,6 +7,7 @@ use std::ops::Range;
|
||||||
pub fn parse_markdown(text: &str) -> Vec<(Range<usize>, MarkdownEvent)> {
|
pub fn parse_markdown(text: &str) -> Vec<(Range<usize>, MarkdownEvent)> {
|
||||||
let mut options = Options::all();
|
let mut options = Options::all();
|
||||||
options.remove(pulldown_cmark::Options::ENABLE_DEFINITION_LIST);
|
options.remove(pulldown_cmark::Options::ENABLE_DEFINITION_LIST);
|
||||||
|
options.remove(pulldown_cmark::Options::ENABLE_YAML_STYLE_METADATA_BLOCKS);
|
||||||
|
|
||||||
let mut events = Vec::new();
|
let mut events = Vec::new();
|
||||||
let mut within_link = false;
|
let mut within_link = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue