public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Johannes Sixt <j6t@kdbg•org>
To: Wolfgang Faust <contrib-git@wolfgangfaust•com>
Cc: git@vger•kernel.org
Subject: Re: [PATCH] git-gui: highlight comment lines in commit message
Date: Mon, 2 Mar 2026 12:30:51 +0100	[thread overview]
Message-ID: <08da87b1-32c6-43c2-be1f-d60bc93ea135@kdbg.org> (raw)
In-Reply-To: <a72715e2-c3ae-4050-95e3-7fc7f9b74b5d@app.fastmail.com>

Am 01.03.26 um 22:55 schrieb Wolfgang Faust:
> These lines are stripped by wash_commit_message, but there is no indication
> in the UI that they are special and will be removed.
> Add highlighting to make it clear these lines are special.
> Signed-off-by: Wolfgang Faust <contrib-git@wolfgangfaust•com>

I like this idea! But please don't call it highlight, because we
actually want to do the opposite, dim or grey out the text.

Please leave a blank line above the sign-off trailer.

> (I'm not very good with tcl, so I suspect this code could use some work.
> In particular the regex being a mangled copy of the one in the wash
> procedure seems like a code smell, though I'm not sure how to improve
> it.)  

This text should go after the three-dashes, then it will be excluded
from the commit message.

> ---
>  git-gui/git-gui.sh | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
> index d3d3aa14a9..3a0c08aa38 100755
> --- a/git-gui/git-gui.sh
> +++ b/git-gui/git-gui.sh
> @@ -3900,6 +3900,25 @@ if {[winfo exists $ui_comm]} {
> 
>      backup_commit_buffer
> 
> +    # Grey out comment lines (which are stripped from the final
> commit message by

It looks like you pasted this text into your webmail client, which
destroyed the formatting of the patch. (I was able to fix this up,
but...) If you have a Github account, you could use Gitgitgadget
https://gitgitgadget.github.io/ for your submissions.

> +    # wash_commit_message).
> +    $ui_comm tag configure commit_comment -foreground gray
> +    proc highlight_commit_comment_lines {} {
> +        global ui_comm comment_string
> +        $ui_comm tag remove commit_comment 0.0 end
> +        set text [$ui_comm get 1.0 end]
> +        # See also cmt_rx in wash_commit_message
> +        set cmt_rx [strcat {(?:^|\n)(} [regsub -all {\W}
> $comment_string {\\&}] {[^\n]*)}]
> +        set ranges [regexp -all -indices -inline -- $cmt_rx $text]

The regular expression can be simplified if we use -line matching. Then
the initial (?:^|\n) can become just ^ (no parentheses), and since we do
not look at the end index, the trailing [^\n]* isn't needed, either.
Next, if we drop the capturing parentheses, only one pair of indexes is
reported per match...

> +        for {set i 1} {$i < [llength $ranges]} {incr i 2} {

... and we can turn this into a simple foreach loop...

> +            $ui_comm tag add commit_comment \
> +                [$ui_comm index "1.0 + [lindex [lindex $ranges $i] 0] chars"] \

... with just one level of indexing here. Also, we could stash away the
index computed here...

> +                [$ui_comm index "1.0 + [lindex [lindex $ranges $i] 0]
> chars lineend + 1 char"]

... and reuse it here with just the "lineend + 1char" modifier. (I
wonder why we need the +1char, though.)

> +        }
> +    }
> +    highlight_commit_comment_lines
> +    bind $ui_comm <<Modified>> { after idle highlight_commit_comment_lines }
> +
>      # -- If the user has aspell available we can drive it
>      #    in pipe mode to spellcheck the commit message.
>      #
> 
> base-commit: 7b2bccb0d58d4f24705bf985de1f4612e4cf06e5

-- Hannes


  reply	other threads:[~2026-03-02 11:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-01 21:55 [PATCH] git-gui: highlight comment lines in commit message Wolfgang Faust
2026-03-02 11:30 ` Johannes Sixt [this message]
2026-03-04  1:30   ` Wolfgang Faust
2026-03-04  7:24     ` 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=08da87b1-32c6-43c2-be1f-d60bc93ea135@kdbg.org \
    --to=j6t@kdbg$(echo .)org \
    --cc=contrib-git@wolfgangfaust$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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