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.