2017-10-28 111 views
1

如何在運行插件代碼時檢測可用的語法?SublimeText 3 - 檢測安裝的語法

例如,當我調用

output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage") 

,並沒有安裝ANSIescape包,然後我得到崇高的錯誤,不能用try: ... except:被抓住。

我想安全地執行set_syntax_file,沒有任何錯誤,並希望知道它是否成功。

回答

1

您可以使用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") 

下面的代碼是建立一個字典,那是語言的名稱(從文件名派生更多信息請參閱完整代碼)項和值是文件的全名。