[PATCH/RFC v3] diff.tcl: made alignment of tabs in git-gui diff consistent with gitk
- From
- Chris Idema via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jan 28, 2026, 10:20 UTC
- Message-ID
- <pull.2179.v3.git.git.1769595640008.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.2179.v2.git.git.1769545996.gitgitgadget@gmail.com>
From: Chris Idema <github_chris_idema@proton.me>
Tab stop width was not properly rendered in TK regardless of tab width setting. The + or minus character at start of line made tabs align incorrectly.
Signed-off-by: Chris Idema <github_chris_idema@proton.me>
---
diff.tcl: made alignment of tabs in git-gui diff consistent with gitk
cc: Johannes Sixt j6t@kdbg.orgPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2179%2FChrisIdema%2Ffix-gitgui-diff-tab-alignment-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2179/ChrisIdema/fix-gitgui-diff-tab-alignment-v3 Pull-Request: https://github.com/git/git/pull/2179
Range-diff vs v2:
1: f2a09c15eb < -: ---------- diff.tcl: fixed alignment of tabs in git-gui diff by using spaces
2: e11aa6d811 ! 1: 18d25b90c4 diff.tcl: call "apply_tab_size 1" to fix alignment instead of spaces.
@@ Metadata
Author: Chris Idema <github_chris_idema@proton.me>
## Commit message ##
- diff.tcl: call "apply_tab_size 1" to fix alignment instead of spaces.
+ diff.tcl: made alignment of tabs in git-gui diff consistent with gitk
+
+ Tab stop width was not properly rendered in TK regardless of
+ tab width setting. The + or minus character at start of line made
+ tabs align incorrectly.
Signed-off-by: Chris Idema <github_chris_idema@proton.me>
## git-gui/lib/diff.tcl ##
-@@ git-gui/lib/diff.tcl: proc apply_tab_size {{firsttab {}}} {
- }
- }
-
--proc expand_tabs {line {startcol -1}} {
-- # startcol set to -1, because in preview the lines start with a '+', '-', or ' '
-- global repo_config
--
-- set col $startcol
-- set out ""
--
-- foreach char [split $line ""] {
-- if {$char eq "\t"} {
-- set spaces [expr {$repo_config(gui.tabsize) - ($col % $repo_config(gui.tabsize))}]
-- append out [string repeat " " $spaces]
-- incr col $spaces
-- } else {
-- append out $char
-- incr col
-- }
-- }
--
-- return $out
--}
--
- proc clear_diff {} {
- global ui_diff current_diff_path current_diff_header
- global ui_index ui_workdir
@@ git-gui/lib/diff.tcl: proc read_diff {fd conflict_size cont_info} {
}
}
set mark [$ui_diff index "end - 1 line linestart"]
-- set line [expand_tabs $line]
+ apply_tab_size 1
- $ui_diff insert end "$line" $tags
--
+ $ui_diff insert end $line $tags
if {[string index $line end] eq "\r"} {
$ui_diff tag add d_cr {end - 2c}
- }git-gui/lib/diff.tcl | 1 + 1 file changed, 1 insertion(+)
diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl index 442737ba4f..7da6e5ccae 100644 --- a/git-gui/lib/diff.tcl +++ b/git-gui/lib/diff.tcl @@ -495,6 +495,7 @@ proc read_diff {fd conflict_size cont_info} { } } set mark [$ui_diff index "end - 1 line linestart"] + apply_tab_size 1 $ui_diff insert end $line $tags if {[string index $line end] eq "\r"} { $ui_diff tag add d_cr {end - 2c} base-commit: 1faf5b085a171f9ba9a6d7a446e0de16acccb1dc
-- gitgitgadget