diff --git a/idea/idea-gradle/res/messages/KotlinIdeaGradleBundle.properties b/idea/idea-gradle/res/messages/KotlinIdeaGradleBundle.properties
index 6ef930f986e..c97b0dd59ba 100644
--- a/idea/idea-gradle/res/messages/KotlinIdeaGradleBundle.properties
+++ b/idea/idea-gradle/res/messages/KotlinIdeaGradleBundle.properties
@@ -1,3 +1,4 @@
+gradle.script.configurations.importing.feature=Load gradle kotlin scripts configuration from project importing
notification.outsideAnything.text=Code insight unavailable (related Gradle project not linked)
notification.outsideAnything.linkAction=Link Gradle project
notification.wasNotImportedAfterCreation.text=Code insight unavailable (Gradle project not imported)
diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationsImportingFeature.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationsImportingFeature.kt
new file mode 100644
index 00000000000..a0c4f3bdc6b
--- /dev/null
+++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationsImportingFeature.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.idea.scripting.gradle
+
+import com.intellij.openapi.project.ProjectManager
+import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
+import org.jetbrains.kotlin.idea.configuration.ExperimentalFeature
+import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
+
+object GradleScriptConfigurationsImportingFeature : ExperimentalFeature() {
+ override val title: String
+ get() = KotlinIdeaGradleBundle.message("gradle.script.configurations.importing.feature")
+
+ override fun shouldBeShown(): Boolean = true
+
+ override var isEnabled: Boolean = true
+ set(value) {
+ if (field != value) {
+ field = value
+ ProjectManager.getInstance().openProjects.forEach {
+ GradleBuildRootsManager.getInstance(it).enabled = field
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt
index 2d2441e477a..fe8545fe848 100644
--- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt
+++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt
@@ -67,6 +67,16 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
private val updater
get() = manager.updater
+ var enabled: Boolean = true
+ set(value) {
+ if (value != field) {
+ field = value
+ roots.list.toList().forEach {
+ reloadBuildRoot(it.pathPrefix)
+ }
+ }
+ }
+
////////////
/// ScriptingSupport.Provider implementation:
@@ -275,7 +285,8 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
}
private fun loadLinkedRoot(settings: GradleProjectSettings) =
- tryLoadFromFsCache(settings) ?: createOtherLinkedRoot(settings)
+ if (!enabled) Legacy(settings)
+ else tryLoadFromFsCache(settings) ?: createOtherLinkedRoot(settings)
private fun tryLoadFromFsCache(settings: GradleProjectSettings) =
tryCreateImportedRoot(settings.externalProjectPath) {
diff --git a/idea/resources/META-INF/gradle.xml b/idea/resources/META-INF/gradle.xml
index 0fe0e582dd8..23325075261 100644
--- a/idea/resources/META-INF/gradle.xml
+++ b/idea/resources/META-INF/gradle.xml
@@ -10,6 +10,7 @@
+
diff --git a/idea/resources/META-INF/gradle.xml.201 b/idea/resources/META-INF/gradle.xml.201
index f9a603cdf30..bc1cec9a718 100644
--- a/idea/resources/META-INF/gradle.xml.201
+++ b/idea/resources/META-INF/gradle.xml.201
@@ -10,6 +10,7 @@
+