我正在尝试为 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
的末尾,并且按下 Tab 键,我希望获得结束 </p>
标签,而不是 </Body>
(这就是正在发生的情况)。
<Body><![CDATA[
<div class="to">
<p>John Q. Public|
</div>
]]></Body>
我做错了什么?
感谢@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
PHP 对此非常有效。
您可以将该语法突出显示文件的内容复制到新的语法突出显示文件中,并将文件中列出的文件扩展名从 PHP 更改为 XML。 然后,当查看您的 XML 文件之一时,在文件类型菜单上,将您的文件(以及所有类似文件)设置为始终使用新文件。