EMACS – Steile Lernkurve bis zum Umstieg
27. Februar 2022

Achtung! Das ist ein Nerd-Artikel – nur lesbar und interessant für IT-Nerds und Menschen, denen die Bezeichnung „EMACS“ etwas sagt … 🙂

Über EMACS habe ich ja schon einige Artikel verfasst. Seit vielen Wochen bin ich schon dabei, alle Softwareprojekte und auch deren Dokumentation auf EMACS umzustellen. Und jetzt ist es vollbracht – das Urgestein EMACS kommt jetzt statt dem konventionellen Visual Studio Code zum Einsatz. Die steile Lernkurve, die jeder zu nehmen hat, der sich mit EMACS beschäftigt, hat längst noch nicht ihren Zenit erreicht.

Aber ich bin jetzt so weit, dass ich dasselbe Maß an Produktivität mit EMACS erreicht habe, wie mit einem „normalen“ Editor. Es stellt sich also die Frage – wofür das Ganze? Nun, die Produktivität geht weit darüber hinaus und ist nahezu unendlich ausbaufähig.

EMACS – Mein eigener Splashscreen. Das Urgestein ist jetzt so konfiguriert, dass es alle anderen Editoren aussticht.

Plattformunabhängigkeit

VISUAL STUDIO CODE läuft unter WIndows, MacOS und auch unter LINUX – allerdings mit Einschränkungen. Einige Erweiterungen sind nicht für alle drei großen Betriebssysteme vorhanden oder laufen nicht so, wie sie sollten. Ich habe diese Erfahrungen zum Beispiel mit dem FTP Abgleich gemacht, der einen automatischen Upload von Webentwicklungen ermöglicht und diesen mit lokalen Daten synchronisiert.

Und wie sieht es auch mit Android? Da habe ich ein so schönes Tablet, dass ich problemlos auch als Desktop-Ersatz nutzen kann (Samsung S7+ gilt vermutlich auch für das neue S8 Ultra), muss aber für unterwegs, um CONSILIUM supporten zu können, dann doch ein Notebook mitnehmen. Denn alle Quellcode- Editoren für Android sind ein schlechter Witz.

Die Antwort ist EMACS, denn der braucht noch nicht einmal eine grafische Oberfläche. Der kann auch einem Terminal wie Termux laufen – Lösungen für ein vollwertiges Linux unter Android ohne das Gerät rooten zu müssen, gibt es einige. Oder einen einfachen Server für 1,- EUR pro Monat mieten und diesen per SSH verbinden. Ich hatte das bereits in diesem Artikel erklärt.

Der große Vorteil ist, dass man EMACS so konfigurieren kann, dass alles immer überall gleich läuft. Eine echte Plattformunabhängigkeit.

ORG MODE

Ein weiteres gewichtiges Argument ist der ORG MODE von EMACS. EMACS ist immer die Verbindung von verschiedenen Modi und die damit integrierten Verbindungen zu diversen Paketen (Erweiterungen) von denen tausende installiert werden können. Diese MODI können wiederum anderen MODI untergeordnetet sein, so dass die verschiedenen Vorteile kombiniert werden können.

Praktisches Beispiel: Wenn ich eine Webanwendung schreibe, bei der Quellcode dynamisch auf dem Server durch PHP erzeugt wird, dann kann so eine PHP Datei natürlich auch ganz normalen HTML Code oder auch Javascript umfassen. Sich auf einen Modus zu beschränken wäre also wenig produktiv. EMACS kann das kombinieren und damit auch Dinge wie Code-Completion oder Syntax Highlightning. Das ist aber nichts, was EMACS exklusiv zu leisten imstande ist.

Der ORG MODE hingegen, kann jede Art von Text strukturieren und mit Kalender- und Aufgabenfunktionen versehen. Dieser Modus ist eine Mischung aus Markdown, Projektplanung und Schnittstelle für alle nur erdenklichen Ausgabeformate. Abschnitte werden dabei mit TAB auf- und eingeklappt. Ein Export ganzer Projekte in fertige Webseiten (Video) LaTeX Texte, Word oder anschauliche, fertige Präsentationen (Video), die in einem Webbrowser ablaufen können, ist problemlos möglich.

EMACS OrgMode
Mit TAB werden die einzelnen Segmente der ORG Datei auf- und zugeklappt. In diesem Beispiel ist das die Konfigurationsdatei von EMACS selbst, die ich mit dem ORGMODE verwalte.

Mit dem ORG MODE kann man nicht nur all seine kreativen Inhalte organisieren – auch die Einbettung von Source Code, der mit Hilfe eines Paketes namens BABEL evaluiert wird, ist möglich. Das führt dann zu einer ganz neuen Interpretation eines Mechanismus namens „Litterate Programming“. Das bedeutet, der Quelltext einer Software und deren Dokumentation verschmelzen zu einem Produkt. Der Dokumentationsteil kann dann Diagramme oder LaTeX enthalten – der Sourcecode wird in Blöcken dargestellt. BABEL kann dann auch – je nach Programmiersprache – den Code evaluieren.

