Emacs im Browser
Disclaimer: Ja, ich weiß, richtige Emacs-Nutzer benutzen nicht Emacs im Browser, sondern browsen im Emacs… Aber!
Mit all der schönen bunten Emacs-Unterstützung für Syntaxhighlighting, Folding und sonstwas ist es ziemlich ernüchternd, wenn man im Browser einen längeren Text eintippt, fern von allen Annehmlichkeiten. Könnte man denn nicht etwas Emacs-Komfort im Browser bekommen?
Klar, kann man!
GhostText
Basis des ganzen ist GhostText, eine Browsererweiterung, die sowohl unter Firefox als auch unter Chrome (und über Umwege auch Opera) läuft. Man braucht dazu noch einen unterstützten Texteditor (z.B. Emacs).
Wenn man nun im Browser einem großen Eingabefeld begegnet, kann man GhostText aktivieren und es verbindet sich per Websocket mit dem Texteditor und lässt dort den Text erscheinen. Das Bearbeiten erfolgt in Echtzeit: Man kann sowohl im Browser als auch im Editor tippen und sieht das jeweils live im anderen Fenster.
Falls es für den eigenen Editor kein passendes Plugin mit Live-View gibt, bleibt als Notnagel immer noch It’s All Ghosts: Das schreibt den aktuellen Feldinhalt in eine Datei, startet den Editor und kopiert beim Verlassen des Editors den Dateiinhalt wieder zurück in den Browser. Das klappt sogar mit EDLIN.
Die Installation im Firefox beschränkt sich darauf, das Addon zu installieren. Zu konfigurieren ist nichts.
Atomic Chrome
Nicht über den Namen wundern: Das Vorgängerprojekt von GhostText war wohl Atomic Chrome, ein Plugin für Chrome, das mit Atom kommunzieren konnte. Das hat jemand als atomic-chrome.el auf Emacs portiert und neuerdings kann das auch mit GhostText (und dementsprechend Firefox) reden.
Die Installation ist nicht wild:
- Sicherstellen, dass das Melpa-Repository installiert ist. Ich habe
dafür folgendes in meiner
~/.emacs
:
- ;; use MELPA/ORG
- (require 'package)
- (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
- (package-initialize)
- Aus dem Emacs heraus einmalig installieren:
M-x package-install [RET] atomic-chrome [RET]
- Autostart bei jedem Emacs-Aufruf, auch wieder in der
~/.emacs
:
- ;; skip when not installed
- (when (require 'atomic-chrome nil :noerror)
- ;; don't throw an error if another emacs instance has the port
- (ignore-errors
- (atomic-chrome-start-server)))
Um das Bearbeiten eines Textes zu beenden, macht man entweder den
Emacs zu oder schließt den Edit-Buffer per C-c C-c
.
Es gibt noch ein paar Einstellmöglichkeiten, die stehen in der Anleitung. Und das war’s auch schon.
Dramaturgie
Als ich über GhostText gestolpert bin, habe ich es kurz ausprobiert
und toll gefunden. Ich muss allerdings zugeben, dass ich es seitdem
noch nicht wieder benutzt habe – seit ich meine Blogartikel direkt in
orgmode.el
schreibe, tippe ich nicht mehr viel im Browser.
Warum blogge ich dann trotzdem drüber?
Nun, die Sache oben hat einen kleinen Haken: Wenn kein Emacs gestartet ist, lauscht kein Server auf dem Port und GhostText kann kein Editorfenster öffnen. (Ein Browser darf ja nicht so mir-nichts-dir-nichts irgendwelche Programme außerhalb seiner Sandbox ausführen.)
Das kann man aber lösen, indem man Emacs im --daemon
-Modus
startet: Dann lauert er unsichtbar im Hintergrund, lauscht auf dem
Port, öffnet bei Bedarf Fenster und läuft einfach weiter, wenn man das
letzte Fenster zumacht. Bester Nebeneffekt: emacs file.txt
startet
rattenschnell, weil Emacs ja nicht erst booten muss, sondern nur die
Datei öffnen und ein Fenster malen. Das ist eine von den Sachen, die
ich gerne schon 10 Jahre früher eingerichtet hätte.
Und weil das so eine geile Sache ist, schreibe ich darüber ein andermal ∗cliffhang∗.
Netz - Rettung - Recht am : Wellenreiten 01/2019