Sublime Text Plugin - 如何获取当前语法的注释块类型

Sublime Text Plugin - How can I get the comment block type of the current syntax

我正在为 Sublime Text 编写一个插件,我想获取字符以使用文档的当前语法添加评论。

例如

当然可以

view.run_command('toggle_comment', {'block': True})

但我不想只是添加评论,我想知道我应该使用的字符...

有什么想法吗?

I had a look in this documentation, but I didn't find anything

您可以使用 view.meta_info('shellVariables', 0) 获取为当前文档语法定义的 shellVariables 数组。

(我指定 0 的第二个参数表示视图中要查询的位置 (a.k.a point in official terminology),这对于包含嵌入式语法的视图很有用,即 PHP/HTML/JS )


示例:

在 Python 文件中 returns:

[{'name': 'TM_COMMENT_START', 'value': '# '}, {'name': 'TM_LINE_TERMINATOR', 'value': ':'}]

在 XML 文件中 returns:

[{'name': 'TM_COMMENT_END', 'value': ' -->'}, {'name': 'TM_COMMENT_START', 'value': '<!-- '}]

在 JavaScript 文件上:

[{'name': 'TM_COMMENT_END_2', 'value': '*/'}, {'name': 'TM_COMMENT_START', 'value': '// '}, {'name': 'TM_COMMENT_START_2', 'value': '/*'}]

如您所见,数组中的相关字典项有一个 nameTM_COMMENT_START,对于块注释,也会有一个 TM_COMMENT_END。 JavaScript 等支持单行注释和块注释的语法也可以具有相同的名称并带有 _2 后缀。


因此,让字符开始评论的代码可能如下所示:

comment_characters = [var['value'] for var in view.meta_info('shellVariables', 0) if var['name'] == 'TM_COMMENT_START'][0]