Litterate Programming

Literrate Programming ist ein recht neuer Begriff im Zusammenhang mit dem ORG MODUS und er scheidet die Geister. Es ist zum Einen eine ganz neue Herangehensweise an die Softwareentwicklung. Ich bin sicher, dass jedes Jahr viele Milliarden verpulvert werden, weil man mit viel Zeit und Refactoring alten, verwaisten Sourcecode aufpäppeln muss. Andererseits braucht das Dokumentieren dann entsprechende Kenntnisse und findet parallel zur Entwicklung statt. Entwickler und Analysten sitzen dann quasi aufeinander oder sind in einer Person vereint. Letztlich steht und fällt alles mit der Sorgfalt, die Dokumentation bei jeder noch so kleinen Änderung des Codes anzupassen. Wir wissen aber, dass der Zeitfaktor bei der Softwareentwicklung das nicht zulässt und dass dies in der Praxis so gut wie nie geschieht. So ist Litterate Programming pragmatisch wohl nur bei bestehenden, fundierten Projekten anwendbar – eine produktionskritische Software wird nachträglich dokumentiert. Aber dafür bräuchte es EMACS.

EMACS OrgMode Babel SOurce
Der Abschnitt zwischen #+BEGIN_SRC und #+END_SRC wird als SourceCode interpretiert. Alles andere ist Dokumentation.

Eine weitere Verfeinerung des ORG_MODE ist ORG_CAPTURE. Damit lassen sich Einträge in ORG Dateien automatisch eintragen. Um zum Beispiel Zitate oder Links zu sammeln, lässt sich ein Template anlegen, das mit einem Kurzbefehl aufgerufen wird und dann den Link bzw. das Zitat an entsprechender Stelle der ORG Datei einfügt. Protesilaos Stavrou erklärt dieses auf den ersten Blick komplexe Thema sehr anschaulich in diesem Video. Protesilaos ist übrigens Autor der sehr durchdachten MODUS THEMES für EMACS und hat auf seiner Homepage schon viele sehr nützliche Videos zum EMACS veröffentlicht.

YASNIPPETS

Auch wenn andere Editoren etwas Ähnliches können, entwickelt das letzte hier vorgestellte Element eine besondere Form der Produktivität, denn die YASNIPPETS können universell eingesetzt werden. Es ergeben sich ungeahnte produktive Möglichkeiten, wenn man diese Snippets mit anderen Erweiterungen kombiniert.

Ein Snippet wird durch eine vorgegebene Tastenkombination ausgelöst und dann durch den im Snippet angegebenen Text ersetzt. In diesem Text können Positionsmarken mit Platzhaltern ersetzt werden, die dann interaktiv mit Inhalt gefüllt werden, z.B. an den Stellen, an denen Parameter angegeben werden müssen.

In diesem Beispiel wird die Textpassage „<<bs_modal“ durch den Standard Quelltext zum Einfügen eines Modal Bootstrapfensters ersetzt und der User kann die jeweiligen Parameter wie Fenstertitel, Farbe etc. direkt anpassen:

MEACS YasSnippets Example
YASNIPPETS in Action – es wäre einfach lästig, wenn man jedes Mal mit Copy/Paste dieses Template zusammenklicken müsste …

FAZIT

EMACS ist mir das erste Mal in den 90er Jahren untergekommen. Bei den damals ersten massentauglichen Linux-Distributionen wurde EMACS immer automatisch mitinstalliert. Denn wenn die grafische Oberfläche nicht lief, mussten häufiger Dateien edititiert werden. Und wenn man dann die Anleitungen befolgt hat, wusste man nicht, was da passierte – es war nur faszninierend.

Sich mit EMACS zu beschäftigen ist eine echte Herausforderung, die auch einiges an Zeit in Anspruch nimmt. Man kann das in etwa mit der Herausforderung vergleichen, sich als Rechtshänder auf eine Nutzung der Maus mit der linken Hand umzustellen (was ich übrigens sehr empfehlen kann, da es vielen „Office-Gebrechen“ entgegenwirkt). Das kann man aber nicht partiell machen – man muss konsequent sein, geduldig und nicht zu schnell auf die Gewöhnung hoffen. Es dauert seine Zeit, aber das Ergebnis lohnt sich.

Ich werde in absehbarer Zeit noch ausführlicher auf die einzelnen Aspekte eingehen. EMACS kann das produktive Epizentrum eines Nerds werden.

Weitere Links zu diesem Thema: