albatros | texte
Montag, 25. September 2023

Emacs 29.1 XI

Es gibt mehrere Completion Frameworks für den GNU Emacs. Sie sollen die Auswahl von Dateien, Buffern, von Variablen und Funktionen erleichtern. Und weil sie immer wieder empfohlen, teilweise geradezu gehypt werden, habe ich die wichtigsten ausprobiert.

  • Ido ist Teil von Emacs. Man muss es also nicht mehr hinzu installieren, sondern nur noch aktivieren. Es verändert den Mini-Buffer, indem eine Auswahl in horizontaler Anordnung gezeigt wird, und man kann diese dann weiter einschränken, indem man weiter tippt, je nach Konfiguration genau oder fuzzy, oder indem man mit dem Cursor nach rechts oder links und RET auswählt. Viel mehr macht Ido nicht. Man kann damit leben.
  • Helm von Thierry Volpiatto wird vielerorts wärmstens empfohlen. Helm hieß früher Anything und wurde dann umbenannt. Es schaltet sich in sämtliche M-x-Dialoge ein und sorgt für eine Autovervollständigung in eigenen Buffern. Helm blendet alle verfügbaren Datei- und Befehlsnamen ein, die irgendwie zum Suchstring passen. Die Auswahl erfolgt über eine Auswahlliste in einem eigenen Buffer, nicht über den Mini-Buffer, in den man den Suchstring eintippt – das ist zu Anfang etwas verwirrend. Ein Nachteil liegt in der Unruhe, die in die Bedienung kommt. Ich meine, vor allem durch Helm wird die Bedienung sogar eher erschwert als erleichtert.
  • Die dritte Lösung, die ich getestet hatte, ist Ivy von Oleh Krehel, das zusammen mit den weiteren Paketen Counsel und Swiper eingesetzt wird. Ivy wurde offenbar von Helm inspiriert, denn der Mini-Buffer wird auch hier zu einer Liste, die man direkt durchsuchen kann; dabei wird sie live gelichtet, und am Ende bleiben nur noch die Datei- und Buffer-Namen übrig, die irgendwie zur Eingabe passen. Beim Durchsuchen eines Buffers mit Swiper werden stattdessen die passenden Zeilen angezeigt, die zu einem Suchmuster passen. Das ist tatsächlich eine Verbesserung der inkrementellen Suche, die ich zu schätzen gelernt habe.
  • Das vierte Completion Framework ist Vertico von Daniel Mendler in Verbindung mit den Paketen Marginalia, Consult, Embark und Orderless. Vertico baut soweit wie möglich auf den bestehenden Funktionen in Emacs auf, bietet sie aber anders dar und erlaubt eine sehr dynamische und interaktive Auswahl. Praktisch ist, dass Marginalia die Kurzbeschreibungen von Paketen, Variablen und Funktionen einblendet, das erleichtert den Überblick erheblich. Insgesamt erinnert es mich aber zu sehr an Helm, das ich nicht mag.

Und so blieb ich am Ende erst einmal bei Ivy, das sich einerseits noch nach Emacs anfühlt, das andererseits aber auch per Swiper eine sehr schöne und nützliche Verbesserung der Isearch mitbringt. Die drei anderen Lösungen habe ich aber noch nicht deinstalliert, sondern erstmal beibehalten, um immer mal wieder testen zu können. Es mag sein, dass sich meine Bedarfe im Laufe der Zeit verändern. Außerdem ist es leichtes Gepäck, denn die nicht genutzten Pakete werden nicht geladen, wenn man sie im Init-File auskommentiert hat.

Der Verzicht auf Completion Frameworks hat aber auch vieles für sich, denn die Bedienung, bei der man Vervollständigungen per TAB und die History der Auswahl per Cursor hoch/runter bedient, ist man schon so lange vom Terminal gewöhnt, dass sie sehr eingängig ist und einfach. Außerdem wird der Zugriff auf das Dateisystem durch die Completion umständlicher. Mein Dateisystem ist Teil meines Wissensmanagements und erschließt das Material, mit dem ich arbeite, auch inhaltlich. Alle Frameworks verändern die Bearbeitung des Speicherpfads im Mini-Buffer, so dass es etwas schwieriger wird, im Pfad zu navigieren, um eine Datei in einem anderen Verzeichnis neu zu speichern. Vieles muss sich also bei der Bedienung neu einspielen, wenn man als erfahrener Emacs-Benutzer solche Lösungen zum ersten Mal einsetzt.

Weniger ist mehr.

Sie sind nicht angemeldet