@@ -142,6 +142,10 @@ constructor pick {} {
142
142
-label [mc " Recent Repositories" ]
143
143
}
144
144
145
+ if {[set lenrecent [llength $sorted_recent ]] < $maxrecent } {
146
+ set lenrecent $maxrecent
147
+ }
148
+
145
149
${NS} ::label $w_body .space
146
150
${NS} ::label $w_body .recentlabel \
147
151
-anchor w \
@@ -153,7 +157,7 @@ constructor pick {} {
153
157
-background [get_bg_color $w_body .recentlabel] \
154
158
-wrap none \
155
159
-width 50 \
156
- -height $maxrecent
160
+ -height $lenrecent
157
161
$w_recentlist tag conf link \
158
162
-foreground blue \
159
163
-underline 1
@@ -235,19 +239,19 @@ method _invoke_next {} {
235
239
236
240
proc _get_recentrepos {} {
237
241
set recent [list ]
238
- foreach p [get_config gui.recentrepo] {
242
+ foreach p [lsort -unique [ get_config gui.recentrepo] ] {
239
243
if {[_is_git [file join $p .git]]} {
240
244
lappend recent $p
241
245
} else {
242
246
_unset_recentrepo $p
243
247
}
244
248
}
245
- return [ lsort $recent ]
249
+ return $recent
246
250
}
247
251
248
252
proc _unset_recentrepo {p} {
249
253
regsub -all -- {([()\[\]{}\.^$+*?\\])} $p {\\\1} p
250
- git config --global --unset gui.recentrepo " ^$p \$ "
254
+ catch { git config --global --unset-all gui.recentrepo " ^$p \$ " }
251
255
load_config 1
252
256
}
253
257
@@ -262,20 +266,19 @@ proc _append_recentrepos {path} {
262
266
set i [lsearch $recent $path ]
263
267
if {$i >= 0} {
264
268
_unset_recentrepo $path
265
- set recent [lreplace $recent $i $i ]
266
269
}
267
270
268
- lappend recent $path
269
271
git config --global --add gui.recentrepo $path
270
272
load_config 1
273
+ set recent [get_config gui.recentrepo]
271
274
272
275
if {[set maxrecent [get_config gui.maxrecentrepo]] eq {}} {
273
276
set maxrecent 10
274
277
}
275
278
276
279
while {[llength $recent ] > $maxrecent } {
277
280
_unset_recentrepo [lindex $recent 0]
278
- set recent [lrange $recent 1 end ]
281
+ set recent [get_config gui.recentrepo ]
279
282
}
280
283
}
281
284
0 commit comments