Alterar tamanho da tabulação no git-gui


15

Eu queria saber se é possível alterar o tamanho da tabulação no git-gui de 8 caracteres para 4. A única coisa que encontrei foi core.whitespace = tabsize=4mas isso afeta apenas o diff.

A razão pela qual estou perguntando é porque estou eliminando lentamente o uso de guias e, em vez disso, uso o recuo de quatro espaços. No entanto, isso pode gerar resultados confusos ao observar o diff no git-gui, pois o tamanho da tabulação é de cerca de 8 caracteres.

Sei que um simples :retabno Vim resolve meu problema, mas com bastante frequência tenho que trabalhar em arquivos grandes com um histórico de longo prazo que podem ter modificações em ramificações separadas. Portanto, nem sempre posso converter todas as guias.

Respostas:


5

A partir do git-gui-0.20 e do git 2.4.0 ( commit ), existe um parâmetro de configuração que foi adicionado para configurar o tamanho da tabulação exibida no git gui.

Adicione isso ao seu ~ / .gitconfig

[gui]
    tabsize = 4

ou altere-o através do menu de configuração do git-gui (Editar -> Opções ...)


Obrigado. Atualizei meu Git (estava em 1.8: -O) e vejo esta opção. Eu ainda tenho que lidar com uma combinação de guias e espaços de vez em quando, então isso é ótimo.
Htbaa

10

Eu fiz algumas pesquisas.

A configuração core.whitespacenão tem nada a ver com a maneira como as guias são exibidas. É usado apenas para o git reconhecer erros de espaço em branco relacionados a guias. Por exemplo: quando indent-with-non-tabestá ativado e core.whitespaceestá definido como tabwidth=4e uma linha é recuada usando 4 espaços ou mais, o git relatará um erro.

Para o git, além dos recursos de detecção de erro de espaço em branco relacionados à guia, um caractere de tabulação é um caractere como qualquer outro caractere. Ele é comparado e despejado em qualquer ferramenta usada para exibir os caracteres. Isso significa que, para configurar a largura da guia exibida, é necessário configurar os "front ends" do git. No caso git diffdisso, seria "less" (a ferramenta unix "less"). Nesse caso, git guiseria o próprio git-gui.

Configurar menos é fácil. Você pode definir a configuração do git core.pagerpara definir menos para exibir uma guia usando 4 espaços (menos tem um parâmetro -xnpara definir a largura da guia n).

Configurar o git-gui acabou sendo consideravelmente mais difícil. Git-gui está escrito em Tcl / Tk. Encontrei uma opção Tcl / Tk para configurar a largura da guia nos widgets de texto. Também encontrei uma linha na git-gui.shqual parece que o widget de texto está sendo inicializado.

Esta é a linha 3346 do arquivo git-gui.shna versão 1.7.5 do git:

catch {$ui_diff configure -tabstyle wordprocessor}

Alterei isso, de acordo com o manual Tcl / Tk, para:

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

Isso não pareceu ter nenhum efeito. Tentei valores diferentes -tabse eles tiveram algum efeito na largura da guia exibida, por isso parece ser a linha correta a ser modificada.

Infelizmente, Tcl / Tk não parece ter uma noção da largura da guia em termos de caracteres; em vez disso, a largura da guia deve ser definida em pixels ou centímetros.

Observe que eu não tenho nenhuma experiência em Tcl / TK, então talvez eu esteja apenas negligenciando algo simples aqui.

De qualquer forma, agora você sabe por onde começar a cavar. Lembre-se de relatar aqui se você tiver uma solução funcional. Boa sorte.


Obrigado por sua pesquisa. Vou ter que reservar algum tempo para isso tentar. A recompensa é sua como merecida. Quando e se eu descobrir como fazer isso, relatarei aqui.
Htbaa

@Htbaa: Eu acho que você precisa clicar no botão "premiar" para premiá-lo. Aceitar a resposta não concede a recompensa.
Lesmana #

Obrigado. Feito! Eu tinha certeza de que a recompensa foi dada.
Htbaa

5

Elaborei pesquisas feitas por lesmana .

A linha

catch {$ui_diff configure -tabstyle wordprocessor}`

mencionado por lesmana deve ser substituído pelo seguinte:

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

Depois de fazer isso, é possível ajustar o tamanho da guia usando a opção "tabsize" na seção [gui] do arquivo de configuração do git (também conhecido como gui.tabsize). Más notícias:

  1. Algumas guias após o último caractere que não são espaços em branco se transformam em espaços simples. Isso parece um bug no tcl.
  2. É necessário reiniciar o git-gui após alterar o tamanho da fonte para obter as guias corretas. Quem sabe como resolver isso?

Testado com:

  • git-gui versão 0.13.0.8.g8f85
  • git versão 1.7.4.1
  • tcl versão 8.4.16-2 (pacote Ubuntu 11.04 i386)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.