Hacer que jj se parezca a Tokyo Night
Parte 5 de 9.
Esta es la lección menos esencial de la serie y en la que más disfrute inmediato
invertí. jj no incluye presets de temas: incluye una tabla de configuración
[colors] en la que cada clave es una etiqueta de estilo adjunta a una salida
basada en plantillas (change_id, bookmarks, conflict, y demás), y el valor es
un nombre de color, una cadena hexadecimal, o una tabla para negrita, cursiva,
subrayado. Ese es un mecanismo más general que un cambiador de tema fijo, a costa de
tener que construir el tema uno mismo.
Construirlo fue en su mayor parte mecánico: coger la paleta “Night” de Tokyo Night de folke/tokyonight.nvim, y recorrer la lista de etiquetas para las que jj incluye valores por defecto actualmente -
jj config list --include-defaults colors
- asignando a cada una un color de la paleta que tuviera sentido semántico. Identificadores de cambio en magenta, bookmarks en verde y negrita ya que son lo que de verdad me importa localizar de un vistazo, conflictos en rojo, todo lo demás apagado hacia el gris de comentario de la paleta para que retroceda en lugar de competir.
El único escollo real: la especificidad de las etiquetas. Una clave como
"working_copy description" apunta a una etiqueta compuesta más específica que un
simple description, y cuando ambas están definidas, la más específica gana para ese
contexto. La primera vez que un color no se aplicó donde esperaba fue porque una
etiqueta más específica más abajo en la lista por defecto ya estaba gestionando ese
punto exacto. jj config list --include-defaults colors es aquí la verdadera fuente
de la verdad, no una captura de pantalla de un artículo de blog antiguo: el conjunto
de etiquetas ha crecido a lo largo de las versiones y probablemente seguirá
creciendo.
Recompensa pequeña, pero real: jj log, jj diff y jj status ahora se leen de un
vistazo, en una paleta que ya uso en el editor y el terminal todo el día.