Quellcode-Editor GitHub Atom bereitet sich auf inkrementellen Parser vor

Der Quellcode-Editor bietet in Version 1.24 erste Anpassungen der LanguageMode-API. Das kommende Release, das parallel als Beta erschienen ist, bringt ein neues System für Syntaxhervorhebung und Code-Folding.

 –  2 Kommentare
GitHub Atom bereitet sich auf inkrementellen Parser vor

Das Atom-Team bei GitHub hat Version 1.24 des auf dem Electron-Framework aufbauenden Sourcecode-Editor veröffentlicht. Die Neuerungen im aktuellen Release halten sich in Grenzen. Nennenswert ist vor allem die Option, Editor-Fenster als readonly zu kennzeichnen, um Eingaben zu verhindern. Die Funktion ist unter anderem dann sinnvoll, wenn der Code nicht lokal vorliegt. Eine andere Anwendung ist die Anzeige von Code aus der Git-Historie, für den Atom lediglich zum Einsatz kommt, um ihn mit Syntaxhervorhebung besser lesbar anzuzeigen.

Eben diese farbliche Hervorhebung adressiert eine größere Neuerung, die in vollem Umfang jedoch erst für Atom 1.25 auf dem Plan steht, aber im aktuellen Release bereits ihre Schatten voraus wirft. Der Editor erhält ein komplett neues System für das Code Folding zum Ein- und Ausblenden von zusammengehörigen Codeabschnitten und die Syntaxhervorhebung.

Der neue Parsing-Mechanismus heißt Tree-Sitter und ist als separates Open-Source-Projekt verfügbar. Er befindet sich seit geraumer Zeit in Entwicklung und hat aktuell Beta-Status. Er soll vor allem das Code Folding deutlich verbessern, betrifft aber auch die Syntaxhervorhebung. Er baut beim Parsen des Sourcecodes Syntaxbäume auf.

Für das Ein- und Ausblenden von Codeblöcken interpretiert Atom den Code bisher nicht, sondern nimmt lediglich die Einrückung als Hinweise. Das führt beim Umbruch langer Codezeilen innerhalb der Parameterangaben zu unübersichtlichen Ergebnissen:

int Funktion(int ein_viel_zu_langer_ParameterName_1,
int ein_viel_zu_langer_ParameterName_2) {
return ein_Ergebnis;
}

ergibt beim Code Folding derzeit folgende, nichtssagende Darstellung:

int Funktion (ein_viel_zu_langer_ParameterName_1, ...

Nach dem neuen System sind folgende drei Darstellungen möglich:

int Funktion(...){
return ein_Ergebins;
}
int Funktion(ein_viel_zu_langer_ParameterName_1,
ein_viel_zu_langer_ParameterName_2) {..}
int Funktion(...) {...}

Da Tree-Sitter den Code interpretiert, benötigt er passende Grammatiken für die jeweiligen Programmiersprachen. Derzeit existieren solche für JavaScript, TypeScript, Python, C, C++, Go und Bash. Der derzeit als Beta-Variante verfügbare Atom 1.25 enthält den Tree-Sitter, der allerdings standardmäßig deaktiviert ist. Zum Aktivieren dient die Einstellung Use Tree Sitter Parsers in den Core-Settings von Atom.

Das aktuelle Release Atom 1.24 hat den neuen Parser noch nicht an Bord, enthält aber bereits Änderungen an der LanguageMode-API: Statt .setGrammar(grammar) auf einen Editor anzuwenden, gibt es die Methode atom.grammars.assignLanguageMode(buffer, file), um die passende Programmiersprache für den aktuellen Buffer auszuwählen. Die Funktion atom.grammars.autoAssignLanguageMode(buffer) schließt die Programmiersprache aus der Endung, verwendet also beispielsweise für ".js" JavaScript .

Weitere Neuerungen in Atom 1.24 wie die asynchronen Kontextmenüs und in der Beta von Atom 1.25 lassen sich dem Atom-Blog entnehmen. Die vollständige Liste der Neuerungen ist in den Release-Notes zu finden. Letztere enthält zudem Verweise auf plattformspezifische Binaries des Open-Source-Editors. (rme)