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.