11package com.github.xepozz.mago.config.reference
22
33import com.intellij.patterns.PlatformPatterns
4- import com.intellij.psi.PsiElement
5- import com.intellij.psi.PsiReference
64import com.intellij.psi.PsiReferenceContributor
7- import com.intellij.psi.PsiReferenceProvider
85import com.intellij.psi.PsiReferenceRegistrar
9- import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
10- import com.intellij.util.ProcessingContext
116import org.toml.lang.psi.TomlArray
127import org.toml.lang.psi.TomlKey
138import 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