【发布时间】:2016-02-16 20:36:02
【问题描述】:
我正在尝试为一种名为“e 验证语言”的编程语言的语法高亮制作 sublime 文本插件: https://en.wikipedia.org/wiki/E_%28verification_language%29
该语言的函数定义:
function_name (name_1: type_1, name_2: type_2, ...) : return_type is {
function body
}
例如:
function_name(num1: int, num2: real) : int is { ...
输入参数和返回值是可选的。
没有输入参数,没有返回值,两者都没有:
function_name() : int is { ...
function_name(num1: int, num2: real) is { ...
function_name() is { ...
我想给函数名上色,如果需要的话,保持行中的其余关键字也上色(“int”和“real”是类型,“is”是语法关键字,“:”也应该上色如果存在)。
我尝试在插件 tmLanguage 文件中使用“捕获”块。成功的着色函数名称,但由于该行被末尾的“is”识别,因此中间的所有内容都不会突出显示。 我在一行中捕获了 4 件事:函数名、“(”、“)”、“是”
使用的代码:
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.language</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.language</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.language</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(\b[^\s]+)\s*(\()\s*.*\s*(\))\s*:*\s*.*\s+(is)\b</string>
</dict>
我添加了带有我的捕获块(蓝色函数名称)和没有(白色名称,绿色“int”和“real”)的函数照片。有什么方法可以组合,让所有需要的东西都上色吗?
谢谢。
【问题讨论】:
标签: sublimetext2 syntax-highlighting textmate