GradleLegacyScriptListener: call from GradleScriptListener
GradleScriptListener is called from VFS listener
This commit is contained in:
+24
-6
@@ -8,27 +8,45 @@ package org.jetbrains.kotlin.idea.scripting.gradle
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.listener.ScriptChangeListener
|
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
|
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||||
|
|
||||||
class GradleScriptListener(project: Project) : ScriptChangeListener(project) {
|
class GradleScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||||
|
// todo(gradle6): remove
|
||||||
|
private val legacy = GradleLegacyScriptListener(project)
|
||||||
|
private val buildRootsManager = GradleBuildRootsManager.getInstance(project)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// listen changes using VFS events, including gradle-configuration related files
|
// listen changes using VFS events, including gradle-configuration related files
|
||||||
addVfsListener(this)
|
addVfsListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fileChanged(filePath: String, ts: Long) =
|
fun fileChanged(filePath: String, ts: Long) =
|
||||||
GradleBuildRootsManager.getInstance(project).fileChanged(filePath, ts)
|
buildRootsManager.fileChanged(filePath, ts)
|
||||||
|
|
||||||
override fun isApplicable(vFile: VirtualFile) =
|
override fun isApplicable(vFile: VirtualFile) =
|
||||||
GradleBuildRootsManager.getInstance(project).isApplicable(vFile)
|
// todo(gradle6): replace with `isCustomScriptingSupport(vFile)`
|
||||||
|
legacy.isApplicable(vFile)
|
||||||
|
|
||||||
override fun editorActivated(vFile: VirtualFile) =
|
private fun isCustomScriptingSupport(vFile: VirtualFile) =
|
||||||
checkUpToDate(vFile)
|
buildRootsManager.isApplicable(vFile)
|
||||||
|
|
||||||
|
override fun editorActivated(vFile: VirtualFile) {
|
||||||
|
if (isCustomScriptingSupport(vFile)) {
|
||||||
|
checkUpToDate(vFile)
|
||||||
|
} else {
|
||||||
|
legacy.editorActivated(vFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun documentChanged(vFile: VirtualFile) {
|
override fun documentChanged(vFile: VirtualFile) {
|
||||||
fileChanged(vFile.path, System.currentTimeMillis())
|
fileChanged(vFile.path, System.currentTimeMillis())
|
||||||
checkUpToDate(vFile)
|
|
||||||
|
if (isCustomScriptingSupport(vFile)) {
|
||||||
|
checkUpToDate(vFile)
|
||||||
|
} else {
|
||||||
|
legacy.documentChanged(vFile)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkUpToDate(vFile: VirtualFile) {
|
private fun checkUpToDate(vFile: VirtualFile) {
|
||||||
|
|||||||
+11
-17
@@ -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.roots.GradleBuildRootsManager
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.useScriptConfigurationFromImportOnly
|
import org.jetbrains.kotlin.idea.scripting.gradle.useScriptConfigurationFromImportOnly
|
||||||
|
|
||||||
|
// called from GradleScriptListener
|
||||||
|
// todo(gradle6): remove
|
||||||
class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(project) {
|
class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||||
override fun isApplicable(vFile: VirtualFile): Boolean {
|
override fun isApplicable(vFile: VirtualFile) =
|
||||||
return isGradleKotlinScript(vFile)
|
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 (!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)
|
val file = getAnalyzableKtFileForScript(vFile)
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
// *.gradle.kts file was changed
|
// *.gradle.kts file was changed
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
|
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
|
||||||
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptListener"/>
|
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptListener"/>
|
||||||
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptListener"/>
|
|
||||||
|
|
||||||
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user