Mi historia con Emacs se remonta a 2005, momento en que yo pasaba una crisis de editor de texto. Llevaba varios años buscando un editor de texto que se ajustara a mis necesidades. Primero para Windows, donde me tiré años probando editores que venían en CDs de revistas, tanto libres, gratis o shareware. Hasta entonces había trabajado con varios IDEs y editores, pero estaban orientados a un lenguaje determinado, eran poco personalizables o no eran todo lo cómodos que a mi me gustaría (eso de, el editor A me gusta, y el editor B no, pero si A tuviera una cosilla que tiene B que está muy bien…)

La elección de un editor de texto es algo muy personal de cualquier desarrollador (o aspirante a serlo) y, ya que es una herramienta con la que va a echar muchas horas, es imprescindible sentirse cómodo y productivo y, a ser posible, contar con herramientas que eviten tener que estar cambiando de aplicación y tener que recargar archivos en varios sitios, cosa que al final puede jugarnos malas pasadas.

Conociendo Emacs

Aunque Emacs lo había abierto antes, en mis deslices iniciales con GNU/Linux, era un programa que me asustaba un poco. Tenía un logotipo horrible y me resultaba excesivamente feo y poco útil. Lo había abierto alguna que otra vez por accidente y, aunque había intentado usarlo un poco, terminaba desistiendo y cerrándolo y hasta desinstalándolo preguntándome por qué se me instalaba automáticamente con el sistema operativo.

Fue un compañero de Universidad el que me hizo darle otra oportunidad, me pasó un fichero de configuración donde le cambiaba el tema y me comentó algunos atajos de teclado básicos. Así que decidí darle otra oportunidad. Me gustó bastante el hecho de que casi no hay que utilizar el ratón, en realidad sin el casi, no hay que utilizarlo, aunque algunas veces puede que sea más rápido e intuitivo utilizarlo, pero tenemos la posibilidad de no hacerlo, hay teclas para todo, y cuando no hay tecla o no te acuerdas, tienes un comando. Además, puedes configurar el anidado o indentación como quieras, de acuerdo al proyecto en el que estés y existe coloreado de sintaxis para casi cualquier lenguaje de programación.

He de decir que la curva de aprendizaje no es muy rápida, de hecho al principio cuesta un poco, y necesitas tiempo, leer mucha documentación, probar configuraciones y extensiones, cabrearte y borrar toda la configuración y volver a empezar y quedarte con la sensación de no saber si es frustrante o divertido. De hecho, creo que si tuviera que empezar a utilizarlo ahora, no lo usaría. Me he vuelto impaciente y siempre ando demasiado ocupado y creo que actualmente tenemos muchas opciones. Pero me encanta Emacs, a menudo descubro nuevas posibilidades y opciones que me hacen la vida más fácil. También descubro alguna que otra pega, pero al final compensa.

Iniciándose en la configuración

Si finalmente decides probar Emacs o quieres crear una nueva configuración y personalizar el entorno a fondo mi consejo es probar alguna de las configuraciones que muchos usuarios publican en GitHub. Os dejo algunos ejemplos:

Por supuesto hay muchos más. Éstos son sólo algunos que me ha gustado revisar. O, al menos, me ha parecido que tienen algunas cosas curiosas. Y, claro, a la hora de crear nuestras configuraciones, está muy bien copiarnos de ellos, porque seguro que tienen cosas muy chulas.

Matizando nuestra configuración



Una de las cosas muy buenas (y muy malas) de este editor, es que todo se programa. Es decir, tanto los ficheros de configuración, como las extensiones están programados en Emacs Lisp. Por un lado está muy bien porque tendremos la potencia necesaria para añadir y cambiar las funcionalidades que queramos, aunque por otro lado, haya que ponerse a programar y sea complicado. Bueno, más que complicado es que da una pereza enorme ponerse, porque no es perderse en una ventana de botones, checkboxes y demás. Ni es editar un archivo tipo INI con claves y valores. La ventaja es que en Emacs, la configuración no tiene límite: podemos definir valores, por supuesto, decir si activamos o desactivamos una característica; pero también podemos definir los comportamientos de todas las teclas y combinaciones de teclas que se pulsen (incluso botones de ratón), podemos añadir lógica a algunas acciones y eso nos permite perfilar muchas cosas y adaptar algunas características que no nos gustan del todo para que nos convenzan un poco más. Por ejemplo, podemos asignar una tecla para recargar un fichero y modificar la acción para que no nos pida confirmación (¿estás seguro de que quieres recargar…?), o incluso programar la ejecución de cualquier programa externo ante cualquier evento.

