diff --git a/makefile/build.gradle.kts b/makefile/build.gradle.kts new file mode 100644 index 00000000000..b6cfca90acb --- /dev/null +++ b/makefile/build.gradle.kts @@ -0,0 +1,41 @@ +fun properties(key: String) = project.findProperty(key).toString() + +plugins { + // Java support + id("java") + // Kotlin support + id("org.jetbrains.kotlin.jvm") version "1.6.20" + // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin + id("org.jetbrains.intellij") version "1.5.2" + // gradle-grammar-kit-plugin - read more: https://github.com/JetBrains/gradle-grammar-kit-plugin + id("org.jetbrains.grammarkit") version "2021.2.2" +} + +group = properties("pluginGroup") +version = properties("pluginVersion") + +sourceSets["main"].java.srcDirs("src", "gen") +sourceSets["main"].resources.srcDir("resources") +sourceSets["test"].java.srcDirs("test") + +// Configure project's dependencies +repositories { + mavenCentral() +} + +dependencies { + implementation(kotlin("stdlib-jdk8")) +} + +// Configure gradle-intellij-plugin plugin. +// Read more: https://github.com/JetBrains/gradle-intellij-plugin +intellij { + pluginName.set(properties("pluginName")) + version.set(properties("platformVersion")) + type.set(properties("platformType")) + downloadSources.set(properties("platformDownloadSources").toBoolean()) + updateSinceUntilBuild.set(true) + + // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file. + plugins.set(properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty)) +} diff --git a/makefile/gradle.properties b/makefile/gradle.properties new file mode 100644 index 00000000000..30b6aa9c840 --- /dev/null +++ b/makefile/gradle.properties @@ -0,0 +1,22 @@ +# IntelliJ Platform Artifacts Repositories +# -> https://www.jetbrains.org/intellij/sdk/docs/reference_guide/intellij_artifacts.html + +pluginGroup = org.jetbrains +pluginName = Makefile +pluginVersion = 1.0-SNAPSHOT +pluginSinceBuild = 212 +pluginUntilBuild = 221.* +# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl +# See https://jb.gg/intellij-platform-builds-list for available build versions +pluginVerifierIdeVersions = 2022.1 + +platformType = IC +platformVersion = 2022.1 +platformDownloadSources = true +# Plugin Dependencies -> https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_dependencies.html +# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 +platformPlugins = terminal + +# Opt-out flag for bundling Kotlin standard library. +# See https://kotlinlang.org/docs/reference/using-gradle.html#dependency-on-the-standard-library for details. +kotlin.stdlib.default.dependency = false diff --git a/makefile/gradle/wrapper/gradle-wrapper.jar b/makefile/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000000..e708b1c023e Binary files /dev/null and b/makefile/gradle/wrapper/gradle-wrapper.jar differ diff --git a/makefile/gradle/wrapper/gradle-wrapper.properties b/makefile/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..92f06b50fd6 --- /dev/null +++ b/makefile/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/makefile/settings.gradle.kts b/makefile/settings.gradle.kts new file mode 100644 index 00000000000..54aff813441 --- /dev/null +++ b/makefile/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "makefile" diff --git a/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileCellRenderer.kt b/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileCellRenderer.kt index 650f085e111..847a366a215 100644 --- a/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileCellRenderer.kt +++ b/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileCellRenderer.kt @@ -6,11 +6,6 @@ import javax.swing.* class MakefileCellRenderer : ColoredTreeCellRenderer() { override fun customizeCellRenderer(tree: JTree, value: Any, selected: Boolean, expanded: Boolean, leaf: Boolean, row: Int, hasFocus: Boolean) { value as MakefileTreeNode - icon = value.icon - if (value is MakefileTargetNode && value.target.isSpecialTarget) { - append(value.name, SimpleTextAttributes.REGULAR_ITALIC_ATTRIBUTES) - } else { - append(value.name) - } + value.render(this) } } \ No newline at end of file diff --git a/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileFileNode.kt b/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileFileNode.kt index 23a04730e7e..07e668a0b19 100644 --- a/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileFileNode.kt +++ b/makefile/src/com/jetbrains/lang/makefile/toolWindow/MakefileFileNode.kt @@ -1,6 +1,8 @@ package com.jetbrains.lang.makefile.toolWindow import com.intellij.psi.* +import com.intellij.ui.ColoredTreeCellRenderer +import com.intellij.ui.SimpleTextAttributes import icons.MakefileIcons import java.util.* import java.util.Collections.* @@ -32,4 +34,9 @@ class MakefileFileNode(val psiFile: PsiFile, private val targets: List { override fun compare(a: MakefileTreeNode, b: MakefileTreeNode): Int = a.name.compareTo(b.name, ignoreCase = true) } + + protected open fun renderIcon(renderer: ColoredTreeCellRenderer) { + renderer.icon = this.icon + } + + protected open fun renderName(renderer: ColoredTreeCellRenderer) { + renderer.append(name, SimpleTextAttributes.REGULAR_ATTRIBUTES, true) + } + + open fun render(renderer: ColoredTreeCellRenderer) { + renderIcon(renderer) + renderName(renderer) + } } \ No newline at end of file diff --git a/makefile/test/com/jetbrains/lang/makefile/MakefileTestUtils.kt b/makefile/test/com/jetbrains/lang/makefile/MakefileTestUtils.kt index 9013abbf8f4..50a0c97adef 100644 --- a/makefile/test/com/jetbrains/lang/makefile/MakefileTestUtils.kt +++ b/makefile/test/com/jetbrains/lang/makefile/MakefileTestUtils.kt @@ -1,8 +1,16 @@ package com.jetbrains.lang.makefile import com.intellij.openapi.application.PathManager +import java.io.File /** * Test data directory */ -internal val BASE_TEST_DATA_PATH: String = PathManager.getHomePath() + "/contrib/makefile/testData" +internal val BASE_TEST_DATA_PATH: String = findTestDataPath() + +private fun findTestDataPath(): String { + val f = File("testData") + return if (f.exists()) { + f.absolutePath + } else PathManager.getHomePath() + "/contrib/makefile/testData" +}