jj wie Tokyo Night aussehen lassen
Teil 5 von 9.
Das ist die am wenigsten essenzielle Lektion der Serie und die, an der ich das meiste
unmittelbare Vergnügen hatte. jj liefert keine Theme-Presets, es liefert eine
[colors]-Konfigurationstabelle, in der jeder Schlüssel ein Style-Label ist, das an
getemplatete Ausgabe angehängt ist (change_id, bookmarks, conflict und so
weiter), und der Wert ein Farbname, ein Hex-String oder eine Tabelle für fett, kursiv,
unterstrichen. Das ist ein allgemeinerer Mechanismus als ein fester Theme-Schalter,
zum Preis, das Theme selbst bauen zu müssen.
Es zu bauen war größtenteils mechanisch: die Tokyo-Night-“Night”-Palette von folke/tokyonight.nvim nehmen und die Liste der Labels durchgehen, für die jj aktuell Standardwerte liefert -
jj config list --include-defaults colors
- und jedem eine Palettenfarbe zuweisen, die semantisch Sinn ergab. Change-IDs in Magenta, Bookmarks in Grün und fett, da sie das sind, wonach ich tatsächlich scanne, Konflikte in Rot, alles andere gedämpft Richtung des Kommentar-Graus der Palette, damit es zurücktritt statt zu konkurrieren.
Die einzige echte Falle: Label-Spezifität. Ein Schlüssel wie
"working_copy description" zielt auf ein spezifischeres zusammengesetztes Label als
schlichtes description, und wenn beide gesetzt sind, gewinnt das spezifischere für
diesen Kontext. Das erste Mal, dass eine Farbe nicht dort griff, wo erwartet, lag es
daran, dass ein spezifischeres Label weiter unten in der Standardliste diese exakte
Stelle bereits behandelte. jj config list --include-defaults colors ist hier die
tatsächliche Quelle der Wahrheit, kein Screenshot aus einem alten Blogbeitrag, das
Label-Set ist über Releases hinweg gewachsen und wird das wahrscheinlich weiter tun.
Kleiner Ertrag, aber ein echter: jj log, jj diff und jj status lesen sich jetzt
auf einen Blick, in einer Palette, die ich ohnehin den ganzen Tag im Editor und
Terminal verwende.