From a3c863c4889962fb96e57df3a2e6e20466d81a32 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 22 Feb 2011 11:54:24 +0300 Subject: [PATCH] injected brace highlighters stuck --- .../BraceHighlightingHandler.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java index 653c8421ee7b..833b276060b7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java @@ -28,6 +28,7 @@ import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.hint.EditorFragmentComponent; import com.intellij.concurrency.Job; import com.intellij.concurrency.JobUtil; +import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.editor.Document; @@ -44,7 +45,7 @@ import com.intellij.openapi.editor.highlighter.HighlighterIterator; import com.intellij.openapi.editor.markup.*; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.StdFileTypes; +import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; @@ -291,7 +292,7 @@ public class BraceHighlightingHandler { } private void highlightBraces(final int lBraceOffset, int rBraceOffset, boolean matched, boolean scopeHighlighting) { - if (!matched && myFileType == StdFileTypes.PLAIN_TEXT) { + if (!matched && myFileType == FileTypes.PLAIN_TEXT) { return; } @@ -304,10 +305,8 @@ public class BraceHighlightingHandler { highlightBrace(rBraceOffset, matched); } - if (lBraceOffset >= 0) { - if (!scopeHighlighting) { - highlightBrace(lBraceOffset, matched); - } + if (lBraceOffset >= 0 && !scopeHighlighting) { + highlightBrace(lBraceOffset, matched); } if (!myEditor.equals(FileEditorManager.getInstance(myProject).getSelectedTextEditor())) { @@ -368,13 +367,20 @@ public class BraceHighlightingHandler { } private void registerHighlighter(RangeHighlighter highlighter) { - List highlighters = myEditor.getUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY); + List highlighters = getHighlightersList(); + highlighters.add(highlighter); + } + + @NotNull + private List getHighlightersList() { + // braces are highlighted across the whole editor, not in each injected editor separately + Editor editor = myEditor instanceof EditorWindow ? ((EditorWindow)myEditor).getDelegate() : myEditor; + List highlighters = editor.getUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY); if (highlighters == null) { highlighters = new ArrayList(); - myEditor.putUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY, highlighters); + editor.putUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY, highlighters); } - - highlighters.add(highlighter); + return highlighters; } private void showScopeHint(final int lbraceStart, final int lbraceEnd) { @@ -405,12 +411,11 @@ public class BraceHighlightingHandler { } public void clearBraceHighlighters() { - List highlighters = myEditor.getUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY); - if (highlighters == null) return; - myEditor.putUserData(BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY, null); + List highlighters = getHighlightersList(); for (final RangeHighlighter highlighter : highlighters) { highlighter.dispose(); } + highlighters.clear(); } private void lineMarkFragment(int startLine, int endLine, Color color) {