Emacs Lisp

Emacs Lisp este un dialect al limbajului de programare Lisp , folosit printre altele de editorii de text GNU Emacs și XEmacs (care vor avea denumirea comună de Emacs în acest articol). Este utilizat pentru implementarea majorității caracteristicilor standard de editare Emacs, restul fiind scrise în C. Utilizatorii Emacs de obicei scriu cod în Emacs Lisp pentru a personaliza și a adăuga funcționalitate la Emacs.

Emacs Lisp este uneori denumit „ELisp”, ceea ce creează un risc de confuzie cu un alt dialect al lui Lisp cu același nume, dar neavând nicio legătură cu acesta. În ceea ce privește funcționalitatea, Emacs Lisp este similar cu dialectele MacLisp și Common Lisp . Suportă atât programarea funcțională, cât și cea imperativă , deci este un limbaj multi-paradigmă. Lisp a fost ales ca limbaj de extensie pentru numeroasele sale caracteristici, inclusiv capacitatea sa de a trata funcțiile ca date.

Există mai multe moduri de a personaliza Emacs, utilizatorul nu trebuie să știe cum să programeze în Emacs Lisp. Într-adevăr, de la versiunea 20, GNU Emacs include Customize , care permite utilizatorilor să definească variabile printr- o interfață grafică. Personalizarea are totuși o funcționalitate limitată și, prin urmare, este rezervată pentru modificări minore în comportamentul Emacs. Utilizatorii care doresc să profite la maximum de extensibilitatea Emacs își vor scrie propriul modul în Emacs Lisp.

Exemplu

Iată un exemplu simplu de extensie pentru Emacs scrisă în Emacs Lisp. În Emacs, zona de editare poate fi separată în mai multe zone numite „ferestre”, fiecare dintre acestea putând afișa un tampon diferit. Un buffer este aproximativ o zonă de text încărcată în memorie de Emacs dintr-o sursă (un fișier, de exemplu). Bufferul poate fi salvat, la cererea utilizatorului, într-un fișier.

Comanda utilizatorului pentru a deschide o nouă fereastră verticală este Cx 2 (ceea ce înseamnă „apăsați tasta x ținând apăsată tasta de control , apoi apăsați tasta 2  ”). Această comandă apelează o funcție Emacs Lisp, split-window-vertical . În mod normal, când apare noua fereastră, se afișează la fel ca tamponul anterior . Să presupunem că vrem să afișeze conținutul următorului buffer disponibil. Pentru a realiza acest lucru, utilizatorul scrie următorul cod Emacs Lisp, fie într-un fișier sursă, fie într-un buffer gol:

(defun my-split-window-function () (interactive) (split-window-vertically) (set-window-buffer (next-window) (other-buffer))) (global-set-key "\C-x2" 'my-split-window-function)

Prima expresie, (defun ...) , definește o nouă funcție numită my-split-window-function care apelează mai întâi funcția split-window-vertical (vechea funcție de separare a ferestrelor), apoi spune noii ferestre să afișeze un alt buffer . A doua expresie, (global-set-key ...) , reatribuie comanda rapidă de la tastatură „Cx 2” la noua funcție.

Vezi și tu

Articole similare

linkuri externe