SublimeText 3 - 检测安装的语法
问题描述:
如何在运行插件代码时检测可用的语法?SublimeText 3 - 检测安装的语法
例如,当我调用
output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage")
,并没有安装ANSIescape包,然后我得到崇高的错误,不能用try: ... except:
被抓住。
我想安全地执行set_syntax_file
,没有任何错误,并希望知道它是否成功。
答
您可以使用sublime.find_resources()
来查找Sublime知道的所有提供语法的文件。对于使用较新语法的软件包,这将是tmLanguage
类型的所有文件(用于较旧的传统语法)和sublime-sytax
。
在this plugin code中有这样做的例子。的代码相对片段是这样的:
def syntax_name(self, syntax):
syntax_file = os.path.basename(os.path.split(syntax)[1])
return os.path.splitext(syntax_file)[0]
def parse(self, langs, resource_spec):
for syntax in sublime.find_resources(resource_spec):
langs[self.syntax_name(syntax)] = syntax
def query_syntax(self):
langs = {}
self.parse(langs, "*.tmLanguage")
self.parse(langs, "*.sublime-syntax")
下面的代码是建立一个字典,那是语言的名称(从文件名派生更多信息请参阅完整代码)项和值是文件的全名。