Emacs Lisp (czasami nazywany Elisp) – dialekt języka programowania Lisp wykorzystywany przez edytory tekstu GNU Emacs i XEmacs, używany do pisania programów, które wspomagają pisanie tekstu oraz rozszerzają możliwości edytora Emacs. Większość funkcji edytora Emacs została napisana w Emacs Lisp-ie, oprócz między innymi niskopoziomowych funkcji wyświetlających oraz interpretera i kompilatora Emacs Lisp, które zostały napisane w języku C.
Programy w Emacs Lisp są zapisywane jako pliki tekstowe z rozszerzeniem „.el”, ale istnieje możliwość kompilacji za pomocą wbudowanego kompilatora do kodu bajtowego, dzięki czemu osiąga się wyższą wydajność. Kod bajtowy jest zapisywany w plikach z rozszerzeniem „.elc”. Programy Emacs Lisp-a są zapisywane w bibliotekach i ładowane w razie potrzeby[1], najczęściej są to tzw. tryby Emacsa[2], uruchamiane dla określonych typów plików dodające nowe funkcje, skróty klawiszowe czy kolorowanie składni[3]. W Emacsie naciśnięcie dowolnego klawisza powoduje wywołanie jakiejś funkcji napisanej w Emacs Lispie[4], którą można dowolnie zmieniać. Plik konfiguracyjny Emacsa jest programem napisanym w Emacs Lispie.
Emacs Lisp charakteryzuje się dynamicznym wiązaniem zmiennych. Posiada wbudowany garbage collector. W odróżnieniu od innych dialektów lispa nie optymalizuje wywołań z rekurencją ogonową[5].
(defun square (x) (* x x))
(defun call (fn num) (funcall fn num))
(call #'square 10)
;; 100