Por si fuera poco, encuentras para Emacs, miles de extensiones para todo lo que te puedas imaginar, anotaciones, lenguajes, temas, juegos, IRC, correo electrónico, gestión del entorno, autocompletar, cifrado, información meteorológica, navegación por Internet, blogging, portapapeles, menús, finanzas, matemáticas, búsquedas, conexiones con servidores, control del entorno de ventanas, control de reproducción multimedia, lectura de pantalla, interacción con bases de datos, interacción con repositorios de código, compiladores, y miles de cosas más.

Ficheros de configuración

Emacs, una de las primeras cosas que hace nada más arrancar es leer los ficheros de configuración, que pueden estar en varios sitios. Si tenemos poca cosa, podemos meterlo todo en ~/.emacs (fichero oculto dentro de nuestro HOME). Aunque desde la versión 22, si no se encuentra dicho archivo se cargará ~/.emacs.d/init.el. Y dentro de ~/.emacs.d podemos meter todos los archivos que queramos para la configuración, separar los módulos a nuestro gusto y complicar el asunto hasta el infinito y más allá.

La configuración separada es muy útil si cargamos muchas extensiones y tenemos que configurarlas todas, además tenemos configuraciones específicas para cada lenguaje de programación que solemos utilizar y tenemos además ciertas funciones propias. Asimismo en dicho directorio se almacena información sobre abreviaturas, documentos recientes, disposiciones de ventanas, cachés, información temporal y módulos; por si fuera poco, Emacs aprovecha y compila muchos de los ficheros de los módulos para poder cargarlos antes y hacer nuestra experiencia de usuario más fluida.

Creando nuestra configuración personal

En el siguiente post veremos un ejemplo de la configuración real que me he montado para mi Emacs, aunque aquí veremos una pequeña introducción. A pesar de que Emacs realmente no está limitado a ningún lenguaje de programación porque gracias a sus extensiones podemos hacer que soporte múltiples lenguajes, cuando vamos a crear nuestra configuración debemos pensar en los lenguajes que vamos a utilizar más a menudo. Aunque siempre podemos coger e instalar un modo nuevo para cualquier lenguaje, al menos para colorear el código y controlar el anidado, tal vez nos interese, para nuestro trabajo diario configurar el autocompletado, revisión de sintaxis o revisar la configuración específica de algún modo para tenerlo todo a nuestro gusto.

Luego tenemos que preguntarnos qué nos gustaría tener en nuestro editor: números de línea, plegado de código, textos predefinidos, herramientas predictivas, etc. Aunque seguro que en el siguiente post veremos un montón de cosas que tal vez no sabías que necesitabas, pero en cuanto las ves sabes que las necesitas. A mí me ha pasado, llevo mucho tiempo elaborando una nueva configuración y buscando información sobre muchas extensiones.

Múltiples configuraciones

Emacs, normalmente soporta una sola configuración por usuario, por lo que resulta muy difícil utilizar Emacs para trabajar y cuando termina la jornada laboral, para crear una nueva configuración. O simplemente para probar configuraciones de otras personas para ver cuál es la que más se ajusta a nosotros. Aunque podemos aprovechar la flexibilidad que tiene Emacs para crear un script de configuración muy sencillo que sea capaz de cargar la configuración desde un directorio especificado. Para ello, editamos ~/.emacs e introducimos lo siguiente:

1

2

3

4

5

6

( defvar user-custom-dir ( getenv "EMACS_USER_DIR" ) )



( when ( / = ( length user-custom-dir ) 0 )

( setq user-emacs-directory ( file-name-as-directory user-custom-dir ) ) )



( load ( expand-file-name "init.el" user-emacs-directory ) )

Con esto leeremos la variable de entorno EMACS_USER_DIR antes de cargar la configuración y cambiaremos .emacs.d por dicho valor. Seguidamente, cargaremos el archivo init.el situado en dicho directorio. Así que podremos ejecutar Emacs de la siguiente forma:



EMACS_USER_DIR=~/.emacs.d_new/ emacs

Y se cargará la configuración dentro del directorio .emacs.d_new. Eso sí, tenemos que tener cuidado, los ficheros de configuración deberán referirse al directorio de comunicación como user-emacs-directory ya que si lo hacen como ~/.emacs.d/ como suele ser costumbre puede que se carguen cosas que no deben.

Referencia, para ir abriendo boca

Si quieres ponerte a leer un rato y ver material sobre Emacs, aquí te dejo algunos enlaces: