Update notifications in script file when script reports are attached (KT-24705)
^KT-24705 Fixed
This commit is contained in:
@@ -16,15 +16,29 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.script
|
package org.jetbrains.kotlin.idea.core.script
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
|
import com.intellij.psi.PsiManager
|
||||||
|
import com.intellij.ui.EditorNotifications
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.script.ScriptReportSink
|
import org.jetbrains.kotlin.script.ScriptReportSink
|
||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
|
|
||||||
class IdeScriptReportSink : ScriptReportSink {
|
class IdeScriptReportSink(val project: Project) : ScriptReportSink {
|
||||||
override fun attachReports(scriptFile: VirtualFile, reports: List<ScriptReport>) {
|
override fun attachReports(scriptFile: VirtualFile, reports: List<ScriptReport>) {
|
||||||
// TODO: persist errors between launches?
|
// TODO: persist errors between launches?
|
||||||
scriptFile.putUserData(Reports, reports)
|
scriptFile.putUserData(Reports, reports)
|
||||||
|
|
||||||
|
runReadAction {
|
||||||
|
if (scriptFile.isValid) {
|
||||||
|
PsiManager.getInstance(project).findFile(scriptFile)?.let { psiFile ->
|
||||||
|
DaemonCodeAnalyzer.getInstance(project).restart(psiFile)
|
||||||
|
EditorNotifications.getInstance(project).updateNotifications(scriptFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object Reports : Key<List<ScriptReport>>("KOTLIN_SCRIPT_REPORTS")
|
object Reports : Key<List<ScriptReport>>("KOTLIN_SCRIPT_REPORTS")
|
||||||
|
|||||||
Reference in New Issue
Block a user