diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/ScriptingSupportHelper.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/ScriptingSupportHelper.kt deleted file mode 100644 index 35e1375c9ff..00000000000 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/ScriptingSupportHelper.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.core.script.configuration - -import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer -import com.intellij.openapi.fileEditor.FileEditorManager -import com.intellij.openapi.project.Project -import com.intellij.openapi.vfs.VirtualFile -import com.intellij.psi.PsiManager -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import org.jetbrains.kotlin.idea.core.util.EDT - -object ScriptingSupportHelper { - fun updateHighlighting(project: Project, filter: (VirtualFile) -> Boolean) { - if (!project.isOpen) return - - val openFiles = FileEditorManager.getInstance(project).openFiles - val openedScripts = openFiles.filter { filter(it) } - - if (openedScripts.isEmpty()) return - - GlobalScope.launch(EDT(project)) { - if (project.isDisposed) return@launch - - openedScripts.forEach { - PsiManager.getInstance(project).findFile(it)?.let { psiFile -> - DaemonCodeAnalyzer.getInstance(project).restart(psiFile) - } - } - } - } -} \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsUpdater.kt index 6e8d4c7d2ec..32abfdef22f 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsUpdater.kt @@ -5,8 +5,10 @@ package org.jetbrains.kotlin.idea.core.script.configuration.utils +import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.TransactionGuard +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressManager @@ -16,11 +18,14 @@ import com.intellij.openapi.roots.ex.ProjectRootManagerEx import com.intellij.openapi.util.EmptyRunnable import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElementFinder +import com.intellij.psi.PsiManager +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import org.jetbrains.kotlin.idea.core.script.KotlinScriptDependenciesClassFinder import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager -import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupportHelper import org.jetbrains.kotlin.idea.core.script.debug +import org.jetbrains.kotlin.idea.core.util.EDT import org.jetbrains.kotlin.idea.util.application.runWriteAction import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.locks.ReentrantLock @@ -122,7 +127,7 @@ class ScriptClassRootsUpdater( ScriptDependenciesModificationTracker.getInstance(project).incModificationCount() if (updates.updatedScripts.isNotEmpty()) { - ScriptingSupportHelper.updateHighlighting(project) { + updateHighlighting(project) { it.path in updates.updatedScripts } } @@ -154,4 +159,23 @@ class ScriptClassRootsUpdater( TransactionGuard.getInstance().submitTransactionLater(project, doNotifyRootsChanged) } } + + fun updateHighlighting(project: Project, filter: (VirtualFile) -> Boolean) { + if (!project.isOpen) return + + val openFiles = FileEditorManager.getInstance(project).openFiles + val openedScripts = openFiles.filter { filter(it) } + + if (openedScripts.isEmpty()) return + + GlobalScope.launch(EDT(project)) { + if (project.isDisposed) return@launch + + openedScripts.forEach { + PsiManager.getInstance(project).findFile(it)?.let { psiFile -> + DaemonCodeAnalyzer.getInstance(project).restart(psiFile) + } + } + } + } } \ No newline at end of file