Skip to content

Commit 890f8fc

Browse files
committed
chore: group references
1 parent 36d0e38 commit 890f8fc

File tree

3 files changed

+50
-47
lines changed

3 files changed

+50
-47
lines changed

src/main/kotlin/com/github/tempest/framework/ComponentReferenceContributor.kt renamed to src/main/kotlin/com/github/tempest/framework/views/references/ComponentReferenceContributor.kt

Lines changed: 5 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,21 @@
1-
package com.github.tempest.framework
1+
package com.github.tempest.framework.views.references
22

3-
import com.github.tempest.framework.php.getPhpViewVariables
4-
import com.intellij.codeInsight.completion.InsertionContext
5-
import com.intellij.codeInsight.completion.XmlAttributeInsertHandler
3+
import com.github.tempest.framework.TempestFrameworkUtil
64
import com.intellij.openapi.vfs.findPsiFile
75
import com.intellij.patterns.PlatformPatterns
86
import com.intellij.patterns.XmlPatterns
97
import com.intellij.psi.PsiElement
10-
import com.intellij.psi.PsiPolyVariantReferenceBase
118
import com.intellij.psi.PsiReference
129
import com.intellij.psi.PsiReferenceBase
1310
import com.intellij.psi.PsiReferenceContributor
1411
import com.intellij.psi.PsiReferenceProvider
1512
import com.intellij.psi.PsiReferenceRegistrar
16-
import com.intellij.psi.PsiReferenceRegistrar.HIGHER_PRIORITY
17-
import com.intellij.psi.ResolveResult
1813
import com.intellij.psi.html.HtmlTag
1914
import com.intellij.psi.search.FilenameIndex
2015
import com.intellij.psi.search.GlobalSearchScope
2116
import com.intellij.psi.xml.XmlAttribute
2217
import com.intellij.psi.xml.XmlChildRole
2318
import com.intellij.util.ProcessingContext
24-
import com.jetbrains.php.completion.PhpLookupElement
25-
import com.jetbrains.php.lang.psi.PhpFile
2619

2720
class ComponentReferenceContributor : PsiReferenceContributor() {
2821
override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) {
@@ -69,48 +62,14 @@ class ComponentReferenceContributor : PsiReferenceContributor() {
6962
element: PsiElement,
7063
context: ProcessingContext
7164
): Array<out PsiReference> {
72-
val result = mutableListOf<PsiReference>()
7365
val attribute = element as? XmlAttribute ?: return emptyArray()
7466
val htmlTag = attribute.parent as? HtmlTag ?: return emptyArray()
7567

76-
result.add(TempestAttributeReference(element, htmlTag))
77-
return result.toTypedArray()
68+
return arrayOf(TempestAttributeReference(element, htmlTag))
7869
// .apply { println("found references for ${element} ${this.joinToString { it.toString() }}") }
7970
}
8071
},
81-
HIGHER_PRIORITY
72+
PsiReferenceRegistrar.HIGHER_PRIORITY,
8273
)
8374
}
84-
}
85-
86-
class TempestAttributeReference(element: XmlAttribute, private val htmlTag: HtmlTag) :
87-
PsiPolyVariantReferenceBase<PsiElement>(element, element.nameElement.textRangeInParent, false) {
88-
override fun getVariants(): Array<out Any> {
89-
val fileReferences = htmlTag.references.filter { it is Immediate<*> }
90-
91-
val lookupPrefix = element.text.commonPrefixWith("::")
92-
93-
return fileReferences
94-
.mapNotNull { it.resolve() as? PhpFile }
95-
.flatMap { it.getPhpViewVariables() }
96-
.flatMap {
97-
listOf(
98-
object : PhpLookupElement(it) {
99-
override fun getLookupString() = lookupPrefix + lookupString
100-
override fun getAllLookupStrings() = setOf(lookupPrefix + lookupString)
101-
override fun handleInsert(context: InsertionContext) {
102-
XmlAttributeInsertHandler.INSTANCE.handleInsert(context, this)
103-
}
104-
},
105-
)
106-
}
107-
.toTypedArray()
108-
}
109-
110-
override fun multiResolve(incompleteCode: Boolean): Array<out ResolveResult?> {
111-
// println("resolve ${element.text} for ${htmlTag.name}")
112-
// println("range ${element.textRangeInParent} ${element.textRange}")
113-
114-
return emptyArray()
115-
}
116-
}
75+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.github.tempest.framework.views.references
2+
3+
import com.github.tempest.framework.php.getPhpViewVariables
4+
import com.intellij.codeInsight.completion.InsertionContext
5+
import com.intellij.codeInsight.completion.XmlAttributeInsertHandler
6+
import com.intellij.psi.PsiElement
7+
import com.intellij.psi.PsiPolyVariantReferenceBase
8+
import com.intellij.psi.ResolveResult
9+
import com.intellij.psi.html.HtmlTag
10+
import com.intellij.psi.xml.XmlAttribute
11+
import com.jetbrains.php.completion.PhpLookupElement
12+
import com.jetbrains.php.lang.psi.PhpFile
13+
14+
class TempestAttributeReference(element: XmlAttribute, private val htmlTag: HtmlTag) :
15+
PsiPolyVariantReferenceBase<PsiElement>(element, element.nameElement.textRangeInParent, false) {
16+
override fun getVariants(): Array<out Any> {
17+
val fileReferences = htmlTag.references.filter { it is Immediate<*> }
18+
19+
val lookupPrefix = element.text.commonPrefixWith("::")
20+
21+
return fileReferences
22+
.mapNotNull { it.resolve() as? PhpFile }
23+
.flatMap { it.getPhpViewVariables() }
24+
.flatMap {
25+
listOf(
26+
object : PhpLookupElement(it) {
27+
override fun getLookupString() = lookupPrefix + lookupString
28+
override fun getAllLookupStrings() = setOf(lookupPrefix + lookupString)
29+
override fun handleInsert(context: InsertionContext) {
30+
XmlAttributeInsertHandler.INSTANCE.handleInsert(context, this)
31+
}
32+
},
33+
)
34+
}
35+
.toTypedArray()
36+
}
37+
38+
override fun multiResolve(incompleteCode: Boolean): Array<out ResolveResult?> {
39+
// println("resolve ${element.text} for ${htmlTag.name}")
40+
// println("range ${element.textRangeInParent} ${element.textRange}")
41+
42+
return emptyArray()
43+
}
44+
}

src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
implementation="com.github.tempest.framework.ComponentTagNameProvider"/>
2020
<psi.referenceContributor
2121
language="HTML"
22-
implementation="com.github.tempest.framework.ComponentReferenceContributor"/>
22+
implementation="com.github.tempest.framework.views.references.ComponentReferenceContributor"/>
2323
<spellchecker.bundledDictionaryProvider
2424
implementation="com.github.tempest.framework.SpellcheckingDictionaryProvider"/>
2525
</extensions>

0 commit comments

Comments
 (0)