Skip to content

Commit a85a190

Browse files
feat: implement it
1 parent 7273c5c commit a85a190

13 files changed

Lines changed: 248 additions & 48 deletions

crates/tinymist-analysis/src/syntax/matcher.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,16 @@ impl<'a> SyntaxClass<'a> {
701701
_ => None,
702702
}
703703
}
704+
705+
pub fn contains_error(&self) -> bool {
706+
use SyntaxClass::*;
707+
match self {
708+
Label { is_error, .. } => *is_error,
709+
Normal(kind, _) => *kind == SyntaxKind::Error,
710+
Callee(..) | VarAccess(..) => self.node().kind() == SyntaxKind::Error,
711+
Ref { .. } | ImportPath(..) | IncludePath(..) => false,
712+
}
713+
}
704714
}
705715

706716
/// Classifies node's syntax (inner syntax) that can be operated on by IDE
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/// compile: true
2+
3+
#set heading(numbering: "1.")
4+
5+
= Labeled <title_label>
6+
7+
/* position after */ @title_label
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/// compile: true
2+
3+
#let test1(body) = figure(body)
4+
#test1([Test1]) <fig:test1>
5+
/* position after */ @fig:test1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// compile: true
2+
3+
#let test1(body) = figure(body)
4+
#test1([Test1]) <fig:test1>
5+
@fig:test1
6+
7+
#let test2(body) = test1(body)
8+
#test2([Test2]) <fig:test2>
9+
/* position after */ @fig:test2
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
source: crates/tinymist-query/src/prepare_rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label.typ
5+
---
6+
{
7+
"placeholder": "title_label",
8+
"range": "6:21:6:33"
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
source: crates/tinymist-query/src/prepare_rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label_indir.typ
5+
---
6+
{
7+
"placeholder": "fig:test1",
8+
"range": "4:21:4:31"
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
source: crates/tinymist-query/src/prepare_rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label_indir2.typ
5+
---
6+
{
7+
"placeholder": "fig:test2",
8+
"range": "8:21:8:31"
9+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
source: crates/tinymist-query/src/rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label.typ
5+
---
6+
{
7+
"changeAnnotations": {
8+
"Typst Rename Labels": {
9+
"description": "The language server searched the labels ambiguously",
10+
"label": "Typst Rename Labels",
11+
"needsConfirmation": true
12+
}
13+
},
14+
"documentChanges": [
15+
{
16+
"edits": [
17+
{
18+
"annotationId": "Typst Rename Labels",
19+
"newText": "new_name",
20+
"range": "6:21:6:33"
21+
}
22+
],
23+
"textDocument": {
24+
"uri": "s0.typ",
25+
"version": null
26+
}
27+
}
28+
]
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
source: crates/tinymist-query/src/rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label_indir.typ
5+
---
6+
{
7+
"changeAnnotations": {
8+
"Typst Rename Labels": {
9+
"description": "The language server searched the labels ambiguously",
10+
"label": "Typst Rename Labels",
11+
"needsConfirmation": true
12+
}
13+
},
14+
"documentChanges": [
15+
{
16+
"edits": [
17+
{
18+
"annotationId": "Typst Rename Labels",
19+
"newText": "new_name",
20+
"range": "4:21:4:31"
21+
}
22+
],
23+
"textDocument": {
24+
"uri": "s0.typ",
25+
"version": null
26+
}
27+
}
28+
]
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
source: crates/tinymist-query/src/rename.rs
3+
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
4+
input_file: crates/tinymist-query/src/fixtures/rename/label_indir2.typ
5+
---
6+
{
7+
"changeAnnotations": {
8+
"Typst Rename Labels": {
9+
"description": "The language server searched the labels ambiguously",
10+
"label": "Typst Rename Labels",
11+
"needsConfirmation": true
12+
}
13+
},
14+
"documentChanges": [
15+
{
16+
"edits": [
17+
{
18+
"annotationId": "Typst Rename Labels",
19+
"newText": "new_name",
20+
"range": "8:21:8:31"
21+
}
22+
],
23+
"textDocument": {
24+
"uri": "s0.typ",
25+
"version": null
26+
}
27+
}
28+
]
29+
}

0 commit comments

Comments
 (0)