From 79b2c75e043ad85f9a6b1a8d890b601a2f761a0e Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Sun, 2 Apr 2006 20:47:40 +1000 Subject: [PATCH 1/6] gitk: replace parent and children arrays with lists This will make it easier to switch between views efficiently, and turns out to be slightly faster as well. Signed-off-by: Paul Mackerras --- gitk | 188 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 95 insertions(+), 93 deletions(-) diff --git a/gitk b/gitk index fa1e83c494..90afec92df 100755 --- a/gitk +++ b/gitk @@ -75,6 +75,7 @@ proc getcommitlines {commfd} { global commitlisted nextupdate global leftover global displayorder commitidx commitrow commitdata + global parentlist childlist children set stuff [read $commfd] if {$stuff == {}} { @@ -140,15 +141,26 @@ proc getcommitlines {commfd} { set id [lindex $ids 0] if {$listed} { set olds [lrange $ids 1 end] - set commitlisted($id) 1 + if {[llength $olds] > 1} { + set olds [lsort -unique $olds] + } + foreach p $olds { + lappend children($p) $id + } } else { set olds {} } - updatechildren $id $olds + lappend parentlist $olds + if {[info exists children($id)]} { + lappend childlist $children($id) + } else { + lappend childlist {} + } set commitdata($id) [string range $cmit [expr {$j + 1}] end] set commitrow($id) $commitidx incr commitidx lappend displayorder $id + lappend commitlisted $listed set gotsome 1 } if {$gotsome} { @@ -181,14 +193,12 @@ proc doupdate {reading} { proc readcommit {id} { if {[catch {set contents [exec git-cat-file commit $id]}]} return - updatechildren $id {} parsecommit $id $contents 0 } proc updatecommits {rargs} { stopfindproc - foreach v {children nchildren parents nparents commitlisted - colormap selectedline matchinglines treediffs + foreach v {colormap selectedline matchinglines treediffs mergefilelist currentid rowtextx commitrow rowidlist rowoffsets idrowranges idrangedrawn iddrawn linesegends crossings cornercrossings} { @@ -200,26 +210,6 @@ proc updatecommits {rargs} { getcommits $rargs } -proc updatechildren {id olds} { - global children nchildren parents nparents - - if {![info exists nchildren($id)]} { - set children($id) {} - set nchildren($id) 0 - } - set parents($id) $olds - set nparents($id) [llength $olds] - foreach p $olds { - if {![info exists nchildren($p)]} { - set children($p) [list $id] - set nchildren($p) 1 - } elseif {[lsearch -exact $children($p) $id] < 0} { - lappend children($p) $id - incr nchildren($p) - } - } -} - proc parsecommit {id contents listed} { global commitinfo cdate @@ -274,7 +264,7 @@ proc parsecommit {id contents listed} { } proc getcommit {id} { - global commitdata commitinfo nparents + global commitdata commitinfo if {[info exists commitdata($id)]} { parsecommit $id $commitdata($id) 1 @@ -282,7 +272,6 @@ proc getcommit {id} { readcommit $id if {![info exists commitinfo($id)]} { set commitinfo($id) {"No commit information available"} - set nparents($id) 0 } } return 1 @@ -843,15 +832,20 @@ proc makeuparrow {oid x y z} { } proc initlayout {} { - global rowidlist rowoffsets displayorder + global rowidlist rowoffsets displayorder commitlisted global rowlaidout rowoptim global idinlist rowchk global commitidx numcommits canvxmax canv global nextcolor + global parentlist childlist children set commitidx 0 set numcommits 0 set displayorder {} + set commitlisted {} + set parentlist {} + set childlist {} + catch {unset children} set nextcolor 0 set rowidlist {{}} set rowoffsets {{}} @@ -950,7 +944,7 @@ proc showstuff {canshow} { proc layoutrows {row endrow last} { global rowidlist rowoffsets displayorder global uparrowlen downarrowlen maxwidth mingaplen - global nchildren parents nparents + global childlist parentlist global idrowranges linesegends global commitidx global idinlist rowchk @@ -961,7 +955,7 @@ proc layoutrows {row endrow last} { set id [lindex $displayorder $row] set oldolds {} set newolds {} - foreach p $parents($id) { + foreach p [lindex $parentlist $row] { if {![info exists idinlist($p)]} { lappend newolds $p } elseif {!$idinlist($p)} { @@ -1000,7 +994,7 @@ proc layoutrows {row endrow last} { lappend idlist $id lset rowidlist $row $idlist set z {} - if {$nchildren($id) > 0} { + if {[lindex $childlist $row] ne {}} { set z [expr {[llength [lindex $rowidlist [expr {$row-1}]]] - $col}] unset idinlist($id) } @@ -1053,16 +1047,22 @@ proc layoutrows {row endrow last} { } proc addextraid {id row} { - global displayorder commitrow commitinfo nparents + global displayorder commitrow commitinfo global commitidx + global parentlist childlist children incr commitidx lappend displayorder $id + lappend parentlist {} set commitrow($id) $row readcommit $id if {![info exists commitinfo($id)]} { set commitinfo($id) {"No commit information available"} - set nparents($id) 0 + } + if {[info exists children($id)]} { + lappend childlist $children($id) + } else { + lappend childlist {} } } @@ -1365,7 +1365,7 @@ proc drawparentlinks {id row col olds} { proc drawlines {id} { global colormap canv global idrowranges idrangedrawn - global children iddrawn commitrow rowidlist + global childlist iddrawn commitrow rowidlist $canv delete lines.$id set nr [expr {[llength $idrowranges($id)] / 2}] @@ -1374,14 +1374,12 @@ proc drawlines {id} { drawlineseg $id $i } } - if {[info exists children($id)]} { - foreach child $children($id) { - if {[info exists iddrawn($child)]} { - set row $commitrow($child) - set col [lsearch -exact [lindex $rowidlist $row] $child] - if {$col >= 0} { - drawparentlinks $child $row $col [list $id] - } + foreach child [lindex $childlist $commitrow($id)] { + if {[info exists iddrawn($child)]} { + set row $commitrow($child) + set col [lsearch -exact [lindex $rowidlist $row] $child] + if {$col >= 0} { + drawparentlinks $child $row $col [list $id] } } } @@ -1394,7 +1392,7 @@ proc drawcmittext {id row col rmx} { global linehtag linentag linedtag global mainfont namefont canvxmax - set ofill [expr {[info exists commitlisted($id)]? "blue": "white"}] + set ofill [expr {[lindex $commitlisted $row]? "blue": "white"}] set x [xc $row $col] set y [yc $row] set orad [expr {$linespc / 3}] @@ -1434,7 +1432,7 @@ proc drawcmittext {id row col rmx} { proc drawcmitrow {row} { global displayorder rowidlist global idrowranges idrangedrawn iddrawn - global commitinfo commitlisted parents numcommits + global commitinfo commitlisted parentlist numcommits if {$row >= $numcommits} return foreach id [lindex $rowidlist $row] { @@ -1465,9 +1463,9 @@ proc drawcmitrow {row} { getcommit $id } assigncolor $id - if {[info exists commitlisted($id)] && [info exists parents($id)] - && $parents($id) ne {}} { - set rmx [drawparentlinks $id $row $col $parents($id)] + set olds [lindex $parentlist $row] + if {$olds ne {}} { + set rmx [drawparentlinks $id $row $col $olds] } else { set rmx 0 } @@ -1511,15 +1509,22 @@ proc clear_display {} { proc assigncolor {id} { global colormap colors nextcolor - global parents nparents children nchildren + global commitrow parentlist children childlist global cornercrossings crossings if {[info exists colormap($id)]} return set ncolors [llength $colors] - if {$nchildren($id) == 1} { - set child [lindex $children($id) 0] + if {[info exists commitrow($id)]} { + set kids [lindex $childlist $commitrow($id)] + } elseif {[info exists children($id)]} { + set kids $children($id) + } else { + set kids {} + } + if {[llength $kids] == 1} { + set child [lindex $kids 0] if {[info exists colormap($child)] - && $nparents($child) == 1} { + && [llength [lindex $parentlist $commitrow($child)]] == 1} { set colormap($id) $colormap($child) return } @@ -1552,17 +1557,15 @@ proc assigncolor {id} { set origbad $badcolors } if {[llength $badcolors] < $ncolors - 1} { - foreach child $children($id) { + foreach child $kids { if {[info exists colormap($child)] && [lsearch -exact $badcolors $colormap($child)] < 0} { lappend badcolors $colormap($child) } - if {[info exists parents($child)]} { - foreach p $parents($child) { - if {[info exists colormap($p)] - && [lsearch -exact $badcolors $colormap($p)] < 0} { - lappend badcolors $colormap($p) - } + foreach p [lindex $parentlist $commitrow($child)] { + if {[info exists colormap($p)] + && [lsearch -exact $badcolors $colormap($p)] < 0} { + lappend badcolors $colormap($p) } } } @@ -1657,14 +1660,14 @@ proc drawtags {id x xt y1} { } proc checkcrossings {row endrow} { - global displayorder parents rowidlist + global displayorder parentlist rowidlist for {} {$row < $endrow} {incr row} { set id [lindex $displayorder $row] set i [lsearch -exact [lindex $rowidlist $row] $id] if {$i < 0} continue set idlist [lindex $rowidlist [expr {$row+1}]] - foreach p $parents($id) { + foreach p [lindex $parentlist $row] { set j [lsearch -exact $idlist $p] if {$j > 0} { if {$j < $i - 1} { @@ -1760,7 +1763,7 @@ proc drawrest {} { showstuff $commitidx set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}] - #puts "overall $drawmsecs ms for $numcommits commits" + puts "overall $drawmsecs ms for $numcommits commits" } proc findmatches {f} { @@ -2046,7 +2049,7 @@ proc insertmatch {l id} { proc findfiles {} { global selectedline numcommits displayorder ctext - global ffileline finddidsel parents nparents + global ffileline finddidsel parentlist global findinprogress findstartline findinsertpos global treediffs fdiffid fdiffsneeded fdiffpos global findmergefiles @@ -2064,7 +2067,7 @@ proc findfiles {} { set fdiffsneeded {} while 1 { set id [lindex $displayorder $l] - if {$findmergefiles || $nparents($id) == 1} { + if {$findmergefiles || [llength [lindex $parentlist $l]] == 1} { if {![info exists treediffs($id)]} { append diffsneeded "$id\n" lappend fdiffsneeded $id @@ -2096,7 +2099,7 @@ proc findfiles {} { . config -cursor watch settextcursor watch set findinprogress 1 - findcont $id + findcont update } @@ -2143,7 +2146,7 @@ proc donefilediff {} { set treediffs($nullid) {} if {[info exists findid] && $nullid eq $findid} { unset findid - findcont $nullid + findcont } incr fdiffpos } @@ -2154,20 +2157,21 @@ proc donefilediff {} { } if {[info exists findid] && $fdiffid eq $findid} { unset findid - findcont $fdiffid + findcont } } } proc findcont {id} { - global findid treediffs parents nparents + global findid treediffs parentlist global ffileline findstartline finddidsel global displayorder numcommits matchinglines findinprogress global findmergefiles set l $ffileline - while 1 { - if {$findmergefiles || $nparents($id) == 1} { + while {1} { + set id [lindex $displayorder $l] + if {$findmergefiles || [llength [lindex $parentlist $l]] == 1} { if {![info exists treediffs($id)]} { set findid $id set ffileline $l @@ -2189,7 +2193,6 @@ proc findcont {id} { set l 0 } if {$l == $findstartline} break - set id [lindex $displayorder $l] } stopfindproc if {!$finddidsel} { @@ -2289,7 +2292,7 @@ proc appendwithlinks {text} { proc selectline {l isnew} { global canv canv2 canv3 ctext commitinfo selectedline global displayorder linehtag linentag linedtag - global canvy0 linespc parents nparents children + global canvy0 linespc parentlist childlist global cflist currentid sha1entry global commentend idtags linknum global mergemax numcommits @@ -2379,9 +2382,10 @@ proc selectline {l isnew} { } set comment {} - if {$nparents($id) > 1} { + set olds [lindex $parentlist $l] + if {[llength $olds] > 1} { set np 0 - foreach p $parents($id) { + foreach p $olds { if {$np >= $mergemax} { set tag mmax } else { @@ -2392,17 +2396,13 @@ proc selectline {l isnew} { incr np } } else { - if {[info exists parents($id)]} { - foreach p $parents($id) { - append comment "Parent: [commit_descriptor $p]\n" - } + foreach p $olds { + append comment "Parent: [commit_descriptor $p]\n" } } - if {[info exists children($id)]} { - foreach c $children($id) { - append comment "Child: [commit_descriptor $c]\n" - } + foreach c [lindex $childlist $l] { + append comment "Child: [commit_descriptor $c]\n" } append comment "\n" append comment [lindex $info 5] @@ -2417,10 +2417,10 @@ proc selectline {l isnew} { $cflist delete 0 end $cflist insert end "Comments" - if {$nparents($id) <= 1} { + if {[llength $olds] <= 1} { startdiff $id } else { - mergediff $id + mergediff $id $l } } @@ -2489,9 +2489,10 @@ proc goforw {} { } } -proc mergediff {id} { - global parents diffmergeid diffopts mdifffd +proc mergediff {id l} { + global diffmergeid diffopts mdifffd global difffilestart diffids + global parentlist set diffmergeid $id set diffids $id @@ -2505,12 +2506,13 @@ proc mergediff {id} { } fconfigure $mdf -blocking 0 set mdifffd($id) $mdf - fileevent $mdf readable [list getmergediffline $mdf $id] + set np [llength [lindex $parentlist $l]] + fileevent $mdf readable [list getmergediffline $mdf $id $np] set nextupdate [expr {[clock clicks -milliseconds] + 100}] } -proc getmergediffline {mdf id} { - global diffmergeid ctext cflist nextupdate nparents mergemax +proc getmergediffline {mdf id np} { + global diffmergeid ctext cflist nextupdate mergemax global difffilestart mdifffd set n [gets $mdf line] @@ -2543,7 +2545,6 @@ proc getmergediffline {mdf id} { # do nothing } else { # parse the prefix - one ' ', '-' or '+' for each parent - set np $nparents($id) set spaces {} set minuses {} set pluses {} @@ -2611,7 +2612,7 @@ proc addtocflist {ids} { } proc gettreediffs {ids} { - global treediff parents treepending + global treediff treepending set treepending $ids set treediff {} if {[catch \ @@ -2979,7 +2980,7 @@ proc arrowjump {id n y} { } proc lineclick {x y id isnew} { - global ctext commitinfo children cflist canv thickerline + global ctext commitinfo childlist commitrow cflist canv thickerline if {![info exists commitinfo($id)] && ![getcommit $id]} return unmarkmatches @@ -3018,10 +3019,11 @@ proc lineclick {x y id isnew} { $ctext insert end "\tAuthor:\t[lindex $info 1]\n" set date [formatdate [lindex $info 2]] $ctext insert end "\tDate:\t$date\n" - if {[info exists children($id)]} { + set kids [lindex $childlist $commitrow($id)] + if {$kids ne {}} { $ctext insert end "\nChildren:" set i 0 - foreach child $children($id) { + foreach child $kids { incr i if {![info exists commitinfo($child)] && ![getcommit $child]} continue set info $commitinfo($child) From e100712968cb781183a549f164e34596d6e7fcb2 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Thu, 30 Mar 2006 16:13:12 +1100 Subject: [PATCH 2/6] [PATCH] gitk: allow goto heads This patch allows you to enter a head name in the SHA1 id: field. It also removes some unnecessary global declarations. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- gitk | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gitk b/gitk index 90afec92df..4bc7946aee 100755 --- a/gitk +++ b/gitk @@ -2847,13 +2847,15 @@ proc sha1change {n1 n2 op} { } proc gotocommit {} { - global sha1string currentid commitrow tagids + global sha1string currentid commitrow tagids headids global displayorder numcommits if {$sha1string == {} || ([info exists currentid] && $sha1string == $currentid)} return if {[info exists tagids($sha1string)]} { set id $tagids($sha1string) + } elseif {[info exists headids($sha1string)]} { + set id $headids($sha1string) } else { set id [string tolower $sha1string] if {[regexp {^[0-9a-f]{4,39}$} $id]} { @@ -2879,7 +2881,7 @@ proc gotocommit {} { if {[regexp {^[0-9a-fA-F]{4,}$} $sha1string]} { set type "SHA1 id" } else { - set type "Tag" + set type "Tag/Head" } error_popup "$type $sha1string is not known" } @@ -3370,7 +3372,6 @@ proc listrefs {id} { proc rereadrefs {} { global idtags idheads idotherrefs - global tagids headids otherrefids set refids [concat [array names idtags] \ [array names idheads] [array names idotherrefs]] From 4e95e1f738720e2f768098f73e76109c15a4e1ff Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 5 Apr 2006 09:39:51 +1000 Subject: [PATCH 3/6] gitk: Add a help menu item to display key bindings Suggested by Paul Schulz. I made it a separate entry under the Help menu rather than putting it in the About box, though. Signed-off-by: Paul Mackerras --- gitk | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/gitk b/gitk index 4bc7946aee..472c12afcb 100755 --- a/gitk +++ b/gitk @@ -353,6 +353,7 @@ proc makewindow {rargs} { menu .bar.help .bar add cascade -label "Help" -menu .bar.help .bar.help add command -label "About gitk" -command about + .bar.help add command -label "Key bindings" -command keys . configure -menu .bar if {![info exists geometry(canv1)]} { @@ -718,6 +719,47 @@ Use and redistribute under the terms of the GNU General Public License} \ pack $w.ok -side bottom } +proc keys {} { + set w .keys + if {[winfo exists $w]} { + raise $w + return + } + toplevel $w + wm title $w "Gitk key bindings" + message $w.m -text { +Gitk key bindings: + + Quit +, p, i Move up one commit +, n, k Move down one commit +, z, j Go back in history list +, x, l Go forward in history list + Scroll commit list up one page + Scroll commit list down one page +, b Scroll diff view up one page + Scroll diff view up one page + Scroll diff view down one page +u Scroll diff view up 18 lines +d Scroll diff view down 18 lines + Find + Move to next find hit + Move to previous find hit + Move to next find hit +/ Move to next find hit, or redo find +? Move to previous find hit +f Scroll diff view to next file + Increase font size + Increase font size + Decrease font size + Decrease font size +} \ + -justify left -bg white -border 2 -relief sunken + pack $w.m -side top -fill both + button $w.ok -text Close -command "destroy $w" + pack $w.ok -side bottom +} + proc shortids {ids} { set res {} foreach id $ids { @@ -1763,7 +1805,7 @@ proc drawrest {} { showstuff $commitidx set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}] - puts "overall $drawmsecs ms for $numcommits commits" + #puts "overall $drawmsecs ms for $numcommits commits" } proc findmatches {f} { From 6e5f7203de440fd46c6709a9f71a7e0641363a5c Mon Sep 17 00:00:00 2001 From: Rutger Nijlunsing Date: Wed, 5 Apr 2006 10:24:03 +1000 Subject: [PATCH 4/6] [PATCH] gitk: add key bindings for selecting first and last commit For a keyboard addict like me some keys are still missing from gitk. Especially a key to select a commit when no commit is selected, like just after startup. While we're at it, complete the bindings for moving the view seperately from the selected line. Currently, the up and down keys act on the selected line while pageup and pagedown act on the commits viewed. The idea is to have to normal keys change the selected line: - Home selects first commit - End selects last commit - Up selects previous commit - Down selects next commit - PageUp moves selected line one page up - PageDown moves selected line one page down ...and together with the Control key, it moves the commits view: - Control-Home views first page of commits - Control-End views last page of commits - Control-Up moves commit view one line up - Control-Down moves commit view one line down - Control-PageUp moves commit view one page up - Control-PageDown moves commit view one page down Signed-off-By: Rutger Nijlunsing and with some cleanups and simplifications... Signed-off-by: Paul Mackerras --- gitk | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/gitk b/gitk index 472c12afcb..8aff933e43 100755 --- a/gitk +++ b/gitk @@ -504,12 +504,20 @@ proc makewindow {rargs} { bindall "allcanvs yview scroll 5 units" bindall <2> "canvscan mark %W %x %y" bindall "canvscan dragto %W %x %y" + bindkey selfirstline + bindkey sellastline bind . "selnextline -1" bind . "selnextline 1" - bind . "goforw" - bind . "goback" - bind . "allcanvs yview scroll -1 pages" - bind . "allcanvs yview scroll 1 pages" + bindkey "goforw" + bindkey "goback" + bind . "selnextpage -1" + bind . "selnextpage 1" + bind . "allcanvs yview moveto 0.0" + bind . "allcanvs yview moveto 1.0" + bind . "allcanvs yview scroll -1 units" + bind . "allcanvs yview scroll 1 units" + bind . "allcanvs yview scroll -1 pages" + bind . "allcanvs yview scroll 1 pages" bindkey "$ctext yview scroll -1 pages" bindkey "$ctext yview scroll -1 pages" bindkey "$ctext yview scroll 1 pages" @@ -731,12 +739,20 @@ proc keys {} { Gitk key bindings: Quit + Move to first commit + Move to last commit , p, i Move up one commit , n, k Move down one commit , z, j Go back in history list , x, l Go forward in history list - Scroll commit list up one page - Scroll commit list down one page + Move up one page in commit list + Move down one page in commit list + Scroll to top of commit list + Scroll to bottom of commit list + Scroll commit list up one line + Scroll commit list down one line + Scroll commit list up one page + Scroll commit list down one page , b Scroll diff view up one page Scroll diff view up one page Scroll diff view down one page @@ -2331,6 +2347,22 @@ proc appendwithlinks {text} { $ctext tag bind link { %W configure -cursor $curtextcursor } } +proc viewnextline {dir} { + global canv linespc + + $canv delete hover + set ymax [lindex [$canv cget -scrollregion] 3] + set wnow [$canv yview] + set wtop [expr {[lindex $wnow 0] * $ymax}] + set newtop [expr {$wtop + $dir * $linespc}] + if {$newtop < 0} { + set newtop 0 + } elseif {$newtop > $ymax} { + set newtop $ymax + } + allcanvs yview moveto [expr {$newtop * 1.0 / $ymax}] +} + proc selectline {l isnew} { global canv canv2 canv3 ctext commitinfo selectedline global displayorder linehtag linentag linedtag @@ -2466,6 +2498,18 @@ proc selectline {l isnew} { } } +proc selfirstline {} { + unmarkmatches + selectline 0 1 +} + +proc sellastline {} { + global numcommits + unmarkmatches + set l [expr {$numcommits - 1}] + selectline $l 1 +} + proc selnextline {dir} { global selectedline if {![info exists selectedline]} return @@ -2474,6 +2518,25 @@ proc selnextline {dir} { selectline $l 1 } +proc selnextpage {dir} { + global canv linespc selectedline numcommits + + set lpp [expr {([winfo height $canv] - 2) / $linespc}] + if {$lpp < 1} { + set lpp 1 + } + allcanvs yview scroll [expr {$dir * $lpp}] units + if {![info exists selectedline]} return + set l [expr {$selectedline + $dir * $lpp}] + if {$l < 0} { + set l 0 + } elseif {$l >= $numcommits} { + set l [expr $numcommits - 1] + } + unmarkmatches + selectline $l 1 +} + proc unselectline {} { global selectedline From ce08872259d3036f424070cb5a9a4d5ec67f1f7a Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Mon, 3 Apr 2006 23:24:55 -0700 Subject: [PATCH 5/6] [PATCH] gitk: Use git wrapper to run git-ls-remote. For some reason, the Cygwin Tcl's `exec' command has trouble running scripts. Fix this by using the C `git' wrapper. Other GIT programs run by gitk are written in C already, so we don't need to incur a performance hit of going via the wrapper (which I'll bet isn't pretty under Cygwin). Signed-off-by: Mark Wooding Acked-by: Junio C Hamano Signed-off-by: Paul Mackerras --- gitk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitk b/gitk index 8aff933e43..26099215ae 100755 --- a/gitk +++ b/gitk @@ -284,7 +284,7 @@ proc readrefs {} { foreach v {tagids idtags headids idheads otherrefids idotherrefs} { catch {unset $v} } - set refd [open [list | git-ls-remote [gitdir]] r] + set refd [open [list | git ls-remote [gitdir]] r] while {0 <= [set n [gets $refd line]]} { if {![regexp {^([0-9a-f]{40}) refs/([^^]*)$} $line \ match id path]} { From 4840be66b10fd5e5d67e27a8d0c67a96d5b8356a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 4 Apr 2006 00:19:45 -0700 Subject: [PATCH 6/6] [PATCH] Provide configurable UI font for gitk This makes the font used in the UI elements of gitk configurable in the same way the other fonts are. The default fonts used in the Xft build of tk8.5 are particularily horrific, making this change more important there. Signed-off-by: Keith Packard Acked-by: Junio C Hamano Signed-off-by: Paul Mackerras --- gitk | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/gitk b/gitk index 26099215ae..26fa79af7a 100755 --- a/gitk +++ b/gitk @@ -335,7 +335,7 @@ proc error_popup msg { } proc makewindow {rargs} { - global canv canv2 canv3 linespc charspc ctext cflist textfont + global canv canv2 canv3 linespc charspc ctext cflist textfont mainfont uifont global findtype findtypemenu findloc findstring fstring geometry global entries sha1entry sha1string sha1but global maincursor textcursor curtextcursor @@ -343,17 +343,21 @@ proc makewindow {rargs} { menu .bar .bar add cascade -label "File" -menu .bar.file + .bar configure -font $uifont menu .bar.file .bar.file add command -label "Update" -command [list updatecommits $rargs] .bar.file add command -label "Reread references" -command rereadrefs .bar.file add command -label "Quit" -command doquit + .bar.file configure -font $uifont menu .bar.edit .bar add cascade -label "Edit" -menu .bar.edit .bar.edit add command -label "Preferences" -command doprefs + .bar.edit configure -font $uifont menu .bar.help .bar add cascade -label "Help" -menu .bar.help .bar.help add command -label "About gitk" -command about .bar.help add command -label "Key bindings" -command keys + .bar.help configure -font $uifont . configure -menu .bar if {![info exists geometry(canv1)]} { @@ -400,7 +404,7 @@ proc makewindow {rargs} { set entries $sha1entry set sha1but .ctop.top.bar.sha1label button $sha1but -text "SHA1 ID: " -state disabled -relief flat \ - -command gotocommit -width 8 + -command gotocommit -width 8 -font $uifont $sha1but conf -disabledforeground [$sha1but cget -foreground] pack .ctop.top.bar.sha1label -side left entry $sha1entry -width 40 -font $textfont -textvariable sha1string @@ -430,19 +434,24 @@ proc makewindow {rargs} { -state disabled -width 26 pack .ctop.top.bar.rightbut -side left -fill y - button .ctop.top.bar.findbut -text "Find" -command dofind + button .ctop.top.bar.findbut -text "Find" -command dofind -font $uifont pack .ctop.top.bar.findbut -side left set findstring {} set fstring .ctop.top.bar.findstring lappend entries $fstring - entry $fstring -width 30 -font $textfont -textvariable findstring + entry $fstring -width 30 -font $textfont -textvariable findstring -font $textfont pack $fstring -side left -expand 1 -fill x set findtype Exact set findtypemenu [tk_optionMenu .ctop.top.bar.findtype \ findtype Exact IgnCase Regexp] + .ctop.top.bar.findtype configure -font $uifont + .ctop.top.bar.findtype.menu configure -font $uifont set findloc "All fields" tk_optionMenu .ctop.top.bar.findloc findloc "All fields" Headline \ Comments Author Committer Files Pickaxe + .ctop.top.bar.findloc configure -font $uifont + .ctop.top.bar.findloc.menu configure -font $uifont + pack .ctop.top.bar.findloc -side right pack .ctop.top.bar.findtype -side right # for making sure type==Exact whenever loc==Pickaxe @@ -489,7 +498,7 @@ proc makewindow {rargs} { frame .ctop.cdet.right set cflist .ctop.cdet.right.cfiles listbox $cflist -bg white -selectmode extended -width $geometry(cflistw) \ - -yscrollcommand ".ctop.cdet.right.sb set" + -yscrollcommand ".ctop.cdet.right.sb set" -font $mainfont scrollbar .ctop.cdet.right.sb -command "$cflist yview" pack .ctop.cdet.right.sb -side right -fill y pack $cflist -side left -fill both -expand 1 @@ -610,7 +619,7 @@ proc click {w} { } proc savestuff {w} { - global canv canv2 canv3 ctext cflist mainfont textfont + global canv canv2 canv3 ctext cflist mainfont textfont uifont global stuffsaved findmergefiles maxgraphpct global maxwidth @@ -620,6 +629,7 @@ proc savestuff {w} { set f [open "~/.gitk-new" w] puts $f [list set mainfont $mainfont] puts $f [list set textfont $textfont] + puts $f [list set uifont $uifont] puts $f [list set findmergefiles $findmergefiles] puts $f [list set maxgraphpct $maxgraphpct] puts $f [list set maxwidth $maxwidth] @@ -3885,6 +3895,7 @@ if {$tclencoding == {}} { set mainfont {Helvetica 9} set textfont {Courier 9} +set uifont {Helvetica 9 bold} set findmergefiles 0 set maxgraphpct 50 set maxwidth 16