diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListener.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListener.kt index 7369df8e06b..e2f4babac91 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListener.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListener.kt @@ -8,27 +8,45 @@ package org.jetbrains.kotlin.idea.scripting.gradle import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.core.script.configuration.listener.ScriptChangeListener -import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot +import org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptListener import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager class GradleScriptListener(project: Project) : ScriptChangeListener(project) { + // todo(gradle6): remove + private val legacy = GradleLegacyScriptListener(project) + private val buildRootsManager = GradleBuildRootsManager.getInstance(project) + init { // listen changes using VFS events, including gradle-configuration related files addVfsListener(this) } fun fileChanged(filePath: String, ts: Long) = - GradleBuildRootsManager.getInstance(project).fileChanged(filePath, ts) + buildRootsManager.fileChanged(filePath, ts) override fun isApplicable(vFile: VirtualFile) = - GradleBuildRootsManager.getInstance(project).isApplicable(vFile) + // todo(gradle6): replace with `isCustomScriptingSupport(vFile)` + legacy.isApplicable(vFile) - override fun editorActivated(vFile: VirtualFile) = - checkUpToDate(vFile) + private fun isCustomScriptingSupport(vFile: VirtualFile) = + buildRootsManager.isApplicable(vFile) + + override fun editorActivated(vFile: VirtualFile) { + if (isCustomScriptingSupport(vFile)) { + checkUpToDate(vFile) + } else { + legacy.editorActivated(vFile) + } + } override fun documentChanged(vFile: VirtualFile) { fileChanged(vFile.path, System.currentTimeMillis()) - checkUpToDate(vFile) + + if (isCustomScriptingSupport(vFile)) { + checkUpToDate(vFile) + } else { + legacy.documentChanged(vFile) + } } private fun checkUpToDate(vFile: VirtualFile) { diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/legacy/GradleLegacyScriptListener.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/legacy/GradleLegacyScriptListener.kt index c7b5b6a195e..3573026a1c1 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/legacy/GradleLegacyScriptListener.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/legacy/GradleLegacyScriptListener.kt @@ -13,27 +13,21 @@ import org.jetbrains.kotlin.idea.scripting.gradle.isInAffectedGradleProjectFiles import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager import org.jetbrains.kotlin.idea.scripting.gradle.useScriptConfigurationFromImportOnly +// called from GradleScriptListener +// todo(gradle6): remove class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(project) { - override fun isApplicable(vFile: VirtualFile): Boolean { - return isGradleKotlinScript(vFile) - } + override fun isApplicable(vFile: VirtualFile) = + isGradleKotlinScript(vFile) - override fun editorActivated(vFile: VirtualFile) { + override fun editorActivated(vFile: VirtualFile) = + checkUpToDate(vFile) + + override fun documentChanged(vFile: VirtualFile) = + checkUpToDate(vFile) + + private fun checkUpToDate(vFile: VirtualFile) { if (!isInAffectedGradleProjectFiles(project, vFile.path)) return - if (useScriptConfigurationFromImportOnly()) { - // do nothing - } else { - val file = getAnalyzableKtFileForScript(vFile) ?: return - default.suggestToUpdateConfigurationIfOutOfDate(file) - } - } - - override fun documentChanged(vFile: VirtualFile) { - if (!isInAffectedGradleProjectFiles(project, vFile.path)) return - - GradleBuildRootsManager.getInstance(project).fileChanged(vFile.path) - val file = getAnalyzableKtFileForScript(vFile) if (file != null) { // *.gradle.kts file was changed diff --git a/idea/resources/META-INF/gradle.xml b/idea/resources/META-INF/gradle.xml index 80350d2b6f8..54fd09b2bf5 100644 --- a/idea/resources/META-INF/gradle.xml +++ b/idea/resources/META-INF/gradle.xml @@ -14,7 +14,6 @@ -