diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java index 2952ec785a46..2a7d49230fae 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java @@ -4,6 +4,7 @@ package com.intellij.codeInsight.daemon.impl; import com.intellij.ProjectTopics; import com.intellij.codeHighlighting.Pass; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; +import com.intellij.codeInsight.daemon.LineMarkerProviders; import com.intellij.codeInsight.documentation.DocumentationManager; import com.intellij.codeInsight.folding.impl.FoldingUtil; import com.intellij.codeInsight.hint.TooltipController; @@ -21,7 +22,6 @@ import com.intellij.ide.plugins.PluginManagerCore; import com.intellij.ide.scratch.ScratchUtil; import com.intellij.ide.todo.TodoConfiguration; import com.intellij.lang.LanguageAnnotators; -import com.intellij.lang.annotation.Annotator; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.ex.AnActionListener; @@ -42,6 +42,7 @@ import com.intellij.openapi.editor.impl.EditorMouseHoverPopupControl; import com.intellij.openapi.editor.markup.MarkupModel; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.extensions.ExtensionPointAdapter; +import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.FileEditor; @@ -354,12 +355,8 @@ public final class DaemonListeners implements Disposable { } }); - LanguageAnnotators.EP_NAME.addExtensionPointListener(new ExtensionPointAdapter>() { - @Override - public void extensionListChanged() { - stopDaemonAndRestartAllFiles("annotators list changed"); - } - }, this); + restartOnExtensionChange(LanguageAnnotators.EP_NAME, "annotators list changed"); + restartOnExtensionChange(LineMarkerProviders.EP_NAME, "line marker providers list changed"); connection.subscribe(DynamicPluginListener.TOPIC, new DynamicPluginListener() { @Override @@ -369,6 +366,15 @@ public final class DaemonListeners implements Disposable { }); } + private > void restartOnExtensionChange(ExtensionPointName name, final String message) { + name.addExtensionPointListener(new ExtensionPointAdapter() { + @Override + public void extensionListChanged() { + stopDaemonAndRestartAllFiles(message); + } + }, this); + } + private boolean worthBothering(final Document document, Project project) { if (document == null) return true; if (project != null && project != myProject) return false; diff --git a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml index 600a187251bc..2fd612f3f103 100644 --- a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml @@ -749,7 +749,7 @@ - +