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