Emacs Lisp
A HupWiki-ből...
Az Emacs Lisp (röviden Elisp) a GNU Emacs és XEmacs szövegszerkesztőkben használt LISP dialektusú programozási nyelv. Az Emacs funkcionalitásának túlnyomó részét Elispben, a maradékot (és a Lisp értelmezőt is) C-ben írták. A teljes Emacs keretrendszer testreszabható és bővíthető Elispben. Az Emacs konfigurációs állománya (.emacs) is Elisp nyelvű.
Az Elisp főbb különbségei a Common Lisp-től: alapértelmezetten dinamikus hatókör; nincsenek csomagok (packages); csak interpretált (nem fordul gépi kódra, csak Emacs bytecode-ra).
Az Elisp forráskódokat megegyezés szerint .el kiterjesztésű fájlokban tároljuk. A forráskódok lefordíthatók bájtkódra, ezek a fájlok .elc-re végződnek. Abból kifolyólag, hogy az Emacs nagyrészt Elisp kódbázison alapszik, teljes mértékben támogatja az Elisp nyelvű fejlesztést: tartalmaz természetesen dedikált major-mode-ot (M-x emacs-lisp-mode), beépített nyomkövetőt és hibakeresőt, kontextus-érzékeny súgót, Elispben programozható shellt.
Az Elispben írt programok az Emacs bináris --script kapcsolójával is futtathatók – ebben az esetben nem indul el az alkalmazás felhasználói felülete, az Elisp programunk egy Python/Perl/stb. szkripthez hasonlóan fog viselkedni (pl. szabványos bemeneteti, kimeneti és hiba csatornát fogja használni).
Példa forráskód
Álljon itt egy egyszerű Elisp függvény, amely a kurzor alatti szót kikeresi a SZTAKI angol–magyar szótárában.
(defun slink-sztaki-phrase-lookup () "Look up the phrase under cursor in SZTAKI and echo translation if any." (interactive) (let* ((phrase (downcase (thing-at-point 'word))) (url (concat "http://szotar.sztaki.hu/dict_search.php" "?O=HUN&E=1&L=ENG%3AHUN%3AEngHunDict&in_emacs=1&W=" (w3m-url-encode-string phrase))) (match (format "phrase '%s' not found" phrase))) (with-temp-buffer (w3m-process-with-wait-handler (w3m-retrieve-and-render url nil nil nil nil handler)) (when (re-search-forward (concat phrase ":.*") nil t) (setq match (match-string 0)))) (message (concat "SZTAKI: " match))))