gradle.kts: update notifications when scripting support was changed
This commit is contained in:
+1
-1
@@ -62,7 +62,7 @@ object LoadScriptConfigurationNotificationFactory {
|
||||
if (project.isDisposed) return@invokeLater
|
||||
|
||||
val fileEditorManager = FileEditorManager.getInstance(project)
|
||||
(fileEditorManager.getSelectedEditor(this))?.let {
|
||||
fileEditorManager.getAllEditors(this).forEach {
|
||||
f(it, fileEditorManager)
|
||||
}
|
||||
}
|
||||
|
||||
+10
@@ -337,6 +337,16 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
|
||||
}
|
||||
}
|
||||
|
||||
fun ensureNotificationsRemoved(file: VirtualFile) {
|
||||
if (cache.remove(file)) {
|
||||
saveReports(file, listOf())
|
||||
file.removeScriptDependenciesNotificationPanel(project)
|
||||
}
|
||||
|
||||
// this notification can be shown before something will be in cache
|
||||
LoadScriptConfigurationNotificationFactory.hideNotification(file, project)
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getInstance(project: Project) =
|
||||
(ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager).default
|
||||
|
||||
+1
@@ -30,6 +30,7 @@ interface ScriptConfigurationCache {
|
||||
|
||||
fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
||||
fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
||||
fun remove(file: VirtualFile): Boolean
|
||||
|
||||
fun allApplied(): List<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
|
||||
fun clear()
|
||||
|
||||
+3
@@ -33,6 +33,9 @@ open class ScriptConfigurationMemoryCache(
|
||||
memoryCache.put(file, old.copy(applied = configurationSnapshot))
|
||||
}
|
||||
|
||||
override fun remove(file: VirtualFile) =
|
||||
memoryCache.remove(file)
|
||||
|
||||
@Synchronized
|
||||
override fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot) {
|
||||
val old = memoryCache[file] ?: ScriptConfigurationState()
|
||||
|
||||
+9
-2
@@ -23,12 +23,14 @@ 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.ScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.core.util.EDT
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
@@ -233,7 +235,7 @@ class ScriptClassRootsUpdater(
|
||||
private fun updateHighlighting(project: Project, filter: (VirtualFile) -> Boolean) {
|
||||
if (!project.isOpen) return
|
||||
|
||||
val openFiles = FileEditorManager.getInstance(project).openFiles
|
||||
val openFiles = FileEditorManager.getInstance(project).allEditors.mapNotNull { it.file }
|
||||
val openedScripts = openFiles.filter { filter(it) }
|
||||
|
||||
if (openedScripts.isEmpty()) return
|
||||
@@ -243,7 +245,12 @@ class ScriptClassRootsUpdater(
|
||||
|
||||
openedScripts.forEach {
|
||||
PsiManager.getInstance(project).findFile(it)?.let { psiFile ->
|
||||
DaemonCodeAnalyzer.getInstance(project).restart(psiFile)
|
||||
if (psiFile is KtFile) {
|
||||
// start loading for files that previously was cached by custom scripting support
|
||||
ScriptConfigurationManager.getInstance(project).getConfiguration(psiFile)
|
||||
|
||||
DaemonCodeAnalyzer.getInstance(project).restart(psiFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ class MissingGradleScriptConfigurationNotificationProvider(private val project:
|
||||
wasNotImportedAfterCreation -> EditorNotificationPanel().apply {
|
||||
text(KotlinIdeaGradleBundle.message("notification.wasNotImportedAfterCreation.text"))
|
||||
createActionLabel(getMissingConfigurationActionText()) {
|
||||
linkProject(project)
|
||||
runPartialGradleImport(project)
|
||||
}
|
||||
}
|
||||
notEvaluatedInLastImport -> EditorNotificationPanel().apply {
|
||||
|
||||
+6
-1
@@ -19,6 +19,7 @@ import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport.Companion.EPN
|
||||
import org.jetbrains.kotlin.idea.core.script.ucache.ScriptClassRootsBuilder
|
||||
@@ -315,7 +316,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
|
||||
if (old is Imported && newRoot !is Imported) {
|
||||
removeData(old.pathPrefix)
|
||||
}
|
||||
if (old is Imported || newRoot is Imported) {
|
||||
if (old !is Legacy || newRoot !is Legacy) {
|
||||
updater.invalidateAndCommit()
|
||||
}
|
||||
|
||||
@@ -366,6 +367,10 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
|
||||
if (project.isDisposed) return@launch
|
||||
|
||||
openedScripts.forEach {
|
||||
if (isApplicable(it)) {
|
||||
DefaultScriptingSupport.getInstance(project).ensureNotificationsRemoved(it)
|
||||
}
|
||||
|
||||
if (restartAnalyzer) {
|
||||
// this required only for "pause" state
|
||||
val ktFile = PsiManager.getInstance(project).findFile(it)
|
||||
|
||||
Reference in New Issue
Block a user