1
0
mirror of https://github.com/chylex/IntelliJ-Rainbow-Brackets.git synced 2025-05-11 12:34:04 +02:00

Simplify code & Remove unused code & Style changed

This commit is contained in:
张志豪 2017-10-05 18:47:16 +08:00
parent b1743c4487
commit a10d55c893

View File

@ -8,18 +8,23 @@ import com.intellij.lang.annotation.Annotator
import com.intellij.openapi.editor.markup.TextAttributes
import com.intellij.psi.PsiElement
import com.intellij.psi.impl.source.tree.LeafPsiElement
import com.intellij.util.containers.stream
import java.awt.Color
import java.awt.Font
class RainbowBrackets : Annotator {
private val bracketsList = arrayOf("(", ")", "{", "}", "[", "]")
private val roundBrackets = arrayOf("(", ")")
private val squigglyBrackets = arrayOf("{", "}")
private val squareBrackets = arrayOf("[", "]")
private val brackets = roundBrackets + squareBrackets + squigglyBrackets
private fun getAttributesColor(level: Int, bracket: String): Color {
return when (bracket) {
"(", ")" -> dynamicallySelectColor(level, roundBracketsColor)
"{", "}" -> dynamicallySelectColor(level, squigglyBracketsColor)
"[", "]" -> dynamicallySelectColor(level, squareBracketsColor)
in roundBrackets -> dynamicallySelectColor(level, roundBracketsColor)
in squigglyBrackets -> dynamicallySelectColor(level, squigglyBracketsColor)
in squareBrackets -> dynamicallySelectColor(level, squareBracketsColor)
else -> dynamicallySelectColor(level, roundBracketsColor)
}
}
@ -33,24 +38,9 @@ class RainbowBrackets : Annotator {
}
private fun containsBrackets(text: String): Boolean {
return text.contains("(")
|| text.contains(")")
|| text.contains("{")
|| text.contains("}")
|| text.contains("[")
|| text.contains("]")
}
private fun visitParent(element: PsiElement, pred: (PsiElement) -> Boolean): Boolean {
var result = false
var eachParent: PsiElement? = element
while (eachParent != null) {
if (pred(eachParent)) {
result = true
}
eachParent = eachParent.parent
}
return result
return brackets
.stream()
.anyMatch { text.contains(it) }
}
private fun getBracketLevel(psiElement: PsiElement): Int {
@ -65,16 +55,9 @@ class RainbowBrackets : Annotator {
return level
}
private fun isString(t: String): Boolean {
return t.startsWith("\"") && t.endsWith("\"") || t.startsWith("\'") && t.endsWith("\'")
}
private val isString = { element: PsiElement -> visitParent(element, { e -> isString(e.text) }) }
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
if (element is LeafPsiElement
&& bracketsList.contains(element.text)
&& !isString(element)) {
&& brackets.contains(element.text)) {
val level = getBracketLevel(element)
val attrs = getBracketAttributes(level, element.text)
holder.createInfoAnnotation(element as PsiElement, null).enforcedTextAttributes = attrs