Emacs 31.1 automatisiert Tree-sitter-Grammatiken und streicht unexec
4 Min. Lesezeit

GNU Emacs 31.1 wurde am 24. August 2026 veröffentlicht, und die Änderung, die
den Arbeitstag am ehesten verändert, ist eine kleine: Tree-sitter-Grammatiken
können sich jetzt selbst installieren. Die Ankündigung, von Sean Whitton auf
der Mailingliste info-gnu-emacs veröffentlicht, verweist für die Details auf
etc/NEWS statt sie aufzuzählen; die Form des Releases ergibt sich daher aus
den begleitend veröffentlichten Übersichten - ein neu geschriebenes
Vervollständigungssystem, eine Reihe von Befehlen für Fensterlayouts und die
Entfernung des unexec-Dumpers, der seit Emacs 27 als veraltet gilt.
Tree-sitter-Grammatiken sind keine Handarbeit mehr
Emacs 31.1 ergänzt eine Option treesit-auto-install-grammar, die
Tree-sitter-Grammatiken automatisch installiert - so die Übersicht von
Mastering Emacs zum Release. Bisher bedeutete die Nutzung eines
Tree-sitter-Hauptmodus, die Grammatik selbst zu beschaffen und ihre Version
mit der Erwartung des Modus abzugleichen; eine Abweichung erzeugte Fehler, die
wie Editor-Bugs aussahen statt wie ein Abhängigkeitsproblem. Mastering Emacs
beschreibt die neue Option so, dass sie diese manuelle Versionspflege
beseitigt.
Auch die Tree-sitter-Navigation wird vollständiger. Dieselbe Übersicht nennt
treesit-forward-sexp-list und treesit-forward-list für die Bewegung über
strukturelle Knoten sowie einen Befehl treesit-explore zur Untersuchung des
Parse-Baums - der praktische Weg herauszufinden, warum ein Modus etwas
unerwartet hervorhebt oder einrückt.
Das Vervollständigungssystem wurde neu geschrieben
Der Completions-Puffer kann jetzt sofort erscheinen, statt darauf zu warten,
angefordert zu werden, und der Flex-Matching-Algorithmus wurde neu
geschrieben - das berichten sowohl Mastering Emacs als auch die Berichterstattung
von Linux Compatible zum Release Candidate. Vervollständigungskategorien können
voneinander erben, und RET wählt nun den mit M-UP oder M-DOWN
ausgewählten Kandidaten.
Linux Compatible dokumentiert außerdem, dass
minibuffer-visible-completions einen Wert up-down erhält: „Sie können
minibuffer-visible-completions auch mit dem neuen Wert 'up-down' verwenden,
um Vervollständigungen unabhängig vom Minibuffer zu navigieren." Wer dieses
Verhalten bisher aus Drittanbieter-Paketen zusammengesetzt hat, sollte nach
dem Upgrade fragen, welche dieser Pakete nun überflüssig sind.
Fensterlayouts bekommen eigene Befehle
Ein Fensterlayout umzustellen bedeutete bisher, Fenster von Hand zu löschen und neu zu teilen. Emacs 31.1 ergänzt Befehle, die auf das Layout als Ganzes wirken, aufgeführt von Mastering Emacs:
| Befehl | Wirkung |
|---|---|
window-layout-rotate-clockwise | Dreht das Layout im Uhrzeigersinn |
window-layout-counterclockwise | Dreht es in die andere Richtung |
window-layout-flip-topdown | Spiegelt das Layout vertikal |
window-layout-flip-leftright | Spiegelt es horizontal |
window-layout-transpose | Vertauscht Zeilen und Spalten |
other-window-backward (C-x O) | Wechselt zum vorherigen Fenster |
Laut derselben Quelle kann split-window außerdem ein gelöschtes Fenster
wiederherstellen. Zwei terminalnahe Änderungen kommen hinzu:
xterm-mouse-mode ist in Terminals, die es unterstützen, standardmäßig
aktiviert, und Child Frames funktionieren nun auch auf TTY-Frames.
Was entfernt wurde - und eine Korrektur, die fehlt
Der unexec-Dumper ist weg. Er galt seit Emacs 27 als veraltet, und Mastering
Emacs bezeichnet seine Entfernung als „das Ende einer Ära" - relevant vor
allem für alle, die Emacs selbst bauen oder die Paketierung dafür pflegen.
Auch das eingebaute Programm ctags wurde entfernt; erwarteter Ersatz ist
Universal Ctags.
Zwei Dinge haben es nicht in dieses Release geschafft. Die Arbeit am Garbage Collector wurde laut Mastering Emacs auf Emacs 32 verschoben. Und Linux Compatible berichtet, dass eine Schwachstelle in den Symbol-Kurzformen von Emacs Lisp in dieser Release-Linie zwar abgemildert wird, die vollständige Behebung aber auf Version 32 vertagt ist - wichtig zu wissen, wenn Sie Elisp-Dateien aus Quellen öffnen, die Sie nicht kontrollieren.
Die Unicode-Unterstützung geht auf Version 17.0, mit neuen Eingabemethoden für polytonisches Griechisch, Tifinagh, nördliche irokesische Sprachen wie Mohawk und Oneida, burmesische Varianten und Syrisch.
Was das für Entwickler bedeutet
Die Tree-sitter-Änderung ist die, bei der man zuerst handeln sollte. Wenn Ihre
Konfiguration selbstgeschriebenen Code zur Grammatikinstallation oder einen
festgepinnten Grammatik-Commit enthält, probieren Sie
treesit-auto-install-grammar in einer Scratch-Konfiguration aus, bevor Sie
etwas löschen - und entfernen Sie dann, was dadurch überflüssig wird. Für die
Vervollständigung gilt dasselbe: Der sofort erscheinende Completions-Puffer
und der neu geschriebene Flex-Matcher überschneiden sich mit dem, wofür
mehrere verbreitete Pakete existieren; 31.1 einen Nachmittag lang mit einer
absichtlich minimalen Konfiguration zu fahren, ist der schnellste Weg
herauszufinden, was Sie nicht länger mitschleppen müssen.
Wer Emacs aus dem Quellcode baut oder ein Paket für eine Distribution pflegt,
sollte die unexec-Entfernung als Änderung am Build-System lesen und das eigene
Rezept prüfen, bevor Nutzer upgraden. Die Entfernung von ctags verdient
dieselbe Behandlung: Alles, was das mitgelieferte Binary aufruft, braucht
stattdessen ein installiertes Universal Ctags.
Zwei Punkte sprechen für Geduld statt Eile. Die Ankündigung selbst verweist
für die Details auf etc/NEWS, also ist C-h n in einem frisch gebauten 31.1
die verbindliche Liste - nicht irgendeine Zusammenfassung, auch nicht diese.
Und weil die Korrektur der Symbol-Kurzformen erst in Emacs 32 landet, ist die
Sicherheitslage hier unvollständig; wer regelmäßig nicht vertrauenswürdiges
Elisp öffnet, hat damit einen Grund, weiter aufmerksam zu bleiben, statt die
Sache für abgeschlossen zu halten.
Sources
- Emacs 31.1 released - GNU info-gnu-emacs mailing list
- What's New in Emacs 31.1? - Mastering Emacs
- GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible