Skip to content

Commit e3342c4

Browse files
committed
feat: add references to baseline prop
1 parent ecad380 commit e3342c4

2 files changed

Lines changed: 66 additions & 33 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.github.xepozz.mago.config.reference
2+
3+
import com.intellij.psi.PsiElement
4+
import com.intellij.psi.PsiReference
5+
import com.intellij.psi.PsiReferenceProvider
6+
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
7+
import com.intellij.util.ProcessingContext
8+
import org.toml.lang.psi.TomlLiteral
9+
10+
object FileReferenceProvider : PsiReferenceProvider() {
11+
override fun getReferencesByElement(
12+
element: PsiElement,
13+
context: ProcessingContext
14+
): Array<PsiReference> {
15+
if (element !is TomlLiteral) return PsiReference.EMPTY_ARRAY
16+
// val keyValue = element.parent.parent as? TomlKeyValue ?: return PsiReference.EMPTY_ARRAY
17+
18+
// println("element: ${element.text}, key: ${keyValue.key.text}")
19+
20+
return object : FileReferenceSet(element) {
21+
override fun isSoft() = false
22+
override fun getReferenceCompletionFilter() = DIRECTORY_FILTER
23+
}
24+
.allReferences
25+
.toList()
26+
.toTypedArray()
27+
}
28+
}
Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package com.github.xepozz.mago.config.reference
22

33
import com.intellij.patterns.PlatformPatterns
4-
import com.intellij.psi.PsiElement
5-
import com.intellij.psi.PsiReference
64
import com.intellij.psi.PsiReferenceContributor
7-
import com.intellij.psi.PsiReferenceProvider
85
import com.intellij.psi.PsiReferenceRegistrar
9-
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
10-
import com.intellij.util.ProcessingContext
116
import org.toml.lang.psi.TomlArray
127
import org.toml.lang.psi.TomlKey
138
import org.toml.lang.psi.TomlKeyValue
@@ -39,39 +34,49 @@ class FileSetReferenceContributor : PsiReferenceContributor() {
3934
.withFirstChild(
4035
PlatformPatterns.psiElement(TomlTableHeader::class.java)
4136
.withText(
42-
PlatformPatterns.string()
43-
.oneOf(
44-
"[source]",
45-
"[guard]",
46-
"[excludes]",
47-
"[linter]",
48-
)
37+
PlatformPatterns.string().oneOf(
38+
"[source]",
39+
"[guard]",
40+
"[excludes]",
41+
"[linter]",
42+
"[analyzer]",
43+
)
4944
)
5045
)
5146
)
5247
)
5348
),
5449
),
55-
object : PsiReferenceProvider() {
56-
override fun getReferencesByElement(
57-
element: PsiElement,
58-
context: ProcessingContext
59-
): Array<PsiReference> {
60-
if (element !is TomlLiteral) return PsiReference.EMPTY_ARRAY
61-
62-
// val keyValue = element.parent.parent as? TomlKeyValue ?: return PsiReference.EMPTY_ARRAY
63-
64-
// println("element: ${element.text}, key: ${keyValue.key.text}")
65-
66-
return object : FileReferenceSet(element) {
67-
override fun isSoft() = false
68-
override fun getReferenceCompletionFilter() = DIRECTORY_FILTER
69-
}
70-
.allReferences
71-
.toList()
72-
.toTypedArray()
73-
}
74-
}
50+
FileReferenceProvider
51+
)
52+
registrar.registerReferenceProvider(
53+
PlatformPatterns.or(
54+
PlatformPatterns.psiElement(TomlLiteral::class.java)
55+
.withParent(
56+
PlatformPatterns.psiElement(TomlKeyValue::class.java)
57+
.withFirstChild(
58+
PlatformPatterns.psiElement(TomlKey::class.java)
59+
.withText(
60+
PlatformPatterns.string().oneOf(
61+
"baseline",
62+
)
63+
)
64+
)
65+
.withParent(
66+
PlatformPatterns.psiElement(TomlTable::class.java)
67+
.withFirstChild(
68+
PlatformPatterns.psiElement(TomlTableHeader::class.java)
69+
.withText(
70+
PlatformPatterns.string().oneOf(
71+
"[analyzer]",
72+
)
73+
)
74+
)
75+
)
76+
),
77+
),
78+
FileReferenceProvider,
7579
)
7680
}
77-
}
81+
}
82+

0 commit comments

Comments
 (0)