diff --git a/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java b/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java index d554321af76b..a4a2eacef5bf 100644 --- a/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java +++ b/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java @@ -54,10 +54,12 @@ public class VcsContentAnnotationExceptionFilter implements Filter, FilterMixin private final Project myProject; private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.contentAnnotation.VcsContentAnnotationExceptionFilter"); private final GlobalSearchScope myScope; + private final VcsContentAnnotationSettings mySettings; public VcsContentAnnotationExceptionFilter(GlobalSearchScope scope) { myScope = scope; myProject = scope.getProject(); + mySettings = VcsContentAnnotationSettings.getInstance(myProject); } private static class MyAdditionalHighlight extends AdditionalHighlight { @@ -81,6 +83,11 @@ public class VcsContentAnnotationExceptionFilter implements Filter, FilterMixin } } + @Override + public boolean shouldRunHeavy() { + return mySettings.isShow(); + } + @Override public void applyHeavyFilter(final Document copiedFragment, int startOffset, diff --git a/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java b/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java index 01ca873f687a..335b039546b4 100644 --- a/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java +++ b/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java @@ -51,6 +51,14 @@ public class CompositeFilter implements Filter, FilterMixin { return null; } + @Override + public boolean shouldRunHeavy() { + for (Filter filter : myFilters) { + if (filter instanceof FilterMixin && ((FilterMixin)filter).shouldRunHeavy()) return true; + } + return false; + } + @Override public void applyHeavyFilter(Document copiedFragment, int startOffset, diff --git a/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java b/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java index c4b4f61b5e5d..4e10ba654fbe 100644 --- a/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java +++ b/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java @@ -27,6 +27,7 @@ import org.jetbrains.annotations.Nullable; * Time: 4:50 PM */ public interface FilterMixin { + boolean shouldRunHeavy(); @Nullable void applyHeavyFilter(Document copiedFragment, int startOffset, int startLineNumber, Consumer consumer); diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index d78feee7273c..07b53fd4c7ec 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -823,7 +823,7 @@ public class ConsoleViewImpl implements ConsoleView, ObservableConsoleView, Data myHyperlinks.highlightHyperlinks(myCustomFilter, myPredefinedMessageFilter, line1, endLine); } - if (myPredefinedMessageFilter.isAnyHeavy()) { + if (myPredefinedMessageFilter.isAnyHeavy() && myPredefinedMessageFilter.shouldRunHeavy()) { final int startLine = Math.max(0, line1); final Document document = getEditor().getDocument(); @@ -837,6 +837,7 @@ public class ConsoleViewImpl implements ConsoleView, ObservableConsoleView, Data myHeavyAlarm.addRequest(new Runnable() { @Override public void run() { + if (! myPredefinedMessageFilter.shouldRunHeavy()) return; myPredefinedMessageFilter.applyHeavyFilter(documentCopy, startOffset, startLine, new Consumer() { @Override public void consume(final FilterMixin.AdditionalHighlight additionalHighlight) { diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationSettings.java b/platform/vcs-api/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationSettings.java index 87228feb1dbf..e7c77599f8c8 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationSettings.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationSettings.java @@ -45,7 +45,7 @@ public class VcsContentAnnotationSettings implements PersistentStateComponent