2017-10-28 4 views
1

Wie kann ich beim Ausführen eines Plugin-Codes verfügbare Syntaxen erkennen?SublimeText 3 - Installierte Syntax erkennen

Zum Beispiel, wenn ich rufe

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

und ANSIescape Paket nicht installiert ist, dann habe ich einen Fehler von Sublime erhalten, die mit try: ... except: kann nicht gefangen werden.

Ich möchte set_syntax_file sicher durchführen, ohne jeden Fehler und möchte wissen, ob es erfolgreich war oder nicht.

Antwort

1

Sie können sublime.find_resources() verwenden, um alle Dateien zu finden, von denen Sublime weiß, dass sie Syntaxen bereitstellen. Das wären alle Dateien vom Typ tmLanguage (für die ältere Legacy-Syntax) und sublime-sytax für Pakete, die die neuere Syntax verwenden.

Es gibt ein Beispiel dafür in this plugin code. Der relative Code-Snippet ist dies:

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

Hier ist der Code baut einen Wörterbuch mit Schlüsseln, die der Name der Sprache sind (wie aus dem Dateinamen abgeleitet, den vollständigen Code für weitere Informationen) und Werte, die die vollständige Namen der Dateien

Verwandte Themen