Emacs Lisp


Emacs Lips
Información sobre la plantilla
Parte de la familia Libre
Distel-dbg.png
Ventana de Emacs Lips
CreadorGNU
DesarrolladorGNU
Fecha de Creación1995
Última versión estable20.0
Plataformas soportadasMultiplataforma
GéneroEditor de textos
Sistemas Operativos compatiblesGNU/Linux, FreeBSD, AIX 4.3.3 y superior, Mac OS X, MS DOS, MS Windows, NetBSD, OpenBSD, Solaris, SunOS, Ultrix
LicenciaLibre
Sitio web
GNU Emacs

Emacs Lisp es un dialecto del lenguaje de programación Lisp que se usa en los editores GNU Emacs y XEmacs. EmacsLisp es a veces llamado Elisp, lo cual tiene el riesgo de llevar a confundirlo con otro dialecto de Lisp que tiene el mismo nombre.

La mayoría de la funciones de edición de Emacs vienen de código escrito en Lisp; el resto está escrito en C. Los usuarios que deseen personalizar o extender las funcionalidades de Emacs pueden escribir código en Emacs Lisp.

Emacs Lisp está relacionado con los dialectos de Lisp: MacLisp y Common Lisp. Permite métodos de programación imperativa y funcional. Lisp fue escogido como el lenguaje de extensión de Emacs debido a sus poderosas funcionalidades, incluyendo la habilidad de tratar funciones como datos.

Emacs Lisp

Emacs Lisp no es el único método de personalizar GNU Emacs. Desde la versión 20, GNU Emacs ha incluido la posibilidad de personalizar variables comunes a través de una interfaz gráfica. "Personalizar" funciona cuando el usuario escribe código Emacs Lisp, y está limitado a personalizaciones simples. No todos los usuarios necesitan el amplio grado de extensibilidad que ofrece Emacs. Aquellos que si, pueden escribir su propio código Emacs Lisp.

  • Lisp tiene 3 dialectos principales hoy en dia (aunque existen más), éstos son Scheme, Common lisp y Emacs lisp.
  • Scheme: la filosofía de Scheme es minimalista. Scheme proporciona un número muy reducido de primitivas, construyendo el resto a partir de este reducido número de abstracciones. El estándar (R5RS) tan sólo ocupa unas 50 páginas y se puede descargar de la página de schemers.org (http://schemers.org/Documents/Standards/R5RS/r5rs.pdf).
  • Common lisp: por otro lado tenemos common lisp, él índice de las especificaciones de éste es tan grande como todas las especificaciones de scheme, por lo lo que posee un gran número de primitivas. La especificación y referencia más cercana es la CLtL (www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html).
  • Emacs lisp: éste dialecto fue escrito pensando u orientado para el entorno Emacs. El juego de primitivas que ofrece no es tan pequeño como el de Scheme, pero tan poco tan grande como el de Common lisp. Su número de primitivas también es reducido, lo que ocurre es que el estándar también define la biblioteca, que se construye con el juego de primitivas reducidas. La mejor referencia se encuentra en la web de gnu (http://www.gnu.org/software/emacs/manual/elisp.html).

Por supuesto nuestro entorno emacs tiene un intérprete de lisp (emacs lisp) escritro en c, que es la base de toda la aplicación y del resto de funcionalidades que se cargan. Por lo tanto podemos decir que podemos interpretar código Lisp desde emacs (y se hace constantemente). Para ello tenemos distintas posibilidades:

  • M-x run-scheme : podremos comenzar a interpretar scheme.
  • M-x run-lisp : podremos comenzar a interpretar common lisp.
  • M-x eval-expression ó M-: : podremos comenzar a interpretar emacs lisp desde el minibuffer.
  • C-x C-e : para interpretar emacs lisp escrito en algún buffer (útil cuando no es tan corto el código).

También podemos evaluar código emacs lisp usando M-x eval-buffer si queremos evaluar un buffer entero en dicho intérprete o bien M-x eval-region si lo que queremos es que interprete una región. Debemos tener instalados en nuestro sistema los intérpretes de scheme y common para poder evaluar expresiones de estos, el de emacs lisp, ya viene con GNU/Emacs.

Lambda

Por último recomendar este magnífico video (Taller de lisp) también incrustado al final de éste post, de David Arroyo (los primeros 24 minutos sobre la história de Lisp) y José E. Marchesi (a partir del minuto 25, sobre como se implementa Lisp de forma interna).

Enlaces externos

  • GNU Emacs Sitio oficial en el proyecto GNU (en inglés).
  • GNU Emacs Lisp Reference Manual en Sitio oficial. (en inglés)
  • Manual de Referencia de GNU Emacs Lisp Sitio no oficial. (en español)

Bibliografía

http://www.blackhats.es