我尝试为Sublime创建自定义语法。我在他们的教程中包含了这一行:
contexts:
main:
- match: '//'
scope: punctuation.definition.comment.example-c
push:
# This is an anonymous context push for brevity.
- meta_scope: comment.line.double-slash.example-c
- match: $\n?
pop: true
这完全符合我的脚本中的注释要求。但是,我一直用于“打开/关闭注释”(Command + /)的快捷方式不起作用。有没有一种方法可以使“切换注释”快捷方式与自定义语法一起使用?
答案 0 :(得分:1)
关于注释是什么的元信息不是来自语法,而是来自tmPreferences
文件中的meta information,您也必须自己创建文件。
按照上面的示例语法,如下所示(根据需要将scope
更改为适当的顶级范围):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>source.example-c</string>
<key>settings</key>
<dict>
<key>shellVariables</key>
<array>
<dict>
<key>name</key>
<string>TM_COMMENT_START</string>
<key>value</key>
<string>// </string>
</dict>
<dict>
<key>name</key>
<string>TM_COMMENT_START_2</string>
<key>value</key>
<string>/*</string>
</dict>
<dict>
<key>name</key>
<string>TM_COMMENT_END_2</string>
<key>value</key>
<string>*/</string>
</dict>
</array>
</dict>
<key>uuid</key>
<string>1d23fd10-e62f-4de8-a8d1-42e64e3f5fb7</string>
</dict>
</plist>
您给文件的名称并不重要,而仅是扩展名(将其保存在Package中;如果还没有特定的package,则将其放在User
软件包中)。通用约定类似于包含语法的包根目录中的Comments.tmPreferences
之类的东西。
这显示了两件事;首先,可以有多个TM_COMMENT_START
类型的项目,还可以选择将其与匹配的TM_COMMENT_END
类型的项目配对。
单独使用时,例如TM_COMMENT_START
,注释是行注释,而在成对使用时,则指定注释是需要开始和结束对的块注释。
如果可能,Sublime根据生成注释的命令的参数使用一个或另一个。因此,如果定义了两个(如此处所示),那么除非有选定的文本,否则您将获得一行注释,在这种情况下,您将获得一个块注释。
如果仅定义了行注释或块注释,则只会得到该样式的注释,而没有别的。例如,这就是HTML仅注释块并将单行视为块的原因。
还要注意,TM_COMMENT
项/对可以是任意数量,但是Sublime只会自动使用每种类型的第一个。不过,您编写的插件可以访问其他插件。