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))))
