Изменить размер вкладки в git-gui

15

Мне было интересно, можно ли изменить размер табуляции в git-gui с 8 символов до 4. Единственное, что я обнаружил, это core.whitespace = tabsize=4то, что это влияет только на diff.

Причина, по которой я спрашиваю, заключается в том, что я постепенно прекращаю использование вкладок и вместо этого использую отступ в 4 пробела. Это, однако, может дать непонятные результаты при просмотре различий в git-gui, так как размер табуляции составляет около 8 символов.

Я знаю, что простое :retabв Vim решает мою проблему, но довольно часто мне приходится работать с большими файлами с длительной историей, которые могут иметь модификации в отдельных ветках. Поэтому я не всегда могу просто конвертировать все вкладки.

Htbaa
источник

Ответы:

5

Начиная с git-gui-0.20 и git 2.4.0 ( commit ), существует параметр конфигурации, который был добавлен для настройки отображаемого размера табуляции в git gui.

Добавьте это к вашему ~ / .gitconfig

[gui]
    tabsize = 4

или измените его через меню конфигурации git-gui (Edit -> Options ...)

Патрик Б.
источник
Благодарю. Я обновил свой Git (был в 1.8: -O), и я вижу эту опцию. Мне все еще приходится иметь дело с сочетанием табуляции и пробелов время от времени, так что это здорово.
Htbaa
10

Я провел некоторое исследование.

Конфигурация не core.whitespaceимеет ничего общего с тем, как отображаются вкладки. Он используется только для git, чтобы распознать ошибки, связанные с символами табуляции. Например: когда indent-with-non-tabвключено и core.whitespaceустановлено значение tabwidth=4и строка имеет отступ с 4 пробелами или более, git сообщит об ошибке.

Для git, кроме функций обнаружения ошибок, связанных с символами табуляции, символ табуляции является символом, похожим на любой другой символ. Он сравнивается и сбрасывается в любой инструмент, используемый для отображения символов. Это означает, что для настройки отображаемой ширины вкладки вы должны настроить «внешние интерфейсы» git. В случае git diffэтого будет «меньше» (инструмент Unix «меньше»). В случае git guiэтого был бы сам git-gui.

Настроить меньше легко. Вы можете настроить git core.pagerдля настройки less для отображения вкладки, используя 4 пробела (less имеет параметр -xnдля установки tabwidth n).

Конфигурирование git-gui оказалось значительно сложнее. Git-gui написан на Tcl / Tk. Я нашел опцию Tcl / Tk для настройки ширины вкладки в текстовых виджетах. Я также нашел строку, в git-gui.shкоторой, похоже, инициализируется текстовый виджет.

Это строка 3346 файла git-gui.shв git версии 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

Я изменил это в соответствии с руководством Tcl / Tk, чтобы:

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

Это, казалось, не имело никакого эффекта. Я пробовал разные значения для, -tabsи они оказали некоторое влияние на ширину отображаемой вкладки, поэтому, похоже, это правильная строка для изменения.

К сожалению, Tcl / Tk, похоже, не имеет понятия ширины табуляции в терминах символов, вместо этого ширина табуляции должна быть задана в пикселях или сантиметрах.

Обратите внимание, что у меня нет никакого опыта в Tcl / TK, поэтому, возможно, я просто пропускаю что-то простое здесь.

Во всяком случае, теперь вы знаете, с чего начать копать. Не забудьте сообщить здесь, если у вас есть рабочее решение. Удачи.

lesmana
источник
Спасибо за ваши исследования. Я должен зарезервировать некоторое время для этого, чтобы попробовать. Щедрость ваша заслуженная. Когда и если я выясню, как это сделать, я обязательно сообщу здесь.
Htbaa
@Htbaa: Я думаю, что вы должны нажать кнопку «Награда за вознаграждение», чтобы назначить награду. Принятие ответа не присуждает награду.
Лесмана
Благодарю. Выполнено! Я был почти уверен, что награда была отдана.
Htbaa
5

Я разработал исследование, сделанное Лесманой .

Линия

catch {$ui_diff configure -tabstyle wordprocessor}`

упомянутое лесману следует заменить следующим:

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

После этого можно настроить размер вкладки, используя опцию «tabsize» в разделе [gui] файла конфигурации git (он же gui.tabsize). Плохие новости:

  1. Некоторые вкладки после последнего непробельного символа превращаются в простые пробелы. Это похоже на ошибку в Tcl.
  2. Нужно перезапустить git-gui после изменения размера шрифта, чтобы получить правильные вкладки. Кто знает как это решить?

Протестировано с:

  • git-gui версия 0.13.0.8.g8f85
  • git версия 1.7.4.1
  • tcl версия 8.4.16-2 (пакет Ubuntu 11.04 i386)
iFred
источник