Login
Newsletter
Werbung

Do, 12. Januar 2017, 15:00

Skripten mit Emacs

Dieser Artikel gibt eine Einführung, wie man Emacs Lisp nutzen kann, um Skripte zu schreiben oder aber interaktiv mit dem Interpreter zu arbeiten.

Im Artikel Vortasten mit Emacs Lisp wurde darauf eingegangen, wie man die Tastenbelegung in Emacs anpassen kann und einzelnen Tasten Emacs-Befehle zuweist. Dieser Artikel gibt eine Einführung, wie man diese Fähigkeit nutzen kann, um Skripte zu schreiben oder aber interaktiv mit dem Interpreter zu arbeiten.

Wenn in Emacs eine Taste gedrückt wird, führt der Interpreter den Code des zugewiesenen Kommandos aus. Der Interpreter, der bei Emacs immer im Hintergrund läuft, kann auch unabhängig vom Editor genutzt werden.

Man könnte sich natürlich fragen, aus welchem Grund ein Wirbeltier mit einem Gehirn so groß wie eine Melone Emacs zum Skripte ausführen benutzen möchte, wenn man doch auch mächtige Skriptsprachen wie Python und Ähnliches zur Verfügung hat.

Dazu lässt sich sagen, dass Emacs Lisp eine kleine, aber vielseitige Programmiersprache ist. Insbesondere zur Textverarbeitung oder zur Dokumentenkonvertierung der beliebten Org-mode-Dateien kann Emacs Lisp durchaus eine sinnvolle Wahl sein. Hinzu kommt es intensiven Emacs-Nutzern gelegen, wenn in Skripten auf die bereits bekannten Routinen des Editors zurückgegriffen werden kann.

Prompt

Folgendes Beispiel zeigt zunächst auf einleuchtende Weise, warum man bei Skriptsprachen von einem REPL (Read Eval Print Loop) spricht:

$ emacs --batch --eval "(progn (require 'cl) (loop (print (eval (read)))))"

Mit dem obigen Befehl erhält man einen Prompt, der auf Eingabe von Emacs-Lisp-Code wartet. Die --batch-Option verhindert, dass Emacs sein Programmfenster (Emacs-lingo: Frame) öffnet und stellt sicher, dass Emacs nach dem Abarbeiten der restlichen Argumente wieder beendet wird. Der Code nach der --eval-Option startet eine Endlosschleife, die zeilenweise Code einliest und das jeweilige Ergebnis ausgibt. Da das loop-Makro in der Bibliothek cl zu finden ist, wird diese zunächst mit (require 'cl) geladen.

Das Interface dieser Variante ist sehr rudimentär. Sowohl das Löschen von eingegebenem Text als auch die Navigation in der Eingabe sind nicht möglich. Ein beherztes Drücken der Tasten »Strg + C« beendet aber, wie im Terminal üblich, den Spuk schnell wieder.

Von der Funktionalität können sich Interessierte durch fehlerfreie Eingabe folgendes Code-Schnipsels überzeugen lassen:

(message "Hallo Emacs!")  

Das obige Beispiel eignet sich dazu, um Emacs als Interpreter vorzustellen, aber möchte man etwas länger mit einem interaktivem Prompt arbeiten, sollte man Emacs besser im normal Editor-Modus starten und mit M-x ielm das dafür gedachte Interface nutzen.

Kommentare (Insgesamt: 1 || Alle anzeigen )
Remacs (ShalokShalom, Fr, 13. Januar 2017)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung