WEB-68289 WEB-68214 HTML: Ensure that listeners registration and extension point access happens within a non-cancellable section

GitOrigin-RevId: 8682fb7f6c531eb37f7baac251f8cb34778b756d
This commit is contained in:
Piotr Tomiak
2024-09-11 10:29:45 +02:00
committed by intellij-monorepo-bot
parent 6b1a9134fc
commit 32a4911734

View File

@@ -7,6 +7,7 @@ import com.intellij.openapi.editor.HighlighterColors;
import com.intellij.openapi.editor.XmlHighlighterColors;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.openapi.progress.Cancellation;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
@@ -52,8 +53,12 @@ public class HtmlFileHighlighter extends SyntaxHighlighterBase {
ourMap.putValue(XML_BAD_CHARACTER, HighlighterColors.BAD_CHARACTER);
registerAdditionalHighlighters(ourMap);
EMBEDDED_HIGHLIGHTERS.addExtensionPointListener(new XmlFileHighlighter.EmbeddedTokenHighlighterExtensionPointListener(ourMap), null);
Cancellation.computeInNonCancelableSection(() -> {
// PCE in static initializer breaks class initialization
registerAdditionalHighlighters(ourMap);
EMBEDDED_HIGHLIGHTERS.addExtensionPointListener(new XmlFileHighlighter.EmbeddedTokenHighlighterExtensionPointListener(ourMap), null);
return null;
});
}
@Override