lessen sí mismo no es capaz de resaltar la sintaxis, de acuerdo con este hilo .
Sin embargo, git diffmuestra muy bien la salida en color en menos, su buscapersonas predeterminado. Cuando redirijo la salida git diffa un archivo, no se ven secuencias de escape de color.
¿ git diffSabe a dónde se envía y formatea la salida en consecuencia? ¿Cómo haría uno eso?
Acabo de notar que git colorea la diffsalida (por ejemplo git diff), sin embargo, no sabe cómo resaltar la sintaxis en general. p.ej
git show 415fec6:log.tex
no habilita ninguna sintaxis similar a TeX.
Leyendo las gitfuentes, encontré las siguientes pistas
en diff.h:
int use_color;
Anteriormente me refería al resaltado de sintaxis , pero eso no era correcto. Lo que quiero decir es salida de color, ver por ejemplo


git diff --color=always | less -r(oless -Rpara ANSI). Por cierto: para otros comandos que no paginan por defecto (logit diffhace), puedegit -p some_git_commandRespuestas:
Git usa
isatty()para verificar si stdout es un tty: esto se usa para ver si se debe usar un localizador ( pager.c ) así como colores ( color.c ).fuente
Corriendo:
Muestra los escapes de color.
Maldición lo encontré en
gitelcolor.carchivo de:fuente
lesspuede soportar color con-r--raw-control-charsy-R--RAW-CONTROL-CHARSPuede usar Pythons
pygmentizepara resaltar y canalizarlo.Para combinarlo todo, configure un filtro menos como se describe en el superusuario
fuente
gitrealmente está usando pygmentize? Porque no aparece como una dependencia.git diffellessproceso hijo no se agrega ninguna opción (ni-Rtampoco-r). Sin embargo, no sé si git lo llama de una manera especial y, por lo tanto, los argumentos no son visibleshtop.gitgenera el código de escape de color por sí mismo. También está escrito, porclo que agregar Python sería una gran dependencia. Podría ser capaz de controlar alesstravés del medio ambienteLESSenv var?