Sublime Text 3 - 检测已安装的语法
SublimeText 3 - detect installed syntaxes
当 运行 插件代码时,如何检测可用语法?
例如当我调用
output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage")
并且未安装 ANSIescape 包,然后我从 Sublime 收到一个无法用 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")
这里的代码正在构建一个字典,其中的键是语言名称(从文件名派生而来,请参阅完整代码以获取更多信息)和值是文件的全名。
当 运行 插件代码时,如何检测可用语法?
例如当我调用
output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage")
并且未安装 ANSIescape 包,然后我从 Sublime 收到一个无法用 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")
这里的代码正在构建一个字典,其中的键是语言名称(从文件名派生而来,请参阅完整代码以获取更多信息)和值是文件的全名。