Ändere die Tabsize in git-gui

15

Ich habe mich gefragt, ob es möglich ist, die Tabsize in git-gui von 8 Zeichen auf 4 zu ändern. Das einzige, was ich gefunden habe, war core.whitespace = tabsize=4, dass dies nur diff betrifft.

Der Grund, warum ich danach frage, ist, dass ich die Verwendung von Tabulatoren langsam auslaufe und stattdessen 4-Leerzeichen-Einrückungen verwende. Dies kann jedoch zu verwirrenden Ergebnissen führen, wenn der Unterschied in git-gui betrachtet wird, da die Tabsize etwa 8 Zeichen beträgt.

Ich weiß, dass ein einfaches :retabin Vim mein Problem löst, aber ich muss ziemlich häufig an großen Dateien mit einer langfristigen Historie arbeiten, die Änderungen in separaten Zweigen haben können. Daher kann ich nicht immer alle Tabs einfach konvertieren.

Htbaa
quelle

Antworten:

5

Ab git-gui-0.20 und git 2.4.0 ( commit ) existiert ein Konfigurationsparameter, der hinzugefügt wurde, um die angezeigte Tabsize in git gui zu konfigurieren.

Fügen Sie dies zu Ihrer ~ / .gitconfig hinzu

[gui]
    tabsize = 4

oder ändere es über das Konfigurationsmenü von git-gui (Bearbeiten -> Optionen ...)

Patrick B.
quelle
Vielen Dank. Ich habe mein Git aktualisiert (war bei 1.8: -O) und ich sehe diese Option. Ich muss mich immer noch ab und zu mit einem Mixmatch aus Tabulatoren und Leerzeichen auseinandersetzen, also ist das großartig.
Htbaa
10

Ich habe nachgeforscht.

Die Konfiguration core.whitespacehat nichts damit zu tun, wie Registerkarten angezeigt werden. Es wird nur für Git verwendet, um tabulatorbedingte Whitespace-Fehler zu erkennen. Beispiel: Wenn indent-with-non-tabaktiviert und auf core.whitespacegesetzt tabwidth=4ist und eine Zeile mit mindestens 4 Leerzeichen eingerückt wird, meldet git einen Fehler.

Für Git ist ein Tabulatorzeichen, abgesehen von den Funktionen zur Erkennung von Whitespace-Fehlern, ein Zeichen wie jedes andere Zeichen. Es wird verglichen und auf das Tool abgelegt, mit dem die Zeichen angezeigt werden. Das heißt, um die angezeigte Tabulatorbreite zu konfigurieren, müssen Sie die "Frontends" von Git konfigurieren. In diesem Fall git diffwäre "less" (das Unix-Tool "less"). In diesem Fall git guiwäre es Git-Gui.

Weniger konfigurieren ist einfach. Sie können die Git-Konfiguration so einstellen core.pager, dass weniger eingerichtet wird, um eine Registerkarte mit 4 Leerzeichen anzuzeigen (weniger hat einen Parameter, -xnauf den die Tabulatorbreite eingestellt werden kann n).

Die Konfiguration von git-gui gestaltete sich erheblich schwieriger. Git-gui ist in Tcl / Tk geschrieben. Ich habe eine Tcl / Tk- Option gefunden , um die Tabulatorbreite in Text-Widgets zu konfigurieren. Ich habe auch eine Zeile gefunden, in der git-gui.shes aussieht, als würde das Text-Widget initialisiert.

Dies ist Zeile 3346 der Datei git-gui.shin Git-Version 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

Ich habe das nach dem Tcl / Tk-Handbuch folgendermaßen geändert:

catch {$ui_diff configure -tabs "[expr {4 * [font measure $font 0]}]" -tabstyle wordprocessor}

Das schien keine Wirkung zu haben. Ich habe verschiedene Werte für ausprobiert -tabsund sie hatten einige Auswirkungen auf die angezeigte Registerbreite. Es scheint also die richtige Zeile zu sein, die geändert werden muss.

Leider scheint Tcl / Tk keinen Begriff für die Tabulatorbreite in Zeichen zu haben, stattdessen muss die Tabulatorbreite in Pixel oder Zentimetern angegeben werden.

Beachten Sie, dass ich keinerlei Erfahrung mit Tcl / TK habe. Vielleicht übersehen wir hier nur etwas Einfaches.

Wie auch immer, jetzt wissen Sie, wo Sie anfangen sollen zu graben. Denken Sie daran, sich hier zu melden, wenn Sie eine funktionierende Lösung haben. Viel Glück.

Lesmana
quelle
Vielen Dank für Ihre Recherche. Ich muss etwas Zeit dafür reservieren, um es zu versuchen. Das Kopfgeld gehört dir wie verdient. Wann und wenn ich herausfinde, wie es geht, melde ich mich sicher wieder hier.
Htbaa
@Htbaa: Ich denke, Sie müssen auf die Schaltfläche "Prämienprämie" klicken, um die Prämie zu vergeben. Wenn Sie die Antwort akzeptieren, wird die Prämie nicht gewährt.
Lesmana
Vielen Dank. Erledigt! Ich war mir ziemlich sicher, dass das Kopfgeld verschenkt wurde.
Htbaa
5

Ich habe Recherchen von Lesmana ausgearbeitet .

Die Linie

catch {$ui_diff configure -tabstyle wordprocessor}`

erwähnt durch Lesmana sollte folgende Fassung:

catch {$ui_diff configure -tabs "[expr {[get_config gui.tabsize] * [font measure font_diff 0]}] left" -tabstyle wordprocessor}

Danach kann die Größe der Tabs mit der Option "tabsize" im Abschnitt [gui] der Git-Konfigurationsdatei (aka gui.tabsize) eingestellt werden. Schlechte Nachrichten:

  1. Einige Tabulatoren nach dem letzten Nicht-Leerzeichen werden zu einfachen Leerzeichen. Das sieht aus wie ein Fehler in tcl.
  2. Nach dem Ändern der Schriftgröße muss git-gui neu gestartet werden, um die richtigen Registerkarten zu erhalten. Wer weiß, wie man es löst?

Getestet mit:

  • Git-Gui Version 0.13.0.8.g8f85
  • Git Version 1.7.4.1
  • tcl version 8.4.16-2 (Ubuntu 11.04 i386 Paket)
iFred
quelle