X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gitk;h=a57e84cef7143839af954e2aa1fcb3d633befe41;hb=464a8a7a15fc70efbcf56c4569f0f7275a9c76fe;hp=3dabc695167dc33c6655efbabbd9a0c3e870ccda;hpb=e27e609bbf81271318d99f2643f378f3fde6c6c6;p=git.git diff --git a/gitk b/gitk index 3dabc6951..a57e84cef 100755 --- a/gitk +++ b/gitk @@ -12,7 +12,7 @@ proc gitdir {} { if {[info exists env(GIT_DIR)]} { return $env(GIT_DIR) } else { - return ".git" + return [exec git rev-parse --git-dir] } } @@ -309,9 +309,9 @@ 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 show-ref] r] while {0 <= [set n [gets $refd line]]} { - if {![regexp {^([0-9a-f]{40}) refs/([^^]*)$} $line \ + if {![regexp {^([0-9a-f]{40}) refs/([^^]*)$} $line \ match id path]} { continue } @@ -427,7 +427,7 @@ proc makewindow {} { .bar.view add separator .bar.view add radiobutton -label "All files" -command {showview 0} \ -variable selectedview -value 0 - + menu .bar.help .bar add cascade -label "Help" -menu .bar.help .bar.help add command -label "About gitk" -command about @@ -435,56 +435,60 @@ proc makewindow {} { .bar.help configure -font $uifont . configure -menu .bar - if {![info exists geometry(canv1)]} { - set geometry(canv1) [expr {45 * $charspc}] - set geometry(canv2) [expr {30 * $charspc}] - set geometry(canv3) [expr {15 * $charspc}] - set geometry(canvh) [expr {25 * $linespc + 4}] - set geometry(ctextw) 80 - set geometry(ctexth) 30 - set geometry(cflistw) 30 - } + # the gui has upper and lower half, parts of a paned window. panedwindow .ctop -orient vertical - if {[info exists geometry(width)]} { - .ctop conf -width $geometry(width) -height $geometry(height) - set texth [expr {$geometry(height) - $geometry(canvh) - 56}] - set geometry(ctexth) [expr {($texth - 8) / - [font metrics $textfont -linespace]}] - } - frame .ctop.top - frame .ctop.top.bar - frame .ctop.top.lbar - pack .ctop.top.lbar -side bottom -fill x - pack .ctop.top.bar -side bottom -fill x - set cscroll .ctop.top.csb - scrollbar $cscroll -command {allcanvs yview} -highlightthickness 0 - pack $cscroll -side right -fill y - panedwindow .ctop.top.clist -orient horizontal -sashpad 0 -handlesize 4 - pack .ctop.top.clist -side top -fill both -expand 1 - .ctop add .ctop.top - set canv .ctop.top.clist.canv - canvas $canv -height $geometry(canvh) -width $geometry(canv1) \ + + # possibly use assumed geometry + if {![info exists geometry(pwsash0)]} { + set geometry(topheight) [expr {15 * $linespc}] + set geometry(topwidth) [expr {80 * $charspc}] + set geometry(botheight) [expr {15 * $linespc}] + set geometry(botwidth) [expr {50 * $charspc}] + set geometry(pwsash0) "[expr {40 * $charspc}] 2" + set geometry(pwsash1) "[expr {60 * $charspc}] 2" + } + + # the upper half will have a paned window, a scroll bar to the right, and some stuff below + frame .tf -height $geometry(topheight) -width $geometry(topwidth) + frame .tf.histframe + panedwindow .tf.histframe.pwclist -orient horizontal -sashpad 0 -handlesize 4 + + # create three canvases + set cscroll .tf.histframe.csb + set canv .tf.histframe.pwclist.canv + canvas $canv \ -background $bgcolor -bd 0 \ -yscrollincr $linespc -yscrollcommand "scrollcanv $cscroll" - .ctop.top.clist add $canv - set canv2 .ctop.top.clist.canv2 - canvas $canv2 -height $geometry(canvh) -width $geometry(canv2) \ + .tf.histframe.pwclist add $canv + set canv2 .tf.histframe.pwclist.canv2 + canvas $canv2 \ -background $bgcolor -bd 0 -yscrollincr $linespc - .ctop.top.clist add $canv2 - set canv3 .ctop.top.clist.canv3 - canvas $canv3 -height $geometry(canvh) -width $geometry(canv3) \ + .tf.histframe.pwclist add $canv2 + set canv3 .tf.histframe.pwclist.canv3 + canvas $canv3 \ -background $bgcolor -bd 0 -yscrollincr $linespc - .ctop.top.clist add $canv3 - bind .ctop.top.clist {resizeclistpanes %W %w} + .tf.histframe.pwclist add $canv3 + eval .tf.histframe.pwclist sash place 0 $geometry(pwsash0) + eval .tf.histframe.pwclist sash place 1 $geometry(pwsash1) + + # a scroll bar to rule them + scrollbar $cscroll -command {allcanvs yview} -highlightthickness 0 + pack $cscroll -side right -fill y + bind .tf.histframe.pwclist {resizeclistpanes %W %w} lappend bglist $canv $canv2 $canv3 + pack .tf.histframe.pwclist -fill both -expand 1 -side left - set sha1entry .ctop.top.bar.sha1 + # we have two button bars at bottom of top frame. Bar 1 + frame .tf.bar + frame .tf.lbar -height 15 + + set sha1entry .tf.bar.sha1 set entries $sha1entry - set sha1but .ctop.top.bar.sha1label + set sha1but .tf.bar.sha1label button $sha1but -text "SHA1 ID: " -state disabled -relief flat \ -command gotocommit -width 8 -font $uifont $sha1but conf -disabledforeground [$sha1but cget -foreground] - pack .ctop.top.bar.sha1label -side left + pack .tf.bar.sha1label -side left entry $sha1entry -width 40 -font $textfont -textvariable sha1string trace add variable sha1string write sha1change pack $sha1entry -side left -pady 2 @@ -505,91 +509,116 @@ proc makewindow {} { 0x00, 0x38, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01}; } - button .ctop.top.bar.leftbut -image bm-left -command goback \ + button .tf.bar.leftbut -image bm-left -command goback \ -state disabled -width 26 - pack .ctop.top.bar.leftbut -side left -fill y - button .ctop.top.bar.rightbut -image bm-right -command goforw \ + pack .tf.bar.leftbut -side left -fill y + button .tf.bar.rightbut -image bm-right -command goforw \ -state disabled -width 26 - pack .ctop.top.bar.rightbut -side left -fill y + pack .tf.bar.rightbut -side left -fill y - button .ctop.top.bar.findbut -text "Find" -command dofind -font $uifont - pack .ctop.top.bar.findbut -side left + button .tf.bar.findbut -text "Find" -command dofind -font $uifont + pack .tf.bar.findbut -side left set findstring {} - set fstring .ctop.top.bar.findstring + set fstring .tf.bar.findstring lappend entries $fstring entry $fstring -width 30 -font $textfont -textvariable findstring trace add variable findstring write find_change - pack $fstring -side left -expand 1 -fill x + pack $fstring -side left -expand 1 -fill x -in .tf.bar set findtype Exact - set findtypemenu [tk_optionMenu .ctop.top.bar.findtype \ - findtype Exact IgnCase Regexp] + set findtypemenu [tk_optionMenu .tf.bar.findtype \ + findtype Exact IgnCase Regexp] trace add variable findtype write find_change - .ctop.top.bar.findtype configure -font $uifont - .ctop.top.bar.findtype.menu configure -font $uifont + .tf.bar.findtype configure -font $uifont + .tf.bar.findtype.menu configure -font $uifont set findloc "All fields" - tk_optionMenu .ctop.top.bar.findloc findloc "All fields" Headline \ + tk_optionMenu .tf.bar.findloc findloc "All fields" Headline \ Comments Author Committer trace add variable findloc write find_change - .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 - - label .ctop.top.lbar.flabel -text "Highlight: Commits " \ - -font $uifont - pack .ctop.top.lbar.flabel -side left -fill y + .tf.bar.findloc configure -font $uifont + .tf.bar.findloc.menu configure -font $uifont + pack .tf.bar.findloc -side right + pack .tf.bar.findtype -side right + + # build up the bottom bar of upper window + label .tf.lbar.flabel -text "Highlight: Commits " \ + -font $uifont + pack .tf.lbar.flabel -side left -fill y set gdttype "touching paths:" - set gm [tk_optionMenu .ctop.top.lbar.gdttype gdttype "touching paths:" \ - "adding/removing string:"] + set gm [tk_optionMenu .tf.lbar.gdttype gdttype "touching paths:" \ + "adding/removing string:"] trace add variable gdttype write hfiles_change $gm conf -font $uifont - .ctop.top.lbar.gdttype conf -font $uifont - pack .ctop.top.lbar.gdttype -side left -fill y - entry .ctop.top.lbar.fent -width 25 -font $textfont \ + .tf.lbar.gdttype conf -font $uifont + pack .tf.lbar.gdttype -side left -fill y + entry .tf.lbar.fent -width 25 -font $textfont \ -textvariable highlight_files trace add variable highlight_files write hfiles_change - lappend entries .ctop.top.lbar.fent - pack .ctop.top.lbar.fent -side left -fill x -expand 1 - label .ctop.top.lbar.vlabel -text " OR in view" -font $uifont - pack .ctop.top.lbar.vlabel -side left -fill y + lappend entries .tf.lbar.fent + pack .tf.lbar.fent -side left -fill x -expand 1 + label .tf.lbar.vlabel -text " OR in view" -font $uifont + pack .tf.lbar.vlabel -side left -fill y global viewhlmenu selectedhlview - set viewhlmenu [tk_optionMenu .ctop.top.lbar.vhl selectedhlview None] + set viewhlmenu [tk_optionMenu .tf.lbar.vhl selectedhlview None] $viewhlmenu entryconf None -command delvhighlight $viewhlmenu conf -font $uifont - .ctop.top.lbar.vhl conf -font $uifont - pack .ctop.top.lbar.vhl -side left -fill y - label .ctop.top.lbar.rlabel -text " OR " -font $uifont - pack .ctop.top.lbar.rlabel -side left -fill y + .tf.lbar.vhl conf -font $uifont + pack .tf.lbar.vhl -side left -fill y + label .tf.lbar.rlabel -text " OR " -font $uifont + pack .tf.lbar.rlabel -side left -fill y global highlight_related - set m [tk_optionMenu .ctop.top.lbar.relm highlight_related None \ - "Descendent" "Not descendent" "Ancestor" "Not ancestor"] + set m [tk_optionMenu .tf.lbar.relm highlight_related None \ + "Descendent" "Not descendent" "Ancestor" "Not ancestor"] $m conf -font $uifont - .ctop.top.lbar.relm conf -font $uifont + .tf.lbar.relm conf -font $uifont trace add variable highlight_related write vrel_change - pack .ctop.top.lbar.relm -side left -fill y - - panedwindow .ctop.cdet -orient horizontal - .ctop add .ctop.cdet - frame .ctop.cdet.left - frame .ctop.cdet.left.bot - pack .ctop.cdet.left.bot -side bottom -fill x - button .ctop.cdet.left.bot.search -text "Search" -command dosearch \ + pack .tf.lbar.relm -side left -fill y + + # Finish putting the upper half of the viewer together + pack .tf.lbar -in .tf -side bottom -fill x + pack .tf.bar -in .tf -side bottom -fill x + pack .tf.histframe -fill both -side top -expand 1 + .ctop add .tf + .ctop paneconfigure .tf -height $geometry(topheight) + .ctop paneconfigure .tf -width $geometry(topwidth) + + # now build up the bottom + panedwindow .pwbottom -orient horizontal + + # lower left, a text box over search bar, scroll bar to the right + # if we know window height, then that will set the lower text height, otherwise + # we set lower text height which will drive window height + if {[info exists geometry(main)]} { + frame .bleft -width $geometry(botwidth) + } else { + frame .bleft -width $geometry(botwidth) -height $geometry(botheight) + } + frame .bleft.top + frame .bleft.mid + + button .bleft.top.search -text "Search" -command dosearch \ -font $uifont - pack .ctop.cdet.left.bot.search -side left -padx 5 - set sstring .ctop.cdet.left.bot.sstring + pack .bleft.top.search -side left -padx 5 + set sstring .bleft.top.sstring entry $sstring -width 20 -font $textfont -textvariable searchstring lappend entries $sstring trace add variable searchstring write incrsearch pack $sstring -side left -expand 1 -fill x - set ctext .ctop.cdet.left.ctext + radiobutton .bleft.mid.diff -text "Diff" \ + -command changediffdisp -variable diffelide -value {0 0} + radiobutton .bleft.mid.old -text "Old version" \ + -command changediffdisp -variable diffelide -value {0 1} + radiobutton .bleft.mid.new -text "New version" \ + -command changediffdisp -variable diffelide -value {1 0} + pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left + set ctext .bleft.ctext text $ctext -background $bgcolor -foreground $fgcolor \ -state disabled -font $textfont \ - -width $geometry(ctextw) -height $geometry(ctexth) \ -yscrollcommand scrolltext -wrap none - scrollbar .ctop.cdet.left.sb -command "$ctext yview" - pack .ctop.cdet.left.sb -side right -fill y + scrollbar .bleft.sb -command "$ctext yview" + pack .bleft.top -side top -fill x + pack .bleft.mid -side top -fill x + pack .bleft.sb -side right -fill y pack $ctext -side left -fill both -expand 1 - .ctop.cdet add .ctop.cdet.left lappend bglist $ctext lappend fglist $ctext @@ -620,36 +649,48 @@ proc makewindow {} { $ctext tag conf msep -font [concat $textfont bold] $ctext tag conf found -back yellow - frame .ctop.cdet.right - frame .ctop.cdet.right.mode - radiobutton .ctop.cdet.right.mode.patch -text "Patch" \ + .pwbottom add .bleft + .pwbottom paneconfigure .bleft -width $geometry(botwidth) + + # lower right + frame .bright + frame .bright.mode + radiobutton .bright.mode.patch -text "Patch" \ -command reselectline -variable cmitmode -value "patch" - radiobutton .ctop.cdet.right.mode.tree -text "Tree" \ + .bright.mode.patch configure -font $uifont + radiobutton .bright.mode.tree -text "Tree" \ -command reselectline -variable cmitmode -value "tree" - grid .ctop.cdet.right.mode.patch .ctop.cdet.right.mode.tree -sticky ew - pack .ctop.cdet.right.mode -side top -fill x - set cflist .ctop.cdet.right.cfiles + .bright.mode.tree configure -font $uifont + grid .bright.mode.patch .bright.mode.tree -sticky ew + pack .bright.mode -side top -fill x + set cflist .bright.cfiles set indent [font measure $mainfont "nn"] - text $cflist -width $geometry(cflistw) \ + text $cflist \ -background $bgcolor -foreground $fgcolor \ -font $mainfont \ -tabs [list $indent [expr {2 * $indent}]] \ - -yscrollcommand ".ctop.cdet.right.sb set" \ + -yscrollcommand ".bright.sb set" \ -cursor [. cget -cursor] \ -spacing1 1 -spacing3 1 lappend bglist $cflist lappend fglist $cflist - scrollbar .ctop.cdet.right.sb -command "$cflist yview" - pack .ctop.cdet.right.sb -side right -fill y + scrollbar .bright.sb -command "$cflist yview" + pack .bright.sb -side right -fill y pack $cflist -side left -fill both -expand 1 $cflist tag configure highlight \ -background [$cflist cget -selectbackground] $cflist tag configure bold -font [concat $mainfont bold] - .ctop.cdet add .ctop.cdet.right - bind .ctop.cdet {resizecdetpanes %W %w} - pack .ctop -side top -fill both -expand 1 + .pwbottom add .bright + .ctop add .pwbottom + # restore window position if known + if {[info exists geometry(main)]} { + wm geometry . "$geometry(main)" + } + + bind .pwbottom {resizecdetpanes %W %w} + pack .ctop -fill both -expand 1 bindall <1> {selcanvline %W %x %y} #bindall {selcanvline %W %x %y} bindall "allcanvs yview scroll -5 units" @@ -690,6 +731,7 @@ proc makewindow {} { bindkey {findnext 0} bindkey ? findprev bindkey f nextfile + bindkey updatecommits bind . doquit bind . dofind bind . {findnext 0} @@ -699,7 +741,7 @@ proc makewindow {} { bind . {incrfont 1} bind . {incrfont -1} bind . {incrfont -1} - bind . {savestuff %W} + wm protocol . WM_DELETE_WINDOW doquit bind . "click %W" bind $fstring dofind bind $sha1entry gotocommit @@ -802,18 +844,15 @@ proc savestuff {w} { puts $f [list set fgcolor $fgcolor] puts $f [list set colors $colors] puts $f [list set diffcolors $diffcolors] - puts $f "set geometry(width) [winfo width .ctop]" - puts $f "set geometry(height) [winfo height .ctop]" - puts $f "set geometry(canv1) [expr {[winfo width $canv]-2}]" - puts $f "set geometry(canv2) [expr {[winfo width $canv2]-2}]" - puts $f "set geometry(canv3) [expr {[winfo width $canv3]-2}]" - puts $f "set geometry(canvh) [expr {[winfo height $canv]-2}]" - set wid [expr {([winfo width $ctext] - 8) \ - / [font measure $textfont "0"]}] - puts $f "set geometry(ctextw) $wid" - set wid [expr {([winfo width $cflist] - 11) \ - / [font measure [$cflist cget -font] "0"]}] - puts $f "set geometry(cflistw) $wid" + + puts $f "set geometry(main) [wm geometry .]" + puts $f "set geometry(topwidth) [winfo width .tf]" + puts $f "set geometry(topheight) [winfo height .tf]" + puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sash coord 0]\"" + puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sash coord 1]\"" + puts $f "set geometry(botwidth) [winfo width .bleft]" + puts $f "set geometry(botheight) [winfo height .bleft]" + puts -nonewline $f "set permviews {" for {set v 0} {$v < $nextviewnum} {incr v} { if {$viewperm($v)} { @@ -894,6 +933,7 @@ proc bindall {event action} { } proc about {} { + global uifont set w .about if {[winfo exists $w]} { raise $w @@ -907,13 +947,19 @@ Gitk - a commit viewer for git Copyright © 2005-2006 Paul Mackerras Use and redistribute under the terms of the GNU General Public License} \ - -justify center -aspect 400 - pack $w.m -side top -fill x -padx 20 -pady 20 - button $w.ok -text Close -command "destroy $w" + -justify center -aspect 400 -border 2 -bg white -relief groove + pack $w.m -side top -fill x -padx 2 -pady 2 + $w.m configure -font $uifont + button $w.ok -text Close -command "destroy $w" -default active pack $w.ok -side bottom + $w.ok configure -font $uifont + bind $w "focus $w.ok" + bind $w "destroy $w" + bind $w "destroy $w" } proc keys {} { + global uifont set w .keys if {[winfo exists $w]} { raise $w @@ -958,11 +1004,17 @@ f Scroll diff view to next file Increase font size Decrease font size Decrease font size + Update } \ - -justify left -bg white -border 2 -relief sunken - pack $w.m -side top -fill both - button $w.ok -text Close -command "destroy $w" + -justify left -bg white -border 2 -relief groove + pack $w.m -side top -fill both -padx 2 -pady 2 + $w.m configure -font $uifont + button $w.ok -text Close -command "destroy $w" -default active pack $w.ok -side bottom + $w.ok configure -font $uifont + bind $w "focus $w.ok" + bind $w "destroy $w" + bind $w "destroy $w" } # Procedures for manipulating the file list window at the @@ -1402,7 +1454,7 @@ proc newview {ishighlight} { set newviewname($nextviewnum) "View $nextviewnum" set newviewperm($nextviewnum) 0 set newviewargs($nextviewnum) [shellarglist $revtreeargs] - vieweditor $top $nextviewnum "Gitk view definition" + vieweditor $top $nextviewnum "Gitk view definition" } proc editview {} { @@ -1428,20 +1480,21 @@ proc vieweditor {top n title} { toplevel $top wm title $top $title label $top.nl -text "Name" -font $uifont - entry $top.name -width 20 -textvariable newviewname($n) + entry $top.name -width 20 -textvariable newviewname($n) -font $uifont grid $top.nl $top.name -sticky w -pady 5 - checkbutton $top.perm -text "Remember this view" -variable newviewperm($n) + checkbutton $top.perm -text "Remember this view" -variable newviewperm($n) \ + -font $uifont grid $top.perm - -pady 5 -sticky w message $top.al -aspect 1000 -font $uifont \ -text "Commits to include (arguments to git rev-list):" grid $top.al - -sticky w -pady 5 entry $top.args -width 50 -textvariable newviewargs($n) \ - -background white + -background white -font $uifont grid $top.args - -sticky ew -padx 5 message $top.l -aspect 1000 -font $uifont \ -text "Enter files and directories to include, one per line:" grid $top.l - -sticky w - text $top.t -width 40 -height 10 -background white + text $top.t -width 40 -height 10 -background white -font $uifont if {[info exists viewfiles($n)]} { foreach f $viewfiles($n) { $top.t insert end $f @@ -1452,8 +1505,10 @@ proc vieweditor {top n title} { } grid $top.t - -sticky ew -padx 5 frame $top.buts - button $top.buts.ok -text "OK" -command [list newviewok $top $n] - button $top.buts.can -text "Cancel" -command [list destroy $top] + button $top.buts.ok -text "OK" -command [list newviewok $top $n] \ + -font $uifont + button $top.buts.can -text "Cancel" -command [list destroy $top] \ + -font $uifont grid $top.buts.ok $top.buts.can grid columnconfigure $top.buts 0 -weight 1 -uniform a grid columnconfigure $top.buts 1 -weight 1 -uniform a @@ -1877,7 +1932,7 @@ proc do_file_hl {serial} { } else { set gdtargs [list "-S$highlight_files"] } - set cmd [concat | git-diff-tree -r -s --stdin $gdtargs] + set cmd [concat | git diff-tree -r -s --stdin $gdtargs] set filehighlight [open $cmd r+] fconfigure $filehighlight -blocking 0 fileevent $filehighlight readable readfhighlight @@ -1929,7 +1984,7 @@ proc readfhighlight {} { } if {[eof $filehighlight]} { # strange... - puts "oops, git-diff-tree died" + puts "oops, git diff-tree died" catch {close $filehighlight} unset filehighlight } @@ -3897,7 +3952,7 @@ proc selectline {l isnew} { } $ctext insert end "\n" } - + set headers {} set olds [lindex $parentlist $l] if {[llength $olds] > 1} { @@ -4006,7 +4061,7 @@ proc selnextpage {dir} { set l [expr $numcommits - 1] } unmarkmatches - selectline $l 1 + selectline $l 1 } proc unselectline {} { @@ -4043,11 +4098,11 @@ proc addtohistory {cmd} { } incr historyindex if {$historyindex > 1} { - .ctop.top.bar.leftbut conf -state normal + .tf.bar.leftbut conf -state normal } else { - .ctop.top.bar.leftbut conf -state disabled + .tf.bar.leftbut conf -state disabled } - .ctop.top.bar.rightbut conf -state disabled + .tf.bar.rightbut conf -state disabled } proc godo {elt} { @@ -4067,10 +4122,10 @@ proc goback {} { if {$historyindex > 1} { incr historyindex -1 godo [lindex $history [expr {$historyindex - 1}]] - .ctop.top.bar.rightbut conf -state normal + .tf.bar.rightbut conf -state normal } if {$historyindex <= 1} { - .ctop.top.bar.leftbut conf -state disabled + .tf.bar.leftbut conf -state disabled } } @@ -4081,10 +4136,10 @@ proc goforw {} { set cmd [lindex $history $historyindex] incr historyindex godo $cmd - .ctop.top.bar.leftbut conf -state normal + .tf.bar.leftbut conf -state normal } if {$historyindex >= [llength $history]} { - .ctop.top.bar.rightbut conf -state disabled + .tf.bar.rightbut conf -state disabled } } @@ -4440,6 +4495,13 @@ proc getblobdiffline {bdf ids} { } } +proc changediffdisp {} { + global ctext diffelide + + $ctext tag conf d0 -elide [lindex $diffelide 0] + $ctext tag conf d1 -elide [lindex $diffelide 1] +} + proc prevfile {} { global difffilestart ctext set prev [lindex $difffilestart 0] @@ -4591,7 +4653,7 @@ proc searchmarkvisible {doall} { proc scrolltext {f0 f1} { global searchstring - .ctop.cdet.left.sb set $f0 $f1 + .bleft.sb set $f0 $f1 if {$searchstring ne {}} { searchmarkvisible 0 } @@ -5776,6 +5838,7 @@ proc showtag {tag isnew} { proc doquit {} { global stopped set stopped 100 + savestuff . destroy . } @@ -5783,6 +5846,7 @@ proc doprefs {} { global maxwidth maxgraphpct diffopts global oldprefs prefstop showneartags global bgcolor fgcolor ctext diffcolors + global uifont set top .gitkprefs set prefstop $top @@ -5796,6 +5860,7 @@ proc doprefs {} { toplevel $top wm title $top "Gitk preferences" label $top.ldisp -text "Commit list display options" + $top.ldisp configure -font $uifont grid $top.ldisp - -sticky w -pady 10 label $top.spacer -text " " label $top.maxwidthl -text "Maximum graph width (lines)" \ @@ -5808,6 +5873,7 @@ proc doprefs {} { grid x $top.maxpctl $top.maxpct -sticky w label $top.ddisp -text "Diff display options" + $top.ddisp configure -font $uifont grid $top.ddisp - -sticky w -pady 10 label $top.diffoptl -text "Options for diff program" \ -font optionfont @@ -5820,6 +5886,7 @@ proc doprefs {} { grid x $top.ntag -sticky w label $top.cdisp -text "Colors: press to choose" + $top.cdisp configure -font $uifont grid $top.cdisp - -sticky w -pady 10 label $top.bg -padx 40 -relief sunk -background $bgcolor button $top.bgbut -text "Background" -font optionfont \ @@ -5847,12 +5914,15 @@ proc doprefs {} { grid x $top.hunksepbut $top.hunksep -sticky w frame $top.buts - button $top.buts.ok -text "OK" -command prefsok - button $top.buts.can -text "Cancel" -command prefscan + button $top.buts.ok -text "OK" -command prefsok -default active + $top.buts.ok configure -font $uifont + button $top.buts.can -text "Cancel" -command prefscan -default normal + $top.buts.can configure -font $uifont grid $top.buts.ok $top.buts.can grid columnconfigure $top.buts 0 -weight 1 -uniform a grid columnconfigure $top.buts 1 -weight 1 -uniform a grid $top.buts - - -pady 10 -sticky ew + bind $top "focus $top.buts.ok" } proc choosecolor {v vi w x cmd} { @@ -6193,7 +6263,7 @@ set wrcomcmd "git diff-tree --stdin -p --pretty" set gitencoding {} catch { - set gitencoding [exec git repo-config --get i18n.commitencoding] + set gitencoding [exec git config --get i18n.commitencoding] } if {$gitencoding == ""} { set gitencoding "utf-8" @@ -6276,6 +6346,7 @@ set highlight_paths {} set searchdirn -forwards set boldrows {} set boldnamerows {} +set diffelide {0 0} set optim_delay 16 @@ -6293,6 +6364,7 @@ set stuffsaved 0 set patchnum 0 setcoords makewindow +wm title . "[file tail $argv0]: [file tail [pwd]]" readrefs if {$cmdline_files ne {} || $revtreeargs ne {}} {