Textual Diff View : afficher des diffs lisibles et beaux dans une app terminal Textual
https://github.com/batrachianai/textual-diff-view
📌 Textual Diff View est un widget prêt à intégrer dans une application Textual pour montrer un diff de code directement dans le terminal, avec surlignage des ajouts/suppressions, vue unifiée ou côte à côte, thèmes clair/sombre et annotations pour améliorer la lisibilité.
L’affichage met l’accent sur deux choses utiles au quotidien : les lignes et les caractères qui changent. Les suppressions sont surlignées en rouge, les ajouts en vert, et la coloration syntaxique aide à rester orienté “code” plutôt que “texte”. Pour des workflows de revue dans le terminal (CLI, TUI, outils internes), c’est un bon compromis : l’information est dense, mais la lecture reste rapide même sur de longs fichiers.
Points clés
- 🧩 Widget Textual à intégrer tel quel dans une TUI Python
- 🌓 Thèmes clairs/sombres via le theming Textual
- ↔️ Deux layouts : unifié ou split, selon le contexte
- ➕➖ Annotations optionnelles pour lisibilité et accessibilité
- 🎯 Surlignage des ajouts/suppressions au niveau lignes et caractères
Pour démarrer, l’installation se fait comme un paquet Python classique. Le projet est publié sur PyPI, donc une commande d’installation suffit (pip ou uv). Ensuite, l’intégration suit le modèle Textual : importer le widget, le “yield” dans la méthode de composition, et le placer dans un conteneur scrollable pour gérer les diffs plus longs que la fenêtre. C’est souvent le point qui fait la différence entre une démo et un composant réellement utilisable en production : le scroll vertical évite les écrans “bloqués” dès que le diff grandit.
Deux manières d’alimenter le diff sont prévues. La première consiste à fournir directement les chemins et le contenu des deux versions (utile quand l’app a déjà les chaînes en mémoire, par exemple après un rendu de template ou une transformation). La seconde passe par un constructeur de chargement qui lit les fichiers depuis le disque, ce qui est pratique pour un outil en ligne de commande qui compare deux chemins fournis par l’utilisateur. Dans les deux cas, l’objectif est identique : limiter le code d’intégration, et concentrer l’app sur son usage métier plutôt que sur la plomberie du rendu.
si une app Textual a besoin d’un diff intégré, lisible et personnalisable, Textual Diff View fournit une base solide, avec les bons modes d’affichage et des options d’accessibilité, sans sortir du terminal.
