From: Chris Idema via GitGitGadget Date: Wed, 28 Jan 2026 10:20:39 GMT Subject: [PATCH/RFC v3] diff.tcl: made alignment of tabs in git-gui diff consistent with gitk Message-ID: In-Reply-To: From: Chris Idema 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 --- diff.tcl: made alignment of tabs in git-gui diff consistent with gitk cc: Johannes Sixt j6t@kdbg.org Published-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 ## 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 ## 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