1
0
mirror of https://github.com/chylex/IntelliJ-Rainbow-Brackets.git synced 2025-04-10 18:15:50 +02:00

Performance improvement

This commit is contained in:
张志豪 2018-05-08 16:53:40 +08:00
parent 3570ed6ec1
commit 8fba0e9c89
2 changed files with 18 additions and 4 deletions
src/main/kotlin/com/github/izhangzhihao/rainbow/brackets

View File

@ -29,13 +29,27 @@ object BracePairs {
val pairsList = providers.forLanguage(language)?.pairs?.let {
if (pairs != null && pairs.isNotEmpty()) {
it.toMutableSet().apply { addAll(pairs) }.toList()
it.toMutableSet().apply { addAll(pairs) }
} else {
it
}
} ?: pairs?.toList()
language to pairsList
val braceMap: MutableMap<String, MutableList<BracePair>> = mutableMapOf()
pairsList
?.map { listOf(Pair(it.leftBraceType.toString(), it), Pair(it.rightBraceType.toString(), it)) }
?.flatten()
?.forEach { it ->
val bracePairs = braceMap[it.first]
if (bracePairs == null) {
braceMap[it.first] = mutableListOf(it.second)
} else {
bracePairs.add(it.second)
}
}
language to braceMap
}
.toMap()
}
@ -44,5 +58,5 @@ object BracePairs {
}
inline val Language.bracePairs: List<BracePair>?
inline val Language.bracePairs: MutableMap<String, MutableList<BracePair>>?
get() = BracePairs.getBracePairs(this)

View File

@ -115,7 +115,7 @@ class DefaultRainbowVisitor : RainbowHighlightVisitor() {
private fun filterPairs(type: IElementType, element: LeafPsiElement): List<BracePair>? {
val pairs = element.language.bracePairs ?: return null
val filterBraceType = pairs.filter { it.leftBraceType == type || it.rightBraceType == type }
val filterBraceType = pairs[type.toString()] ?: return null
return if (filterBraceType.isEmpty()) {
null
} else if (!isDoNOTRainbowifyBracketsWithoutContent) {