使用自定义语法荧光笔时切换注释快捷方式

时间:2018-12-01 01:21:15

标签: sublimetext3

我尝试为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 + /)的快捷方式不起作用。有没有一种方法可以使“切换注释”快捷方式与自定义语法一起使用?

1 个答案:

答案 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只会自动使用每种类型的第一个。不过,您编写的插件可以访问其他插件。

相关问题