Personalizando emacs a mi manera
Estoy escribiendo este artículo para comprobar cómo funcionan mis
ajustes personales de Emacs. Más adelante haré una captura de como
ha quedado todo, aunque supongo que esto de personalizarlo es un no
acabar nunca, siempre habrá un detalle que pulir o algo que cambiar.
Si algo distingue al auténtico friki es que no termina nunca de
cacharrear con sus juguetitos: hoy es el día de toquetear los
colorines de mi editor favorito. No sólo los colorines, también he
tocado algunas cosas más y he añadido algún paquete especial para
mejorar la «vista». Hay que recordar que los themes son ficheros de
código elisp
, es decir: para cambiar las características o el
comportamiento de las cosas, hay que ejecutar un programa. La mayor
parte de las veces se limitará a establecer el valor de algunas
variables para ajustar tipo de letra y/o color; pero hay que estar
atentos a lo que haga. De hecho, Emacs, cuando instalas un tema
externo pregunta si lo marca como seguro.
Los colores
Definir los colores a gusto de todos es imposible, bien lo deben saber todos aquellos que se hayan currado un theme de cualquier cosa, ya sea una página web o, ─en este caso─, uno para Emacs. Queda dicho, porque espero, como es lo normal, que no le guste a todo el mundo. Lo bueno de personalizar algo es que lo pones a tu gusto o a tus necesidades. Sin embargo, en los temas de Emacs hay tantas cosas que ajustar, tantos colores que se pueden modificar que hacerlo desde cero se presenta como una tarea ardua, o casi infinita. Por ello, he partido de un theme ya hecho. Conste que antes de decidirme a hacer esto he probado decenas de temas a los que siempre terminaba encontrando un pero. Al final, los he desinstalado todos y me he quedado con mi opción, ─no porque sea la mejor, sino porque es mía y la puedo retocar todo lo que quiera─.
Como decía, he partido de un theme ya hecho: leuven-theme viene
como uno de los temas de mi instalación por defecto de Emacs. Sólo
que viene una versión antigua: 20170912.2328
. En su página web se
puede encontrar una versión más moderna y con más opciones. El caso es
que partiendo de él he ido haciendo pruebas hasta conseguir un tema
propio que sólo hay que cargar en nuestro init.el
para que funcione,
con las siguientes instrucciones.
;;; Tema personalizado (add-to-list 'custom-theme-load-path "~/.emacs.d/themes") (load-theme 'notxor t)
En mi caso, se puede apreciar que lo he metido en el directorio
themes
dentro de .emacs.d
; lo he tenido que crear porque no
existía, pero lo hago así, porque a partir de este momento, puedo
instalar en él los temas que quiera probar y cargarlos sólo haciendo
referencia a su nombre.
¿Por qué utilicé leuven?
Básicamente porque ya se ajustaba en muchas cosas a lo que busco en una configuración para Emacs:
- Me suelen gustar los colores claros en mi pantalla. Ahora en la
versión que tiene en su web también hay un
leuven-dark
, pero no creo que lo pruebe. - Marca de forma muy diferenciada qué buffer es el activo. Así de un vistazo puedo saber dónde estoy sin perderme por los tres o cuatro que tenga abiertos en ventana.
- Su patrón de colores ya se ajustaba bastante a los que tengo
configurados, por ejemplo en la barra de estado de
i3wm
, así que tenía que modificar menos cosas. - Marca muy bien los bloques de texto en
org-mode
, algo que me viene muy bien cuando hago literate programming de forma que los bloques de código me saltan a la vista.
Cosas que he cambiado del tema original:
- El color de fondo. Me gustan los temas claros, pero el blanco
original es agotador. Paso muchas horas delante del ordenador y
necesitaba un color claro que no agotara mi vista. El resultado ha
sido establecer el color
#FEFE9A
, que es un amarillo muy claro. Eso ha permitido que no tenga que tocar muchos colores de primer plano y que mi vista descanse un poco. Además combina bien con el «azul» de la barra de información de Emacs. - No soporto los cambios de tamaño en los títulos de
org-mode
o en los de LaTeX. Así que he eliminado todos los «sobredimensionados» que he visto en el tema. Supongo que habrá gente a las que les guste esos cambios de tamaño, pero mi cerebro en un editor de texto normal espera que todas las líneas tengan el mismo alto. Además, sería útil si esas cabeceras tuvieran el mismo estilo que las generadas posteriormente, pero no es así. - Cuando escribo texto tengo configurado que se active
automáticamente el modo
flyspell
. El tema original va subrayando las palabras en color rojo cuando encuentra un error y verde cuando encuentra una repetición. La linea de subrayado es recta y me gusta más cuando es ondulada, así que puse esas líneas onduladas y cambié el color de repetición a un colororange
, aunque estoy sopesando la idea de cambiarlo a algún valor de azul. - Algunos colores más que he ido encontrando que no terminaban de
cuadrar con los definidos. Seguramente tendré que cambiar más,
porque hay algunos colores con
magit
que no me terminan de convencer, pero de momento lo dejo así y más adelante ya veremos.
Barra de estado de Emacs
No es la primera vez que pruebo powerline
y seguramente la acabaré
quitando tarde o temprano, porque es algo que a ratos me gusta y a
ratos me parece insuficiente. Me explico: es más bonita, en general,
que la barra por defecto de Emacs, pero por ejemplo, la barra
general me informa cuándo estoy en una sesión emacsclient
y cuándo
estoy en una normal. Esa información la obvia, no aparece, pero
tampoco es demasiado grave.
La configuración no puede ser más sencilla una vez instalado el
paquete, en el init.el
añadir las siguientes líneas:
;; Mejorando la visualización de la línea de info (require 'powerline) (powerline-default-theme)
Lista de ficheros
Una de las cosas que echaba de menos de otros editores era la
posibilidad de navegar por directorios y ficheros en su
correspondiente ventana. En Emacs también existe esa posibilidad con
el paquete dired-sidebar
. Para configurarlo, en el apartado
custom-set-variables
del fichero init.el
hay que añadir el tema
que queramos, en mi caso:
'(dired-sidebar-theme (quote icons))
Para visualizar los iconos también necesitas instalar el paquete
all-the-icons-dired
, y si hay algún problema al visualizar los
iconos en dired-mode
, es posible que tengas que instalar también las
fuentes de los iconos, el proceso viene en la ayuda del paquete, pero
básicamente se limita a llamar a la función
all-the-icons-install-fonts
que preguntará si quieres descargar las
fuentes e instalarlas. También, para visualizarlos, es posible que
necesites añadir un hook también:
(add-hook 'dired-mode-hook 'all-the-icons-dired-mode)
Aquí me encontré un problema con los iconos. Resulta que sin el hook
no me los carga en el modo dired
normal. Tampoco tendría mucha
importancia, pero ya que están me gustaría verlos. El caso es que
cuando carga en modo sidebar
me duplica los iconos. Cuando refresca
el buffer desaparece y queda sólo uno, pero es un detalle que me
falta por pulir.
El modo dired-sidebar
tampoco lo quiero abierto permanentemente,
sólo cuando lo necesite, así que no lo activo por defecto sino que le
he asignado. Así sólo lo abro ─y lo cierro─ cuando lo necesito con
C-c s
.
Como se puede apreciar en las imágenes, la visualización de los iconos en modo texto es imperfecta y se corta según qué fuente utilices en el terminal.
(global-set-key (kbd "C-c s") 'dired-sidebar-toggle-sidebar)
Números de línea
Me ocurren dos cosas, normalmente, con los números de línea: me molestan cuando escribo, pero los necesito cuando programo. Bueno, tampoco hay que ser exagerado: puedo vivir sin ellos, porque Emacs me muestra el número de línea en su barra, sin embargo, me gusta tenerlos a mano cuando programo (y sólo cuando programo). Pues otro hook y ya está:
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
Con prog-mode-hook
activa el número de línea en la mayoría de los
modos de programación.
Imágenes
Dicen que una imagen vale más que mil palabras y yo pongo dos, una en modo gráfico y otra en un terminal de texto.
En modo gráfico:
En modo texto:
Y puestas las imágenes: ni mil palabras más.
Conclusiones
No he conseguido un tema perfecto, ni siquiera bonito, pero me sirve para lo que lo quiero. Creo que no he visto nunca un theme que tenga un fondo amarillo tan horrendo. Pero no cansa tanto la vista como el fondo blanco ni es tan soso como un fondo gris claro y el resto de funcionalidades las voy sacando poco a poco.
Hay quien prefiere instalarse spacemacs que lo hace todo, pero yo prefiero enterarme de todo lo que necesito, lo que no, cómo funciona y cómo lo puedo cambiar... y en esas estoy.