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") 

下面的代码是建立一个字典,那是语言的名称(从文件名派生更多信息请参阅完整代码)项和值是文件的全名。