Skip to content

Commit 35b723f

Browse files
committed
add icon marker provider
1 parent da56e5c commit 35b723f

2 files changed

Lines changed: 35 additions & 6 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.github.xepozz.gitattributes.ide
2+
3+
import com.github.xepozz.gitattributes.language.psi.AttributesPattern
4+
import com.intellij.codeInsight.daemon.RelatedItemLineMarkerInfo
5+
import com.intellij.codeInsight.daemon.RelatedItemLineMarkerProvider
6+
import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder
7+
import com.intellij.icons.AllIcons
8+
import com.intellij.openapi.editor.markup.GutterIconRenderer
9+
import com.intellij.psi.PsiElement
10+
import com.intellij.psi.PsiFile
11+
import com.intellij.psi.PsiFileSystemItem
12+
import kotlin.collections.firstNotNullOfOrNull
13+
14+
class AttributesLineMarkerProvider : RelatedItemLineMarkerProvider() {
15+
override fun collectNavigationMarkers(
16+
element: PsiElement,
17+
result: MutableCollection<in RelatedItemLineMarkerInfo<*>>
18+
) {
19+
when (element) {
20+
is AttributesPattern -> {
21+
val target = element.references.firstNotNullOfOrNull { it.resolve() } as? PsiFileSystemItem ?: return
22+
// println("target: $target")
23+
24+
val builder = NavigationGutterIconBuilder.create(target.getIcon(0) ?: AllIcons.Nodes.Target)
25+
.setTargets(target)
26+
.setTooltipText("Navigate to ${target.name}")
27+
28+
result.add(builder.createLineMarkerInfo(element))
29+
}
30+
}
31+
}
32+
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,9 @@
3434
<!-- <lang.documentationProvider-->
3535
<!-- language="Gitattributes"-->
3636
<!-- implementationClass="com.github.xepozz.gitattributes.ide.documentation.AttributesDocumentationProvider"/>-->
37-
<!-- <runLineMarkerContributor-->
38-
<!-- language="Gitattributes"-->
39-
<!-- implementationClass="com.github.xepozz.gitattributes.ide.AttributesRunCommandMarkerContributor"/>-->
40-
<!-- <lang.foldingBuilder-->
41-
<!-- language="Gitattributes"-->
42-
<!-- implementationClass="com.github.xepozz.gitattributes.ide.CronScheduleFoldingBuilder"/>-->
37+
<codeInsight.lineMarkerProvider
38+
language="Gitattributes"
39+
implementationClass="com.github.xepozz.gitattributes.ide.AttributesLineMarkerProvider"/>
4340
<lang.commenter
4441
language="Gitattributes"
4542
implementationClass="com.github.xepozz.gitattributes.ide.AttributesCommenter"/>

0 commit comments

Comments
 (0)