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

问题描述 投票:0回答:2

我正在尝试为 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>

我做错了什么?

html xml sublimetext3 sublimetext
2个回答
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

0
投票

PHP 对此非常有效。

您可以将该语法突出显示文件的内容复制到新的语法突出显示文件中,并将文件中列出的文件扩展名从 PHP 更改为 XML。 然后,当查看您的 XML 文件之一时,在文件类型菜单上,将您的文件(以及所有类似文件)设置为始终使用新文件。

© www.soinside.com 2019 - 2024. All rights reserved.