1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-30 16:40:57 -05:00

fix(lsp): Fix display of JSDoc named examples (#23927)

We were wrapping the display string in an unnecessary pair of triple
backticks, breaking highlighting

Before:
![Screenshot 2024-05-21 at 12 16
12 PM](https://github.com/denoland/deno/assets/17734409/1cf5a3ce-56dd-443d-9d1a-bd33625ff1f2)

After:
![Screenshot 2024-05-21 at 12 16
36 PM](https://github.com/denoland/deno/assets/17734409/646c4c48-9b5a-4326-bb95-b1374627d969)
This commit is contained in:
Nathan Whitaker 2024-05-21 14:04:19 -07:00 committed by GitHub
parent 8698e80304
commit db82e8b557
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 53 additions and 1 deletions

View file

@ -93,7 +93,7 @@ static BRACKET_ACCESSOR_RE: Lazy<Regex> =
lazy_regex!(r#"^\[['"](.+)[\['"]\]$"#); lazy_regex!(r#"^\[['"](.+)[\['"]\]$"#);
static CAPTION_RE: Lazy<Regex> = static CAPTION_RE: Lazy<Regex> =
lazy_regex!(r"<caption>(.*?)</caption>\s*\r?\n((?:\s|\S)*)"); lazy_regex!(r"<caption>(.*?)</caption>\s*\r?\n((?:\s|\S)*)");
static CODEBLOCK_RE: Lazy<Regex> = lazy_regex!(r"^\s*[~`]{3}"); static CODEBLOCK_RE: Lazy<Regex> = lazy_regex!(r"^\s*[~`]{3}"m);
static EMAIL_MATCH_RE: Lazy<Regex> = lazy_regex!(r"(.+)\s<([-.\w]+@[-.\w]+)>"); static EMAIL_MATCH_RE: Lazy<Regex> = lazy_regex!(r"(.+)\s<([-.\w]+@[-.\w]+)>");
static HTTP_RE: Lazy<Regex> = lazy_regex!(r#"(?i)^https?:"#); static HTTP_RE: Lazy<Regex> = lazy_regex!(r#"(?i)^https?:"#);
static JSDOC_LINKS_RE: Lazy<Regex> = lazy_regex!( static JSDOC_LINKS_RE: Lazy<Regex> = lazy_regex!(

View file

@ -12979,3 +12979,55 @@ fn lsp_semantic_token_caching() {
assert_eq!(res, res_cached); assert_eq!(res, res_cached);
} }
#[test]
fn lsp_jsdoc_named_example() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let temp_dir = context.temp_dir().path();
let mut client = context
.new_lsp_command()
.set_root_dir(temp_dir.clone())
.build();
client.initialize_default();
let main = source_file(
temp_dir.join("main.ts"),
r#"
/**
* @example Example1
* ```ts
* foo();
* ```
*/
export function foo(): number {
return 1;
}
"#,
);
let diagnostics = client.did_open_file(&main);
assert_eq!(diagnostics.all().len(), 0);
let hover = client.write_request(
"textDocument/hover",
json!({
"textDocument": main.identifier(),
"position": main.range_of_nth(1, "foo").start,
}),
);
assert_json_subset(
hover,
json!({
"contents": [
{
"language": "typescript",
"value": "function foo(): number"
},
"",
// The example name `Example1` should not be enclosed in backticks
"\n\n*@example* \nExample1\n```ts\nfoo();\n```"
]
}),
);
}