Grupo Linuxero del Bajío

Iniciando el año con Emacs

Víctor Manuel Jáquez Leal

Este año lo inicié reestructurando mi .emacs.

Para los que no estén familiarizados, Emacs es un editor detextos. Sí, el mismo concepto básico del Notepad de M$/Windows o el gEdit de Gnome. Claro, quecomparar Emacs con los anteriores sería muy injusto para estos últimos, ya queEmacs extiende el concepto de editor de texto hasta el paroxismo.

Permítanme abundar. Emacs está diseñado con un núcleo básico en lenguajeC, que es rápido y eficiente, y este núcleo es completamente controlable através de una interfaz programativa utilizando un lenguaje de programaciónbasado en lisp, el elisp.

Las nuevas aplicaciones, para extender y adaptar sus capacidades básicas,utilizan el concepto de plugin, como por ejemplo Eclipse o gEdit. Un plugin es una libreríacargada dinámicamente que hace uso de la API del sistema para modificarlo oextenderlo. Emacs es distinto, la personalización y extensión se logra, no através de plugins, sino programando el mismo sistema. Cada detalle delsistema, cada concepto, cada elemento, puede ser modificado y extendidoutilizando elisp, por que es parte integral del editor. En cambio, bajo elconcepto de plugins, sólo aquello que tiene una API específica y explicitapara los plugins, puede ser extendido.

El hecho que RMS halla elegido unavariante de lisp es la base de la potencia del editor, capaz de hacer tareastan complejas como inimaginables para un editor (por ejemplo el modo detetris, para mostrarla tablaperiódica de los elementos o como agenda). Sin embargo, también ha sido la razónpor la cual mucha gente se sienta intimidada al comenzar a utilizarlo. ElLisp es un lenguaje de programaciónfuncional, que es un paradigma de programación distinta al de laprogramación imperativa (como C, Pascal, Basic, etc.), que es el enfoque másextendido y enseñado.

Muchos de los grandes proyectos de software en el mundo son escritos conEmacs y esto es posible gracias a la portabilidad de editor, que funciona conlas mismas prestaciones tanto en limitados ambientes de línea de comandos(texto plano) como en grandes sistemas gráficos; también es posible dado lainfinidad de módulos que proveen funcionalidades que hacen del Emacs un IDEcompleto, pero con una interfaz al usuario más limpia, aunque también másaustera.

Cuando inicié a utilizar Emacs utilizaba su configuración por defecto enRedHat, por lo que la magia era inexistente, pero sirvió para leerme parte delmanualy familiarizarme con sus conceptos. Con el tiempo me sentí defraudado ya noencontraba la manera de hacer todas la monerías que podían hacer los IDEs demis amigos. Pronto fue cuando me topé con la configuración que utilizabaMiguel de Icaza, suarchivo .emacs, que es el archivo que lee Emacs y contiene la programaciónnecesaria para su personalización y extensión. Ahí fue cuando me enteré de laexistencia de los módulos que extienden la funcionalidad del editor, delxcscope, de laconfiguración de modos menores, y demás dulcecitos que hacían del Emacs unaherramienta impresionante.

Luego conocí el CEDET, el cuales un proyecto que intenta hacer del Emacs, un entorno similar a los Visualesde Microsoft. Sin embargo, me resistí a su tentación, ya que si iba aprogramar en Unix, lo haría la manera de Unix, a la vieja usanza paradesarrollar buen software y no arrastrar vicios de una plataforma proclive ala mediocridad (sí, lo se, soy un extremista en ocasiones).

Y como dije al principio, este año lo inicié reestructurando mi .emacs, elcual era una variación del de Miguel y compañía, pero al descubrir el Planeta Emacsen, descubrí un mundovibrante y fascinante de gente que usa y comparte su día a día con Emacs, ydentro de esa gente, el blog de EMACS-FU, llevado por un finlandésllamado Dirk-Jan Binnema, quien también muestra su archivo .emacs, elcual es mucho más elegante y divertido que el mazacote de Miguel.

Tengo conocidos que utilizan Emacs para todo: leer y escribir correo,chatear en IRC, programar, twittear, como terminal de línea de comandos,etc. Yo soy más limitado, pero intento descubrir, con la mente abierta, quémás puedo hacer en Emacs con mayor eficiencia. Otro detalle interesante es quelos manejadores de ventanas minimalistas, como dwm o el papá de todos ellos, el rat poison, están inspirados enmayor o menor medida, en GNU/Emacs y GNU/Screen.

PD: XKCD también reconoce la potencia de Emacs.

Addendum: Este artículo fue hecho con Emacs :)