如何从Sublime Text 3中的HTML语法继承XML文件中的CDATA语法?
我正在尝试为XML文件创建一种新的高级语法,它将CDATA中的标记视为HTML。 我创建了一个新的sublime语法文件,复制了原始XML规则(通过PackageResourceViewer打开),并找到了我感兴趣的部分:如何从Sublime Text 3中的HTML语法继承XML文件中的CDATA语法?,html,xml,sublimetext3,sublimetext,Html,Xml,Sublimetext3,Sublimetext,我正在尝试为XML文件创建一种新的高级语法,它将CDATA中的标记视为HTML。 我创建了一个新的sublime语法文件,复制了原始XML规则(通过PackageResourceViewer打开),并找到了我感兴趣的部分: contexts: main: - match: '<!\[CDATA\[' captures: 0: punctuation.definition.string.begin.xml push: - match: "
contexts:
main:
- match: '<!\[CDATA\['
captures:
0: punctuation.definition.string.begin.xml
push:
- match: "]]>"
captures:
0: punctuation.definition.string.end.xml
pop: true
我希望继承所有text.html.basic规则,但没有观察到行为或颜色语法的变化。我的意思是,我想让自动关闭标记遵循HTML规则。也就是说,如果在下面的示例中,我的光标位于John Q.Public
的末尾,并且我按tab键,我希望得到一个结束标记
,而不是
(这就是发生的情况)
约翰·Q·公众|
]]>
我做错了什么?多亏了@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
-match:查看Packages/HTML/HTML.sublime syntax
,了解嵌入其他语言(CSS、JS)的一些示例。
<Body><![CDATA[
<div class="to">
<p>John Q. Public|
</div>
]]></Body>
- 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