git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH/RFC v3] diff.tcl: made alignment of tabs in git-gui diff consistent with gitk

From
CGChris 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.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 <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
Previous: Chris Idema via GitGitGadgetNext: Johannes Sixt
Message 23 of 30 in “diff.tcl: fixed alignment of tabs in git-gui diff by using spaces”
  1. diff.tcl: fixed alignment of tabs in git-gui diff by using spacesChris Idema via GitGitGadget, Jan 26, 2026
  2. Johannes SixtJan 26, 2026
  3. GitHub Chris IdemaJan 26, 2026
  4. Johannes SixtJan 26, 2026
  5. GitHub Chris IdemaJan 26, 2026
  6. Johannes SixtJan 26, 2026
  7. GitHub Chris IdemaJan 26, 2026
  8. GitHub Chris IdemaJan 26, 2026
  9. 0/2 diff.tcl: Fixed alignment of tabs in git-gui diff by using spaces.Chris Idema via GitGitGadget, Jan 27, 2026
  10. 2/2 diff.tcl: call "apply_tab_size 1" to fix alignment instead of spaces.Chris Idema via GitGitGadget, Jan 27, 2026
  11. Junio C HamanoJan 27, 2026
  12. Junio C HamanoJan 27, 2026
  13. GitHub Chris IdemaJan 28, 2026
  14. Johannes SixtJan 28, 2026
  15. GitHub Chris IdemaJan 28, 2026
  16. Johannes SixtJan 28, 2026
  17. Junio C HamanoJan 28, 2026
  18. Junio C HamanoJan 29, 2026
  19. GitHub Chris IdemaJan 29, 2026
  20. Johannes SixtJan 29, 2026
  21. Junio C HamanoJan 29, 2026
  22. 1/2 diff.tcl: fixed alignment of tabs in git-gui diff by using spacesChris Idema via GitGitGadget, Jan 27, 2026
  23. diff.tcl: made alignment of tabs in git-gui diff consistent with gitkChris Idema via GitGitGadget, Jan 28, 2026
  24. Johannes SixtJan 28, 2026
  25. GitHub Chris IdemaJan 28, 2026
  26. Junio C HamanoJan 29, 2026
  27. git-gui: shift tabstops to account for the first column of context diffsChris Idema via GitGitGadget, Jan 29, 2026
  28. Johannes SixtJan 29, 2026
  29. GitHub Chris IdemaMar 4, 2026
  30. Johannes SixtMar 4, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.