From 9f1bd123f977ce4955e43fd7cd3face4e90f2319 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 11 Sep 2015 15:00:18 +0200 Subject: [PATCH] UI to enable/disable compiler daemon --- .../kotlin/idea/PluginStartupComponent.java | 5 +++++ .../KotlinBuildProcessParametersProvider.kt | 3 +++ .../configuration/KotlinCompilerConfigurableTab.form | 12 ++++++++++-- .../configuration/KotlinCompilerConfigurableTab.java | 10 ++++++++++ .../configuration/KotlinCompilerWorkspaceSettings.kt | 7 ++++--- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java b/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java index 6755cf13657..9335ba9202f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java +++ b/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathMacros; import com.intellij.openapi.components.ApplicationComponent; import org.jetbrains.annotations.NotNull; @@ -31,6 +32,10 @@ import java.io.IOException; public class PluginStartupComponent implements ApplicationComponent { private static final String KOTLIN_BUNDLED = "KOTLIN_BUNDLED"; + public static PluginStartupComponent getInstance() { + return ApplicationManager.getApplication().getComponent(PluginStartupComponent.class); + } + @Override @NotNull public String getComponentName() { diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt index 4a8bf1ee388..b69a2deea88 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt @@ -27,6 +27,9 @@ public class KotlinBuildProcessParametersProvider(private val compilerWorkspaceS if (!compilerWorkspaceSettings.incrementalCompilationEnabled) { res.add("-Dkotlin.incremental.compilation=false") } + if (compilerWorkspaceSettings.enableDaemon) { + res.add("-Dkotlin.daemon.enabled") + } kotlinPluginStartupComponent.aliveFlagPath.let { if (!it.isBlank()) { // TODO: consider taking the property name from compiler/rmi-interface (check whether dependency will be not too heavy) diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form index 89df33344a4..e0ff81c3893 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -48,6 +48,14 @@ + + + + + + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index ac04bc69d66..5a97ea13256 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments; import org.jetbrains.kotlin.config.CompilerSettings; import org.jetbrains.kotlin.idea.JetBundle; +import org.jetbrains.kotlin.idea.PluginStartupComponent; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -58,6 +59,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co private JLabel labelForOutputDirectory; private JTextField outputDirectory; private JCheckBox copyRuntimeFilesCheckBox; + private JCheckBox keepAliveCheckBox; public KotlinCompilerConfigurableTab(ConfigurableEP ep) { this.extPoint = ep; @@ -109,6 +111,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co ComparingUtils.isModified(outputDirectory, compilerSettings.getOutputDirectoryForJsLibraryFiles()) || ComparingUtils.isModified(incrementalCompilationCheckBox, compilerWorkspaceSettings.getIncrementalCompilationEnabled()) || + ComparingUtils.isModified(keepAliveCheckBox, compilerWorkspaceSettings.getEnableDaemon()) || ComparingUtils.isModified(generateSourceMapsCheckBox, k2jsCompilerArguments.sourceMap) || isModified(outputPrefixFile, k2jsCompilerArguments.outputPrefix) || @@ -124,6 +127,12 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co compilerWorkspaceSettings.setIncrementalCompilationEnabled(incrementalCompilationCheckBox.isSelected()); + boolean oldEnableDaemon = compilerWorkspaceSettings.getEnableDaemon(); + compilerWorkspaceSettings.setEnableDaemon(keepAliveCheckBox.isSelected()); + if (keepAliveCheckBox.isSelected() != oldEnableDaemon) { + PluginStartupComponent.getInstance().resetAliveFlag(); + } + k2jsCompilerArguments.sourceMap = generateSourceMapsCheckBox.isSelected(); k2jsCompilerArguments.outputPrefix = StringUtil.nullize(outputPrefixFile.getText(), true); k2jsCompilerArguments.outputPostfix = StringUtil.nullize(outputPostfixFile.getText(), true); @@ -137,6 +146,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co outputDirectory.setText(compilerSettings.getOutputDirectoryForJsLibraryFiles()); incrementalCompilationCheckBox.setSelected(compilerWorkspaceSettings.getIncrementalCompilationEnabled()); + keepAliveCheckBox.setSelected(compilerWorkspaceSettings.getEnableDaemon()); generateSourceMapsCheckBox.setSelected(k2jsCompilerArguments.sourceMap); outputPrefixFile.setText(k2jsCompilerArguments.outputPrefix); diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerWorkspaceSettings.kt b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerWorkspaceSettings.kt index d0b386954cd..4451c559a12 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerWorkspaceSettings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerWorkspaceSettings.kt @@ -17,12 +17,12 @@ package org.jetbrains.kotlin.idea.compiler.configuration import com.intellij.openapi.components.PersistentStateComponent -import com.intellij.util.xmlb.XmlSerializerUtil -import com.intellij.openapi.components.StoragePathMacros import com.intellij.openapi.components.State import com.intellij.openapi.components.Storage +import com.intellij.openapi.components.StoragePathMacros +import com.intellij.util.xmlb.XmlSerializerUtil -State( +@State( name = "KotlinCompilerWorkspaceSettings", storages = arrayOf( Storage(file = StoragePathMacros.WORKSPACE_FILE) @@ -30,6 +30,7 @@ State( ) public class KotlinCompilerWorkspaceSettings() : PersistentStateComponent { public var incrementalCompilationEnabled: Boolean = true + public var enableDaemon: Boolean = false override fun getState(): KotlinCompilerWorkspaceSettings { return this