[PATCH v4] git-gui: shift tabstops to account for the first column of context diffs
- From
- Chris Idema via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jan 29, 2026, 11:09 UTC
- Message-ID
- <pull.2179.v4.git.git.1769684944593.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.2179.v3.git.git.1769595640008.gitgitgadget@gmail.com>
From: Chris Idema <github_chris_idema@proton.me>
When reviewing a file before staging you want its content aligned using gui.tabsize. The prefixing of lines with +, - or space characters should not change this alignment. In gitk this is done correctly. In Git Gui not.
Signed-off-by: Chris Idema <github_chris_idema@proton.me>
---
git-gui: shift tabstops to account for the first column of context diffs
cc: Johannes Sixt j6t@kdbg.orgPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2179%2FChrisIdema%2Ffix-gitgui-diff-tab-alignment-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2179/ChrisIdema/fix-gitgui-diff-tab-alignment-v4 Pull-Request: https://github.com/git/git/pull/2179
Range-diff vs v3:
1: 18d25b90c4 ! 1: 1c91363568 diff.tcl: made alignment of tabs in git-gui diff consistent with gitk
@@ Metadata
Author: Chris Idema <github_chris_idema@proton.me>
## Commit message ##
- diff.tcl: made alignment of tabs in git-gui diff consistent with gitk
+ git-gui: shift tabstops to account for the first column of context diffs
- 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.
+ When reviewing a file before staging you want its content aligned using
+ gui.tabsize. The prefixing of lines with +, - or space characters should
+ not change this alignment. In gitk this is done correctly. In Git Gui not.
Signed-off-by: Chris Idema <github_chris_idema@proton.me>
## git-gui/lib/diff.tcl ##
@@ git-gui/lib/diff.tcl: proc read_diff {fd conflict_size cont_info} {
- }
+ #
+ if {[string match {@@@ *} $line]} {
+ set is_3way_diff 1
++ apply_tab_size 2
++ } elseif {[string match {@@ *} $line]} {
+ apply_tab_size 1
}
- 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}
+ git-gui/lib/diff.tcl | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl index 442737ba4f..8be1a613fb 100644 --- a/git-gui/lib/diff.tcl +++ b/git-gui/lib/diff.tcl @@ -385,6 +385,8 @@ proc read_diff {fd conflict_size cont_info} { # if {[string match {@@@ *} $line]} { set is_3way_diff 1 + apply_tab_size 2 + } elseif {[string match {@@ *} $line]} { apply_tab_size 1 } base-commit: 1faf5b085a171f9ba9a6d7a446e0de16acccb1dc
-- gitgitgadget