1
0
mirror of https://github.com/chylex/IntelliJ-Rainbow-Brackets.git synced 2025-04-12 06:15:42 +02:00

Refactor support for CLion and Rider

This commit is contained in:
chylex 2023-10-15 01:39:51 +02:00
parent c9b3a33797
commit 405cbd0237
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548
92 changed files with 287 additions and 110 deletions
.idea/runConfigurations
build.gradle.kts
clion
.gitignorebuild.gradle.kts
src/main
kotlin/com/github/izhangzhihao/rainbow/brackets/provider
resources/META-INF
idea
.gitignorebuild.gradle.kts
src
main
test/kotlin/com/github/izhangzhihao/rainbow/brackets
rider
.gitignorebuild.gradle.kts
src/main
kotlin/com/github/izhangzhihao/rainbow/brackets
resources/META-INF
settings.gradle.kts
src/main/resources/META-INF

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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")
}

1
clion/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build/

16
clion/build.gradle.kts Normal file
View File

@ -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"))
}

1
idea/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build/

33
idea/build.gradle.kts Normal file
View File

@ -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
}

View File

@ -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 {

View File

@ -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
}
}
}

View File

@ -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
}
}
}

View File

@ -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 {
}
}
}
}

View File

@ -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) }
}
}
}

View File

@ -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

View File

@ -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
)
}
}
}

View File

@ -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)
)
}
}

View File

@ -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
}
}
}
}

View File

@ -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
private fun <E> List<E>.indexOfOrNull(idx: Int): E? = if (idx < this.size) this[idx] else null

View File

@ -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() {
)
}
}
}
}

View File

@ -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>

View File

Before

(image error) Size: 4.0 KiB

After

(image error) Size: 4.0 KiB

1
rider/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build/

11
rider/build.gradle.kts Normal file
View File

@ -0,0 +1,11 @@
plugins {
id("org.jetbrains.intellij")
}
intellij {
type.set("RD")
}
dependencies {
implementation(project(":idea"))
}

View File

@ -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)

View File

@ -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")

View File

@ -1,5 +0,0 @@
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<annotator language="C#" implementationClass="com.github.izhangzhihao.rainbow.brackets.annotator.RainbowAnnotator"/>
</extensions>
</idea-plugin>