WEB-41713 Vue: properly color contents within <script type="text/x-template">.

GitOrigin-RevId: d21f1744391119ea6a8ba305657a90d9318cee0f
This commit is contained in:
Piotr Tomiak
2019-10-03 12:34:25 +00:00
committed by intellij-monorepo-bot
parent 730c63e067
commit a2ec01c460
3 changed files with 7 additions and 11 deletions
@@ -21,8 +21,8 @@ public class HTMLParser implements PsiParser {
return builder.getTreeBuilt();
}
public static void parseWithoutBuildingTree(@NotNull IElementType root, @NotNull PsiBuilder builder) {
parseWithoutBuildingTree(root, builder, new HtmlParsing(builder));
public void parseWithoutBuildingTree(@NotNull IElementType root, @NotNull PsiBuilder builder) {
parseWithoutBuildingTree(root, builder, createHtmlParsing(builder));
}
private static void parseWithoutBuildingTree(@NotNull IElementType root, @NotNull PsiBuilder builder,
@@ -38,4 +38,4 @@ public class HTMLParser implements PsiParser {
protected HtmlParsing createHtmlParsing(@NotNull PsiBuilder builder) {
return new HtmlParsing(builder);
}
}
}
@@ -67,6 +67,7 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer {
XmlEmbeddmentHandler value = new XmlEmbeddmentHandler();
registerHandler(XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN, value);
registerHandler(XmlTokenType.XML_START_TAG_START, value);
registerHandler(XmlTokenType.XML_DATA_CHARACTERS, value);
registerHandler(XmlTokenType.XML_COMMENT_CHARACTERS, value);
}
@@ -112,16 +113,10 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer {
LOG.assertTrue(highlighter != null, ourStyleFileType);
styleLexer = highlighter.getHighlightingLexer();
}
else {
styleLexer = null;
}
styleLexers.put(styleType, styleLexer);
}
else if (hasSeenAttribute()) {
if (ourStyleFileType == null) {
styleLexer = null;
}
else {
if (ourStyleFileType != null) {
SyntaxHighlighter highlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(ourStyleFileType, null, null);
LOG.assertTrue(highlighter != null, ourStyleFileType);
styleLexer = highlighter.getHighlightingLexer();
@@ -265,6 +260,7 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer {
final IElementType tokenType = lexer.getTokenType();
if (tokenType == XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN && hasSeenAttribute() ||
tokenType == XmlTokenType.XML_START_TAG_START && hasSeenTag() ||
tokenType == XmlTokenType.XML_DATA_CHARACTERS && hasSeenTag() ||
tokenType == XmlTokenType.XML_COMMENT_CHARACTERS && hasSeenTag()
) {
@@ -92,7 +92,7 @@ public interface XmlElementType extends XmlTokenType {
assert file != null : chameleon;
final PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(file.getProject(), chameleon);
HTMLParser.parseWithoutBuildingTree(HTML_FILE, builder);
new HTMLParser().parseWithoutBuildingTree(HTML_FILE, builder);
return builder.getLightTree();
}
}