mirror of
https://github.com/chylex/IntelliJ-Rainbow-Brackets.git
synced 2025-05-21 14:34:11 +02:00
Fix #784 :Disable rainbowify on big files(>1000 lines for now)
(cherry picked from commit 4bc3010ba224bfc7a10a1d1a72e6d1999df769fd)
This commit is contained in:
parent
ea1bc6ba6f
commit
2fe50bf08a
src/main/kotlin/com/github/izhangzhihao/rainbow/brackets
@ -39,7 +39,7 @@ class RainbowUpdateNotifyActivity : StartupActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val pluginId = "izhangzhihao.rainbow.brackets"
|
const val pluginId = "izhangzhihao.rainbow.brackets"
|
||||||
|
|
||||||
|
|
||||||
private val updateContent: String by lazy {
|
private val updateContent: String by lazy {
|
||||||
|
@ -41,6 +41,7 @@ class RainbowConfigurable : Configurable {
|
|||||||
settings.useColorGenerator = settingsForm?.useColorGenerator() ?: false
|
settings.useColorGenerator = settingsForm?.useColorGenerator() ?: false
|
||||||
settings.rainbowifyTagNameInXML = settingsForm?.rainbowifyTagNameInXML() ?: false
|
settings.rainbowifyTagNameInXML = settingsForm?.rainbowifyTagNameInXML() ?: false
|
||||||
settings.doNOTRainbowifyTemplateString = settingsForm?.doNOTRainbowifyTemplateString() ?: false
|
settings.doNOTRainbowifyTemplateString = settingsForm?.doNOTRainbowifyTemplateString() ?: false
|
||||||
|
settings.doNOTRainbowifyBigFiles = settingsForm?.doNOTRainbowifyBigFiles() ?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun reset() {
|
override fun reset() {
|
||||||
|
@ -38,6 +38,7 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
|
|||||||
var showNotificationOnUpdate = true
|
var showNotificationOnUpdate = true
|
||||||
var rainbowifyTagNameInXML = false
|
var rainbowifyTagNameInXML = false
|
||||||
var doNOTRainbowifyTemplateString = false
|
var doNOTRainbowifyTemplateString = false
|
||||||
|
var doNOTRainbowifyBigFiles = true
|
||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
var languageBlacklist: Array<String> = arrayOf()
|
var languageBlacklist: Array<String> = arrayOf()
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children>
|
||||||
<grid id="fd26e" binding="appearancePanel" layout-manager="GridLayoutManager" row-count="16" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
<grid id="fd26e" binding="appearancePanel" layout-manager="GridLayoutManager" row-count="17" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
<margin top="0" left="0" bottom="0" right="0"/>
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
@ -99,7 +99,7 @@
|
|||||||
</component>
|
</component>
|
||||||
<component id="9d54" class="javax.swing.JLabel">
|
<component id="9d54" class="javax.swing.JLabel">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="15" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
<grid row="16" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties>
|
<properties>
|
||||||
<text value="Number of colors "/>
|
<text value="Number of colors "/>
|
||||||
@ -107,7 +107,7 @@
|
|||||||
</component>
|
</component>
|
||||||
<component id="b2481" class="javax.swing.JTextField" binding="numberOfColors">
|
<component id="b2481" class="javax.swing.JTextField" binding="numberOfColors">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="15" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
<grid row="16" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||||
<preferred-size width="150" height="-1"/>
|
<preferred-size width="150" height="-1"/>
|
||||||
</grid>
|
</grid>
|
||||||
</constraints>
|
</constraints>
|
||||||
@ -156,6 +156,14 @@
|
|||||||
<text value="Do NOT rainbowify template string"/>
|
<text value="Do NOT rainbowify template string"/>
|
||||||
</properties>
|
</properties>
|
||||||
</component>
|
</component>
|
||||||
|
<component id="454cb" class="javax.swing.JCheckBox" binding="doNOTRainbowifyBigFiles">
|
||||||
|
<constraints>
|
||||||
|
<grid row="15" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Do NOT rainbowify big files"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
</children>
|
</children>
|
||||||
</grid>
|
</grid>
|
||||||
<vspacer id="9e387">
|
<vspacer id="9e387">
|
||||||
|
@ -31,6 +31,8 @@ class RainbowSettingsForm {
|
|||||||
|
|
||||||
private var doNOTRainbowifyTemplateString: JCheckBox? = null
|
private var doNOTRainbowifyTemplateString: JCheckBox? = null
|
||||||
|
|
||||||
|
private var doNOTRainbowifyBigFiles: JCheckBox? = null
|
||||||
|
|
||||||
private val settings: RainbowSettings = RainbowSettings.instance
|
private val settings: RainbowSettings = RainbowSettings.instance
|
||||||
|
|
||||||
fun component(): JComponent? = panel
|
fun component(): JComponent? = panel
|
||||||
@ -67,6 +69,8 @@ class RainbowSettingsForm {
|
|||||||
|
|
||||||
fun doNOTRainbowifyTemplateString() = doNOTRainbowifyTemplateString?.isSelected
|
fun doNOTRainbowifyTemplateString() = doNOTRainbowifyTemplateString?.isSelected
|
||||||
|
|
||||||
|
fun doNOTRainbowifyBigFiles() = doNOTRainbowifyBigFiles?.isSelected
|
||||||
|
|
||||||
val isModified: Boolean
|
val isModified: Boolean
|
||||||
get() = (isRainbowEnabled() != settings.isRainbowEnabled
|
get() = (isRainbowEnabled() != settings.isRainbowEnabled
|
||||||
|| isRainbowAngleBracketsEnabled() != settings.isEnableRainbowAngleBrackets
|
|| isRainbowAngleBracketsEnabled() != settings.isEnableRainbowAngleBrackets
|
||||||
@ -84,6 +88,7 @@ class RainbowSettingsForm {
|
|||||||
|| useColorGenerator() != settings.useColorGenerator
|
|| useColorGenerator() != settings.useColorGenerator
|
||||||
|| rainbowifyTagNameInXML() != settings.rainbowifyTagNameInXML
|
|| rainbowifyTagNameInXML() != settings.rainbowifyTagNameInXML
|
||||||
|| doNOTRainbowifyTemplateString() != settings.doNOTRainbowifyTemplateString
|
|| doNOTRainbowifyTemplateString() != settings.doNOTRainbowifyTemplateString
|
||||||
|
|| doNOTRainbowifyBigFiles() != settings.doNOTRainbowifyBigFiles
|
||||||
)
|
)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -107,5 +112,6 @@ class RainbowSettingsForm {
|
|||||||
useColorGenerator?.isSelected = settings.useColorGenerator
|
useColorGenerator?.isSelected = settings.useColorGenerator
|
||||||
rainbowifyTagNameInXML?.isSelected = settings.rainbowifyTagNameInXML
|
rainbowifyTagNameInXML?.isSelected = settings.rainbowifyTagNameInXML
|
||||||
doNOTRainbowifyTemplateString?.isSelected = settings.doNOTRainbowifyTemplateString
|
doNOTRainbowifyTemplateString?.isSelected = settings.doNOTRainbowifyTemplateString
|
||||||
|
doNOTRainbowifyBigFiles?.isSelected = settings.doNOTRainbowifyBigFiles
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,20 @@ package com.github.izhangzhihao.rainbow.brackets.visitor
|
|||||||
|
|
||||||
import com.github.izhangzhihao.rainbow.brackets.RainbowHighlighter.getHighlightInfo
|
import com.github.izhangzhihao.rainbow.brackets.RainbowHighlighter.getHighlightInfo
|
||||||
import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
|
import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
|
||||||
|
import com.github.izhangzhihao.rainbow.brackets.RainbowUpdateNotifyActivity.Companion.pluginId
|
||||||
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
|
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
|
||||||
import com.github.izhangzhihao.rainbow.brackets.util.memoizedFileExtension
|
import com.github.izhangzhihao.rainbow.brackets.util.memoizedFileExtension
|
||||||
import com.intellij.codeInsight.daemon.impl.HighlightVisitor
|
import com.intellij.codeInsight.daemon.impl.HighlightVisitor
|
||||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder
|
import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder
|
||||||
import com.intellij.ide.plugins.PluginManagerCore
|
import com.intellij.ide.plugins.PluginManagerCore
|
||||||
|
import com.intellij.notification.NotificationDisplayType
|
||||||
|
import com.intellij.notification.NotificationGroup
|
||||||
|
import com.intellij.notification.NotificationType
|
||||||
import com.intellij.openapi.editor.colors.EditorColorsManager
|
import com.intellij.openapi.editor.colors.EditorColorsManager
|
||||||
import com.intellij.openapi.extensions.PluginId
|
import com.intellij.openapi.extensions.PluginId
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
|
import org.jetbrains.kotlin.idea.core.util.getLineCount
|
||||||
import java.awt.Color
|
import java.awt.Color
|
||||||
|
|
||||||
|
|
||||||
@ -20,11 +25,33 @@ abstract class RainbowHighlightVisitor : HighlightVisitor {
|
|||||||
|
|
||||||
override fun suitableForFile(file: PsiFile): Boolean {
|
override fun suitableForFile(file: PsiFile): Boolean {
|
||||||
return RainbowSettings.instance.isRainbowEnabled &&
|
return RainbowSettings.instance.isRainbowEnabled &&
|
||||||
|
checkForBigFile(file) &&
|
||||||
!RainbowSettings.instance.getLanguageBlacklist.contains(file.fileType.name) &&
|
!RainbowSettings.instance.getLanguageBlacklist.contains(file.fileType.name) &&
|
||||||
!RainbowSettings.instance.getLanguageBlacklist.contains(memoizedFileExtension(file.name)) &&
|
!RainbowSettings.instance.getLanguageBlacklist.contains(memoizedFileExtension(file.name)) &&
|
||||||
fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(file.fileType.name)
|
fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(file.fileType.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkForBigFile(file: PsiFile): Boolean {
|
||||||
|
if (RainbowSettings.instance.doNOTRainbowifyBigFiles && file.getLineCount() > 1000) {
|
||||||
|
val group = NotificationGroup(
|
||||||
|
pluginId,
|
||||||
|
NotificationDisplayType.BALLOON,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val notification = group.createNotification(
|
||||||
|
"Rainbowify big files is disabled by default",
|
||||||
|
"File with line count > 1000 will not rainbowify be default. If you still want to rainbowify it, please config it in <b>Settings > Other Settings > Rainbow Brackets > Do NOT rainbowify big files</b>",
|
||||||
|
NotificationType.INFORMATION
|
||||||
|
)
|
||||||
|
|
||||||
|
notification.notify(file.project)
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
private fun fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(fileType: String) =
|
private fun fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(fileType: String) =
|
||||||
fileType != "Haskell" || !isIntelliJHaskellEnabled
|
fileType != "Haskell" || !isIntelliJHaskellEnabled
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user