使用自定义语法荧光笔时切换评论快捷方式
Toggle comment shortcut while using a custom syntax highlighter
我尝试为 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
这与我的脚本中的注释完全符合预期。但是,我一直用于切换评论 On/Off (Command+/) 的快捷方式不起作用。有没有办法让“切换评论”快捷方式与自定义语法一起使用?
关于注释内容的元信息不是来自语法,它来自 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>
文件的名称无关紧要,重要的是扩展名(并将其保存在一个包中;如果您还没有特定的包,请将其放入您的 User
包中).通用约定类似于包含语法的包的根目录中的 Comments.tmPreferences
。
这说明了两件事;首先,可以有多个 TM_COMMENT_START
类型的项目,并且它也可以选择与匹配的 TM_COMMENT_END
项目配对。
当单独使用时,例如 TM_COMMENT_START
,注释是行注释,而当成对使用时,您指定注释是需要开始和结束对的块注释。
如果可能的话,Sublime 会根据生成评论的命令的参数来使用其中之一。因此,如果有两个定义(如此处),那么除非有选定的文本,否则您会得到一个行注释,在这种情况下,您会得到一个块注释。
如果只定义了行注释或块注释,您只会得到那种样式的注释,而不会得到其他任何东西。这就是为什么 HTML 只注释块并将单行视为块,例如。
还要注意,可以有任意数量的 TM_COMMENT
items/pairs,但 Sublime 只会自动使用每种类型的第一个。不过,您编写的插件可以访问其他插件。
我尝试为 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
这与我的脚本中的注释完全符合预期。但是,我一直用于切换评论 On/Off (Command+/) 的快捷方式不起作用。有没有办法让“切换评论”快捷方式与自定义语法一起使用?
关于注释内容的元信息不是来自语法,它来自 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>
文件的名称无关紧要,重要的是扩展名(并将其保存在一个包中;如果您还没有特定的包,请将其放入您的 User
包中).通用约定类似于包含语法的包的根目录中的 Comments.tmPreferences
。
这说明了两件事;首先,可以有多个 TM_COMMENT_START
类型的项目,并且它也可以选择与匹配的 TM_COMMENT_END
项目配对。
当单独使用时,例如 TM_COMMENT_START
,注释是行注释,而当成对使用时,您指定注释是需要开始和结束对的块注释。
如果可能的话,Sublime 会根据生成评论的命令的参数来使用其中之一。因此,如果有两个定义(如此处),那么除非有选定的文本,否则您会得到一个行注释,在这种情况下,您会得到一个块注释。
如果只定义了行注释或块注释,您只会得到那种样式的注释,而不会得到其他任何东西。这就是为什么 HTML 只注释块并将单行视为块,例如。
还要注意,可以有任意数量的 TM_COMMENT
items/pairs,但 Sublime 只会自动使用每种类型的第一个。不过,您编写的插件可以访问其他插件。