Implement Gradle specific behavior for script configuration update logic

We have plans to extract separate implementation for Gradle scripts, but it
would be better to support something at this point.
For now, we have custom listener, loader and up-to-date check for default configuration manager:
- listener will do forced reload on editor activation, even it is already up-to-date
this is required for Gradle scripts, since it's classpath may depend on other files (`.properties` for example)
- loader will force save failures before running loader. also it will skip loading if
`kotlin.gradle.scripts.useIdeaProjectImport` registry key is enabled
- loader will return inputs with overridden up-to-date checks: file will be considered
out-of-date only when `buildscript` or `plugins` blocks are changed
This commit is contained in:
Sergey Rostov
2019-10-31 11:17:14 +03:00
committed by Natalia Selezneva
parent 548e8e27dc
commit 19d35d7f27
3 changed files with 152 additions and 9 deletions
+8 -4
View File
@@ -78,11 +78,11 @@
implementation="org.jetbrains.kotlin.idea.script.ScriptTemplatesFromDependenciesProvider"/>
<scriptDefinitionContributor id="StandardScriptDefinitionContributor"
order="last"
implementation="org.jetbrains.kotlin.idea.core.script.StandardScriptDefinitionContributor"/>
order="last"
implementation="org.jetbrains.kotlin.idea.core.script.StandardScriptDefinitionContributor"/>
<scriptDefinitionContributor id="ConsoleScriptDefinitionContributor"
implementation="org.jetbrains.kotlin.console.ConsoleScriptDefinitionContributor"/>
implementation="org.jetbrains.kotlin.console.ConsoleScriptDefinitionContributor"/>
<idePlatformKindResolution implementation="org.jetbrains.kotlin.caches.resolve.JvmPlatformKindResolution"/>
<idePlatformKindResolution implementation="org.jetbrains.kotlin.caches.resolve.JsPlatformKindResolution"/>
@@ -93,7 +93,7 @@
<j2kConverterExtension implementation="org.jetbrains.kotlin.idea.j2k.OldJ2kConverterExtension"/>
<j2kConverterExtension implementation="org.jetbrains.kotlin.nj2k.NewJ2kConverterExtension"/>
</extensions>
</extensions>
<extensions defaultExtensionNs="com.intellij">
<registryKey key="kotlin.mpp.editTargetPlatformEnabled"
@@ -104,6 +104,10 @@
description="Add all transitive dependencies on MPP modules when Android project is imported"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.gradle.scripts.useIdeaProjectImport"
description="Use IDEA project import mechanics to load Kotlin Gradle scripts configuration"
defaultValue="false"
restartRequired="false"/>
<fileEditorProvider implementation="org.jetbrains.kotlin.idea.scratch.ui.KtScratchFileEditorProvider"/>
</extensions>