diff --git a/.idea/runConfigurations/Run_CLion.xml b/.idea/runConfigurations/Run_CLion.xml
new file mode 100644
index 0000000..d39b053
--- /dev/null
+++ b/.idea/runConfigurations/Run_CLion.xml
@@ -0,0 +1,24 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="Run CLion" type="GradleRunConfiguration" factoryName="Gradle">
+    <ExternalSystemSettings>
+      <option name="executionName" />
+      <option name="externalProjectPath" value="$PROJECT_DIR$" />
+      <option name="externalSystemIdString" value="GRADLE" />
+      <option name="scriptParameters" value="" />
+      <option name="taskDescriptions">
+        <list />
+      </option>
+      <option name="taskNames">
+        <list>
+          <option value=":clion:runIde" />
+        </list>
+      </option>
+      <option name="vmOptions" />
+    </ExternalSystemSettings>
+    <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
+    <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
+    <DebugAllEnabled>false</DebugAllEnabled>
+    <RunAsTest>false</RunAsTest>
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/Run_IDEA.xml b/.idea/runConfigurations/Run_IDEA.xml
new file mode 100644
index 0000000..8918c6b
--- /dev/null
+++ b/.idea/runConfigurations/Run_IDEA.xml
@@ -0,0 +1,24 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="Run IDEA" type="GradleRunConfiguration" factoryName="Gradle">
+    <ExternalSystemSettings>
+      <option name="executionName" />
+      <option name="externalProjectPath" value="$PROJECT_DIR$" />
+      <option name="externalSystemIdString" value="GRADLE" />
+      <option name="scriptParameters" value="" />
+      <option name="taskDescriptions">
+        <list />
+      </option>
+      <option name="taskNames">
+        <list>
+          <option value=":idea:runIde" />
+        </list>
+      </option>
+      <option name="vmOptions" />
+    </ExternalSystemSettings>
+    <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
+    <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
+    <DebugAllEnabled>false</DebugAllEnabled>
+    <RunAsTest>false</RunAsTest>
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/Run_Rider.xml b/.idea/runConfigurations/Run_Rider.xml
new file mode 100644
index 0000000..148b49a
--- /dev/null
+++ b/.idea/runConfigurations/Run_Rider.xml
@@ -0,0 +1,24 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="Run Rider" type="GradleRunConfiguration" factoryName="Gradle">
+    <ExternalSystemSettings>
+      <option name="executionName" />
+      <option name="externalProjectPath" value="$PROJECT_DIR$" />
+      <option name="externalSystemIdString" value="GRADLE" />
+      <option name="scriptParameters" value="" />
+      <option name="taskDescriptions">
+        <list />
+      </option>
+      <option name="taskNames">
+        <list>
+          <option value=":rider:runIde" />
+        </list>
+      </option>
+      <option name="vmOptions" />
+    </ExternalSystemSettings>
+    <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
+    <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
+    <DebugAllEnabled>false</DebugAllEnabled>
+    <RunAsTest>false</RunAsTest>
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index e5e96b0..6eb9edb 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,110 +1,109 @@
 @file:Suppress("SpellCheckingInspection")
 
+import org.jetbrains.intellij.IntelliJPluginExtension
+import org.jetbrains.intellij.tasks.BuildPluginTask
+import org.jetbrains.intellij.tasks.BuildSearchableOptionsTask
+import org.jetbrains.intellij.tasks.PatchPluginXmlTask
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
-	kotlin("jvm") version "1.8.0"
-	id("org.jetbrains.intellij") version "1.15.0"
+	idea
+	kotlin("jvm")
+	id("org.jetbrains.intellij") apply false
 }
 
 group = "com.chylex.intellij.rainbowbrackets"
 version = "6.26-chylex-2"
 
 val ideVersion = "2023.2.2"
+val ideBuild = "232"
 
 idea {
 	module {
 		excludeDirs.add(file("gradle"))
-		excludeDirs.add(file("libs"))
 	}
 }
 
-repositories {
-	mavenCentral()
-	maven(url = "https://www.jetbrains.com/intellij-repository/releases")
-	maven(url = "https://www.jetbrains.com/intellij-repository/snapshots")
-}
-
-val clion: Configuration by configurations.creating
-val rider: Configuration by configurations.creating
-
 dependencies {
-	clion("com.jetbrains.intellij.clion:clion:$ideVersion")
-	rider("com.jetbrains.intellij.rider:riderRD:$ideVersion")
-	
-	compileOnly(fileTree("libs"))
-	
-	testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
-	testImplementation("io.kotest:kotest-assertions-core:5.5.5")
+	implementation(project(":clion"))
+	implementation(project(":idea"))
+	implementation(project(":rider"))
 }
 
