Cambiar tabsize en git-gui

15

Me preguntaba si es posible cambiar el tamaño de la pestaña en git-gui de 8 caracteres a 4. Lo único que encontré fue core.whitespace = tabsize=4pero eso solo afecta a diff.

La razón por la que pregunto es porque estoy eliminando gradualmente el uso de pestañas y en su lugar uso una sangría de 4 espacios. Sin embargo, esto puede dar resultados confusos al ver la diferencia en git-gui, ya que tabsize tiene alrededor de 8 caracteres.

Sé que un simple :retaben Vim resuelve mi problema, pero con bastante frecuencia tengo que trabajar en archivos grandes con un historial a largo plazo que pueden tener modificaciones en ramas separadas. Por lo tanto, no siempre puedo convertir todas las pestañas.

Htbaa
fuente

Respuestas:

5

A partir de git-gui-0.20 y git 2.4.0 ( commit ) existe un parámetro de configuración que se ha agregado para configurar el tamaño de la pestaña mostrada en git gui.

Agregue esto a su ~ / .gitconfig

[gui]
    tabsize = 4

o cámbielo a través del menú de configuración de git-gui (Editar -> Opciones ...)

Patrick B.
fuente
Gracias. Actualicé mi Git (estaba en 1.8: -O) y veo esta opción. Todavía tengo que lidiar con una combinación de pestañas y espacios de vez en cuando, así que esto es genial.
Htbaa
10

Investigué un poco.

La configuración core.whitespaceno tiene nada que ver con cómo se muestran las pestañas. Solo se usa para que git reconozca los errores de espacio en blanco relacionados con las pestañas. Por ejemplo: cuando indent-with-non-tabestá habilitado, y core.whitespacese establece en tabwidth=4, y una línea está sangrada usando 4 espacios o más, entonces git informará un error.

Para git, aparte de las funciones de detección de errores de espacio en blanco relacionadas con la pestaña, un carácter de pestaña es un personaje como cualquier otro personaje. Se compara y se descarga a cualquier herramienta que se use para mostrar los caracteres. Eso significa que, para configurar el ancho de la pestaña que se muestra, debe configurar los "extremos frontales" de git. En ese caso git diff, sería "menos" (la herramienta de Unix "menos"). En ese caso git gui, sería git-gui.

Configurar menos es fácil. Puede establecer la configuración de git core.pagerpara configurar menos para mostrar una pestaña con 4 espacios (menos tiene un parámetro -xnpara establecer el ancho de pestaña n).

Configurar git-gui resultó ser considerablemente más difícil. Git-gui está escrito en Tcl / Tk. Encontré una opción Tcl / Tk para configurar el ancho de la pestaña en widgets de texto. También encontré una línea en la git-gui.shque parece que el widget de texto se está inicializando.

Esta es la línea 3346 del archivo git-gui.shen git versión 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

Cambié eso, de acuerdo con el manual Tcl / Tk, a:

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

Eso no pareció tener ningún efecto. Intenté diferentes valores para -tabsy tuvieron algún efecto en el ancho de la pestaña mostrada, por lo que parece ser la línea correcta para modificar.

Desafortunadamente, Tcl / Tk no parece tener una noción de ancho de tabulación en términos de caracteres, sino que el ancho de tabulación debe establecerse en píxeles o centímetros.

Tenga en cuenta que no tengo experiencia en Tcl / TK en absoluto, por lo que tal vez solo estoy pasando por alto algo simple aquí.

De todos modos, ahora sabes por dónde empezar a cavar. Recuerde informar aquí si tiene una solución que funcione. Buena suerte.

lesmana
fuente
Gracias por tu investigación Tendré que reservar algo de tiempo para intentarlo. La recompensa es tuya como merecida. Cuando y si descubro cómo hacerlo, me aseguraré de informar aquí.
Htbaa
@Htbaa: Creo que tienes que hacer clic en el botón "otorgar recompensa" para otorgar la recompensa. Aceptar la respuesta no otorga la recompensa.
lesmana
Gracias. ¡Hecho! Estaba bastante seguro de que la recompensa fue regalada.
Htbaa
5

Elaboré una investigación realizada por lesmana .

La línea

catch {$ui_diff configure -tabstyle wordprocessor}`

mencionado por lesmana debe reemplazarse con lo siguiente:

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

Después de hacer esto, se puede ajustar el tamaño de la pestaña usando la opción "tabsize" en la sección [gui] del archivo de configuración de git (también conocido como gui.tabsize). Malas noticias:

  1. Algunas pestañas después del último carácter que no es un espacio en blanco se convierten en espacios simples. Esto parece un error en tcl.
  2. Uno tiene que reiniciar git-gui después de cambiar el tamaño de fuente para obtener las pestañas correctas. ¿Quién sabe cómo resolverlo?

Probado con:

  • git-gui versión 0.13.0.8.g8f85
  • git versión 1.7.4.1
  • tcl versión 8.4.16-2 (paquete Ubuntu 11.04 i386)
iFred
fuente