less
lui-même n'est pas capable de mettre en évidence la syntaxe, selon ce fil .
Cependant, git diff
montre bien la sortie colorée en moins, son pager par défaut. Lorsque je redirige la sortie de git diff
dans un fichier, aucune séquence d'échappement de couleur n'est visible.
Sait git diff
où il est envoyé et formate la sortie en conséquence? Comment ferait-on cela?
Je viens de remarquer que git colore la diff
sortie (par exemple git diff
), cependant, il ne sait pas comment mettre en évidence la syntaxe en général. par exemple
git show 415fec6:log.tex
n'active aucune syntaxe de type TeX.
En lisant les git
sources, j'ai trouvé les indices suivants
dans diff.h
:
int use_color;
Je faisais précédemment référence à la coloration syntaxique , mais ce n'était pas correct. Ce que je veux dire, c'est la coloration de sortie, voir par exemple
git diff --color=always | less -r
(ouless -R
pour ANSI). BTW: pour les autres commandes qui ne paginent pas par défaut (legit diff
fait) vous pouvez l'activer:git -p some_git_command
Réponses:
Git utilise
isatty()
pour vérifier si stdout est un tty: ceci est utilisé pour voir si un pager doit être utilisé ( pager.c ) ainsi que des couleurs ( color.c ).la source
Fonctionnement:
montre la couleur s'échappe.
Merde, je l'ai trouvé dans
git
lecolor.c
fichier de:la source
less
peut supporter la couleur avec-r
--raw-control-chars
et-R
--RAW-CONTROL-CHARS
Vous pouvez utiliser Pythons
pygmentize
pour faire la mise en évidence et le canaliser.Pour tout combiner, configurez un filtre moins comme décrit sur superutilisateur
la source
git
utilise réellement pygmentize? Parce qu'il n'est pas répertorié comme une dépendance.git diff
leless
processus enfant n'est ajouté par aucune option (ni-R
ni-r
). Cependant, je ne sais pas si git l'appelle d'une manière spéciale et donc les arguments ne sont pas visibles danshtop
.git
sort le code d'échappement de couleur c'est lui-même. Il est également écrit,c
donc ajouter Python serait une énorme dépendance. Il pourrait être en mesure de contrôlerless
via l'environnementLESS
var env?