Álvaro González Sotillo

Literate Programming en la configuración de emacs

Mi configuración de emacs estaba basada en un fichero init.el con varios paquetes elisp. Gran parte de la configuración la extraía de ejemplos de otros ficheros init.el, y muchas veces olvidaba qué hacían algunas partes del fichero.

Esto se debía a una falta de comentarios, que se nos suele "olvidar" cuando sentimos que estamos programando, pero que solemos incluir cuando estamos redactando un documento. Descubrí en el blog de Sacha Chua que podía mantener la configuración en un fichero orgmode y así documentar fácilmente cada opción.

1. init.el

Emacs comienza cargando el fichero ~/.emacs.d/init.el. Este fichero simplemente inicializa el sistema de paquetes y carga el paquete org, que es el que permite a Emacs manejar este tipo de ficheros. Después, carga este fichero interpretando los bloques de código.

(package-initialize nil)
(setq package-check-signature nil)
(setq package-archives '(
      ("org" . "http://orgmode.org/elpa/")
      ("melpa" . "http://melpa.org/packages/")))


(package-initialize t)
(package-refresh-contents) ; OPCIONAL, NECESITA CONEXIÓN A INTERNET
(package-install 'org)
(require 'org)
(require 'ob-tangle)
(org-babel-load-file (expand-file-name "~/.emacs.d/config.org"))

Tras esto, emacs carga el fichero config.org, extrae los bloques de código y los ejecuta.

2. Mi configuración

Se puede consultar mi configuración directamente en https://github.com/alvarogonzalezsotillo/.emacs.d/blob/master/config.org. Github es capaz de formatear el formato org, así que se ve bastante bonito.

También he generado una versión en pdf de la configuración, a fecha de esta entrada (pero es mejor mirar la última versión en PDF y en HTML)