Answers:
我做了一些研究。
该配置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
设置为更少设置,以使用4个空格显示标签(less具有-xn
将tabwidth设置为的参数n
)。
事实证明,配置git-gui非常困难。Git-gui是用Tcl / Tk编写的。我找到了一个Tcl / Tk 选项来配置文本小部件中的选项卡宽度。我还发现其中一行git-gui.sh
似乎在初始化文本小部件。
这是git-gui.sh
git版本1.7.5中文件的第3346行:
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经验,所以也许我只是在这里忽略了一些简单的知识。
无论如何,现在您知道从哪里开始挖掘了。如果您有可行的解决方案,请记住在此处报告。祝好运。
我详细阐述了莱斯曼纳所做的研究。
线
catch {$ui_diff configure -tabstyle wordprocessor}`
lesmana提到的应替换为以下内容:
catch {$ui_diff configure -tabs "[expr {[get_config gui.tabsize] * [font measure font_diff 0]}] left" -tabstyle wordprocessor}
完成此操作后,您可以使用git配置文件[aka]部分[aka]中的“ tabsize”选项来调整标签大小。坏消息:
经过测试: