Skip to content

Commit 274fad9

Browse files
committed
Clojure annotator.
1 parent 1bbdbfa commit 274fad9

File tree

10 files changed

+68
-14
lines changed

10 files changed

+68
-14
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.github.simy4.alabaster
2+
3+
import com.intellij.lang.annotation.AnnotationHolder
4+
import com.intellij.lang.annotation.Annotator
5+
import com.intellij.lang.annotation.HighlightSeverity
6+
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
7+
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
9+
import cursive.lexer.ClojureTokenTypes
10+
import cursive.psi.ClojurePsiElement
11+
import cursive.psi.api.ClListLike
12+
13+
class ClojureAnnotator: Annotator {
14+
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
15+
val elementType = element.elementType
16+
if (ClojureTokenTypes.SYMBOL_TOKEN == elementType) {
17+
(element.parent.parent as? ClListLike)
18+
?.takeIf { it.type == ClojurePsiElement.LIST }
19+
?.let { list ->
20+
val head = list.headText
21+
when (head) {
22+
"def"
23+
, "defn"
24+
, "defn-"
25+
, "defmulti"
26+
, "defmethod"
27+
, "defmacro"
28+
, "deftest"
29+
, "definterface"
30+
, "defprotocol"
31+
, "deftype" ->
32+
if (element.text !== head) {
33+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
34+
.textAttributes(DefaultLanguageHighlighterColors.FUNCTION_DECLARATION)
35+
.create()
36+
}
37+
}
38+
}
39+
}
40+
}
41+
}

src/main/kotlin/com/github/simy4/alabaster/GoAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import com.intellij.lang.annotation.Annotator
66
import com.intellij.lang.annotation.HighlightSeverity
77
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
88
import com.intellij.psi.PsiElement
9+
import com.intellij.psi.util.elementType
910

1011
class GoAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if ((GoTypes.IDENTIFIER == elementType && "nil" == element.text)) {
14-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
15+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1516
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1617
.create()
1718
}

src/main/kotlin/com/github/simy4/alabaster/JavaAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
77
import com.intellij.psi.JavaTokenType
88
import com.intellij.psi.PsiElement
9+
import com.intellij.psi.util.elementType
910

1011
class JavaAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (JavaTokenType.TRUE_KEYWORD == elementType
1415
|| JavaTokenType.FALSE_KEYWORD == elementType
1516
|| JavaTokenType.NULL_KEYWORD == elementType) {
16-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
17+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1718
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1819
.create()
1920
}

src/main/kotlin/com/github/simy4/alabaster/JavaScriptAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.lang.javascript.JSTokenTypes
77
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
88
import com.intellij.psi.PsiElement
9+
import com.intellij.psi.util.elementType
910

1011
class JavaScriptAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (JSTokenTypes.TRUE_KEYWORD == elementType
1415
|| JSTokenTypes.FALSE_KEYWORD == elementType
1516
|| JSTokenTypes.NULL_KEYWORD == elementType) {
16-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
17+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1718
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1819
.create()
1920
}

src/main/kotlin/com/github/simy4/alabaster/KotlinAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import com.intellij.lang.annotation.Annotator
55
import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
77
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
89
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
910

1011
class KotlinAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (KtStubElementTypes.BOOLEAN_CONSTANT == elementType
1415
|| KtStubElementTypes.NULL == elementType) {
15-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
16+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1617
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1718
.create()
1819
}

src/main/kotlin/com/github/simy4/alabaster/PythonAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import com.intellij.lang.annotation.Annotator
55
import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
77
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
89
import com.jetbrains.python.PyTokenTypes
910

1011
class PythonAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (PyTokenTypes.BOOL_LITERALS.contains(elementType)
1415
|| PyTokenTypes.NONE_KEYWORD == elementType) {
15-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
16+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1617
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1718
.create()
1819
}

src/main/kotlin/com/github/simy4/alabaster/RustAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ import com.intellij.lang.annotation.Annotator
55
import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
77
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
89
import org.rust.lang.core.psi.RsElementTypes
910

1011
class RustAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (RsElementTypes.TRUE == elementType
1415
|| RsElementTypes.FALSE == elementType
1516
|| RsElementTypes.BOOL_LITERAL == elementType) {
16-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
17+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1718
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1819
.create()
1920
}

src/main/kotlin/com/github/simy4/alabaster/ScalaAnnotator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import com.intellij.lang.annotation.Annotator
55
import com.intellij.lang.annotation.HighlightSeverity
66
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
77
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
89
import org.jetbrains.plugins.scala.lang.lexer.ScalaTokenTypes
910

1011
class ScalaAnnotator: Annotator {
1112
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
12-
val elementType = element.node.elementType
13+
val elementType = element.elementType
1314
if (ScalaTokenTypes.BOOLEAN_TOKEN_SET.contains(elementType)
1415
|| ScalaTokenTypes.kNULL == elementType) {
15-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
16+
holder.newSilentAnnotation(HighlightSeverity.TEXT_ATTRIBUTES)
1617
.textAttributes(DefaultLanguageHighlighterColors.NUMBER)
1718
.create()
1819
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Other languages work perfectly fine as well, but may do some extra unnecessary h
3232
]]></description>
3333

3434
<depends>com.intellij.modules.platform</depends>
35+
<depends optional="true" config-file="with-clojure.xml">com.cursiveclojure.cursive</depends>
3536
<depends optional="true" config-file="with-go.xml">org.jetbrains.plugins.go</depends>
3637
<depends optional="true" config-file="with-java.xml">com.intellij.java</depends>
3738
<depends optional="true" config-file="with-javascript.xml">JavaScript</depends>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<idea-plugin>
2+
<extensions defaultExtensionNs="com.intellij">
3+
<annotator language="Clojure" implementationClass="com.github.simy4.alabaster.ClojureAnnotator"/>
4+
</extensions>
5+
</idea-plugin>

0 commit comments

Comments
 (0)