public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: "Chris Idema via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Chris Idema <github_chris_idema@proton.me>,
	Chris Idema <github_chris_idema@proton.me>
Subject: [PATCH/RFC v2 1/2] diff.tcl: fixed alignment of tabs in git-gui diff by using spaces
Date: Tue, 27 Jan 2026 20:33:15 +0000	[thread overview]
Message-ID: <f2a09c15eb600c4de8ca2e25596f02ad9d1c30f7.1769545996.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2179.v2.git.git.1769545996.gitgitgadget@gmail.com>

From: Chris Idema <github_chris_idema@proton.me>

Tabs were not properly rendered in TK regardless of tab width settings.
Converting tab alignment to spaces before rendering in TK fixes this.
Does not fix alignment issues in gitk.

Signed-off-by: Chris Idema <github_chris_idema@proton.me>
---
 git-gui/lib/diff.tcl | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl
index 442737ba4f..2e13f8c776 100644
--- a/git-gui/lib/diff.tcl
+++ b/git-gui/lib/diff.tcl
@@ -12,6 +12,27 @@ 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
@@ -495,7 +516,9 @@ proc read_diff {fd conflict_size cont_info} {
 			}
 		}
 		set mark [$ui_diff index "end - 1 line linestart"]
-		$ui_diff insert end $line $tags
+		set line [expand_tabs $line]
+		$ui_diff insert end "$line" $tags
+
 		if {[string index $line end] eq "\r"} {
 			$ui_diff tag add d_cr {end - 2c}
 		}
-- 
gitgitgadget


  reply	other threads:[~2026-01-27 20:33 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-26 10:45 [PATCH] diff.tcl: fixed alignment of tabs in git-gui diff by using spaces Chris Idema via GitGitGadget
2026-01-26 12:15 ` Johannes Sixt
2026-01-26 13:32   ` GitHub Chris Idema
2026-01-26 13:59     ` Johannes Sixt
2026-01-26 14:43       ` GitHub Chris Idema
2026-01-26 14:52         ` Johannes Sixt
2026-01-26 15:21           ` GitHub Chris Idema
2026-01-26 15:32           ` GitHub Chris Idema
2026-01-27 20:33 ` [PATCH/RFC v2 0/2] diff.tcl: Fixed " Chris Idema via GitGitGadget
2026-01-27 20:33   ` Chris Idema via GitGitGadget [this message]
2026-01-27 20:33   ` [PATCH/RFC v2 2/2] diff.tcl: call "apply_tab_size 1" to fix alignment instead of spaces Chris Idema via GitGitGadget
2026-01-27 22:19     ` Junio C Hamano
2026-01-27 23:26       ` Junio C Hamano
2026-01-28  9:07         ` GitHub Chris Idema
2026-01-28 13:40         ` Johannes Sixt
2026-01-28 14:02           ` GitHub Chris Idema
2026-01-28 15:59             ` Johannes Sixt
2026-01-28 23:42               ` Junio C Hamano
2026-01-29  0:06           ` Junio C Hamano
2026-01-29  8:31             ` GitHub Chris Idema
2026-01-29 10:04               ` Johannes Sixt
2026-01-29 15:17                 ` Junio C Hamano
2026-01-28 10:20   ` [PATCH/RFC v3] diff.tcl: made alignment of tabs in git-gui diff consistent with gitk Chris Idema via GitGitGadget
2026-01-28 17:02     ` Johannes Sixt
2026-01-28 19:02       ` GitHub Chris Idema
2026-01-29  0:02     ` Junio C Hamano
2026-01-29 11:09     ` [PATCH v4] git-gui: shift tabstops to account for the first column of context diffs Chris Idema via GitGitGadget
2026-01-29 21:36       ` Johannes Sixt
2026-03-04 13:32         ` GitHub Chris Idema
2026-03-04 19:22           ` Johannes Sixt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f2a09c15eb600c4de8ca2e25596f02ad9d1c30f7.1769545996.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=github_chris_idema@proton.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox