Aller au contenu

Configuration

Les réglages se résolvent par ordre de priorité croissante : valeurs par défaut intégrées → fichier de configuration → environnement → options de ligne de commande. Le fichier de configuration se trouve à $XDG_CONFIG_HOME/leanreview/config.json (~/.config/leanreview/config.json) ; un fichier malformé est ignoré avec un avertissement affiché au démarrage.

{
  "editor": "nvim -f",
  "syntax": true,
  "syntax_style": "github",
  "theme": "default",
  "tab_width": 4,
  "context": 3,
  "keys": { " ": "down", "m": "next-hunk" },
  "list_engine": "gh",
  "list_filter": "is:open review-requested:@me",
  "list_filters": { "bugs": "is:open label:bug" },
  "wrap": true,
  "wrap_width": 120
}

Générer et valider

Partez d'une base complète plutôt que d'un fichier vide :

leanreview --init-config     # écrit le fichier ci-dessus avec toutes les
                             # valeurs par défaut, le keymap complet et une
                             # référence $schema

Pour une configuration qui existe déjà, complétez-la au lieu de la régénérer :

leanreview --fill-config     # ajoute chaque réglage, liaison et séquence
                             # manquants à leur valeur par défaut ; les
                             # valeurs existantes et les clés inconnues ne
                             # sont jamais touchées

Le map keys généré liste toutes les associations par défaut : remapper devient une édition, pas une devinette. Le générateur refuse d'écraser un fichier existant.

Validez à tout moment :

leanreview --check-config    # signale fautes de frappe, actions inconnues
                             # et valeurs invalides ; code de sortie non nul
                             # en cas de problème

Les éditeurs valident aussi : la référence $schema pointe vers le schéma de configuration publié, offrant validation et complétion (y compris les noms d'action pour keys) dans VS Code et JetBrains sans réglage — voir editors/ pour Vim/Neovim.

Réglages

  • editor — commande de l'éditeur (analysée comme une ligne de commande, p. ex. code --wait).
  • syntax / syntax_style — active la coloration syntaxique et choisit un style Chroma. La valeur par défaut, auto, s'adapte à l'arrière-plan de votre terminal (monokai sur fond sombre, github sur fond clair) ; tout nom de style Chroma peut être défini explicitement.
  • theme — palette de la TUI : une palette intégrée (default, default-light, default-dark, mono) ou le nom d'un fichier de thème.
  • tab_width — nombre de colonnes vers lesquelles une tabulation s'étend.
  • context — nombre de lignes de contexte unifié par défaut quand -U n'est pas passé.
  • keymap — jeu de liaisons de base : un préréglage intégré (default, vim, vscode, sublime, intellij) ou le nom d'une entrée de keymaps. Les préréglages superposent des raccourcis familiers aux valeurs par défaut (les terminaux ne peuvent pas rapporter tous les raccourcis de chaque éditeur : ce sont des sur-ensembles, pas des clones) ; keys et sequences gardent la priorité.
  • keymaps — jeux de touches nommés définis par l'utilisateur, { "<name>": { "keys": {…}, "sequences": […] } }, chacun superposé aux valeurs par défaut quand il est sélectionné. Les noms des préréglages intégrés sont réservés.
  • keys — remappe les liaisons du mode normal, { "<key>": "<action>" }. Voir Touches.
  • sequences — remappe les séquences à deux touches, une liste d'objets { "keys": ["<k1>", "<k2>"], "action": "<action>" }. Voir Touches.
  • list_engine / list_filter / list_filters — valeurs par défaut pour --list : le moteur de découverte (gh ou glab), le filtre de recherche de secours, et une table de filtres nommés sélectionnables sous la forme --list :name / --list engine:name.
  • change_colors — coloration des lignes +/- quand la coloration syntaxique est active : diff (par défaut : rouge/vert classique, syntaxe réservée aux lignes de contexte) ou syntax (syntaxe partout).
  • change_tint — avec change_colors: syntax, souligne les lignes modifiées d'un fond discret rouge/vert pour que le diff reste lisible au premier coup d'œil (par défaut true).
  • images — rendu des images des commentaires : auto (protocole kitty sur kitty/ghostty, chafa s'il est installé, désactivé sinon), kitty, chafa ou off. En mode PR/MR, les pièces jointes des commentaires (user-attachments GitHub, /uploads GitLab, y compris les balises HTML <img>) sont téléchargées via l'authentification du CLI de la forge et mises en cache ; les autres URL distantes s'affichent comme des étiquettes.
  • author — le nom attribué à vos réponses dans les conversations d'échange de revue (par défaut : $USER).
  • wrap / wrap_width — retour à la ligne des lignes de diff longues et des aperçus de commentaires (activé par défaut, w bascule). Le code revient à la ligne strictement au bord de la colonne, les commentaires aux limites de mots ; en disposition unifiée, le point de retour à la ligne est min(wrap_width, view) (120 par défaut), en disposition scindée c'est la largeur du panneau latéral. Retour à la ligne désactivé, les lignes longues sont tronquées et h/l les font défiler.

Environnement

Variable Effet
LEANREVIEW_EDITOR commande de l'éditeur (remplace le fichier de configuration)
LEANREVIEW_SYNTAX=0 désactive la coloration syntaxique
NO_COLOR désactive toute couleur (thème mono)
LEANREVIEW_AUTHOR nom d'attribution des réponses (remplace author)
LEANREVIEW_IMAGES backend de rendu des images (remplace images)
LEANREVIEW_LOG chemin du fichier journal

État sur le disque

  • Brouillons : $XDG_STATE_HOME/leanreview/drafts/ (~/.local/state/…), un fichier JSON par source, écritures atomiques.
  • Journaux : $XDG_STATE_HOME/leanreview/leanreview.log — jamais la sortie standard, dont la TUI est propriétaire.

Thèmes

default s'adapte au fond du terminal ; default-light et default-dark figent ce choix. Au-delà des palettes intégrées, déposez des fichiers JSON de thème dans un dossier themes/ à côté de la configuration. Un thème est référencé par son nom de métadonnées (pas par le nom du fichier), ne restyle que les rôles qu'il nomme (le reste garde la palette par défaut) et ne peut pas revendiquer un nom intégré :

{
  "$schema": "https://perrito666.github.io/leanreview/schema/leanreview-theme.schema.json",
  "name": "dusk",
  "description": "verts sourds, accents magenta",
  "styles": {
    "addition":      { "fg": "108" },
    "deletion":      { "fg": "#d75f5f", "bold": true },
    "title":         { "fg": "15", "bg": "53" },
    "addition_tint": { "bg": "236" }
  }
}

Rôles : addition, deletion, context, metadata, gutter, cursor, select, search, marker, title, status, error, key, faint, comment, addition_tint, deletion_tint. Les couleurs sont des indices de la palette ANSI ou de l'hex. leanreview --check-config valide le dossier : fichiers cassés, noms dupliqués ou réservés et rôles inconnus sont tous signalés.