mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Support dynamic unloading for LineMarkerProvider
GitOrigin-RevId: 8bd53d5ba50d1483533d618f0a9ce1e5ee3d97f5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
61e9e9340a
commit
e28222ad16
@@ -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<KeyedLazyInstance<Annotator>>() {
|
||||
@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 <T, U extends KeyedLazyInstance<T>> void restartOnExtensionChange(ExtensionPointName<U> name, final String message) {
|
||||
name.addExtensionPointListener(new ExtensionPointAdapter<U>() {
|
||||
@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;
|
||||
|
||||
@@ -749,7 +749,7 @@
|
||||
<with attribute="implementationClass" implements="com.intellij.codeInsight.CodeInsightActionHandler"/>
|
||||
</extensionPoint>
|
||||
|
||||
<extensionPoint name="codeInsight.lineMarkerProvider" beanClass="com.intellij.lang.LanguageExtensionPoint">
|
||||
<extensionPoint name="codeInsight.lineMarkerProvider" beanClass="com.intellij.lang.LanguageExtensionPoint" dynamic="true">
|
||||
<with attribute="implementationClass" implements="com.intellij.codeInsight.daemon.LineMarkerProvider"/>
|
||||
</extensionPoint>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user