git-gui: heed core.commentChar/commentString

This amends 1ae85ff6d (git-gui: strip comments and consecutive empty
lines from commit messages, 2024-08-13) to deal with custom comment
characters/strings.

The magic commentString value "auto" is not handled, because the option
makes no sense to me - it does not support comments in templates and
hook output, and it seems far-fetched that someone would introduce
comments during editing the message.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>

diff --git a/git-gui.sh b/git-gui.sh
index 8fe7538..2bc2c9b 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -880,6 +880,12 @@
 			color::sync_with_theme
 		}
 	}
+
+	global comment_string
+	set comment_string [get_config core.commentstring]
+	if {$comment_string eq {}} {
+		set comment_string [get_config core.commentchar]
+	}
 }
 
 set default_config(branch.autosetupmerge) true
@@ -890,6 +896,8 @@
 set default_config(merge.verbosity) 2
 set default_config(user.name) {}
 set default_config(user.email) {}
+set default_config(core.commentchar) "#"
+set default_config(core.commentstring) {}
 
 set default_config(gui.encoding) [encoding system]
 set default_config(gui.matchtrackingbranch) false
diff --git a/lib/commit.tcl b/lib/commit.tcl
index 208dc28..a570f9c 100644
--- a/lib/commit.tcl
+++ b/lib/commit.tcl
@@ -211,7 +211,9 @@
 	# Strip trailing whitespace
 	regsub -all -line {[ \t\r]+$} $msg {} msg
 	# Strip comment lines
-	regsub -all {(^|\n)#[^\n]*} $msg {\1} msg
+	global comment_string
+	set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}]
+	regsub -all $cmt_rx $msg {\1} msg
 	# Strip leading empty lines
 	regsub {^\n*} $msg {} msg
 	# Compress consecutive empty lines