diff --git a/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java index d7b136222c09..be7b6eed7e0e 100644 --- a/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPass.java @@ -15,6 +15,8 @@ */ package com.intellij.codeHighlighting; +import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; +import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.progress.ProgressIndicator; @@ -86,6 +88,10 @@ public abstract class TextEditorHighlightingPass implements HighlightingPass { public final void applyInformationToEditor() { if (!isValid()) return; // Document has changed. if (DumbService.getInstance(myProject).isDumb() && !(this instanceof DumbAware)) { + PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(getDocument()); + if (file != null) { + ((DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject)).getFileStatusMap().markFileUpToDate(getDocument(), file, getId()); + } return; } doApplyInformationToEditor(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java index 73bde6851d52..f5a3ea49abaf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java @@ -18,6 +18,7 @@ package com.intellij.codeInsight.daemon.impl; import com.intellij.codeHighlighting.HighlightingPass; import com.intellij.codeHighlighting.TextEditorHighlightingPass; +import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.concurrency.Job; import com.intellij.concurrency.JobImpl; import com.intellij.concurrency.JobUtil; @@ -40,6 +41,8 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.Consumer; import com.intellij.util.SmartList; @@ -102,7 +105,6 @@ public abstract class PassExecutorService implements Disposable { // null keys are ok Map> documentToEditors = new HashMap>(); Map> textPasses = new HashMap>(passesMap.size()); - final boolean dumb = DumbService.getInstance(myProject).isDumb(); for (Map.Entry entry : passesMap.entrySet()) { FileEditor fileEditor = entry.getKey(); HighlightingPass[] passes = entry.getValue(); @@ -115,9 +117,6 @@ public abstract class PassExecutorService implements Disposable { for (int i = 0; i < passes.length; i++) { final HighlightingPass pass = passes[i]; - if (dumb && !DumbService.isDumbAware(pass)) { - continue; - } TextEditorHighlightingPass textEditorHighlightingPass; if (pass instanceof TextEditorHighlightingPass) { @@ -375,10 +374,10 @@ public abstract class PassExecutorService implements Disposable { } } - protected void applyInformationToEditors(@NotNull final List fileEditors, - @NotNull final TextEditorHighlightingPass pass, - @NotNull final DaemonProgressIndicator updateProgress, - @NotNull final AtomicInteger threadsToStartCountdown) { + private void applyInformationToEditors(@NotNull final List fileEditors, + @NotNull final TextEditorHighlightingPass pass, + @NotNull final DaemonProgressIndicator updateProgress, + @NotNull final AtomicInteger threadsToStartCountdown) { final boolean testMode = ApplicationManager.getApplication().isUnitTestMode(); ApplicationManager.getApplication().invokeLater(new DumbAwareRunnable() { public void run() {