From 1f4f97398e56edef78bd2614b45599d5c01c4a62 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Fri, 25 Mar 2016 14:33:32 +0300 Subject: [PATCH] don't skip style/script content when there's no token type to parse them as corresponding language #IDEA-141736 fixed --- .../src/com/intellij/lexer/HtmlLexer.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/xml/xml-psi-impl/src/com/intellij/lexer/HtmlLexer.java b/xml/xml-psi-impl/src/com/intellij/lexer/HtmlLexer.java index 2d99d4f93a14..3fffc4569707 100644 --- a/xml/xml-psi-impl/src/com/intellij/lexer/HtmlLexer.java +++ b/xml/xml-psi-impl/src/com/intellij/lexer/HtmlLexer.java @@ -74,10 +74,11 @@ public class HtmlLexer extends BaseHtmlLexer { if (hasSeenStyle()) { if (hasSeenTag() && isStartOfEmbeddmentTagContent(tokenType)) { Language stylesheetLanguage = getStyleLanguage(); - if (stylesheetLanguage == null || LanguageUtil.isInjectableLanguage(stylesheetLanguage)) { + IElementType currentStylesheetElementType; + if ((stylesheetLanguage == null || LanguageUtil.isInjectableLanguage(stylesheetLanguage)) && + (currentStylesheetElementType = getCurrentStylesheetElementType()) != null) { myTokenEnd = skipToTheEndOfTheEmbeddment(); - IElementType currentStylesheetElementType = getCurrentStylesheetElementType(); - tokenType = currentStylesheetElementType == null ? XmlTokenType.XML_DATA_CHARACTERS : currentStylesheetElementType; + tokenType = currentStylesheetElementType; } } else if (ourInlineStyleElementType!=null && isStartOfEmbeddmentAttributeValue(tokenType) && hasSeenAttribute()) { tokenType = ourInlineStyleElementType; @@ -85,10 +86,11 @@ public class HtmlLexer extends BaseHtmlLexer { } else if (hasSeenScript()) { if (hasSeenTag() && isStartOfEmbeddmentTagContent(tokenType)) { Language scriptLanguage = getScriptLanguage(); - if (scriptLanguage == null || LanguageUtil.isInjectableLanguage(scriptLanguage)) { + IElementType currentScriptElementType; + if ((scriptLanguage == null || LanguageUtil.isInjectableLanguage(scriptLanguage)) && + (currentScriptElementType = getCurrentScriptElementType()) != null) { myTokenEnd = skipToTheEndOfTheEmbeddment(); - IElementType currentScriptElementType = getCurrentScriptElementType(); - tokenType = currentScriptElementType == null ? XmlTokenType.XML_DATA_CHARACTERS : currentScriptElementType; + tokenType = currentScriptElementType; } } else if (hasSeenAttribute() && isStartOfEmbeddmentAttributeValue(tokenType) && ourInlineScriptElementType!=null) { myTokenEnd = skipToTheEndOfTheEmbeddment();