gitk: make 'sort-refs-by-type' optional and persistent

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>
This commit is contained in:
Michael Rappazzo
2025-07-18 16:33:08 -04:00
committed by Johannes Sixt
parent aa1a3e0993
commit 9abe70db6c

12
gitk
View File

@@ -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