Emacs Lisp (kurz Elisp) ist der Lisp-Dialekt des Editors GNU Emacs und die Sprache, in der nahezu die gesamte Editor-Logik geschrieben ist. Wer Emacs erweitert oder konfiguriert, schreibt Elisp — die init.el ist ein Elisp-Programm.
Erste Schritte
Elisp wird interaktiv im Editor ausgewertet:
M-x eval-buffer ; ganze Datei auswerten
M-x eval-defun ; aktuelle Definition auswerten
M-x emacs-lisp-byte-compile-file ; in .elc kompilieren
In der Kommandozeile lässt sich Emacs auch skriptartig nutzen:
emacs --batch -l datei.el -f Funktion ; ohne GUI ausführen
emacs -Q --batch --eval "(message "Hallo")" ; Optionen deaktivieren und Ausdruck auswerten
Paketverwaltung
- package.el ist der eingebaute Paketmanager:
M-x package-install,M-x list-packages. - use-package deklariert Pakete deklarativ in der init.el und verzögert das Laden.
- straight.el installiert Pakete reproduzierbar direkt aus Git-Repositories.
Wichtige Sprachkonstrukte
(defun gruss (name) (message "Hallo %s" name)) ; Funktion
(setq mein-var 42) ; Variable setzen
(add-hook 'text-mode-hook 'meine-funktion) ; Hook registrieren
(if (boundp 'var) var nil) ; Bedingung
Praxis-Tipps
- Mit
C-h f(describe-function) findet man jede Elisp-Funktion mit Doku. - Byte-Compilation (
.elc) beschleunigt das Laden großer Konfigurationen. - Elisp verwendet dynamische Bindung — Variablen in der Konfiguration sind global sichtbar.
Verwandte Grundlagen: Common-Lisp-Befehle, Racket-Befehle, Scheme-Befehle.