1
1
package org.ice1000.tt.editing.voile
2
2
3
3
import com.intellij.lang.BracePair
4
+ import com.intellij.lang.annotation.AnnotationHolder
5
+ import com.intellij.lang.annotation.Annotator
4
6
import com.intellij.lang.cacheBuilder.DefaultWordsScanner
7
+ import com.intellij.psi.PsiElement
5
8
import com.intellij.psi.tree.TokenSet
6
9
import org.ice1000.tt.editing.TTBraceMatcher
7
10
import org.ice1000.tt.editing.TTCommenter
8
11
import org.ice1000.tt.editing.TTFindUsagesProvider
9
12
import org.ice1000.tt.psi.redprl.redPrlLexer
10
- import org.ice1000.tt.psi.voile.VoileTokenType
11
- import org.ice1000.tt.psi.voile.VoileTypes
13
+ import org.ice1000.tt.psi.voile.*
12
14
13
15
class VoileCommenter : TTCommenter () {
14
16
override fun getLineCommentPrefix () = " // "
@@ -26,3 +28,18 @@ class VoileBraceMatcher : TTBraceMatcher() {
26
28
class VoileFindUsagesProvider : TTFindUsagesProvider () {
27
29
override fun getWordsScanner () = DefaultWordsScanner (redPrlLexer(), VoileTokenType .IDENTIFIERS , VoileTokenType .COMMENTS , TokenSet .EMPTY )
28
30
}
31
+
32
+ class VoileAnnotator : Annotator {
33
+ override fun annotate (element : PsiElement , holder : AnnotationHolder ) {
34
+ when (element) {
35
+ is VoileNameDeclMixin -> nameDeclMixin(element, holder)
36
+ }
37
+ }
38
+
39
+ private fun nameDeclMixin (element : VoileNameDeclMixin , holder : AnnotationHolder ) {
40
+ val parent = element.parent ? : return
41
+ if (parent is VoileImplementation || parent is VoileSignature ) {
42
+ holder.createInfoAnnotation(element, null ).textAttributes = VoileHighlighter .FUNCTION_NAME
43
+ }
44
+ }
45
+ }
0 commit comments