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

Add language exclusions to settings (closes ) ()

* Add language exclusions to settings (closes )

* Fix save setting & load setting & prefer `languageBlacklist` for compatibility

* Update README.md

Co-authored-by: 张志豪 <izhangzhihao@hotmail.com>
Co-authored-by: 张志豪 <12044174+izhangzhihao@users.noreply.github.com>
This commit is contained in:
Keegan Witt 2021-02-28 04:46:03 -05:00 committed by GitHub
parent f227fd8b2f
commit bd3902d207
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 39 additions and 26 deletions
README.md
src
main/kotlin/com/github/izhangzhihao/rainbow/brackets
test/kotlin/com/github/izhangzhihao/rainbow/brackets

View File

@ -226,20 +226,7 @@ You still could set `<option name="rainbowifyKotlinFunctionLiteralBracesAndArrow
## Disable rainbow brackets for specific languages
If you want to disable rainbow brackets for javascript languages and java languages, you could set `languageBlacklist` property in config file just like:
```xml
<application>
<component name="RainbowSettings">
<option name="languageBlacklist">
<array>
<option value="java" />
<option value="javascript" />
</array>
</option>
</component>
</application>
```
<kbd>Settings/Preferences</kbd> > <kbd>Other Settings</kbd> > <kbd>Rainbow Brackets</kbd> > `Do NOT rainbowify these languages (name or extension, comma separated)`:
NOTE: You can use **name** of language or **extension** of file name(The names should be **lowercase**).

View File

@ -37,6 +37,7 @@ class RainbowConfigurable : Configurable {
settings.cycleCountOnAllBrackets = settingsForm?.cycleCountOnAllBrackets()
?: false
settings.numberOfColors = settingsForm?.numberOfColors() ?: 5
settings.languageBlacklist = settingsForm?.languageBlacklist() ?: emptySet()
settings.disableRainbowIndentsInZenMode = settingsForm?.disableRainbowIndentsInZenMode() ?: true
settings.useColorGenerator = settingsForm?.useColorGenerator() ?: false
settings.rainbowifyTagNameInXML = settingsForm?.rainbowifyTagNameInXML() ?: false

View File

@ -32,6 +32,7 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
//https://github.com/izhangzhihao/intellij-rainbow-brackets/issues/391
var cycleCountOnAllBrackets = false
var numberOfColors = 5
var disableRainbowIndentsInZenMode = true
var useColorGenerator = false
var customColorGeneratorOption: String? = null
@ -40,11 +41,7 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
var doNOTRainbowifyTemplateString = false
var doNOTRainbowifyBigFiles = true
@Suppress("MemberVisibilityCanBePrivate")
var languageBlacklist: Array<String> = arrayOf()
@Transient
var getLanguageBlacklist: Set<String> = languageBlacklist.toSet().plus(arrayOf("hocon", "mxml"))
var languageBlacklist: Set<String> = setOf("hocon", "mxml")
@Nullable
override fun getState() = this

View File

@ -3,12 +3,12 @@
<grid id="27dc6" binding="panel" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="763" height="513"/>
<xy x="20" y="20" width="763" height="533"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<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">
<grid id="fd26e" binding="appearancePanel" layout-manager="GridLayoutManager" row-count="18" 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,9 @@
</component>
<component id="9d54" class="javax.swing.JLabel">
<constraints>
<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"/>
<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">
<preferred-size width="96" height="14"/>
</grid>
</constraints>
<properties>
<text value="Number of colors "/>
@ -164,6 +166,26 @@
<text value="Do NOT rainbowify big files"/>
</properties>
</component>
<component id="6e2da" class="javax.swing.JLabel">
<constraints>
<grid row="17" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
<preferred-size width="115" height="26"/>
</grid>
</constraints>
<properties>
<text value="Do NOT rainbowify these languages (name or extension, comma separated)"/>
</properties>
</component>
<component id="d47de" class="javax.swing.JTextField" binding="languageBlacklist">
<constraints>
<grid row="17" 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>
<properties>
<text value="hocon, mxml"/>
</properties>
</component>
</children>
</grid>
<vspacer id="9e387">

View File

@ -23,6 +23,8 @@ class RainbowSettingsForm {
private var numberOfColors: JTextField? = null
private var languageBlacklist: JTextField? = null
private var disableRainbowIndentsInZenMode: JCheckBox? = null
private var useColorGenerator: JCheckBox? = null
@ -61,6 +63,8 @@ class RainbowSettingsForm {
fun numberOfColors() = numberOfColors?.text?.toIntOrNull()
fun languageBlacklist() = languageBlacklist?.text?.split(",")?.map { it.trim() }?.filterNot { it.isEmpty() }?.toSet()
fun disableRainbowIndentsInZenMode() = disableRainbowIndentsInZenMode?.isSelected
fun useColorGenerator() = useColorGenerator?.isSelected
@ -89,6 +93,7 @@ class RainbowSettingsForm {
|| rainbowifyTagNameInXML() != settings.rainbowifyTagNameInXML
|| doNOTRainbowifyTemplateString() != settings.doNOTRainbowifyTemplateString
|| doNOTRainbowifyBigFiles() != settings.doNOTRainbowifyBigFiles
|| languageBlacklist() != settings.languageBlacklist
)
init {
@ -113,5 +118,6 @@ class RainbowSettingsForm {
rainbowifyTagNameInXML?.isSelected = settings.rainbowifyTagNameInXML
doNOTRainbowifyTemplateString?.isSelected = settings.doNOTRainbowifyTemplateString
doNOTRainbowifyBigFiles?.isSelected = settings.doNOTRainbowifyBigFiles
languageBlacklist?.text = settings.languageBlacklist.joinToString(",")
}
}

View File

@ -28,8 +28,8 @@ 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)) &&
!RainbowSettings.instance.languageBlacklist.contains(file.fileType.name) &&
!RainbowSettings.instance.languageBlacklist.contains(memoizedFileExtension(file.name)) &&
fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(file.fileType.name)
}

View File

@ -19,7 +19,7 @@ class RainbowJavaTest : LightJavaCodeInsightFixtureTestCase() {
rainbowSettings.isDoNOTRainbowifyBracketsWithoutContent = false
rainbowSettings.cycleCountOnAllBrackets = false
rainbowSettings.applyColorsOfRoundForAllBrackets = false
rainbowSettings.getLanguageBlacklist = setOf()
rainbowSettings.languageBlacklist = setOf()
}
fun testRainbowForJava() {
@ -226,7 +226,7 @@ public class Test<T> {
fun testDoNOTRainbowifyBracketsWhenJavaInBlacklist() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isDoNOTRainbowifyBracketsWithoutContent = true
rainbowSettings.getLanguageBlacklist = setOf("java")
rainbowSettings.languageBlacklist = setOf("java")
@Language("Java") val code =
"""
public class Test<T> {