Bienvenido(a) a Grupo Linuxero del Bajío lunes, julio 22 2019 @ 08:44 CEST

Iniciando el año con Emacs

  • Autor:
  • Lecturas 2,107
Artículos

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

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

Permítanme abundar. Emacs está diseñado con un núcleo básico en lenguaje C, que es rápido y eficiente, y este núcleo es completamente controlable a través de una interfaz programativa utilizando un lenguaje de programación basado 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ía cargada dinámicamente que hace uso de la API del sistema para modificarlo o extenderlo. Emacs es distinto, la personalización y extensión se logra, no a través de plugins, sino programando el mismo sistema. Cada detalle del sistema, cada concepto, cada elemento, puede ser modificado y extendido utilizando elisp, por que es parte integral del editor. En cambio, bajo el concepto de plugins, sólo aquello que tiene una API específica y explicita para los plugins, puede ser extendido.

El hecho que RMS halla elegido una variante de lisp es la base de la potencia del editor, capaz de hacer tareas tan complejas como inimaginables para un editor (por ejemplo el modo de tetris, para mostrar la tabla periódica de los elementos o como agenda). Sin embargo, también ha sido la razón por la cual mucha gente se sienta intimidada al comenzar a utilizarlo. El Lisp es un lenguaje de programación funcional, que es un paradigma de programación distinta al de la programación imperativa (como C, Pascal, Basic, etc.), que es el enfoque más extendido y enseñado.

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

Cuando inicié a utilizar Emacs utilizaba su configuración por defecto en RedHat, por lo que la magia era inexistente, pero sirvió para leerme parte del manual y familiarizarme con sus conceptos. Con el tiempo me sentí defraudado ya no encontraba la manera de hacer todas la monerías que podían hacer los IDEs de mis amigos. Pronto fue cuando me topé con la configuración que utilizaba Miguel de Icaza, su archivo .emacs, que es el archivo que lee Emacs y contiene la programación necesaria para su personalización y extensión. Ahí fue cuando me enteré de la existencia de los módulos que extienden la funcionalidad del editor, del xcscope, de la configuración de modos menores, y demás dulcecitos que hacían del Emacs una herramienta impresionante.

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

Y como dije al principio, este año lo inicié reestructurando mi .emacs, el cual era una variación del de Miguel y compañía, pero al descubrir el Planeta Emacsen, descubrí un mundo vibrante y fascinante de gente que usa y comparte su día a día con Emacs, y dentro de esa gente, el blog de EMACS-FU, llevado por un finlandés llamado Dirk-Jan Binnema, quien también muestra su archivo .emacs, el cual 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 que los manejadores de ventanas minimalistas, como dwm o el papá de todos ellos, el rat poison, están inspirados en mayor 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 :)