2017-10-28 4 views
1

プラグインコードの実行時に利用可能な構文を検出するにはどうすればよいですか?例えばSublimeText 3 - インストールされている構文を検出する

私は

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

を起動し、ANSIescapeパッケージがインストールされていないとき、私はtry: ... except:でキャッチすることができませんサブライムからのエラーを取得します。

私はset_syntax_fileを間違いなく安全に実行して、成功したかどうかを知りたいです。

答えて

1

sublime.find_resources()を使用すると、サブライムが構文を提供していることを知っているすべてのファイルを見つけることができます。これは、古い構文の場合はのすべてのファイルになり、新しい構文を使用するパッケージの場合は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") 

ここにコードがある言語名ですキー(ファイル名から派生して、より多くの情報のための完全なコードを参照)と値で辞書を構築している:コードの相対的なスニペットはこれですファイルの完全な名前。

関連する問題