Cómo organizo mi configuración de Emacs

Read in English

No voy a compartir mi configuración de Emacs, sino la forma en que la tengo organizada. No creo que esté descubriendo nada nuevo, pero tal vez es útil para alguien que esté empezando a organizar su configuración y no sepa por dónde empezar.

No uso ningún framework (ni Doom, ni Spacemacs) ni el enfoque literate de Org mode. Todo es Emacs vanilla y cada archivo es un área de responsabilidad, mientras que init.el hace de índice.

¿Por qué vanilla y no un framework? Los frameworks deciden por ti. Te prestan una configuración enorme que no comprendes y que es difícil de manipular. El enfoque literate de Org, para mí, es una capa más donde algo puede fallar. Prefiero la simplicidad de que el archivo que edito sea el archivo que se ejecuta. Cuanta menos magia, menos cosas que se rompen.

Por lo tanto, dentro de mi carpeta de configuración (~/.emacs.d/), tengo los siguientes archivos:

  • "init.el": es el índice de mi configuración. Carga en orden el resto de archivos.
  • "core.el": comportamiento base de Emacs, como el manejo de backups, rutas, portapapeles, etc.
  • "functions.el": mis scripts y macros personales.
  • "packages.el": configuración de repositorios, como MELPA (entre otros).
  • "ui.el": todo lo relacionado con aspectos visuales: tema, modeline, tipografía, comportamiento visual, etc.
  • "ide.el": LSP, depurador, linters y configuraciones de programación.
  • "plugins/init.el": paquetes de terceros, cada uno con su propia configuración.

Un ejemplo de bloque que te podrías encontrar dentro de plugins/init.el:

;; ===
;; vterm-editor
;; Compose text in a full Emacs buffer and send it to vterm with a single keystroke.
;; Docs: https://git.andros.dev/andros/vterm-editor.el
;; ===
(use-package vterm-editor
  :ensure t
  :vc (:url "https://git.andros.dev/andros/vterm-editor.el")
  :after vterm
  :bind (:map vterm-mode-map
         ("C-c e" . vterm-editor-open)))

Cada elemento está aislado en su propio contexto. El uso de use-package me permite tener un bloque de configuración aislada y organizada para cada paquete.

También tengo otros archivos satélite para paquetes de terceros, como "plugins/feeds.el" para mis suscripciones RSS, "plugins/erc.el" para IRC, "plugins/mu4e-config.el" para el correo, "plugins/gnus.el", etc. Cuando se vuelven extensos y concretos, los separo en archivos individuales.

¿Y por qué trocear en áreas en lugar de un único init.el gigante? Porque quiero saber dónde mirar sin pararme a pensar. El cerebro agradece que cada cosa tenga su sitio, sobre todo cuando vuelves a tocarla después de meses. Además, cada archivo es una pieza que entiendo entera, porque la he escrito yo. Con el tiempo tu configuración deja de ser un editor y se convierte en una estación de trabajo hecha a tu medida. Es mi interfaz con el equipo, y debe estar lo más afinada posible.

No digo que esta sea la mejor forma, pero me facilita saber dónde buscar y dónde colocar las cosas. La simplicidad también es una feature.

Ayúdame a seguir escribiendo

Cada café me da un empujón para escribir el siguiente artículo.

Comentarios

Todavía no hay ningún comentario.

Sigue leyendo