我正在尝试为XML文件创建一个新的sublime语法,它将CDATA中的标签视为HTML。 我创建了一个新的sublime-syntax文件,复制了原始XML规则(通过PackageResourceViewer打开它们)并找到了我感兴趣的部分:
contexts:
main:
- match: '<!\[CDATA\['
captures:
0: punctuation.definition.string.begin.xml
push:
- match: "]]>"
captures:
0: punctuation.definition.string.end.xml
pop: true
以下是我想在push:
- meta_scope: text.html.basic
- include: text.html.basic
我希望继承所有text.html.basic规则,但我发现行为或颜色语法没有变化。按行为我的意思是我希望自动关闭标签遵循HTML规则。也就是说,如果我的光标位于下面示例中John Q. Public
的末尾,我按下标签,我希望得到一个结束</p>
标记,而不是</Body>
(这是发生了什么事。)
<Body><![CDATA[
<div class="to">
<p>John Q. Public|
</div>
]]></Body>
我错了什么?
答案 0 :(得分:2)
感谢@MattDMo,这种方法很有效。以下是我提出的建议:
- match: <!
captures:
0: punctuation.definition.tag.html
push:
- meta_scope: meta.tag.sgml.html
- match: ">"
pop: true
- match: '\[CDATA\['
push:
- include: 'HTML.sublime-syntax'
- meta_scope: text.html.basic
- match: "]](?=>)"
pop: true
- match: (\s*)(?!--|>)\S(\s*)
scope: text.html.basic