less
selbst ist laut diesem Thread nicht in der Lage, Syntax-Hervorhebungen vorzunehmen .
Die git diff
farbige Ausgabe wird jedoch in weniger als dem Standard-Pager angezeigt. Wenn ich die Ausgabe von git diff
in eine Datei umleitung, sind keine Escape-Farbsequenzen sichtbar.
Weiß git diff
, wohin es gesendet wird, und formatiert die Ausgabe entsprechend? Wie würde man das machen?
Ich habe gerade bemerkt, dass Git die diff
Ausgabe färbt (zB git diff
), aber es weiß nicht, wie man im Allgemeinen Syntax-Hervorhebungen macht. z.B
git show 415fec6:log.tex
aktiviert keine TeX-ähnliche Syntax.
Beim Lesen der git
Quellen habe ich die folgenden Hinweise gefunden
in diff.h
:
int use_color;
Ich bezog mich zuvor auf Syntaxhervorhebung , aber das war nicht korrekt. Was ich meine, ist Ausgabe Färbung, siehe z
git diff --color=always | less -r
(oderless -R
für ANSI). Übrigens: Für andere Befehle, die nicht standardmäßig paginieren (tungit diff
), können Sie Folgendes aktivieren :git -p some_git_command
Antworten:
Git
isatty()
prüft, ob stdout ein tty ist: Hiermit wird geprüft, ob sowohl ein Pager ( pager.c ) als auch Farben ( color.c ) verwendet werden müssen.quelle
Laufen:
zeigt die Farbe entweicht.
Verdammt, ich habe es in
git
dercolor.c
Datei gefunden:quelle
less
kann Farbe mit-r
--raw-control-chars
und stützen-R
--RAW-CONTROL-CHARS
Sie können Pythons verwenden
pygmentize
, um die Hervorhebung vorzunehmen und die Pipe einzuleiten.Um alles zu kombinieren, konfigurieren Sie einen weniger Filter, wie im Superuser beschrieben
quelle
git
Pygementize tatsächlich verwendet wird? Weil es nicht als Abhängigkeit aufgeführt ist.git diff
des untergeordnetenless
Prozesses keine Option (weder-R
noch-r
) angehängt . Ich weiß jedoch nicht, ob git es auf besondere Weise nennt und daher die Argumente in nicht sichtbar sindhtop
.git
gibt den eigenen Farb-Escape-Code aus. Es ist auch so geschrieben,c
dass das Hinzufügen von Python eine enorme Abhängigkeit darstellt. Es könnte in der Lage sein,less
über die Umgebung zu steuernLESS
env var?