Hover tooltip module name is monospace once again

The line separator is moved below the function signature to split
regions between the docs. This is very similar to how IntelliJ
displays tooltips. Adding an additional separator between the module
name and function signature currently has rendering issues.

Fixes #4594
Alternative to #4615
This commit is contained in:
Aaron Loucks 2020-05-25 23:18:45 -04:00
parent 76fa498d6c
commit a047f10839
3 changed files with 12 additions and 9 deletions

View file

@ -83,12 +83,13 @@ pub(crate) fn rust_code_markup_with_doc(
if let Some(mod_path) = mod_path { if let Some(mod_path) = mod_path {
if !mod_path.is_empty() { if !mod_path.is_empty() {
format_to!(buf, "{}\n___\n\n", mod_path); format_to!(buf, "```rust\n{}\n```\n\n", mod_path);
} }
} }
format_to!(buf, "```rust\n{}\n```", code); format_to!(buf, "```rust\n{}\n```", code);
if let Some(doc) = doc { if let Some(doc) = doc {
format_to!(buf, "\n___");
format_to!(buf, "\n\n{}", doc); format_to!(buf, "\n\n{}", doc);
} }

View file

@ -405,7 +405,7 @@ mod tests {
}; };
} }
"#, "#,
&["Foo\n___\n\n```rust\nfield_a: u32"], &["Foo\n```\n\n```rust\nfield_a: u32"],
); );
// Hovering over the field in the definition // Hovering over the field in the definition
@ -422,7 +422,7 @@ mod tests {
}; };
} }
"#, "#,
&["Foo\n___\n\n```rust\nfield_a: u32"], &["Foo\n```\n\n```rust\nfield_a: u32"],
); );
} }
@ -475,7 +475,7 @@ fn main() {
", ",
); );
let hover = analysis.hover(position).unwrap().unwrap(); let hover = analysis.hover(position).unwrap().unwrap();
assert_eq!(trim_markup_opt(hover.info.first()), Some("Option\n___\n\n```rust\nSome")); assert_eq!(trim_markup_opt(hover.info.first()), Some("Option\n```\n\n```rust\nSome"));
let (analysis, position) = single_file_with_position( let (analysis, position) = single_file_with_position(
" "
@ -503,11 +503,12 @@ fn main() {
"#, "#,
&[" &["
Option Option
___ ```
```rust ```rust
None None
``` ```
___
The None variant The None variant
" "
@ -527,11 +528,12 @@ The None variant
"#, "#,
&[" &["
Option Option
___ ```
```rust ```rust
Some Some
``` ```
___
The Some variant The Some variant
" "
@ -614,7 +616,7 @@ fn func(foo: i32) { if true { <|>foo; }; }
let hover = analysis.hover(position).unwrap().unwrap(); let hover = analysis.hover(position).unwrap().unwrap();
assert_eq!( assert_eq!(
trim_markup_opt(hover.info.first()), trim_markup_opt(hover.info.first()),
Some("wrapper::Thing\n___\n\n```rust\nfn new() -> Thing") Some("wrapper::Thing\n```\n\n```rust\nfn new() -> Thing")
); );
} }
@ -891,7 +893,7 @@ fn func(foo: i32) { if true { <|>foo; }; }
fo<|>o(); fo<|>o();
} }
", ",
&["fn foo()\n```\n\n<- `\u{3000}` here"], &["fn foo()\n```\n___\n\n<- `\u{3000}` here"],
); );
} }

View file

@ -756,5 +756,5 @@ pub fn foo(_input: TokenStream) -> TokenStream {
}); });
let value = res.get("contents").unwrap().get("value").unwrap().to_string(); let value = res.get("contents").unwrap().get("value").unwrap().to_string();
assert_eq!(value, r#""foo::Bar\n___\n\n```rust\nfn bar()\n```""#) assert_eq!(value, r#""```rust\nfoo::Bar\n```\n\n```rust\nfn bar()\n```""#)
} }