From b5342eb8ef9026e297836e16017509b77ebd34d3 Mon Sep 17 00:00:00 2001 From: Tomasz Pasternak Date: Wed, 4 Dec 2024 12:31:12 +0100 Subject: [PATCH] fix(qsync): Uncaught exception in QuerySyncHighlightingResetListener --- .../QuerySyncHighlightingResetListener.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/base/src/com/google/idea/blaze/base/qsync/QuerySyncHighlightingResetListener.java b/base/src/com/google/idea/blaze/base/qsync/QuerySyncHighlightingResetListener.java index 930d4af12ad..5d782cc5ef9 100644 --- a/base/src/com/google/idea/blaze/base/qsync/QuerySyncHighlightingResetListener.java +++ b/base/src/com/google/idea/blaze/base/qsync/QuerySyncHighlightingResetListener.java @@ -5,6 +5,8 @@ import com.google.idea.blaze.qsync.QuerySyncProjectSnapshot; import com.intellij.codeInsight.daemon.impl.analysis.FileHighlightingSettingListener; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingSettingsPerFile; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -21,13 +23,18 @@ public class QuerySyncHighlightingResetListener implements QuerySyncProjectListe @Override public void onNewProjectSnapshot(Context context, QuerySyncProjectSnapshot instance) { for (VirtualFile virtualFile : FileEditorManager.getInstance(project).getOpenFiles()) { - var psiFile = PsiManager.getInstance(project).findFile(virtualFile); - if (psiFile != null) { - var newHighlighting = HighlightingSettingsPerFile.getInstance(project).getHighlightingSettingForRoot(psiFile); - project.getMessageBus() - .syncPublisher(FileHighlightingSettingListener.SETTING_CHANGE) - .settingChanged(psiFile, newHighlighting); - } + ApplicationManager.getApplication().invokeLater(() -> WriteAction.run(() -> { + var psiFile = PsiManager.getInstance(project).findFile(virtualFile); + if (psiFile != null) { + var newHighlighting = HighlightingSettingsPerFile + .getInstance(project) + .getHighlightingSettingForRoot(psiFile); + project.getMessageBus() + .syncPublisher(FileHighlightingSettingListener.SETTING_CHANGE) + .settingChanged(psiFile, newHighlighting); + } + } + )); } }