我使用的是zk框架,我需要做一个以XML语法突出显示的高级语法文件,但在zscript中,代码片段使用java语法突出显示,而在样式上下文中,则使用CSS语法。这是zk代码的一个示例:
<zk>
<style>
.myClass{
width=300px;
}
</style>
<div id="panel1" class="myClass" visible="true" >
<hlayout width="100px">
<image id="icon1" src="/Desktop/image1.png" width="32px"></image>
<image id="icon2" src="/Desktop/image1.png" width="50px"></image>
</hlayout>
</div>
<zscript><![CDATA[
try{
if (panel1.isVisible()) {
//do something
}
}catch(Exception e){
//catch exception
}
]]></zscript>
</zk>我看到最近发生了一些变化,目前的在线解决方案并不十分清楚,例如在此链接,我发现了以下注意事项:
自崇高文本Build 3084开始,添加了一种新的语法定义格式,并添加了.崇高-语法扩展。 我们非常鼓励您使用本文档中描述的遗留格式,除非希望与旧版本兼容。 文档可在这里获得:http://www.sublimetext.com/docs/3/syntax.html
因此,我需要一些东西,比如关于如何用SublimeText3构建一个新的多语法文件的教程。
发布于 2017-12-21 14:09:32
好的,我解决了我的问题,通过安装(Ctrl+Shift+P,选择Package Control: Install Package,键入并选择PackageDev来安装),然后我选择了:Tools -> Packages -> Package Developement -> New Syntax Definition。
在这里,我编写了以下代码:
%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: zul
file_extensions:
- zul
scope: text.zul
contexts:
main:
- match: ""
push: "Packages/XML/XML.sublime-syntax"
with_prototype:
- match: '< *zscript *>'
push: Packages/Java/Java.sublime-syntax
with_prototype:
- match: '(?=</ *zscript *>)'
pop: true
- match: '< *script *>'
push: Packages/JavaScript/JavaScript.sublime-syntax
with_prototype:
- match: '(?=</ *script *>)'
pop: true
- match: '< *style *>'
push: Packages/CSS/CSS.sublime-syntax
with_prototype:
- match: '(?=</ *style *>)'
pop: trueFile_extensions是使用此语法的扩展列表,scope是编程语言的source,text是标记和其他所有东西。match是传递给push元素的正则表达式。with_prototype类似于语法突出显示中的异常,您可以在其中为不同的上下文定义具有不同语法的代码段。此示例通常使用xml语法,标记<zscript> ... </zscript>之间使用java语法突出显示,在<style> ... </style>上下文中使用css语法。
我在C:\Users\username\AppData\Roaming\Sublime Text 3\Packages\User中保存了这个文件,然后在我的View -> Syntax -> User -> zul (文件名)中创建了这个语法文件。
https://stackoverflow.com/questions/47757055
复制相似问题