我正在为Sublime Text编写一个插件,我希望使用这些字符来添加带有文档当前语法的注释。
e.g。
#
//
//
//
;
当然,我可以使用
view.run_command('toggle_comment', {'block': True})
但我不想添加评论,我想知道我应该使用的字符...
有什么想法吗?
我看了documentation,但我找不到任何东西
答案 0 :(得分:3)
您可以使用view.meta_info('shellVariables', 0)
获取为当前文档的语法定义的shellVariables
数组。
(第二个参数,我指定0
,表示查询视图中的位置(a.k.a point in official terminology),这对包含嵌入式语法的视图很有用,即PHP / HTML / JS)< / p>
<强>示例:强>
在Python文件中,它返回:
[{'name': 'TM_COMMENT_START', 'value': '# '}, {'name': 'TM_LINE_TERMINATOR', 'value': ':'}]
在XML文件上返回:
[{'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': '/*'}]
如您所见,数组中的相关字典项的name
为TM_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]