Zmień tabsize w git-gui

15

Zastanawiałem się, czy można zmienić tabsize w git-gui z 8 znaków na 4. Jedyną rzeczą, którą znalazłem, było to, core.whitespace = tabsize=4że wpływa tylko na różnicę.

Powodem, dla którego pytam, jest to, że powoli wycofuję użycie tabulatorów i zamiast tego używam wcięcia 4-spacji. Może to jednak dawać mylące wyniki podczas oglądania różnic w git-gui, ponieważ tabsize ma około 8 znaków.

Wiem, że prosty :retabw Vimie rozwiązuje mój problem, ale dość często muszę pracować nad dużymi plikami o długiej historii, które mogą mieć modyfikacje w oddzielnych gałęziach. Dlatego nie zawsze mogę po prostu przekonwertować wszystkie karty.

Htbaa
źródło

Odpowiedzi:

5

Począwszy od git-gui-0.20 i git 2.4.0 ( zatwierdzenie ) istnieje parametr konfiguracyjny, który został dodany w celu skonfigurowania wyświetlanego rozmiaru tabs w git gui.

Dodaj to do swojego ~ / .gitconfig

[gui]
    tabsize = 4

lub zmień to w menu konfiguracji git-gui (Edycja -> Opcje ...)

Patrick B.
źródło
Dzięki. Zaktualizowałem mojego Gita (był w wersji 1.8: -O) i widzę tę opcję. Wciąż mam do czynienia z mieszaniem tabulatorów i spacji co jakiś czas, więc to świetnie.
Htbaa
10

Zrobiłem trochę badań.

Konfiguracja core.whitespacenie ma nic wspólnego z wyświetlaniem zakładek. Służy tylko gitowi do rozpoznawania błędów związanych z białymi znakami tabulacji. Na przykład: gdy indent-with-non-tabjest włączony i core.whitespacejest ustawiony na tabwidth=4, a linia jest wcięta za pomocą 4 spacji lub więcej, wtedy git zgłosi błąd.

W przypadku git, oprócz funkcji wykrywania błędów związanych z białymi znakami tabulacji, tabulator jest znakiem jak każdy inny znak. Jest porównywany i zrzucany do dowolnego narzędzia używanego do wyświetlania znaków. Oznacza to, że aby skonfigurować wyświetlaną szerokość tabulatora, musisz skonfigurować „interfejsy” git. W takim przypadku git diffbyłoby „mniej” (narzędzie uniksowe „mniej”). W takim przypadku git guibyłoby to samo git-gui.

Konfiguracja mniej jest łatwa. Możesz ustawić konfigurację git tak, core.pageraby mniej konfigurowała wyświetlanie tabulacji za pomocą 4 spacji (less ma parametr -xndo ustawienia szerokości tabulatora n).

Konfiguracja git-gui okazała się znacznie trudniejsza. Git-gui jest napisane w Tcl / Tk. Znalazłem opcję Tcl / Tk , aby skonfigurować szerokość tabulatora w widżetach tekstowych. Znalazłem również wiersz, w git-gui.shktórym wygląda na to, że widget tekstowy jest inicjowany.

To jest linia 3346 pliku git-gui.shw wersji git 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

Zmieniłem to, zgodnie z instrukcją Tcl / Tk, na:

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

To nie wydawało się mieć żadnego efektu. Próbowałem różnych wartości dla -tabsi miały one pewien wpływ na wyświetlaną szerokość tabulacji, więc wydaje się, że poprawną linię należy zmodyfikować.

Niestety, Tcl / Tk nie wydaje się mieć pojęcia szerokości tabulatora pod względem znaków, zamiast tego szerokość tabulatora musi być ustawiona w pikselach lub centymetrach.

Zauważ, że nie mam żadnego doświadczenia w Tcl / TK, więc może po prostu przeoczę coś prostego.

W każdym razie teraz już wiesz, od czego zacząć kopanie. Pamiętaj, aby zgłosić się tutaj, jeśli masz działające rozwiązanie. Powodzenia.

lesmana
źródło
Dziękujemy za twoje badania. Będę musiał zarezerwować trochę czasu, aby spróbować. Nagroda jest twoja, na jaką zasługujesz. Kiedy i jak wymyślę, jak to zrobić, z pewnością zgłoś się tutaj.
Htbaa
@Htbaa: Myślę, że musisz kliknąć przycisk „nagrody premiowej”, aby przyznać nagrodę. Zaakceptowanie odpowiedzi nie przyznaje nagrody.
lesmana
Dzięki. Gotowy! Byłem całkiem pewien, że nagroda została rozdana.
Htbaa
5

Opracowałem badania wykonane przez lesmana .

Linia

catch {$ui_diff configure -tabstyle wordprocessor}`

wspomniane przez lesmana należy zastąpić następującym:

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

Po wykonaniu tej czynności można dostroić rozmiar tabulatora za pomocą opcji „tabsize” w sekcji [gui] pliku konfiguracyjnego git (aka gui.tabsize). Złe wieści:

  1. Niektóre tabulatory po ostatnim znaku niebiałym zmieniają się w proste spacje. To wygląda jak błąd w tcl.
  2. Należy ponownie uruchomić git-gui po zmianie rozmiaru czcionki, aby uzyskać prawidłowe tabulatory. Kto wie, jak to rozwiązać?

Testowane z:

  • wersja git-gui 0.13.0.8.g8f85
  • wersja git 1.7.4.1
  • wersja tcl 8.4.16-2 (pakiet Ubuntu 11.04 i386)
iFred
źródło