Changer la taille des tabulations dans git-gui

15

Je me demandais s'il était possible de changer la taille des tabulations dans git-gui de 8 caractères à 4. La seule chose que j'ai trouvée était core.whitespace = tabsize=4mais cela n'affecte que diff.

La raison pour laquelle je pose la question est que j'élimine progressivement l'utilisation des tabulations et que j'utilise plutôt une indentation à 4 espaces. Cependant, cela peut donner des résultats confus lorsque vous regardez la différence dans git-gui, car la taille des tabulations est d'environ 8 caractères.

Je sais qu'un simple :retabdans Vim résout mon problème, mais assez souvent je dois travailler sur de gros fichiers avec un historique à long terme qui peuvent avoir des modifications dans des branches distinctes. Je ne peux donc pas toujours simplement convertir tous les onglets.

Htbaa
la source

Réponses:

5

Depuis git-gui-0.20 et git 2.4.0 ( commit ), il existe un paramètre de configuration qui a été ajouté pour configurer la taille de tabulation affichée dans git gui.

Ajoutez ceci à votre ~ / .gitconfig

[gui]
    tabsize = 4

ou modifiez-le via le menu de configuration de git-gui (Edition -> Options ...)

Patrick B.
la source
Merci. J'ai mis à jour mon Git (était à 1.8: -O) et je vois cette option. Je dois encore faire face à un mélange de tabulations et d'espaces de temps en temps, donc c'est génial.
Htbaa
10

J'ai fait des recherches.

La configuration core.whitespacen'a rien à voir avec la façon dont les onglets sont affichés. Il est uniquement utilisé pour que git reconnaisse les erreurs d'espaces liés aux onglets. Par exemple: lorsque indent-with-non-tabest activé, et core.whitespaceest défini sur tabwidth=4, et qu'une ligne est indentée en utilisant 4 espaces ou plus, alors git signalera une erreur.

Pour git, à part les fonctionnalités de détection d'erreurs d'espaces blancs liées aux onglets, un caractère de tabulation est un caractère comme tout autre caractère. Il est comparé et exporté vers n'importe quel outil utilisé pour afficher les caractères. Cela signifie que pour configurer la largeur de tabulation affichée, vous devez configurer les "frontaux" de git. Dans ce cas, git diffce serait «moins» (l'outil Unix «moins»). Dans ce cas, git guice serait git-gui lui-même.

Configurer moins est facile. Vous pouvez définir la configuration de git core.pagersur moins pour afficher un onglet en utilisant 4 espaces (moins a un paramètre -xnpour définir la largeur de tabulation n).

La configuration de git-gui s'est avérée être beaucoup plus difficile. Git-gui est écrit en Tcl / Tk. J'ai trouvé une option Tcl / Tk pour configurer la largeur de tabulation dans les widgets de texte. J'ai également trouvé une ligne git-gui.shoù il semble que le widget de texte est en cours d'initialisation.

Il s'agit de la ligne 3346 du fichier git-gui.shdans la version 1.7.5 de git:

catch {$ui_diff configure -tabstyle wordprocessor}

J'ai changé cela, selon le manuel Tcl / Tk, en:

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

Cela ne semblait avoir aucun effet. J'ai essayé différentes valeurs pour -tabset elles ont eu un certain effet sur la largeur des onglets affichés, il semble donc que ce soit la bonne ligne à modifier.

Malheureusement, Tcl / Tk ne semble pas avoir une notion de largeur de tabulation en termes de caractères, mais la largeur de tabulation doit être définie en pixels ou en centimètres.

Notez que je n'ai aucune expérience en Tcl / TK, donc peut-être que je suis en train d'oublier quelque chose de simple ici.

Quoi qu'il en soit, vous savez maintenant où commencer à creuser. N'oubliez pas de signaler ici si vous avez une solution de travail. Bonne chance.

lesmana
la source
Merci pour vos recherches. Je vais devoir réserver un peu de temps pour cela pour l'essayer. La prime vous appartient comme vous le méritez. Quand et si je trouve comment le faire, je serai sûr de faire un rapport ici.
Htbaa
@Htbaa: Je pense que vous devez cliquer sur le bouton "attribuer une prime" pour attribuer la prime. Accepter la réponse n'accorde pas la prime.
lesmana
Merci. Terminé! J'étais à peu près sûr que la prime avait été distribuée.
Htbaa
5

J'ai élaboré des recherches faites par lesmana .

La ligne

catch {$ui_diff configure -tabstyle wordprocessor}`

mentionné par lesmana devrait être remplacé par le texte suivant:

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

Après cela, on peut régler la taille des onglets en utilisant l'option "tabsize" dans la section [gui] du fichier de configuration git (alias gui.tabsize). Mauvaises nouvelles:

  1. Certains onglets après le dernier caractère non blanc se transforment en espaces simples. Cela ressemble à un bogue dans tcl.
  2. Il faut redémarrer git-gui après avoir changé la taille de la police pour obtenir les bons onglets. Qui sait comment le résoudre?

Testé avec:

  • git-gui version 0.13.0.8.g8f85
  • git version 1.7.4.1
  • tcl version 8.4.16-2 (package Ubuntu 11.04 i386)
iFred
la source