Cambia tabsize in git-gui


15

Mi chiedevo se fosse possibile cambiare il tabsize in git-gui da 8 caratteri a 4. L'unica cosa che ho trovato è stata, core.whitespace = tabsize=4ma questo influenza solo diff.

Il motivo per cui lo sto chiedendo è perché sto lentamente eliminando l'uso delle schede e invece uso il rientro a 4 spazi. Questo, tuttavia, può dare risultati confusi quando si guarda il diff in git-gui, poiché il tabsize è di circa 8 caratteri.

So che un semplice :retabin Vim risolve il mio problema, ma abbastanza spesso devo lavorare su file di grandi dimensioni con una storia a lungo termine che può avere modifiche in rami separati. Quindi non posso sempre semplicemente convertire tutte le schede.

Risposte:


5

A partire da git-gui-0.20 e git 2.4.0 ( commit ) esiste un parametro di configurazione che è stato aggiunto per configurare il tabsize visualizzato in git gui.

Aggiungi questo al tuo ~ / .gitconfig

[gui]
    tabsize = 4

o cambiarlo tramite il menu di configurazione di git-gui (Modifica -> Opzioni ...)


Grazie. Ho aggiornato il mio Git (era a 1.8: -O) e vedo questa opzione. Devo ancora fare i conti con una combinazione di schede e spazi ogni tanto, quindi è fantastico.
— Htbaa,

10

Ho fatto delle ricerche.

La configurazione core.whitespacenon ha nulla a che fare con la modalità di visualizzazione delle schede. Viene usato solo per git per riconoscere errori di spazi bianchi relativi alle schede. Ad esempio: quando indent-with-non-tabè abilitato, core.whitespaceè impostato su tabwidth=4e una linea è rientrata usando almeno 4 spazi, allora git segnalerà un errore.

Ad esempio, a parte le funzionalità di rilevamento degli errori degli spazi bianchi relativi alle schede, un carattere di scheda è un personaggio come qualsiasi altro personaggio. Viene confrontato e scaricato a qualsiasi strumento utilizzato per visualizzare i personaggi. Ciò significa che per configurare la larghezza della scheda visualizzata devi configurare i "front-end" di git. In questo caso git diffsarebbe "meno" (lo strumento unix "meno"). In questo caso git guisarebbe git-gui stesso.

Configurare meno è facile. Puoi impostare la configurazione di git in modo core.pagerda impostare meno per visualizzare una scheda usando 4 spazi (less ha un parametro -xnsu cui impostare la larghezza di tabulazione n).

Configurare git-gui si è rivelato molto più difficile. Git-gui è scritto in Tcl / Tk. Ho trovato un'opzione Tcl / Tk per configurare la larghezza della scheda nei widget di testo. Ho anche trovato una riga in git-gui.shcui sembra che il widget di testo sia stato inizializzato.

Questa è la riga 3346 del file git-gui.shnella versione 1.7.5 di git:

catch {$ui_diff configure -tabstyle wordprocessor}

Ho modificato questo, secondo il manuale di Tcl / Tk, in:

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

Ciò non sembra avere alcun effetto. Ho provato valori diversi per -tabse hanno avuto qualche effetto sulla larghezza della scheda visualizzata, quindi sembra essere la linea corretta da modificare.

Sfortunatamente, Tcl / Tk non sembra avere una nozione di larghezza della scheda in termini di caratteri, invece, la larghezza della scheda deve essere impostata in pixel o centimetri.

Nota che non ho alcuna esperienza in Tcl / TK, quindi forse sto solo trascurando qualcosa di semplice qui.

Ad ogni modo, ora sai da dove iniziare a scavare. Ricorda di riportare qui se hai una soluzione funzionante. In bocca al lupo.


Grazie per la tua ricerca. Dovrò riservare del tempo per provare. La generosità è tua come meritata. Quando e se capirò come farlo, tornerò sicuramente qui.
— Htbaa,

@Htbaa: Penso che devi fare clic sul pulsante "premi generosità" per assegnare la ricompensa. Accettare la risposta non conferisce la generosità.
— lesmana,

Grazie. Fatto! Ero abbastanza sicuro che la taglia fosse stata data.
— Htbaa,

5

Ho elaborato ricerche fatte da Lesmana .

La linea

catch {$ui_diff configure -tabstyle wordprocessor}`

menzionato da lesmana dovrebbe essere sostituito dal seguente:

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

Dopo aver fatto ciò, è possibile ottimizzare le dimensioni della scheda usando l'opzione "tabsize" nella sezione [gui] del file di configurazione di git (aka gui.tabsize). Cattive notizie:

  1. Alcune schede dopo l'ultimo carattere non bianco si trasformano in spazi semplici. Sembra un bug in tcl.
  2. Uno deve riavviare git-gui dopo aver cambiato la dimensione del carattere per ottenere le schede corrette. Chi sa come risolverlo?

Testato con:

  • versione git-gui 0.13.0.8.g8f85
  • versione git 1.7.4.1
  • tcl versione 8.4.16-2 (pacchetto Ubuntu 11.04 i386)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.