Atom gehört zu den beliebtesten Open-Source-Texteditoren. Vor allem die vielen Möglichkeiten zur Anpassung haben dem Programm einen guten Ruf in der Community verschafft. Jetzt ist der Editor in Version 1.24 erschienen. Diese bringt neben diversen kleineren Änderungen vier wichtige Neuerungen mit:
- Read-only Texteditor
- neues LanguageMode API
- asynchrone Kontextmenüs
- Automatisches Scrollen beim Erweitern und Schließen von Code
Read-only und angepasste API
Packages des Texteditors können nun mit einem readonly
-Attribut versehen werden, sodass Nutzer keine Änderungen vornehmen können. Dies kann beispielsweise sinnvoll sein, wenn der Code aus der GitHub-Historie des Package-Erstellers stammt. Les- und Kopierbar bleibt der angezeigte Code aber auch mit dieser Funktion. Die Implementierung in ein Package erfolgt mit diesem Abschnitt: editorElement.setReadOnly(true)
.
Mit der Änderungen am Language-API bereiten sich die Entwickler von Atom bereits auf kommende Änderungen beim Syntax-Highlighting und beim Erweitern und Einklappen von Code vor (siehe unten). Statt wie bisher .setGrammar(Grammar)
im Editor zu nutzen, kann einem Buffer in der atom.grammar
-Registry jetzt ein Sprachmodus zugewiesen werden:
const buffer = editor.getBuffer() atom.grammars.assignLanguageMode(buffer, 'source.js')
Zusätzlich kann die Sprache für einen Buffer durch den Befehl atom.grammars.autoAssignLanguageMode(buffer)
aus Dateiendung und aktuellem Inhalt abgeleitet werden. Durch atom.grammars.maintainLanguageMode(buffer)
wird ein abgeleiteter Sprachmodus zugewiesen und laufend aktualisiert, wenn sich der Dateipfad des Buffers ändert oder neue Sprachpakete geladen werden. Trotzdem sind die Grammar
-spezifischen APIs weiterhin nutzbar, um die Rückwärtskompabilität zu gewährleisten.
Änderungen an UI und UX
Zwei entscheidende Änderung für das Userinterface und damit auch die UX bringen die Einführung asynchroner Kontextmenüs und das automatische Scrollen mit sich. Ein Rechtsklick führt nicht mehr dazu, dass Ereignisschleifen oder Rendering gestoppt werden, wenn ein Menü geöffnet wird. Ebenfalls der leichteren Bedienbarkeit dient eine Neuerung bei der Entfaltung von Codeblöcken. Diese Aktion konnte in früheren Versionen von Atom den Cursor schnell aus dem Bildschirm katapultieren. Ab Version 1.24 wird Atom automatisch scrollen, damit der Cursor auch nach dem Entfalten großer Codeblöcke sichtbar bleibt.
Ausblick auf die Atom 1.25 Beta
Das nächste Update von Atom steht schon in den Startlöchern und die umfangreichen Änderungen in Version 1.25 sind bereits als Beta verfügbar. Die folgenden Updates sind auf dem Weg zur finalen Implementierung:
- Verbessertes Syntax-Highlighting und Einklappen von Code
- Verbesserungen für Python und HTML
- Änderungen am GitHub Package
- Anpassung von Performance und Reaktivität
Die Beta im Detail
Mit dem inkrementellen Parsing-Funktion „Tree-Sitter“ sollen Syntax-Highlighting und das Ein- und Ausklappen von Code laut Entwicklern „fundamental verbessert“ werden. Derzeit ist das System für JavaScript, TypeScript, Python, C, C++, Go und Bash verfügbar. Um es einzuschalten, muss die Option „Use Tree Sitter Parsers“ in den Settings von Atom aktiviert werden. Ein Beispiel veranschaulicht, was mit Tree-Sitter möglich ist. Folgende Funktion wurde bisher vollständig eingeklappt:
int add(int left, int right) { return left + right; }
Und sah dann aus, wie im folgenden Bild. Darunter zu sehen ist die Einklappung mit Tree-Sitter. Deutlich erkennbar ist, dass an bestimmten Stellen eine Einklappung erfolgt, die ohne Tree-Sitter nur ein- oder ausgeklappt wären.Außerdem können mit Tree-Sitter die Bereiche für das Ein- und Ausklappen nach Syntaxknoten ausgewählt werden, sodass bestimmte Abschnitte gezielt gefaltet werden können.

Quelle: Atom.io

Quelle: Atom.io
Auch für Python und HTML gibt es Neuigkeiten: Wenn Python-Code editiert wird, unterstützt der Tokenizer jetzt Annotationen für Funktionen, asynchrone Funktionen, String-Formatierung, F-Strings und binäre Strings. In HTML-Dokumenten werden style
-Attribute als CSS tokenisiert.
Auch am GitHub-Package haben die Entwickler gearbeitet. So können ab Version 1.25 unter anderem Änderungen am File Mode nachvollzogen und angezeigt werden, Außerdem ändert die Diff View nicht mehr die Scrollposition, wenn das nicht gewünscht ist.
Der letzte bedeutende Abschnitt der Änderungen in Version 1.25 beziehen sich auf Performance und Reaktivität von Atom. Das Kommando atom --wait
öffnet Files jetzt in bestehenden Fenstern des Editors. So soll das Programm noch besser für das Schreiben von Commit Messages geeignet sein. „Confirm“- und „Save“-Dialoge, die mit der Atom-API gestartet werden, können jetzt asynchron sein. Die internen Caller haben dafür ein Update erhalten, allerdings müssen Package-Autoren die asynchrone Form bewusst auswählen, indem sie Callback-Argumente angeben:
// Asynchronous atom.confirm() atom.confirm({ message: 'Click yes to win', buttons: ['Yes', 'No'] }, response => { if (response === 0) { console.log('YOU WIN!') } else { console.log("Well well aren't we contrary") } }) // Asynchronous showSaveDialog() atom.getCurrentWindow().showSaveDialog({ title: 'Save File', defaultPath: process.cwd() }, chosenPath => { console.log(`Successfully saved to ${chosenPath}.`) })
Neben diesen größeren Änderungen sind noch viele weitere in den Releasenotes zum Update und zur Betaversion zu finden. Auf der Atom-Website stehen sowohl die stabile Version 1.24 als auch die vorläufige Version 1.25 ab sofort zum Download zur Verfügung.