From cfcf1b97680b87b8b782aa90ca302f1a91b700e6 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 16 Nov 2017 19:27:10 +0300 Subject: [PATCH] WEB-29768 Console output doesn't change colors when the theme is changed --- .../execution/impl/ConsoleViewImpl.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 ee499bfba943..dc39204b9ebd 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -44,10 +44,14 @@ import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.actionSystem.*; import com.intellij.openapi.editor.actions.ScrollToTheEndToolbarAction; import com.intellij.openapi.editor.actions.ToggleUseSoftWrapsToolbarAction; +import com.intellij.openapi.editor.colors.EditorColorsListener; +import com.intellij.openapi.editor.colors.EditorColorsManager; +import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.event.EditorMouseEvent; import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.editor.ex.MarkupModelEx; +import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.editor.impl.DocumentMarkupModel; @@ -264,6 +268,19 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo }); } }); + ApplicationManager.getApplication().getMessageBus().connect().subscribe(EditorColorsManager.TOPIC, new EditorColorsListener() { + @Override + public void globalSchemeChange(EditorColorsScheme scheme) { + ApplicationManager.getApplication().assertIsDispatchThread(); + if (isDisposed() || myEditor == null) return; + MarkupModel model = DocumentMarkupModel.forDocument(myEditor.getDocument(), project, false); + for (RangeHighlighter tokenMarker : model.getAllHighlighters()) { + ConsoleViewContentType contentType = tokenMarker.getUserData(CONTENT_TYPE); + if (contentType != null && tokenMarker instanceof RangeHighlighterEx) + ((RangeHighlighterEx)tokenMarker).setTextAttributes(contentType.getAttributes()); + } + } + }); } @NotNull