2016-01-24 47 views
1

我正在尝试为XML文件创建一个新的sublime-syntax,它将把CDATA中的标签视为HTML。 我得到尽可能创造一个新的崇高语法文件,复制原始的XML规则(通过PackageResourceViewer睁开),发现部分我感兴趣的是:如何在Sublime Text 3的HTML语法中继承XML文件中的CDATA语法?

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> 

我出错了?

+1

看看'软件包/ HTML/HTML.sublime-syntax'有关嵌入其他语言(CSS,JS)的一些例子。 – MattDMo

回答

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