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, najczęściej są to tzw. tryby Emacsa, uruchamiane dla określonych typów plików dodające nowe funkcje, skróty klawiszowe czy kolorowanie składni. W Emacsie naciśnięcie dowolnego klawisza powoduje wywołanie jakiejś funkcji napisanej w Emacs Lispiezazwyczaj jest to funkcja self-insert-command, która wstawia ostatni wciśnięty znak do bufora, 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ą.
Cechy dialektu dynamiczne wiązanie zmiennych deklaracje funkcji przez defun jak w Common Lisp dwie przestrzenie nazw (funkcje i zwykłe zmienne) jak w Common Lips
Przykład kodu
(defun square (x) (* x x)) (defun call (fn num) (funcall fn num)) (call #'square 10) ;; 100
Zobacz też Emacs Lisp Porównanie dialektów Lispu
Przypisy
Linki zewnętrzne Emacs na stronie projektu GNU R. Chassell, "Programming in Emacs Lisp, an Introduction" B. Lewis, D. LaLiberte, R. Stallman, "GNU Emacs Lisp Reference Manual" Emacs Wiki
Kategoria:Emacs Kategoria:Lisp