]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gitk: make 'sort-refs-by-type' optional and persistent
authorMichael Rappazzo <michael.rappazzo@infor.com>
Fri, 18 Jul 2025 20:33:08 +0000 (16:33 -0400)
committerJohannes Sixt <j6t@kdbg.org>
Sun, 20 Jul 2025 08:12:17 +0000 (10:12 +0200)
On the 'tags and heads' view, add an option to enable or disable
'Sort refs by type'.  This option is read from and written to the
config file.  Clicking on the option will update the refs in the
view.

Signed-off-by: Michael Rappazzo <michael.rappazzo@infor.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
gitk

diff --git a/gitk b/gitk
index 911fa6308961ec2f2e2e73d9cdfb6ffab45802a5..a22b1bbfc64e877dec97d8c407cc692b5f4f9ac9 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -10261,6 +10261,9 @@ proc showrefs {} {
     pack $top.f.e -side right -fill x -expand 1
     pack $top.f.l -side left
     grid $top.f - -sticky ew -pady 2
+    ${NS}::checkbutton $top.sort -text [mc "Sort refs by type"] \
+        -variable sortrefsbytype -command {refill_reflist}
+    grid $top.sort - -sticky w -pady 2
     ${NS}::button $top.close -command [list destroy $top] -text [mc "Close"]
     bind $top <Key-Escape> [list destroy $top]
     grid $top.close -
@@ -10304,7 +10307,7 @@ proc reflistfilter_change {n1 n2 op} {
 }
 
 proc refill_reflist {} {
-    global reflist reflistfilter showrefstop headids tagids otherrefids
+    global reflist reflistfilter showrefstop headids tagids otherrefids sortrefsbytype
     global curview
 
     if {![info exists showrefstop] || ![winfo exists $showrefstop]} return
@@ -10356,7 +10359,11 @@ proc refill_reflist {} {
         }
     }
     set otherrefs [lsort -index 0 $otherrefs]
+
     set refs [concat $localrefs $remoterefs $tagrefs $otherrefs]
+    if {!$sortrefsbytype} {
+        set refs [lsort -index 0 $refs]
+    }
 
     if {$refs eq $reflist} return
 
@@ -12618,6 +12625,7 @@ set wrapcomment "none"
 set wrapdefault "none"
 set showneartags 1
 set hideremotes 0
+set sortrefsbytype 1
 set maxrefs 20
 set visiblerefs {"master"}
 set maxlinelen 200
@@ -12732,7 +12740,7 @@ set config_variables {
     filesepbgcolor filesepfgcolor linehoverbgcolor linehoverfgcolor
     linehoveroutlinecolor mainheadcirclecolor workingfilescirclecolor
     indexcirclecolor circlecolors linkfgcolor circleoutlinecolor diffbgcolors
-    web_browser
+    sortrefsbytype web_browser
 }
 foreach var $config_variables {
     config_init_trace $var