From 4a4a512552f9b5deaabf0c98e49f117e2681c2f1 Mon Sep 17 00:00:00 2001 From: Ori Avtalion Date: Wed, 21 May 2025 20:12:35 +0300 Subject: [PATCH] gitk: Add user preference to hide custom references External tools such as Jujutsu may add many references that are of no interest to the user. This preference hides them. The non-custom refs are those that pass git's default decoration filter (see set_default_decoration_filter). The preference is off by default, maintaining current behavior. Signed-off-by: Ori Avtalion --- gitk | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/gitk b/gitk index 11ad639..8bc305a 100755 --- a/gitk +++ b/gitk @@ -1903,6 +1903,7 @@ proc readrefs {} { global otherrefids idotherrefs mainhead mainheadid global selecthead selectheadid global hideremotes + global hidecustomrefs global tclencoding foreach v {tagids idtags headids idheads otherrefids idotherrefs} { @@ -1939,6 +1940,10 @@ proc readrefs {} { set tagids($name) $id lappend idtags($id) $name } else { + if {$hidecustomrefs} { + if {![string match "stash" $ref] || + ![string match "replace/*" $ref]} continue + } set otherrefids($name) $id lappend idotherrefs($id) $name } @@ -11696,7 +11701,7 @@ proc prefspage_general {notebook} { global NS maxwidth maxgraphpct showneartags showlocalchanges global tabstop wrapcomment wrapdefault limitdiffs global autocopy autoselect autosellen extdifftool perfile_attrs - global hideremotes want_ttk have_ttk maxrefs web_browser + global hideremotes hidecustomrefs want_ttk have_ttk maxrefs web_browser set page [create_prefs_page $notebook.general] @@ -11716,6 +11721,9 @@ proc prefspage_general {notebook} { ${NS}::checkbutton $page.hideremotes -text [mc "Hide remote refs"] \ -variable hideremotes grid x $page.hideremotes -sticky w + ${NS}::checkbutton $page.hidecustomrefs -text [mc "Hide custom refs"] \ + -variable hidecustomrefs + grid x $page.hidecustomrefs -sticky w ${NS}::checkbutton $page.autocopy -text [mc "Copy commit ID to clipboard"] \ -variable autocopy @@ -11863,7 +11871,7 @@ proc doprefs {} { global oldprefs prefstop showneartags showlocalchanges global uicolor bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor global tabstop limitdiffs autoselect autosellen extdifftool perfile_attrs - global hideremotes want_ttk have_ttk wrapcomment wrapdefault + global hideremotes hidecustomrefs want_ttk have_ttk wrapcomment wrapdefault set top .gitkprefs set prefstop $top @@ -11872,7 +11880,8 @@ proc doprefs {} { return } foreach v {maxwidth maxgraphpct showneartags showlocalchanges \ - limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault} { + limitdiffs tabstop perfile_attrs hideremotes hidecustomrefs \ + want_ttk wrapcomment wrapdefault} { set oldprefs($v) [set $v] } ttk_toplevel $top @@ -11998,7 +12007,8 @@ proc prefscan {} { global oldprefs prefstop foreach v {maxwidth maxgraphpct showneartags showlocalchanges \ - limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault} { + limitdiffs tabstop perfile_attrs hideremotes hidecustomrefs \ + want_ttk wrapcomment wrapdefault} { global $v set $v $oldprefs($v) } @@ -12012,7 +12022,7 @@ proc prefsok {} { global oldprefs prefstop showneartags showlocalchanges global fontpref mainfont textfont uifont global limitdiffs treediffs perfile_attrs - global hideremotes wrapcomment wrapdefault + global hideremotes hidecustomrefs wrapcomment wrapdefault global ctext catch {destroy $prefstop} @@ -12059,7 +12069,7 @@ proc prefsok {} { $limitdiffs != $oldprefs(limitdiffs)} { reselectline } - if {$hideremotes != $oldprefs(hideremotes)} { + if {$hideremotes != $oldprefs(hideremotes) || $hidecustomrefs != $oldprefs(hidecustomrefs)} { rereadrefs } if {$wrapcomment != $oldprefs(wrapcomment)} { @@ -12539,6 +12549,7 @@ set wrapcomment "none" set wrapdefault "none" set showneartags 1 set hideremotes 0 +set hidecustomrefs 0 set maxrefs 20 set visiblerefs {"master"} set maxlinelen 200 @@ -12645,7 +12656,7 @@ set config_variables { mainfont textfont uifont tabstop findmergefiles maxgraphpct maxwidth cmitmode wrapcomment wrapdefault autocopy autoselect autosellen showneartags maxrefs visiblerefs - hideremotes showlocalchanges datetimeformat limitdiffs uicolor want_ttk + hideremotes hidecustomrefs showlocalchanges datetimeformat limitdiffs uicolor want_ttk bgcolor fgcolor uifgcolor uifgdisabledcolor colors diffcolors mergecolors markbgcolor diffcontext selectbgcolor foundbgcolor currentsearchhitbgcolor extdifftool perfile_attrs headbgcolor headfgcolor headoutlinecolor -- 2.43.0