【问题标题】:SublimeText 3 - detect installed syntaxesSublime Text 3 - 检测已安装的语法
【发布时间】:2017-10-28 11:10:37
【问题描述】:
在运行插件代码时如何检测可用语法?
例如当我调用时
output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage")
并且未安装 ANSIescape 包,然后我收到来自 Sublime 的错误,无法使用 try: ... except: 捕获。
我想安全地执行set_syntax_file,没有任何错误,并想知道它是否成功。
【问题讨论】:
标签:
python
sublimetext3
sublimetext
【解决方案1】:
你可以使用sublime.find_resources() 来查找所有 Sublime 知道的提供语法的文件。这将是 tmLanguage 类型的所有文件(对于较旧的旧语法)和 sublime-sytax 对于使用较新语法的包的所有文件。
在this plugin code 中有一个这样做的例子。代码的相对sn-p是这样的:
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")
这里的代码正在构建一个字典,其中的键是语言名称(从文件名派生而来,有关更多信息,请参阅完整代码),值是文件的全名。