Trabajando con GNU Emacs en sistemas Windows

Actualizado el 08-12-2016: se incorpora al final del artículo la sección de corrector ortográfico.

Hace mucho tiempo, diría que desde que comencé a trabajar con entornos GNU/Linux allá por 1992 (recuerdo estar estudiando los primeros años de mi carrera e intercambiar el sistema en alrededor de 10 disquetes de 3,5”), pero con mucha más intensidad a partir del 2005 (aquí podéis encontrar algunas entradas en este mismo blog que referencian esas fechas), el editor GNU Emacs se convirtió en uno de los pilares básicos de mi productividad. En él he realizado desde programas en C hasta scripts con Perl y Python, he organizado mis tareas con su “modo org” y he comparado configuraciones con su potente integración con diff. Todo esto y ¡mucho más!

Aunque al comienzo de mi vida profesional podía trabajar con GNU/Linux instalado en mi ordenador como sistema operativo base y habitual, la organización en la que trabajo se fue “complicando” y cada vez iban surgiendo más desarrollos propietarios que sólo se ejecutaban sobre sistemas Windows. Hasta ese entonces mi ordenador siempre arrancaba con Debian y sobre ella emulaba la Office de Microsoft; pero llegó un momento en el que trabajaba más, y me complicaba la vida, emulando software de Windows que lo que me aportaba mi “gran compañera” en eficiencia (estoy hablando del entorno Desktop, mis servidores siguen ejecutando GNU/Linux al 100%). En fin, que acabé instalando Windows como sistema operativo base y virtualizando mi Debian sobre “VMware Player”.

No obstante, con la ayuda de Cygwin mi sistema operativo actual es un Windows hibridado con muchas de las mejores herramientas del mundo GNU/Linux: gcc, gdb, ssh, diff, awk, bash, etc.

Y con el editor Emacs, que si bien no lo instalo directamente de la versión contenida en Cygwin (da errores en funcionalidades básicas un poco inexplicables, como, por ejemplo: tras ser asociado a ficheros .txt no los carga directamente al hacer doble click sobre ellos), sí que instalo este “port” que obtiene un Emacs nativo sobre Windows (actualmente lo vengo utilizando con mucha estabilidad en mis Windows 10).

Bien, pues no sólo escribo esta entrada para contaros que existe este “port nativo sobre Windows”, que ya me parece muy valioso ;-), sino que a continuación capturo varios ajustes “muy necesarios” para que el sistema se comporte como queremos.

Primero: descargamos la versión de Emacs para Windows desde aquí. Simplemente hemos de descomprimir el “.zip” que bajamos, situar la carpeta en cualquier lugar de nuestro disco duro y añadir esa carpeta a la variable “path” de Windows.

Como ya hemos comentado, y veremos más adelante con un ejemplo de comparación de ficheros, es muy aconsejable instalar un entorno “Cygwin” mínimo, con utilidades que aportan valor a Emacs. También hemos de añadirlo al “path”, para que podamos encontrar sus programas llamándolos desde cualquier sitio.

Segundo: creamos enlaces simbólicos, con mklink de Windows, del fichero configuración por defecto de emacs, “.emacs” y su “directorio de trabajo en segundo plano” (copias de seguridad, etc.) “.emacs.d”.

El port de Emacs para Windows considera como “directorio home” este: “C:\Users\Godo\AppData\Roaming” (sustituid Godo por vuestro usuario Windows), y en él guarda el fichero “.emacs” y el directorio “.emacs.d”. Yo los borro y los vuelvo a crear como enlaces simbólicos que apuntan a otros destinos, de igual nombre, pero ubicados en carpetas diferentes. Como podéis ver en la siguiente captura los mantengo dentro de mi Dropbox, conservando y sincronizando así todos los cambios que hago en ellos ya sea en mi ordenador fijo o en mi portátil.

Tercero: lo anclamos a la barra de tareas para poder ejecutarlo de forma rápida. La mejor forma para hacerlo es abrir un documento cualquiera con él, y cuando vemos el icono en la barra de tareas, lo pulsamos con el botón derecho y seleccionamos “anclar a la barra de tareas”. Luego editamos dicho anclaje (click con el botón derecho sobre el icono, de nuevo click con botón derecho sobre “emacs” y seleccionamos “propiedades”):

Y lo adaptamos para correr “runemacs.exe” en lugar de “emacs.exe” (este último deja en segundo plano una ventana msdos de fondo negro que resulta poco atractiva).

Por último, y como prueba del buen trabajo de Emacs integrado con la herramienta “diff” proporcionada por el entorno Cygwin, os dejo una captura donde podéis ver cómo me ayuda a detectar cambios en un fichero de configuración de un router Cisco:

Cuando limpie y de esplendor a mi fichero “.emacs” os lo compartiré por aquí por si os da ideas interesantes (a la vez que me sirve para fijar una copia de seguridad). Por ahora, os dejo sólo una brizna del mismo que activa la posibilidad de tener rápido acceso a “archivos recientes” (bajo el menú “File” o con “C-x C-r”):

Y otro día escribiré sobre el modo “.org” de Emacs, que es verdaderamente alucinante para llevar todo un “sistema de planificación” personal, de proyectos, etc., con “ToDo”, “Tags”, “deadlines”… Si lo quieres ver en funcionamiento, echa un vistazo a estos vídeos de Youtube.

Y tú, ¿qué me cuentas sobre Emacs? De verdad, si realizas tareas de administración de sistemas, de programación, de gestión… que requieran control de versiones… ¡dale una oportunidad y no lo abandonarás jamás! Incluso si eres un escritor...

Gracias por estar ahí. Y muchas más si decides enriquecerme con tus comentarios.

Actualizado el 08-12-2016 - Corrector ortográfico

Esta página de Emacs Wiki contine toda la información y ajustes de configuración necesarios.
Básicamente hay que instalar este ejecutable y este diccionario. Después añadimos las siguientes líneas a nuestro fichero de configuración ".emacs":

;; ===== Para utilizar aspell como corrector ortográfico ===
;; C:\Program Files (x86)\Aspell\bin
(add-to-list 'exec-path "C:/Program Files (x86)/Aspell/bin/")
(setq ispell-program-name "aspell")
(setq ispell-personal-dictionary "D:/Db/01-Personal/home/.aspell")
(require 'ispell)
;; La forma de invocarlo por defecto es "M-$"
;; Esto que sigue sólo chequea la palabra sobre el cursor
;; (global-set-key (kbd "<f8>") 'ispell-word)
;; Para chequear todo el buffer
(global-set-key (kbd "<f8>") 'ispell-buffer)
;; Para activar detección al vuelo
(global-set-key (kbd "C-<f8>") 'flyspell-mode)

Clasificado en artículos de:

comment reply