GradleScriptListener: update lastModifiedFiles on document change
This commit is contained in:
+12
-13
@@ -17,22 +17,21 @@ class GradleScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||
addVfsListener(this)
|
||||
}
|
||||
|
||||
fun fileChanged(filePath: String, ts: Long) {
|
||||
// NOTE: this is required for legacy roots too
|
||||
val root = GradleBuildRootsManager.getInstance(project)
|
||||
.findScriptBuildRoot(filePath, searchNearestLegacy = false)
|
||||
?.root as? GradleBuildRoot.Linked
|
||||
fun fileChanged(filePath: String, ts: Long) =
|
||||
GradleBuildRootsManager.getInstance(project).fileChanged(filePath, ts)
|
||||
|
||||
root?.fileChanged(filePath, ts)
|
||||
override fun isApplicable(vFile: VirtualFile) =
|
||||
GradleBuildRootsManager.getInstance(project).isApplicable(vFile)
|
||||
|
||||
override fun editorActivated(vFile: VirtualFile) =
|
||||
checkUpToDate(vFile)
|
||||
|
||||
override fun documentChanged(vFile: VirtualFile) {
|
||||
fileChanged(vFile.path, System.currentTimeMillis())
|
||||
checkUpToDate(vFile)
|
||||
}
|
||||
|
||||
override fun isApplicable(vFile: VirtualFile) = GradleBuildRootsManager.getInstance(project).isApplicable(vFile)
|
||||
|
||||
override fun editorActivated(vFile: VirtualFile) = checkUpToDate(vFile)
|
||||
|
||||
override fun documentChanged(vFile: VirtualFile) = checkUpToDate(vFile)
|
||||
|
||||
fun checkUpToDate(vFile: VirtualFile) {
|
||||
private fun checkUpToDate(vFile: VirtualFile) {
|
||||
val upToDate = GradleBuildRootsManager.getInstance(project)
|
||||
.getScriptInfo(vFile)?.model?.inputs?.isUpToDate(project, vFile) ?: return
|
||||
|
||||
|
||||
+6
-2
@@ -5,11 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.scripting.gradle.legacy
|
||||
|
||||
import com.intellij.openapi.components.service
|
||||
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.*
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.isGradleKotlinScript
|
||||
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
|
||||
|
||||
class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||
override fun isApplicable(vFile: VirtualFile): Boolean {
|
||||
@@ -30,6 +32,8 @@ class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(projec
|
||||
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
|
||||
|
||||
+7
-1
@@ -31,6 +31,7 @@ import org.jetbrains.plugins.gradle.settings.*
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import java.io.File
|
||||
import java.nio.file.Paths
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
/**
|
||||
@@ -118,7 +119,7 @@ class GradleBuildRootsManager(val project: Project) : ScriptingSupport.Provider(
|
||||
fun findScriptBuildRoot(gradleKtsFile: VirtualFile): ScriptUnderRoot? =
|
||||
findScriptBuildRoot(gradleKtsFile.path)
|
||||
|
||||
fun findScriptBuildRoot(filePath: String, searchNearestLegacy: Boolean = true): ScriptUnderRoot? {
|
||||
private fun findScriptBuildRoot(filePath: String, searchNearestLegacy: Boolean = true): ScriptUnderRoot? {
|
||||
if (!filePath.endsWith(".gradle.kts")) return null
|
||||
|
||||
val scriptInfo = getScriptInfo(filePath)
|
||||
@@ -151,6 +152,11 @@ class GradleBuildRootsManager(val project: Project) : ScriptingSupport.Provider(
|
||||
fun getBuildRoot(gradleWorkingDir: String) =
|
||||
roots.getBuildRoot(gradleWorkingDir)
|
||||
|
||||
fun fileChanged(filePath: String, ts: Long = System.currentTimeMillis()) {
|
||||
val root = findScriptBuildRoot(filePath, searchNearestLegacy = false)?.root as? GradleBuildRoot.Linked
|
||||
root?.fileChanged(filePath, ts)
|
||||
}
|
||||
|
||||
fun markImportingInProgress(workingDir: String, inProgress: Boolean = true) {
|
||||
actualizeBuildRoot(workingDir)?.importing = inProgress
|
||||
updateNotifications(workingDir)
|
||||
|
||||
Reference in New Issue
Block a user