-kotlin {
-	jvmToolchain(17)
-}
-
-intellij {
-	type.set("IU")
-	version.set(ideVersion)
-	updateSinceUntilBuild.set(false)
+subprojects {
+	apply(plugin = "org.jetbrains.kotlin.jvm")
+	apply(plugin = "org.jetbrains.intellij")
 	
-	plugins.set(
-		listOf(
-			// Built-in
-			"Groovy",
-			"JavaScript",
-			"com.intellij.css",
-			"com.intellij.database",
-			"com.intellij.java",
-			"org.intellij.plugins.markdown",
-			"org.jetbrains.kotlin",
-			"org.jetbrains.plugins.yaml",
-			// Downloaded
-			"Dart:232.8660.129",                             // https://plugins.jetbrains.com/plugin/6351-dart/versions/stable
-			"Pythonid:232.9921.47",                          // https://plugins.jetbrains.com/plugin/631-python/versions
-			"com.jetbrains.php:232.9921.55",                 // https://plugins.jetbrains.com/plugin/6610-php/versions
-			"com.jetbrains.sh:232.8660.88",                  // https://plugins.jetbrains.com/plugin/13122-shell-script/versions
-			"org.intellij.scala:2023.2.23",                  // https://plugins.jetbrains.com/plugin/1347-scala/versions
-			"org.jetbrains.plugins.go-template:232.9921.89", // https://plugins.jetbrains.com/plugin/10581-go-template/versions
-			"org.jetbrains.plugins.ruby:232.9921.47",        // https://plugins.jetbrains.com/plugin/1293-ruby/versions
+	group = rootProject.group
+	version = rootProject.version
+	
+	repositories {
+		mavenCentral()
+		maven(url = "https://www.jetbrains.com/intellij-repository/releases")
+		maven(url = "https://www.jetbrains.com/intellij-repository/snapshots")
+	}
+	
+	dependencies {
+		testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
+		testImplementation("io.kotest:kotest-assertions-core:5.5.5")
+	}
+	
+	kotlin {
+		jvmToolchain(17)
+	}
+	
+	configure<IntelliJPluginExtension> {
+		version.set(ideVersion)
+		updateSinceUntilBuild.set(false)
+	}
+	
+	tasks.withType<KotlinCompile> {
+		kotlinOptions.freeCompilerArgs = listOf(
+			"-Xjvm-default=all"
 		)
-	)
-}
-
-tasks.patchPluginXml {
-	sinceBuild.set("232")
-}
-
-tasks.test {
-	useJUnitPlatform()
-}
-
-tasks.withType<KotlinCompile> {
-	kotlinOptions.freeCompilerArgs = listOf(
-		"-Xjvm-default=all"
-	)
-}
-
-fun createDownloadIdeTask(name: String, dependency: Configuration, configuration: CopySpec.() -> Unit): Sync {
-	return tasks.create<Sync>(name) {
-		group = "ides"
-		outputs.upToDateWhen { false }
+	}
+	
+	tasks.test {
+		useJUnitPlatform()
+	}
+	
+	tasks.getByName<BuildSearchableOptionsTask>("buildSearchableOptions") {
+		enabled = false
+	}
+	
+	tasks.getByName<PatchPluginXmlTask>("patchPluginXml") {
+		sinceBuild.set(ideBuild)
+	}
+	
+	tasks.getByName<BuildPluginTask>("buildPlugin") {
+		eachFile {
+			name = name.replaceFirst("instrumented-", "instrumented-RainbowBrackets-")
+			relativePath.segments[0] = "RainbowBrackets"
+		}
 		
-		from(dependency.map(::zipTree), configuration)
-		into(file("libs/${dependency.name}"))
+		includeEmptyDirs = false
 	}
 }
 
-val downloadIdeClion = createDownloadIdeTask("downloadIdeClion", clion) {
-	include("plugins/cidr-base-plugin/**")
-}
-
-val downloadIdeRider = createDownloadIdeTask("downloadIdeRider", rider) {
-	include("lib/app.jar")
-}
-
-tasks.create<Sync>("downloadExtraIdes") {
-	group = "ides"
+tasks.register<Zip>("buildPlugin") {
+	group = "intellij"
 	
-	dependsOn(downloadIdeClion)
-	dependsOn(downloadIdeRider)
+	for (project in listOf("clion", "idea", "rider")) {
+		val buildPlugin = project(":$project").tasks.getByName("buildPlugin")
+		val outputs = buildPlugin.outputs.files.map(::zipTree)
+		
+		dependsOn(buildPlugin)
+		
+		from(outputs) {
+			include("RainbowBrackets/lib/instrumented-RainbowBrackets-$project-$version.jar")
+		}
+		
+		if (project == "idea") {
+			from(outputs) {
+				include("RainbowBrackets/lib/searchableOptions-$version.jar")
+			}
+		}
+	}
+	
+	destinationDirectory = layout.buildDirectory.dir("distributions")
 }
diff --git a/clion/.gitignore b/clion/.gitignore
new file mode 100644
index 0000000..84c048a
--- /dev/null
+++ b/clion/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/clion/build.gradle.kts b/clion/build.gradle.kts
new file mode 100644
index 0000000..78917e9
--- /dev/null
+++ b/clion/build.gradle.kts
@@ -0,0 +1,16 @@
+plugins {
+	id("org.jetbrains.intellij")
+}
+
+intellij {
+	type.set("CL")
+	
+	plugins.set(listOf(
+		// Built-in
+		"cidr-base-plugin"
+	))
+}
+
+dependencies {
+	implementation(project(":idea"))
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/OCBracePairProvider.kt b/clion/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/OCBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/OCBracePairProvider.kt
rename to clion/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/OCBracePairProvider.kt
diff --git a/src/main/resources/META-INF/oc-brackets.xml b/clion/src/main/resources/META-INF/oc-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/oc-brackets.xml
rename to clion/src/main/resources/META-INF/oc-brackets.xml
diff --git a/idea/.gitignore b/idea/.gitignore
new file mode 100644
index 0000000..84c048a
--- /dev/null
+++ b/idea/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts
new file mode 100644
index 0000000..73feb70
--- /dev/null
+++ b/idea/build.gradle.kts
@@ -0,0 +1,33 @@
+plugins {
+	id("org.jetbrains.intellij")
+}
+
+intellij {
+	type.set("IU")
+	
+	plugins.set(
+		listOf(
+			// Built-in
+			"Groovy",
+			"JavaScript",
+			"com.intellij.css",
+			"com.intellij.database",
+			"com.intellij.java",
+			"org.intellij.plugins.markdown",
+			"org.jetbrains.kotlin",
+			"org.jetbrains.plugins.yaml",
+			// Downloaded
+			"Dart:232.8660.129",                             // https://plugins.jetbrains.com/plugin/6351-dart/versions/stable
+			"Pythonid:232.9921.47",                          // https://plugins.jetbrains.com/plugin/631-python/versions
+			"com.jetbrains.php:232.9921.55",                 // https://plugins.jetbrains.com/plugin/6610-php/versions
+			"com.jetbrains.sh:232.8660.88",                  // https://plugins.jetbrains.com/plugin/13122-shell-script/versions
+			"org.intellij.scala:2023.2.23",                  // https://plugins.jetbrains.com/plugin/1347-scala/versions
+			"org.jetbrains.plugins.go-template:232.9921.89", // https://plugins.jetbrains.com/plugin/10581-go-template/versions
+			"org.jetbrains.plugins.ruby:232.9921.47",        // https://plugins.jetbrains.com/plugin/1293-ruby/versions
+		)
+	)
+}
+
+tasks.buildSearchableOptions {
+	enabled = true
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/BracePairs.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/BracePairs.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/BracePairs.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/BracePairs.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt
similarity index 99%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt
index faa2a17..2399783 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowHighlighter.kt
@@ -19,7 +19,6 @@ import org.intellij.lang.annotations.Language
 import org.jetbrains.annotations.TestOnly
 import java.awt.Color
 import java.awt.Font
-import java.util.UUID
 
 object RainbowHighlighter {
 
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowInfo.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowInfo.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowInfo.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowInfo.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowifyBanner.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowifyBanner.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowifyBanner.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowifyBanner.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenerator.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenerator.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenerator.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenerator.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/AbstractScopeHighlightingAction.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/AbstractScopeHighlightingAction.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/AbstractScopeHighlightingAction.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/AbstractScopeHighlightingAction.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt
similarity index 95%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt
index c4fa5e7..88f60e0 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeHighlightingAction.kt
@@ -3,7 +3,6 @@ package com.github.izhangzhihao.rainbow.brackets.action
 import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
 import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
 import com.github.izhangzhihao.rainbow.brackets.util.alphaBlend
-import com.github.izhangzhihao.rainbow.brackets.util.create
 import com.intellij.codeInsight.highlighting.HighlightManager
 import com.intellij.openapi.editor.Editor
 import com.intellij.openapi.editor.colors.EditorColorsManager
@@ -11,7 +10,7 @@ import com.intellij.openapi.editor.markup.EffectType
 import com.intellij.openapi.editor.markup.RangeHighlighter
 import com.intellij.openapi.editor.markup.TextAttributes
 import java.awt.Font
-import java.util.*
+import java.util.LinkedList
 
 
 class ScopeHighlightingAction : AbstractScopeHighlightingAction() {
@@ -33,4 +32,4 @@ class ScopeHighlightingAction : AbstractScopeHighlightingAction() {
         return highlighters
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt
similarity index 96%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt
index 334aaf4..1533073 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/action/ScopeOutsideHighlightingRestrainAction.kt
@@ -3,7 +3,6 @@ package com.github.izhangzhihao.rainbow.brackets.action
 import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
 import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
 import com.github.izhangzhihao.rainbow.brackets.util.alphaBlend
-import com.github.izhangzhihao.rainbow.brackets.util.create
 import com.intellij.codeInsight.highlighting.HighlightManager
 import com.intellij.openapi.editor.Editor
 import com.intellij.openapi.editor.colors.EditorColorsManager
@@ -12,7 +11,7 @@ import com.intellij.openapi.editor.markup.RangeHighlighter
 import com.intellij.openapi.editor.markup.TextAttributes
 import java.awt.Color
 import java.awt.Font
-import java.util.*
+import java.util.LinkedList
 
 class ScopeOutsideHighlightingRestrainAction : AbstractScopeHighlightingAction() {
 
@@ -50,4 +49,4 @@ class ScopeOutsideHighlightingRestrainAction : AbstractScopeHighlightingAction()
         return highlighters
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt
similarity index 87%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt
index fa18bb0..10de48a 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLabelAnnotator.kt
@@ -12,7 +12,15 @@ import com.intellij.psi.PsiElement
 import com.intellij.psi.impl.source.tree.LeafPsiElement
 import com.intellij.psi.util.PsiTreeUtil
 import org.jetbrains.kotlin.lexer.KtTokens
-import org.jetbrains.kotlin.psi.*
+import org.jetbrains.kotlin.psi.KtBlockExpression
+import org.jetbrains.kotlin.psi.KtCallExpression
+import org.jetbrains.kotlin.psi.KtClass
+import org.jetbrains.kotlin.psi.KtClassBody
+import org.jetbrains.kotlin.psi.KtFunction
+import org.jetbrains.kotlin.psi.KtFunctionLiteral
+import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
+import org.jetbrains.kotlin.psi.KtLabeledExpression
+import org.jetbrains.kotlin.psi.KtLambdaExpression
 import java.awt.Font
 
 
@@ -75,4 +83,4 @@ class KotlinLabelAnnotator : Annotator {
                 }
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLambdaExpressionArrowAnnotator.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLambdaExpressionArrowAnnotator.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLambdaExpressionArrowAnnotator.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/KotlinLambdaExpressionArrowAnnotator.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/RainbowAnnotator.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/RainbowAnnotator.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/RainbowAnnotator.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/annotator/RainbowAnnotator.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Color.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Color.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Color.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Color.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Hue.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Hue.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Hue.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Hue.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Luminosity.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Luminosity.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Luminosity.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/Luminosity.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/RandomKolor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/RandomKolor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/RandomKolor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/color/RandomKolor.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt
similarity index 96%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt
index 1746865..9db0658 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentGuideRenderer.kt
@@ -1,7 +1,12 @@
 package com.github.izhangzhihao.rainbow.brackets.indents
 
 import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
-import com.github.izhangzhihao.rainbow.brackets.util.*
+import com.github.izhangzhihao.rainbow.brackets.util.alphaBlend
+import com.github.izhangzhihao.rainbow.brackets.util.endOffset
+import com.github.izhangzhihao.rainbow.brackets.util.findNextSibling
+import com.github.izhangzhihao.rainbow.brackets.util.findPrevSibling
+import com.github.izhangzhihao.rainbow.brackets.util.lineNumber
+import com.github.izhangzhihao.rainbow.brackets.util.startOffset
 import com.intellij.openapi.editor.Document
 import com.intellij.openapi.editor.Editor
 import com.intellij.openapi.editor.SoftWrap
@@ -255,4 +260,4 @@ class RainbowIndentGuideRenderer: CustomHighlighterRenderer {
             lastChild?.findPrevSibling(XML_END_TAG_START_CONDITION)?.let { document.lineNumber(it.startOffset) }
 
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt
similarity index 99%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt
index 07da520..4fc506b 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPass.kt
@@ -28,7 +28,7 @@ import com.intellij.util.containers.IntStack
 import com.intellij.util.text.CharArrayUtil
 import java.lang.StrictMath.abs
 import java.lang.StrictMath.min
-import java.util.*
+import java.util.Collections
 
 /** From [com.intellij.codeInsight.daemon.impl.IndentsPass]
  * Commit history: https://sourcegraph.com/github.com/JetBrains/intellij-community/-/blob/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IndentsPass.java#tab=history
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt
similarity index 71%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt
index f6fe632..e8b7794 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/indents/RainbowIndentsPassFactory.kt
@@ -1,6 +1,10 @@
 package com.github.izhangzhihao.rainbow.brackets.indents
 
-import com.intellij.codeHighlighting.*
+import com.intellij.codeHighlighting.Pass
+import com.intellij.codeHighlighting.TextEditorHighlightingPass
+import com.intellij.codeHighlighting.TextEditorHighlightingPassFactory
+import com.intellij.codeHighlighting.TextEditorHighlightingPassFactoryRegistrar
+import com.intellij.codeHighlighting.TextEditorHighlightingPassRegistrar
 import com.intellij.openapi.editor.Editor
 import com.intellij.openapi.project.Project
 import com.intellij.psi.PsiFile
@@ -21,4 +25,4 @@ class RainbowIndentsPassFactory :
                 false
         )
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/listener/RainbowColorsSchemeListener.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/listener/RainbowColorsSchemeListener.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/listener/RainbowColorsSchemeListener.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/listener/RainbowColorsSchemeListener.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/BracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/BracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/BracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/BracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/DartBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/DartBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/DartBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/DartBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt
similarity index 58%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt
index aa72a86..98d09b4 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GoTemplateProvider.kt
@@ -1,6 +1,9 @@
 package com.github.izhangzhihao.rainbow.brackets.provider
 
-import com.goide.template.GoTemplateTypes.*
+import com.goide.template.GoTemplateTypes.LDOUBLE_BRACE
+import com.goide.template.GoTemplateTypes.LPAREN
+import com.goide.template.GoTemplateTypes.RDOUBLE_BRACE
+import com.goide.template.GoTemplateTypes.RPAREN
 import com.intellij.lang.BracePair
 
 class GoTemplateProvider : BracePairProvider {
@@ -8,4 +11,4 @@ class GoTemplateProvider : BracePairProvider {
             BracePair(LDOUBLE_BRACE, RDOUBLE_BRACE, true),
             BracePair(LPAREN, RPAREN, true)
     )
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GroovyBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GroovyBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GroovyBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/GroovyBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/KotlinBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/KotlinBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/KotlinBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/KotlinBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/PHPBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/PHPBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/PHPBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/PHPBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SHBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SHBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SHBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SHBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SqlBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SqlBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SqlBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/SqlBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/TSBracePairProvider.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/TSBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/TSBracePairProvider.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/TSBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt
similarity index 85%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt
index 8ee737c..7312d81 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowColorsPageFactory.kt
@@ -2,7 +2,12 @@ package com.github.izhangzhihao.rainbow.brackets.settings
 
 import com.github.izhangzhihao.rainbow.brackets.RainbowHighlighter
 import com.github.izhangzhihao.rainbow.brackets.settings.form.RainbowOptionsPanel
-import com.intellij.application.options.colors.*
+import com.intellij.application.options.colors.ColorAndFontOptions
+import com.intellij.application.options.colors.ColorAndFontPanelFactory
+import com.intellij.application.options.colors.ColorAndFontSettingsListener
+import com.intellij.application.options.colors.NewColorAndFontPanel
+import com.intellij.application.options.colors.PreviewPanel
+import com.intellij.application.options.colors.SchemesPanel
 import com.intellij.openapi.options.colors.AttributesDescriptor
 import com.intellij.openapi.options.colors.ColorAndFontDescriptorsProvider
 import com.intellij.openapi.options.colors.ColorDescriptor
@@ -52,4 +57,4 @@ class RainbowColorsPageFactory : ColorAndFontPanelFactory, ColorAndFontDescripto
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.form b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.form
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.form
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.form
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt
similarity index 96%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt
index 6b68deb..87512e3 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowOptionsPanel.kt
@@ -2,7 +2,11 @@ package com.github.izhangzhihao.rainbow.brackets.settings.form
 
 import com.github.izhangzhihao.rainbow.brackets.RainbowHighlighter
 import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
-import com.intellij.application.options.colors.*
+import com.intellij.application.options.colors.ColorAndFontOptions
+import com.intellij.application.options.colors.ColorAndFontSettingsListener
+import com.intellij.application.options.colors.OptionsPanel
+import com.intellij.application.options.colors.SchemesPanel
+import com.intellij.application.options.colors.TextAttributesDescription
 import com.intellij.ide.util.PropertiesComponent
 import com.intellij.ui.ColorPanel
 import com.intellij.ui.components.JBCheckBox
@@ -259,4 +263,4 @@ class RainbowOptionsPanel(
     }
 }
 
-private fun <E> List<E>.indexOfOrNull(idx: Int): E? = if (idx < this.size) this[idx] else null
\ No newline at end of file
+private fun <E> List<E>.indexOfOrNull(idx: Int): E? = if (idx < this.size) this[idx] else null
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Colors.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Colors.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Colors.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Colors.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Documents.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Documents.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Documents.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Documents.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/ErrorContext.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/ErrorContext.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/ErrorContext.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/ErrorContext.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Memoize.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Memoize.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Memoize.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Memoize.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PhysicalFileSystemUtils.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PhysicalFileSystemUtils.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PhysicalFileSystemUtils.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PhysicalFileSystemUtils.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PsiElements.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PsiElements.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PsiElements.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/PsiElements.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Strings.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Strings.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Strings.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/Strings.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/TextAttributesKey.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/TextAttributesKey.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/TextAttributesKey.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/util/TextAttributesKey.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/DefaultRainbowVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/DefaultRainbowVisitor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/DefaultRainbowVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/DefaultRainbowVisitor.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PugRainbowVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PugRainbowVisitor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PugRainbowVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PugRainbowVisitor.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt
similarity index 74%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt
index 1c5f92a..ac32712 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt
+++ b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/PythonRainbowVisitor.kt
@@ -5,7 +5,22 @@ import com.intellij.codeInsight.daemon.impl.HighlightVisitor
 import com.intellij.psi.PsiElement
 import com.intellij.psi.PsiFile
 import com.intellij.psi.impl.source.tree.LeafPsiElement
-import com.jetbrains.python.PyTokenTypes.*
+import com.jetbrains.python.PyTokenTypes.BREAK_KEYWORD
+import com.jetbrains.python.PyTokenTypes.CLASS_KEYWORD
+import com.jetbrains.python.PyTokenTypes.CONTINUE_KEYWORD
+import com.jetbrains.python.PyTokenTypes.DEF_KEYWORD
+import com.jetbrains.python.PyTokenTypes.ELIF_KEYWORD
+import com.jetbrains.python.PyTokenTypes.ELSE_KEYWORD
+import com.jetbrains.python.PyTokenTypes.EXCEPT_KEYWORD
+import com.jetbrains.python.PyTokenTypes.FINALLY_KEYWORD
+import com.jetbrains.python.PyTokenTypes.FOR_KEYWORD
+import com.jetbrains.python.PyTokenTypes.IF_KEYWORD
+import com.jetbrains.python.PyTokenTypes.RAISE_KEYWORD
+import com.jetbrains.python.PyTokenTypes.RETURN_KEYWORD
+import com.jetbrains.python.PyTokenTypes.TRY_KEYWORD
+import com.jetbrains.python.PyTokenTypes.WHILE_KEYWORD
+import com.jetbrains.python.PyTokenTypes.WITH_KEYWORD
+import com.jetbrains.python.PyTokenTypes.YIELD_KEYWORD
 import com.jetbrains.python.psi.PyStatement
 
 
@@ -84,4 +99,4 @@ class PythonRainbowVisitor : RainbowHighlightVisitor() {
             )
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/ReactJSXRainbowVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/ReactJSXRainbowVisitor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/ReactJSXRainbowVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/ReactJSXRainbowVisitor.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/XmlRainbowVisitor.kt b/idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/XmlRainbowVisitor.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/XmlRainbowVisitor.kt
rename to idea/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/XmlRainbowVisitor.kt
diff --git a/src/main/resources/META-INF/JSX.xml b/idea/src/main/resources/META-INF/JSX.xml
similarity index 100%
rename from src/main/resources/META-INF/JSX.xml
rename to idea/src/main/resources/META-INF/JSX.xml
diff --git a/src/main/resources/META-INF/dart-brackets.xml b/idea/src/main/resources/META-INF/dart-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/dart-brackets.xml
rename to idea/src/main/resources/META-INF/dart-brackets.xml
diff --git a/src/main/resources/META-INF/go-template-brackets.xml b/idea/src/main/resources/META-INF/go-template-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/go-template-brackets.xml
rename to idea/src/main/resources/META-INF/go-template-brackets.xml
diff --git a/src/main/resources/META-INF/groovy-brackets.xml b/idea/src/main/resources/META-INF/groovy-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/groovy-brackets.xml
rename to idea/src/main/resources/META-INF/groovy-brackets.xml
diff --git a/src/main/resources/META-INF/intellij-haskell-annotator.xml b/idea/src/main/resources/META-INF/intellij-haskell-annotator.xml
similarity index 100%
rename from src/main/resources/META-INF/intellij-haskell-annotator.xml
rename to idea/src/main/resources/META-INF/intellij-haskell-annotator.xml
diff --git a/src/main/resources/META-INF/jade-rainbow-visitor.xml b/idea/src/main/resources/META-INF/jade-rainbow-visitor.xml
similarity index 100%
rename from src/main/resources/META-INF/jade-rainbow-visitor.xml
rename to idea/src/main/resources/META-INF/jade-rainbow-visitor.xml
diff --git a/src/main/resources/META-INF/kotlin-brackets.xml b/idea/src/main/resources/META-INF/kotlin-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/kotlin-brackets.xml
rename to idea/src/main/resources/META-INF/kotlin-brackets.xml
diff --git a/src/main/resources/META-INF/php-brackets.xml b/idea/src/main/resources/META-INF/php-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/php-brackets.xml
rename to idea/src/main/resources/META-INF/php-brackets.xml
diff --git a/src/main/resources/META-INF/plugin.xml b/idea/src/main/resources/META-INF/plugin.xml
similarity index 99%
rename from src/main/resources/META-INF/plugin.xml
rename to idea/src/main/resources/META-INF/plugin.xml
index 525bd9d..6fa0fca 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/idea/src/main/resources/META-INF/plugin.xml
@@ -749,7 +749,6 @@
     <depends optional="true" config-file="JSX.xml">JavaScript</depends>
     <depends optional="true" config-file="dart-brackets.xml">Dart</depends>
     <depends optional="true" config-file="groovy-brackets.xml">org.intellij.groovy</depends>
-    <!--<depends optional="true" config-file="csharp-annotator.xml">com.intellij.modules.rider</depends>-->
     <depends optional="true" config-file="csharp-brackets.xml">com.intellij.modules.rider</depends>
     <depends optional="true" config-file="intellij-haskell-annotator.xml">intellij.haskell</depends>
     <depends optional="true" config-file="sql-brackets.xml">com.intellij.database</depends>
diff --git a/src/main/resources/META-INF/pluginIcon.svg b/idea/src/main/resources/META-INF/pluginIcon.svg
similarity index 100%
rename from src/main/resources/META-INF/pluginIcon.svg
rename to idea/src/main/resources/META-INF/pluginIcon.svg
diff --git a/src/main/resources/META-INF/python-brackets.xml b/idea/src/main/resources/META-INF/python-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/python-brackets.xml
rename to idea/src/main/resources/META-INF/python-brackets.xml
diff --git a/src/main/resources/META-INF/sh-brackets.xml b/idea/src/main/resources/META-INF/sh-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/sh-brackets.xml
rename to idea/src/main/resources/META-INF/sh-brackets.xml
diff --git a/src/main/resources/META-INF/sql-brackets.xml b/idea/src/main/resources/META-INF/sql-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/sql-brackets.xml
rename to idea/src/main/resources/META-INF/sql-brackets.xml
diff --git a/src/main/resources/colorSchemes/rainbow-color-default-darcula.xml b/idea/src/main/resources/colorSchemes/rainbow-color-default-darcula.xml
similarity index 100%
rename from src/main/resources/colorSchemes/rainbow-color-default-darcula.xml
rename to idea/src/main/resources/colorSchemes/rainbow-color-default-darcula.xml
diff --git a/src/main/resources/colorSchemes/rainbow-color-default.xml b/idea/src/main/resources/colorSchemes/rainbow-color-default.xml
similarity index 100%
rename from src/main/resources/colorSchemes/rainbow-color-default.xml
rename to idea/src/main/resources/colorSchemes/rainbow-color-default.xml
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowDartTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowDartTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowDartTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowDartTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowGroovyTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowGroovyTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowGroovyTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowGroovyTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaScriptTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaScriptTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaScriptTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaScriptTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowJavaTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowKotlinTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowKotlinTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowKotlinTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowKotlinTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowPHPTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowPHPTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowPHPTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowPHPTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowRubyTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowRubyTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowRubyTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowRubyTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowScalaTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowScalaTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowScalaTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowScalaTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowXMLTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowXMLTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowXMLTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowXMLTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenTest.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenTest.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenTest.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/RandomColorGenTest.kt
diff --git a/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/TestUtils.kt b/idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/TestUtils.kt
similarity index 100%
rename from src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/TestUtils.kt
rename to idea/src/test/kotlin/com/github/izhangzhihao/rainbow/brackets/TestUtils.kt
diff --git a/rider/.gitignore b/rider/.gitignore
new file mode 100644
index 0000000..84c048a
--- /dev/null
+++ b/rider/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/rider/build.gradle.kts b/rider/build.gradle.kts
new file mode 100644
index 0000000..065d814
--- /dev/null
+++ b/rider/build.gradle.kts
@@ -0,0 +1,11 @@
+plugins {
+	id("org.jetbrains.intellij")
+}
+
+intellij {
+	type.set("RD")
+}
+
+dependencies {
+	implementation(project(":idea"))
+}
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/CSharpBracePairProvider.kt b/rider/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/CSharpBracePairProvider.kt
similarity index 100%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/CSharpBracePairProvider.kt
rename to rider/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/provider/CSharpBracePairProvider.kt
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt b/rider/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt
similarity index 99%
rename from src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt
rename to rider/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt
index 8cb5723..145a0ff 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt
+++ b/rider/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/CSharpRainbowVisitor.kt
@@ -10,7 +10,6 @@ import com.intellij.psi.tree.IElementType
 import com.jetbrains.rider.ideaInterop.fileTypes.csharp.kotoparser.lexer.CSharpTokenType
 import com.jetbrains.rider.ideaInterop.fileTypes.csharp.psi.CSharpDummyNode
 
-
 class CSharpRainbowVisitor : RainbowHighlightVisitor() {
 
     override fun suitableForFile(file: PsiFile)
diff --git a/src/main/resources/META-INF/csharp-brackets.xml b/rider/src/main/resources/META-INF/csharp-brackets.xml
similarity index 100%
rename from src/main/resources/META-INF/csharp-brackets.xml
rename to rider/src/main/resources/META-INF/csharp-brackets.xml
diff --git a/settings.gradle.kts b/settings.gradle.kts
index b2ad59b..25ff8f1 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -5,4 +5,13 @@ pluginManagement {
 		maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
 		gradlePluginPortal()
 	}
+	
+	plugins {
+		kotlin("jvm") version "1.8.0"
+		id("org.jetbrains.intellij") version "1.15.0"
+	}
 }
+
+include("clion")
+include("idea")
+include("rider")
diff --git a/src/main/resources/META-INF/csharp-annotator.xml b/src/main/resources/META-INF/csharp-annotator.xml
deleted file mode 100644
index 76a26d7..0000000
--- a/src/main/resources/META-INF/csharp-annotator.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<idea-plugin>
-    <extensions defaultExtensionNs="com.intellij">
-        <annotator language="C#" implementationClass="com.github.izhangzhihao.rainbow.brackets.annotator.RainbowAnnotator"/>
-    </extensions>
-</idea-plugin>
\ No newline at end of file