mirror of
https://github.com/chylex/IntelliJ-Rainbow-Brackets.git
synced 2025-05-04 10:34:03 +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 {
|
||||
private const val pluginId = "izhangzhihao.rainbow.brackets"
|
||||
const val pluginId = "izhangzhihao.rainbow.brackets"
|
||||
|
||||
|
||||
private val updateContent: String by lazy {
|
||||
|
@ -41,6 +41,7 @@ class RainbowConfigurable : Configurable {
|
||||
settings.useColorGenerator = settingsForm?.useColorGenerator() ?: false
|
||||
settings.rainbowifyTagNameInXML = settingsForm?.rainbowifyTagNameInXML() ?: false
|
||||
settings.doNOTRainbowifyTemplateString = settingsForm?.doNOTRainbowifyTemplateString() ?: false
|
||||
settings.doNOTRainbowifyBigFiles = settingsForm?.doNOTRainbowifyBigFiles() ?: true
|
||||
}
|
||||
|
||||
override fun reset() {
|
||||
|
@ -38,6 +38,7 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
|
||||
var showNotificationOnUpdate = true
|
||||
var rainbowifyTagNameInXML = false
|
||||
var doNOTRainbowifyTemplateString = false
|
||||
var doNOTRainbowifyBigFiles = true
|
||||
|
||||
@Suppress("MemberVisibilityCanBePrivate")
|
||||
var languageBlacklist: Array<String> = arrayOf()
|
||||
|
@ -8,7 +8,7 @@
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<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"/>
|
||||
<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"/>
|
||||
@ -99,7 +99,7 @@
|
||||
</component>
|
||||
<component id="9d54" class="javax.swing.JLabel">
|
||||
<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>
|
||||
<properties>
|
||||
<text value="Number of colors "/>
|
||||
@ -107,7 +107,7 @@
|
||||
</component>
|
||||
<component id="b2481" class="javax.swing.JTextField" binding="numberOfColors">
|
||||
<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"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
@ -156,6 +156,14 @@
|
||||
<text value="Do NOT rainbowify template string"/>
|
||||
</properties>
|
||||
</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>
|
||||
</grid>
|
||||
<vspacer id="9e387">
|
||||
|
@ -31,6 +31,8 @@ class RainbowSettingsForm {
|
||||
|
||||
private var doNOTRainbowifyTemplateString: JCheckBox? = null
|
||||
|
||||
private var doNOTRainbowifyBigFiles: JCheckBox? = null
|
||||
|
||||
private val settings: RainbowSettings = RainbowSettings.instance
|
||||
|
||||
fun component(): JComponent? = panel
|
||||
@ -67,6 +69,8 @@ class RainbowSettingsForm {
|
||||
|
||||
fun doNOTRainbowifyTemplateString() = doNOTRainbowifyTemplateString?.isSelected
|
||||
|
||||
fun doNOTRainbowifyBigFiles() = doNOTRainbowifyBigFiles?.isSelected
|
||||
|
||||
val isModified: Boolean
|
||||
get() = (isRainbowEnabled() != settings.isRainbowEnabled
|
||||
|| isRainbowAngleBracketsEnabled() != settings.isEnableRainbowAngleBrackets
|
||||
@ -84,6 +88,7 @@ class RainbowSettingsForm {
|
||||
|| useColorGenerator() != settings.useColorGenerator
|
||||
|| rainbowifyTagNameInXML() != settings.rainbowifyTagNameInXML
|
||||
|| doNOTRainbowifyTemplateString() != settings.doNOTRainbowifyTemplateString
|
||||
|| doNOTRainbowifyBigFiles() != settings.doNOTRainbowifyBigFiles
|
||||
)
|
||||
|
||||
init {
|
||||
@ -107,5 +112,6 @@ class RainbowSettingsForm {
|
||||
useColorGenerator?.isSelected = settings.useColorGenerator
|
||||
rainbowifyTagNameInXML?.isSelected = settings.rainbowifyTagNameInXML
|
||||
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.RainbowInfo
|
||||
import com.github.izhangzhihao.rainbow.brackets.RainbowUpdateNotifyActivity.Companion.pluginId
|
||||
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
|
||||
import com.github.izhangzhihao.rainbow.brackets.util.memoizedFileExtension
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightVisitor
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder
|
||||
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.extensions.PluginId
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.idea.core.util.getLineCount
|
||||
import java.awt.Color
|
||||
|
||||
|
||||
@ -20,11 +25,33 @@ abstract class RainbowHighlightVisitor : HighlightVisitor {
|
||||
|
||||
override fun suitableForFile(file: PsiFile): Boolean {
|
||||
return RainbowSettings.instance.isRainbowEnabled &&
|
||||
checkForBigFile(file) &&
|
||||
!RainbowSettings.instance.getLanguageBlacklist.contains(file.fileType.name) &&
|
||||
!RainbowSettings.instance.getLanguageBlacklist.contains(memoizedFileExtension(file.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) =
|
||||
fileType != "Haskell" || !isIntelliJHaskellEnabled
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user