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:
parent
3570ed6ec1
commit
8fba0e9c89
src/main/kotlin/com/github/izhangzhihao/rainbow/brackets
@ -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)
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user