From 88c6ecbbdf6ab1ddf8f857dc147c1d801f52953e Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Wed, 8 May 2019 13:30:32 +0300 Subject: [PATCH] Minor: extract common parts --- .../core/script/ScriptDependenciesUpdater.kt | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt index 7836ce860ec..60c217cc915 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt @@ -110,12 +110,7 @@ class ScriptDependenciesUpdater( } private fun runScriptDependenciesUpdateIfNeeded(file: VirtualFile) { - if (file.fileType != KotlinFileType.INSTANCE || !file.isValid) return - val ktFile = PsiManager.getInstance(project).findFile(file) as? KtFile ?: return - - if (ApplicationManager.getApplication().isUnitTestMode && ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled == true) return - - if (!ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)) return + if (!shouldStartUpdate(file)) return updateDependencies(file) makeRootsChangeIfNeeded() @@ -124,9 +119,6 @@ class ScriptDependenciesUpdater( EditorFactory.getInstance().eventMulticaster.addDocumentListener(object : DocumentListener { override fun documentChanged(event: DocumentEvent) { - if (project.isDisposed) return - - if (ApplicationManager.getApplication().isUnitTestMode && ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled == true) return val document = event.document val file = FileDocumentManager.getInstance().getFile(document)?.takeIf { it.isInLocalFileSystem } ?: return @@ -135,15 +127,13 @@ class ScriptDependenciesUpdater( return } + if (!shouldStartUpdate(file)) return + // only update dependencies for scripts that were touched recently if (cache[file] == null) { return } - val ktFile = PsiManager.getInstance(project).findFile(file) as? KtFile ?: return - - if (!ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)) return - scriptsQueue.cancelAllRequests() scriptsQueue.addRequest( @@ -159,6 +149,22 @@ class ScriptDependenciesUpdater( }, project.messageBus.connect()) } + private fun shouldStartUpdate(file: VirtualFile): Boolean { + if (project.isDisposed || !file.isValid || file.fileType != KotlinFileType.INSTANCE) { + return false + } + + if ( + ApplicationManager.getApplication().isUnitTestMode && + ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled == true + ) { + return false + } + + val ktFile = PsiManager.getInstance(project).findFile(file) as? KtFile ?: return false + return ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true) + } + private fun areDependenciesCached(file: VirtualFile): Boolean { return cache[file] != null || file.scriptDependencies != null }