less
zgodnie z tym wątkiem sam nie jest w stanie wykonać podświetlania składni .
Jednak git diff
ładnie pokazuje kolorowe wydruki w mniejszej ilości, domyślny pager. Kiedy przekierowuję dane wyjściowe git diff
do pliku, sekwencje specjalne kolorów nie są widoczne.
Czy git diff
wie, gdzie jest wysyłany i odpowiednio formatuje dane wyjściowe? Jak by to zrobić?
Właśnie zauważyłem, że git zabarwia dane diff
wyjściowe (np. git diff
), Jednak ogólnie nie wie, jak podświetlić składnię. na przykład
git show 415fec6:log.tex
nie włącza żadnej składni podobnej do TeX-a.
Czytając git
źródła, znalazłem następujące wskazówki
w diff.h
:
int use_color;
Wcześniej mówiłem o podświetlaniu składni , ale to nie było poprawne. Chodzi mi o kolorowanie wyjściowe, patrz np
git diff --color=always | less -r
(lubless -R
dla ANSI). BTW: w przypadku innych poleceń, które domyślniegit diff
niegit -p some_git_command
Odpowiedzi:
Git
isatty()
sprawdza, czy stdout jest tty: służy do sprawdzenia, czy należy użyć pager ( pager.c ), a także kolorów ( color.c ).źródło
Bieganie:
pokazuje kolor ucieka.
Cholera znalazłem go w
git
„scolor.c
pliku:źródło
less
może obsługiwać kolory za pomocą-r
--raw-control-chars
i-R
--RAW-CONTROL-CHARS
Możesz użyć Pythonów,
pygmentize
aby zrobić wyróżnienie i wprowadzić go do potoku.Aby to wszystko połączyć, skonfiguruj mniej filtrów zgodnie z opisem w superużytkowniku
źródło
git
faktycznie używa pygmentacji? Ponieważ nie ma go na liście zależności.git diff
potomnyless
nie jest dołączany przez żadną opcję (ani-R
ani-r
). Nie wiem jednak, czy git wywołuje go w specjalny sposób, dlatego argumenty nie są widocznehtop
.git
wyświetla kod ucieczki koloru, który jest sam. Jest również napisane,c
więc dodanie Pythona byłoby ogromną zależnością. Może być w stanie kontrolowaćless
za pośrednictwem środowiskaLESS
env var?