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
|
if (project.isDisposed) return@invokeLater
|
||||||
|
|
||||||
val fileEditorManager = FileEditorManager.getInstance(project)
|
val fileEditorManager = FileEditorManager.getInstance(project)
|
||||||
(fileEditorManager.getSelectedEditor(this))?.let {
|
fileEditorManager.getAllEditors(this).forEach {
|
||||||
f(it, fileEditorManager)
|
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 {
|
companion object {
|
||||||
fun getInstance(project: Project) =
|
fun getInstance(project: Project) =
|
||||||
(ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager).default
|
(ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager).default
|
||||||
|
|||||||
+1
@@ -30,6 +30,7 @@ interface ScriptConfigurationCache {
|
|||||||
|
|
||||||
fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
||||||
fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
|
||||||
|
fun remove(file: VirtualFile): Boolean
|
||||||
|
|
||||||
fun allApplied(): List<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
|
fun allApplied(): List<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
|
||||||
fun clear()
|
fun clear()
|
||||||
|
|||||||
+3
@@ -33,6 +33,9 @@ open class ScriptConfigurationMemoryCache(
|
|||||||
memoryCache.put(file, old.copy(applied = configurationSnapshot))
|
memoryCache.put(file, old.copy(applied = configurationSnapshot))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun remove(file: VirtualFile) =
|
||||||
|
memoryCache.remove(file)
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot) {
|
override fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot) {
|
||||||
val old = memoryCache[file] ?: ScriptConfigurationState()
|
val old = memoryCache[file] ?: ScriptConfigurationState()
|
||||||
|
|||||||
+9
-2
@@ -23,12 +23,14 @@ import com.intellij.psi.PsiManager
|
|||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.jetbrains.kotlin.idea.core.script.KotlinScriptDependenciesClassFinder
|
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.ScriptDependenciesModificationTracker
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager
|
import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.debug
|
import org.jetbrains.kotlin.idea.core.script.debug
|
||||||
import org.jetbrains.kotlin.idea.core.util.EDT
|
import org.jetbrains.kotlin.idea.core.util.EDT
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
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.AtomicInteger
|
||||||
import java.util.concurrent.atomic.AtomicReference
|
import java.util.concurrent.atomic.AtomicReference
|
||||||
|
|
||||||
@@ -233,7 +235,7 @@ class ScriptClassRootsUpdater(
|
|||||||
private fun updateHighlighting(project: Project, filter: (VirtualFile) -> Boolean) {
|
private fun updateHighlighting(project: Project, filter: (VirtualFile) -> Boolean) {
|
||||||
if (!project.isOpen) return
|
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) }
|
val openedScripts = openFiles.filter { filter(it) }
|
||||||
|
|
||||||
if (openedScripts.isEmpty()) return
|
if (openedScripts.isEmpty()) return
|
||||||
@@ -243,7 +245,12 @@ class ScriptClassRootsUpdater(
|
|||||||
|
|
||||||
openedScripts.forEach {
|
openedScripts.forEach {
|
||||||
PsiManager.getInstance(project).findFile(it)?.let { psiFile ->
|
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 {
|
wasNotImportedAfterCreation -> EditorNotificationPanel().apply {
|
||||||
text(KotlinIdeaGradleBundle.message("notification.wasNotImportedAfterCreation.text"))
|
text(KotlinIdeaGradleBundle.message("notification.wasNotImportedAfterCreation.text"))
|
||||||
createActionLabel(getMissingConfigurationActionText()) {
|
createActionLabel(getMissingConfigurationActionText()) {
|
||||||
linkProject(project)
|
runPartialGradleImport(project)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
notEvaluatedInLastImport -> EditorNotificationPanel().apply {
|
notEvaluatedInLastImport -> EditorNotificationPanel().apply {
|
||||||
|
|||||||
+6
-1
@@ -19,6 +19,7 @@ import kotlinx.coroutines.GlobalScope
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
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.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
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport.Companion.EPN
|
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport.Companion.EPN
|
||||||
import org.jetbrains.kotlin.idea.core.script.ucache.ScriptClassRootsBuilder
|
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) {
|
if (old is Imported && newRoot !is Imported) {
|
||||||
removeData(old.pathPrefix)
|
removeData(old.pathPrefix)
|
||||||
}
|
}
|
||||||
if (old is Imported || newRoot is Imported) {
|
if (old !is Legacy || newRoot !is Legacy) {
|
||||||
updater.invalidateAndCommit()
|
updater.invalidateAndCommit()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,6 +367,10 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
|
|||||||
if (project.isDisposed) return@launch
|
if (project.isDisposed) return@launch
|
||||||
|
|
||||||
openedScripts.forEach {
|
openedScripts.forEach {
|
||||||
|
if (isApplicable(it)) {
|
||||||
|
DefaultScriptingSupport.getInstance(project).ensureNotificationsRemoved(it)
|
||||||
|
}
|
||||||
|
|
||||||
if (restartAnalyzer) {
|
if (restartAnalyzer) {
|
||||||
// this required only for "pause" state
|
// this required only for "pause" state
|
||||||
val ktFile = PsiManager.getInstance(project).findFile(it)
|
val ktFile = PsiManager.getInstance(project).findFile(it)
|
||||||
|
|||||||
Reference in New Issue
Block a user