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:
parent
8698e80304
commit
db82e8b557
2 changed files with 53 additions and 1 deletions
|
@ -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!(
|
||||||
|
|
|
@ -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```"
|
||||||
|
]
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue