如何从Sublime Text 3中的HTML语法继承XML文件中的CDATA语法?

如何从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: "

我正在尝试为XML文件创建一种新的高级语法,它将CDATA中的标记视为HTML。 我创建了一个新的sublime语法文件,复制了原始XML规则(通过PackageResourceViewer打开),并找到了我感兴趣的部分:

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