Skip to content

Commit 8d25997

Browse files
committed
feat: add direct file references
1 parent d7996d4 commit 8d25997

14 files changed

Lines changed: 110 additions & 90 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,8 @@
1717
## [2025.0.1] - 2025-02-0
1818

1919
- feat: token highlighting
20+
21+
[Unreleased]: https://github.com/xepozz/gitattributes-plugin/compare/v2025.0.5...HEAD
22+
[2025.0.5]: https://github.com/xepozz/gitattributes-plugin/compare/v2025.0.4...v2025.0.5
23+
[2025.0.4]: https://github.com/xepozz/gitattributes-plugin/compare/v2025.0.1...v2025.0.4
24+
[2025.0.1]: https://github.com/xepozz/gitattributes-plugin/commits/v2025.0.1

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
.gitattributes syntax support:
1212

1313
- syntax highlighting
14-
- keywords autocompletion (soon)
15-
- patterns matching (soon)
14+
- keywords autocompletion
15+
- patterns matching
1616
- rules inspections (soon)
1717

1818
## Donation

src/main/gen/com/github/xepozz/gitattributes/language/psi/AttributesPattern.java

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/gen/com/github/xepozz/gitattributes/language/psi/AttributesVisitor.java

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/gen/com/github/xepozz/gitattributes/language/psi/impl/AttributesPatternImpl.java

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.github.xepozz.gitattributes.ide.reference
2+
3+
import com.github.xepozz.gitattributes.language.psi.AttributesPattern
4+
import com.intellij.patterns.PlatformPatterns
5+
import com.intellij.psi.PsiElement
6+
import com.intellij.psi.PsiReference
7+
import com.intellij.psi.PsiReferenceContributor
8+
import com.intellij.psi.PsiReferenceProvider
9+
import com.intellij.psi.PsiReferenceRegistrar
10+
import com.intellij.psi.impl.source.resolve.reference.PsiReferenceContributorEP
11+
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
12+
import com.intellij.util.ProcessingContext
13+
14+
class AttributesReferenceContributor : PsiReferenceContributor() {
15+
override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) {
16+
registrar.registerReferenceProvider(
17+
PlatformPatterns.psiElement(AttributesPattern::class.java),
18+
object : PsiReferenceProvider() {
19+
override fun getReferencesByElement(
20+
element: PsiElement,
21+
context: ProcessingContext
22+
): Array<out PsiReference> {
23+
val fileReferenceSet = FileReferenceSet(element)
24+
25+
return fileReferenceSet.allReferences
26+
}
27+
}
28+
)
29+
}
30+
}

src/main/kotlin/com/github/xepozz/gitattributes/language/parser/Attributes.bnf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
elementTypeClass="com.github.xepozz.gitattributes.language.psi.AttributesElementType"
1313
tokenTypeClass="com.github.xepozz.gitattributes.language.psi.AttributesTokenType"
1414

15-
// psiImplUtilClass="com.github.xepozz.gitattributes.language.psi.impl.AttributesImplUtil"
15+
psiImplUtilClass="com.github.xepozz.gitattributes.language.psi.impl.AttributesPsiImplUtil"
1616
}
1717

1818
attributesFile ::= item_*
@@ -23,6 +23,11 @@ COMMENT ::= SINGLE_COMMENT
2323

2424
definition ::= pattern attributeList
2525
pattern ::= TEXT
26+
{
27+
implements=["com.intellij.psi.NavigatablePsiElement"]
28+
extends="com.github.xepozz.gitattributes.language.psi.impl.AttributesPatternBaseImpl"
29+
methods=[getReferences]
30+
}
2631
attributeList ::= attribute+
2732
attribute ::= DASH? TEXT (EQUALS_SIGN TEXT)?
2833
{
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.github.xepozz.gitattributes.language.psi.impl
2+
3+
import com.github.xepozz.gitattributes.language.psi.AttributesAttribute
4+
import com.github.xepozz.gitattributes.language.psi.AttributesPattern
5+
import com.intellij.extapi.psi.ASTWrapperPsiElement
6+
import com.intellij.icons.AllIcons
7+
import com.intellij.ide.projectView.PresentationData
8+
import com.intellij.lang.ASTNode
9+
10+
abstract class AttributesPatternBaseImpl : ASTWrapperPsiElement, AttributesPattern {
11+
constructor(node: ASTNode) : super(node)
12+
13+
override fun getText() = this.node.text
14+
15+
override fun getPresentation() = PresentationData(text, null, getIcon(0), null)
16+
17+
override fun getIcon(flags: Int) = AllIcons.Nodes.Console
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.xepozz.gitattributes.language.psi.impl
2+
3+
import com.github.xepozz.gitattributes.language.psi.AttributesPattern
4+
import com.intellij.psi.PsiElement
5+
import com.intellij.psi.PsiReference
6+
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry
7+
8+
object AttributesPsiImplUtil {
9+
@JvmStatic
10+
fun getReferences(element: PsiElement): Array<PsiReference> =
11+
ReferenceProvidersRegistry.getReferencesFromProviders(element)
12+
}

src/main/kotlin/com/github/xepozz/gitattributes/language/psi/impl/GitattributesImplUtil.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)