[PATCH v2 1/2] gitk: replace tabs with spaces
- From
Denton Liu <liu.denton@gmail.com>
- Date
- Sep 11, 2020, 04:36 UTC
- Message-ID
- <ecdede5cf50bdb966f53bcf5171c80b5f8959d4b.1599798976.git.liu.denton@gmail.com>
- In-Reply-To
- <cover.1599798976.git.liu.denton@gmail.com>
The source code is a mix of tabs and spaces. The indentation style currently is four spaces per indent level but uses tabs every other level (at eight spaces). Fix this inconsistent spacing and tabbing by just using a space-indent for everything.
This was done mechanically by running:
$ expand -i gitk >gitk.new $ mv gitk.new gitk
This patch should be empty with `--ignore-all-space`.
Signed-off-by: Denton Liu <liu.denton@gmail.com> --- gitk | 10568 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 5284 insertions(+), 5284 deletions(-)
diff --git a/gitk b/gitk index da84e22dd4..1dae9861ac 100755 --- a/gitk +++ b/gitk @@ -11,14 +11,14 @@ package require Tk proc hasworktree {} { return [expr {[exec git rev-parse --is-bare-repository] == "false" && - [exec git rev-parse --is-inside-git-dir] == "false"}] + [exec git rev-parse --is-inside-git-dir] == "false"}] } proc reponame {} { global gitdir set n [file normalize $gitdir] if {[string match "*/.git" $n]} { - set n [string range $n 0 end-5] + set n [string range $n 0 end-5] } return [file tail $n] } @@ -26,7 +26,7 @@ proc reponame {} { proc gitworktree {} { variable _gitworktree if {[info exists _gitworktree]} { - return $_gitworktree + return $_gitworktree } # v1.7.0 introduced --show-toplevel to return the canonical work-tree if {[catch {set _gitworktree [exec git rev-parse --show-toplevel]}]} { @@ -34,10 +34,10 @@ proc gitworktree {} { # cdup to obtain a relative path to the top of the worktree. If # run from the top, the ./ prefix ensures normalize expands pwd. if {[catch { set _gitworktree $env(GIT_WORK_TREE) }]} { - catch {set _gitworktree [exec git config --get core.worktree]} - if {$_gitworktree eq ""} { - set _gitworktree [file normalize ./[exec git rev-parse --show-cdup]] - } + catch {set _gitworktree [exec git config --get core.worktree]} + if {$_gitworktree eq ""} { + set _gitworktree [file normalize ./[exec git rev-parse --show-cdup]] + } } } return $_gitworktree @@ -54,7 +54,7 @@ proc run args { set script $args if {[info exists isonrunq($script)]} return if {$runq eq {} && ![info exists currunq]} { - after idle dorunq + after idle dorunq } lappend runq [list {} $script] set isonrunq($script) 1 @@ -69,7 +69,7 @@ proc filereadable {fd script} { fileevent $fd readable {} if {$runq eq {} && ![info exists currunq]} { - after idle dorunq + after idle dorunq } lappend runq [list $fd $script] } @@ -78,11 +78,11 @@ proc nukefile {fd} { global runq for {set i 0} {$i < [llength $runq]} {} { - if {[lindex $runq $i 0] eq $fd} { - set runq [lreplace $runq $i $i] - } else { - incr i - } + if {[lindex $runq $i 0] eq $fd} { + set runq [lreplace $runq $i $i] + } else { + incr i + } } } @@ -92,30 +92,30 @@ proc dorunq {} { set tstart [clock clicks -milliseconds] set t0 $tstart while {[llength $runq] > 0} { - set fd [lindex $runq 0 0] - set script [lindex $runq 0 1] - set currunq [lindex $runq 0] - set runq [lrange $runq 1 end] - set repeat [eval $script] - unset currunq - set t1 [clock clicks -milliseconds] - set t [expr {$t1 - $t0}] - if {$repeat ne {} && $repeat} { - if {$fd eq {} || $repeat == 2} { - # script returns 1 if it wants to be readded - # file readers return 2 if they could do more straight away - lappend runq [list $fd $script] - } else { - fileevent $fd readable [list filereadable $fd $script] - } - } elseif {$fd eq {}} { - unset isonrunq($script) - } - set t0 $t1 - if {$t1 - $tstart >= 80} break + set fd [lindex $runq 0 0] + set script [lindex $runq 0 1] + set currunq [lindex $runq 0] + set runq [lrange $runq 1 end] + set repeat [eval $script] + unset currunq + set t1 [clock clicks -milliseconds] + set t [expr {$t1 - $t0}] + if {$repeat ne {} && $repeat} { + if {$fd eq {} || $repeat == 2} { + # script returns 1 if it wants to be readded + # file readers return 2 if they could do more straight away + lappend runq [list $fd $script] + } else { + fileevent $fd readable [list filereadable $fd $script] + } + } elseif {$fd eq {}} { + unset isonrunq($script) + } + set t0 $t1 + if {$t1 - $tstart >= 80} break } if {$runq ne {}} { - after idle dorunq + after idle dorunq } } @@ -135,20 +135,20 @@ proc unmerged_files {files} { set mlist {} set nr_unmerged 0 if {[catch { - set fd [open "| git ls-files -u" r] + set fd [open "| git ls-files -u" r] } err]} { - show_error {} . "[mc "Couldn't get list of unmerged files:"] $err" - exit 1 + show_error {} . "[mc "Couldn't get list of unmerged files:"] $err" + exit 1 } while {[gets $fd line] >= 0} { - set i [string first "\t" $line] - if {$i < 0} continue - set fname [string range $line [expr {$i+1}] end] - if {[lsearch -exact $mlist $fname] >= 0} continue - incr nr_unmerged - if {$files eq {} || [path_filter $files $fname]} { - lappend mlist $fname - } + set i [string first "\t" $line] + if {$i < 0} continue + set fname [string range $line [expr {$i+1}] end] + if {[lsearch -exact $mlist $fname] >= 0} continue + incr nr_unmerged + if {$files eq {} || [path_filter $files $fname]} { + lappend mlist $fname + } } catch {close $fd} return $mlist @@ -171,115 +171,115 @@ proc parseviewargs {n arglist} { set filtered 0 set i -1 foreach arg $arglist { - incr i - if {$nextisval} { - lappend glflags $arg - set nextisval 0 - continue - } - switch -glob -- $arg { - "-d" - - "--date-order" { - set vdatemode($n) 1 - # remove from origargs in case we hit an unknown option - set origargs [lreplace $origargs $i $i] - incr i -1 - } - "-[puabwcrRBMC]" - - "--no-renames" - "--full-index" - "--binary" - "--abbrev=*" - - "--find-copies-harder" - "-l*" - "--ext-diff" - "--no-ext-diff" - - "--src-prefix=*" - "--dst-prefix=*" - "--no-prefix" - - "-O*" - "--text" - "--full-diff" - "--ignore-space-at-eol" - - "--ignore-space-change" - "-U*" - "--unified=*" { - # These request or affect diff output, which we don't want. - # Some could be used to set our defaults for diff display. - lappend diffargs $arg - } - "--raw" - "--patch-with-raw" - "--patch-with-stat" - - "--name-only" - "--name-status" - "--color" - - "--log-size" - "--pretty=*" - "--decorate" - "--abbrev-commit" - - "--cc" - "-z" - "--header" - "--parents" - "--boundary" - - "--no-color" - "-g" - "--walk-reflogs" - "--no-walk" - - "--timestamp" - "relative-date" - "--date=*" - "--stdin" - - "--objects" - "--objects-edge" - "--reverse" { - # These cause our parsing of git log's output to fail, or else - # they're options we want to set ourselves, so ignore them. - } - "--color-words*" - "--word-diff=color" { - # These trigger a word diff in the console interface, - # so help the user by enabling our own support - if {[package vcompare $git_version "1.7.2"] >= 0} { - set worddiff [mc "Color words"] - } - } - "--word-diff*" { - if {[package vcompare $git_version "1.7.2"] >= 0} { - set worddiff [mc "Markup words"] - } - } - "--stat=*" - "--numstat" - "--shortstat" - "--summary" - - "--check" - "--exit-code" - "--quiet" - "--topo-order" - - "--full-history" - "--dense" - "--sparse" - - "--follow" - "--left-right" - "--encoding=*" { - # These are harmless, and some are even useful - lappend glflags $arg - } - "--diff-filter=*" - "--no-merges" - "--unpacked" - - "--max-count=*" - "--skip=*" - "--since=*" - "--after=*" - - "--until=*" - "--before=*" - "--max-age=*" - "--min-age=*" - - "--author=*" - "--committer=*" - "--grep=*" - "-[iE]" - - "--remove-empty" - "--first-parent" - "--cherry-pick" - - "-S*" - "-G*" - "--pickaxe-all" - "--pickaxe-regex" - - "--simplify-by-decoration" { - # These mean that we get a subset of the commits - set filtered 1 - lappend glflags $arg - } - "-L*" { - # Line-log with 'stuck' argument (unstuck form is - # not supported) - set filtered 1 - set vinlinediff($n) 1 - set allknown 0 - lappend glflags $arg - } - "-n" { - # This appears to be the only one that has a value as a - # separate word following it - set filtered 1 - set nextisval 1 - lappend glflags $arg - } - "--not" - "--all" { - lappend revargs $arg - } - "--merge" { - set vmergeonly($n) 1 - # git rev-parse doesn't understand --merge - lappend revargs --gitk-symmetric-diff-marker MERGE_HEAD...HEAD - } - "--no-replace-objects" { - set env(GIT_NO_REPLACE_OBJECTS) "1" - } - "-*" { - # Other flag arguments including -<n> - if {[string is digit -strict [string range $arg 1 end]]} { - set filtered 1 - } else { - # a flag argument that we don't recognize; - # that means we can't optimize - set allknown 0 - } - lappend glflags $arg - } - default { - # Non-flag arguments specify commits or ranges of commits - if {[string match "*...*" $arg]} { - lappend revargs --gitk-symmetric-diff-marker - } - lappend revargs $arg - } - } + incr i + if {$nextisval} { + lappend glflags $arg + set nextisval 0 + continue + } + switch -glob -- $arg { + "-d" - + "--date-order" { + set vdatemode($n) 1 + # remove from origargs in case we hit an unknown option + set origargs [lreplace $origargs $i $i] + incr i -1 + } + "-[puabwcrRBMC]" - + "--no-renames" - "--full-index" - "--binary" - "--abbrev=*" - + "--find-copies-harder" - "-l*" - "--ext-diff" - "--no-ext-diff" - + "--src-prefix=*" - "--dst-prefix=*" - "--no-prefix" - + "-O*" - "--text" - "--full-diff" - "--ignore-space-at-eol" - + "--ignore-space-change" - "-U*" - "--unified=*" { + # These request or affect diff output, which we don't want. + # Some could be used to set our defaults for diff display. + lappend diffargs $arg + } + "--raw" - "--patch-with-raw" - "--patch-with-stat" - + "--name-only" - "--name-status" - "--color" - + "--log-size" - "--pretty=*" - "--decorate" - "--abbrev-commit" - + "--cc" - "-z" - "--header" - "--parents" - "--boundary" - + "--no-color" - "-g" - "--walk-reflogs" - "--no-walk" - + "--timestamp" - "relative-date" - "--date=*" - "--stdin" - + "--objects" - "--objects-edge" - "--reverse" { + # These cause our parsing of git log's output to fail, or else + # they're options we want to set ourselves, so ignore them. + } + "--color-words*" - "--word-diff=color" { + # These trigger a word diff in the console interface, + # so help the user by enabling our own support + if {[package vcompare $git_version "1.7.2"] >= 0} { + set worddiff [mc "Color words"] + } + } + "--word-diff*" { + if {[package vcompare $git_version "1.7.2"] >= 0} { + set worddiff [mc "Markup words"] + } + } + "--stat=*" - "--numstat" - "--shortstat" - "--summary" - + "--check" - "--exit-code" - "--quiet" - "--topo-order" - + "--full-history" - "--dense" - "--sparse" - + "--follow" - "--left-right" - "--encoding=*" { + # These are harmless, and some are even useful + lappend glflags $arg + } + "--diff-filter=*" - "--no-merges" - "--unpacked" - + "--max-count=*" - "--skip=*" - "--since=*" - "--after=*" - + "--until=*" - "--before=*" - "--max-age=*" - "--min-age=*" - + "--author=*" - "--committer=*" - "--grep=*" - "-[iE]" - + "--remove-empty" - "--first-parent" - "--cherry-pick" - + "-S*" - "-G*" - "--pickaxe-all" - "--pickaxe-regex" - + "--simplify-by-decoration" { + # These mean that we get a subset of the commits + set filtered 1 + lappend glflags $arg + } + "-L*" { + # Line-log with 'stuck' argument (unstuck form is + # not supported) + set filtered 1 + set vinlinediff($n) 1 + set allknown 0 + lappend glflags $arg + } + "-n" { + # This appears to be the only one that has a value as a + # separate word following it + set filtered 1 + set nextisval 1 + lappend glflags $arg + } + "--not" - "--all" { + lappend revargs $arg + } + "--merge" { + set vmergeonly($n) 1 + # git rev-parse doesn't understand --merge + lappend revargs --gitk-symmetric-diff-marker MERGE_HEAD...HEAD + } + "--no-replace-objects" { + set env(GIT_NO_REPLACE_OBJECTS) "1" + } + "-*" { + # Other flag arguments including -<n> + if {[string is digit -strict [string range $arg 1 end]]} { + set filtered 1 + } else { + # a flag argument that we don't recognize; + # that means we can't optimize + set allknown 0 + } + lappend glflags $arg + } + default { + # Non-flag arguments specify commits or ranges of commits + if {[string match "*...*" $arg]} { + lappend revargs --gitk-symmetric-diff-marker + } + lappend revargs $arg + } + } } set vdflags($n) $diffargs set vflags($n) $glflags @@ -293,61 +293,61 @@ proc parseviewrevs {view revs} { global vposids vnegids if {$revs eq {}} { - set revs HEAD + set revs HEAD } elseif {[lsearch -exact $revs --all] >= 0} { - lappend revs HEAD + lappend revs HEAD } if {[catch {set ids [eval exec git rev-parse $revs]} err]} { - # we get stdout followed by stderr in $err - # for an unknown rev, git rev-parse echoes it and then errors out - set errlines [split $err "\n"] - set badrev {} - for {set l 0} {$l < [llength $errlines]} {incr l} { - set line [lindex $errlines $l] - if {!([string length $line] == 40 && [string is xdigit $line])} { - if {[string match "fatal:*" $line]} { - if {[string match "fatal: ambiguous argument*" $line] - && $badrev ne {}} { - if {[llength $badrev] == 1} { - set err "unknown revision $badrev" - } else { - set err "unknown revisions: [join $badrev ", "]" - } - } else { - set err [join [lrange $errlines $l end] "\n"] - } - break - } - lappend badrev $line - } - } - error_popup "[mc "Error parsing revisions:"] $err" - return {} + # we get stdout followed by stderr in $err + # for an unknown rev, git rev-parse echoes it and then errors out + set errlines [split $err "\n"] + set badrev {} + for {set l 0} {$l < [llength $errlines]} {incr l} { + set line [lindex $errlines $l] + if {!([string length $line] == 40 && [string is xdigit $line])} { + if {[string match "fatal:*" $line]} { + if {[string match "fatal: ambiguous argument*" $line] + && $badrev ne {}} { + if {[llength $badrev] == 1} { + set err "unknown revision $badrev" + } else { + set err "unknown revisions: [join $badrev ", "]" + } + } else { + set err [join [lrange $errlines $l end] "\n"] + } + break + } + lappend badrev $line + } + } + error_popup "[mc "Error parsing revisions:"] $err" + return {} } set ret {} set pos {} set neg {} set sdm 0 foreach id [split $ids "\n"] { - if {$id eq "--gitk-symmetric-diff-marker"} { - set sdm 4 - } elseif {[string match "^*" $id]} { - if {$sdm != 1} { - lappend ret $id - if {$sdm == 3} { - set sdm 0 - } - } - lappend neg [string range $id 1 end] - } else { - if {$sdm != 2} { - lappend ret $id - } else { - lset ret end $id...[lindex $ret end] - } - lappend pos $id - } - incr sdm -1 + if {$id eq "--gitk-symmetric-diff-marker"} { + set sdm 4 + } elseif {[string match "^*" $id]} { + if {$sdm != 1} { + lappend ret $id + if {$sdm == 3} { + set sdm 0 + } + } + lappend neg [string range $id 1 end] + } else { + if {$sdm != 2} { + lappend ret $id + } else { + lset ret end $id...[lindex $ret end] + } + lappend pos $id + } + incr sdm -1 } set vposids($view) $pos set vnegids($view) $neg @@ -374,63 +374,63 @@ proc start_rev_list {view} { set args $viewargs($view) if {$viewargscmd($view) ne {}} { - if {[catch { - set str [exec sh -c $viewargscmd($view)] - } err]} { - error_popup "[mc "Error executing --argscmd command:"] $err" - return 0 - } - set args [concat $args [split $str "\n"]] + if {[catch { + set str [exec sh -c $viewargscmd($view)] + } err]} { + error_popup "[mc "Error executing --argscmd command:"] $err" + return 0 + } + set args [concat $args [split $str "\n"]] } set vcanopt($view) [parseviewargs $view $args] set files $viewfiles($view) if {$vmergeonly($view)} { - set files [unmerged_files $files] - if {$files eq {}} { - global nr_unmerged - if {$nr_unmerged == 0} { - error_popup [mc "No files selected: --merge specified but\ - no files are unmerged."] - } else { - error_popup [mc "No files selected: --merge specified but\ - no unmerged files are within file limit."] - } - return 0 - } + set files [unmerged_files $files] + if {$files eq {}} { + global nr_unmerged + if {$nr_unmerged == 0} { + error_popup [mc "No files selected: --merge specified but\ + no files are unmerged."] + } else { + error_popup [mc "No files selected: --merge specified but\ + no unmerged files are within file limit."] + } + return 0 + } } set vfilelimit($view) $files if {$vcanopt($view)} { - set revs [parseviewrevs $view $vrevs($view)] - if {$revs eq {}} { - return 0 - } - set args [concat $vflags($view) $revs] + set revs [parseviewrevs $view $vrevs($view)] + if {$revs eq {}} { + return 0 + } + set args [concat $vflags($view) $revs] } else { - set args $vorigargs($view) + set args $vorigargs($view) } if {[catch { - set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \ - --parents --boundary $args "--" $files] r] + set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \ + --parents --boundary $args "--" $files] r] } err]} { - error_popup "[mc "Error executing git log:"] $err" - return 0 + error_popup "[mc "Error executing git log:"] $err" + return 0 } set i [reg_instance $fd] set viewinstances($view) [list $i] set viewmainheadid($view) $mainheadid set viewmainheadid_orig($view) $mainheadid if {$files ne {} && $mainheadid ne {}} { - get_viewmainhead $view + get_viewmainhead $view } if {$showlocalchanges && $viewmainheadid($view) ne {}} { - interestedin $viewmainheadid($view) dodiffindex + interestedin $viewmainheadid($view) dodiffindex } fconfigure $fd -blocking 0 -translation lf -eofchar {} if {$tclencoding != {}} { - fconfigure $fd -encoding $tclencoding + fconfigure $fd -encoding $tclencoding } filerun $fd [list getcommitlines $fd $i $view 0] nowbusy $view [mc "Reading"] @@ -444,13 +444,13 @@ proc stop_instance {inst} { set fd $commfd($inst) catch { - set pid [pid $fd] + set pid [pid $fd] - if {$::tcl_platform(platform) eq {windows}} { - exec taskkill /pid $pid - } else { - exec kill $pid - } + if {$::tcl_platform(platform) eq {windows}} { + exec taskkill /pid $pid + } else { + exec kill $pid + } } catch {close $fd} nukefile $fd @@ -462,7 +462,7 @@ proc stop_backends {} { global commfd foreach inst [array names commfd] { - stop_instance $inst + stop_instance $inst } } @@ -470,7 +470,7 @@ proc stop_rev_list {view} { global viewinstances foreach inst $viewinstances($view) { - stop_instance $inst + stop_instance $inst } set viewinstances($view) {} } @@ -479,11 +479,11 @@ proc reset_pending_select {selid} { global pending_select mainheadid selectheadid if {$selid ne {}} { - set pending_select $selid + set pending_select $selid } elseif {$selectheadid ne {}} { - set pending_select $selectheadid + set pending_select $selectheadid } else { - set pending_select $mainheadid + set pending_select $mainheadid } } @@ -492,11 +492,11 @@ proc getcommits {selid} { initlayout if {[start_rev_list $curview]} { - reset_pending_select $selid - show_status [mc "Reading commits..."] - set need_redisplay 1 + reset_pending_select $selid + show_status [mc "Reading commits..."] + set need_redisplay 1 } else { - show_status [mc "No commits selected"] + show_status [mc "No commits selected"] } } @@ -513,67 +513,67 @@ proc updatecommits {} { rereadrefs set view $curview if {$mainheadid ne $viewmainheadid_orig($view)} { - if {$showlocalchanges} { - dohidelocalchanges - } - set viewmainheadid($view) $mainheadid - set viewmainheadid_orig($view) $mainheadid - if {$vfilelimit($view) ne {}} { - get_viewmainhead $view - } + if {$showlocalchanges} { + dohidelocalchanges + } + set viewmainheadid($view) $mainheadid + set viewmainheadid_orig($view) $mainheadid + if {$vfilelimit($view) ne {}} { + get_viewmainhead $view + } } if {$showlocalchanges} { - doshowlocalchanges + doshowlocalchanges } if {$vcanopt($view)} { - set oldpos $vposids($view) - set oldneg $vnegids($view) - set revs [parseviewrevs $view $vrevs($view)] - if {$revs eq {}} { - return - } - # note: getting the delta when negative refs change is hard, - # and could require multiple git log invocations, so in that - # case we ask git log for all the commits (not just the delta) - if {$oldneg eq $vnegids($view)} { - set newrevs {} - set npos 0 - # take out positive refs that we asked for before or - # that we have already seen - foreach rev $revs { - if {[string length $rev] == 40} { - if {[lsearch -exact $oldpos $rev] < 0 - && ![info exists varcid($view,$rev)]} { - lappend newrevs $rev - incr npos - } - } else { - lappend $newrevs $rev - } - } - if {$npos == 0} return - set revs $newrevs - set vposids($view) [lsort -unique [concat $oldpos $vposids($view)]] - } - set args [concat $vflags($view) $revs --not $oldpos] + set oldpos $vposids($view) + set oldneg $vnegids($view) + set revs [parseviewrevs $view $vrevs($view)] + if {$revs eq {}} { + return + } + # note: getting the delta when negative refs change is hard, + # and could require multiple git log invocations, so in that + # case we ask git log for all the commits (not just the delta) + if {$oldneg eq $vnegids($view)} { + set newrevs {} + set npos 0 + # take out positive refs that we asked for before or + # that we have already seen + foreach rev $revs { + if {[string length $rev] == 40} { + if {[lsearch -exact $oldpos $rev] < 0 + && ![info exists varcid($view,$rev)]} { + lappend newrevs $rev + incr npos + } + } else { + lappend $newrevs $rev + } + } + if {$npos == 0} return + set revs $newrevs + set vposids($view) [lsort -unique [concat $oldpos $vposids($view)]] + } + set args [concat $vflags($view) $revs --not $oldpos] } else { - set args $vorigargs($view) + set args $vorigargs($view) } if {[catch { - set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \ - --parents --boundary $args "--" $vfilelimit($view)] r] + set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \ + --parents --boundary $args "--" $vfilelimit($view)] r] } err]} { - error_popup "[mc "Error executing git log:"] $err" - return + error_popup "[mc "Error executing git log:"] $err" + return } if {$viewactive($view) == 0} { - set startmsecs [clock clicks -milliseconds] + set startmsecs [clock clicks -milliseconds] } set i [reg_instance $fd] lappend viewinstances($view) $i fconfigure $fd -blocking 0 -translation lf -eofchar {} if {$tclencoding != {}} { - fconfigure $fd -encoding $tclencoding + fconfigure $fd -encoding $tclencoding } filerun $fd [list getcommitlines $fd $i $view 1] incr viewactive($view) @@ -581,7 +581,7 @@ proc updatecommits {} { reset_pending_select {} nowbusy $view [mc "Reading"] if {$showneartags} { - getallcommits + getallcommits } } @@ -592,11 +592,11 @@ proc reloadcommits {} { set selid {} if {$selectedline ne {}} { - set selid $currentid + set selid $currentid } if {!$viewcomplete($curview)} { - stop_rev_list $curview + stop_rev_list $curview } resetvarcs $curview set selectedline {} @@ -606,7 +606,7 @@ proc reloadcommits {} { readrefs changedrefs if {$showneartags} { - getallcommits + getallcommits } clear_display unset -nocomplain commitinfo @@ -622,11 +622,11 @@ proc reloadcommits {} { # sorts as a string in numerical order proc strrep {n} { if {$n < 16} { - return [format "%x" $n] + return [format "%x" $n] } elseif {$n < 256} { - return [format "x%.2x" $n] + return [format "x%.2x" $n] } elseif {$n < 65536} { - return [format "y%.4x" $n] + return [format "y%.4x" $n] } return [format "z%.8x" $n] } @@ -657,22 +657,22 @@ proc resetvarcs {view} { global vshortids foreach vid [array names varcid $view,*] { - unset varcid($vid) - unset children($vid) - unset parents($vid) + unset varcid($vid) + unset children($vid) + unset parents($vid) } foreach vid [array names vshortids $view,*] { - unset vshortids($vid) + unset vshortids($vid) } # some commits might have children but haven't been seen yet foreach vid [array names children $view,*] { - unset children($vid) + unset children($vid) } foreach va [array names varccommits $view,*] { - unset varccommits($va) + unset varccommits($va) } foreach vd [array names vseedcount $view,*] { - unset vseedcount($vd) + unset vseedcount($vd) } unset -nocomplain ordertok } @@ -684,8 +684,8 @@ proc seeds {v} { set ret {} set a [lindex $vdownptr($v) 0] while {$a != 0} { - lappend ret [lindex $varcstart($v) $a] - set a [lindex $vleftptr($v) $a] + lappend ret [lindex $varcstart($v) $a] + set a [lindex $vleftptr($v) $a] } return $ret } @@ -698,60 +698,60 @@ proc newvarc {view id} { set a [llength $varctok($view)] set vid $view,$id if {[llength $children($vid)] == 0 || $vdatemode($view)} { - if {![info exists commitinfo($id)]} { - parsecommit $id $commitdata($id) 1 - } - set cdate [lindex [lindex $commitinfo($id) 4] 0] - if {![string is integer -strict $cdate]} { - set cdate 0 - } - if {![info exists vseedcount($view,$cdate)]} { - set vseedcount($view,$cdate) -1 - } - set c [incr vseedcount($view,$cdate)] - set cdate [expr {$cdate ^ 0xffffffff}] - set tok "s[strrep $cdate][strrep $c]" + if {![info exists commitinfo($id)]} { + parsecommit $id $commitdata($id) 1 + } + set cdate [lindex [lindex $commitinfo($id) 4] 0] + if {![string is integer -strict $cdate]} { + set cdate 0 + } + if {![info exists vseedcount($view,$cdate)]} { + set vseedcount($view,$cdate) -1 + } + set c [incr vseedcount($view,$cdate)] + set cdate [expr {$cdate ^ 0xffffffff}] + set tok "s[strrep $cdate][strrep $c]" } else { - set tok {} + set tok {} } set ka 0 if {[llength $children($vid)] > 0} { - set kid [lindex $children($vid) end] - set k $varcid($view,$kid) - if {[string compare [lindex $varctok($view) $k] $tok] > 0} { - set ki $kid - set ka $k - set tok [lindex $varctok($view) $k] - } + set kid [lindex $children($vid) end] + set k $varcid($view,$kid) + if {[string compare [lindex $varctok($view) $k] $tok] > 0} { + set ki $kid + set ka $k + set tok [lindex $varctok($view) $k] + } } if {$ka != 0} { - set i [lsearch -exact $parents($view,$ki) $id] - set j [expr {[llength $parents($view,$ki)] - 1 - $i}] - append tok [strrep $j] + set i [lsearch -exact $parents($view,$ki) $id] + set j [expr {[llength $parents($view,$ki)] - 1 - $i}] + append tok [strrep $j] } set c [lindex $vlastins($view) $ka] if {$c == 0 || [string compare $tok [lindex $varctok($view) $c]] < 0} { - set c $ka - set b [lindex $vdownptr($view) $ka] + set c $ka + set b [lindex $vdownptr($view) $ka] } else { - set b [lindex $vleftptr($view) $c] + set b [lindex $vleftptr($view) $c] } while {$b != 0 && [string compare $tok [lindex $varctok($view) $b]] >= 0} { - set c $b - set b [lindex $vleftptr($view) $c] + set c $b + set b [lindex $vleftptr($view) $c] } if {$c == $ka} { - lset vdownptr($view) $ka $a - lappend vbackptr($view) 0 + lset vdownptr($view) $ka $a + lappend vbackptr($view) 0 } else { - lset vleftptr($view) $c $a - lappend vbackptr($view) $c + lset vleftptr($view) $c $a + lappend vbackptr($view) $c } lset vlastins($view) $ka $a lappend vupptr($view) $ka lappend vleftptr($view) $b if {$b != 0} { - lset vbackptr($view) $b $a + lset vbackptr($view) $b $a } lappend varctok($view) $tok lappend varcstart($view) $id @@ -782,7 +782,7 @@ proc splitvarc {p v} { set varccommits($v,$na) [lrange $ac $i end] lappend varcstart($v) $p foreach id $varccommits($v,$na) { - set varcid($v,$id) $na + set varcid($v,$id) $na } lappend vdownptr($v) [lindex $vdownptr($v) $oa] lappend vlastins($v) [lindex $vlastins($v) $oa] @@ -792,10 +792,10 @@ proc splitvarc {p v} { lappend vleftptr($v) 0 lappend vbackptr($v) 0 for {set b [lindex $vdownptr($v) $na]} {$b != 0} {set b [lindex $vleftptr($v) $b]} { - lset vupptr($v) $b $na + lset vupptr($v) $b $na } if {[string compare $otok $vtokmod($v)] <= 0} { - modify_arc $v $oa + modify_arc $v $oa } } @@ -809,120 +809,120 @@ proc renumbervarc {a v} { set kidchanged($a) 1 set ntot 0 while {$a != 0} { - if {[info exists isrelated($a)]} { - lappend todo $a - set id [lindex $varccommits($v,$a) end] - foreach p $parents($v,$id) { - if {[info exists varcid($v,$p)]} { - set isrelated($varcid($v,$p)) 1 - } - } - } - incr ntot - set b [lindex $vdownptr($v) $a] - if {$b == 0} { - while {$a != 0} { - set b [lindex $vleftptr($v) $a] - if {$b != 0} break - set a [lindex $vupptr($v) $a] - } - } - set a $b + if {[info exists isrelated($a)]} { + lappend todo $a + set id [lindex $varccommits($v,$a) end] + foreach p $parents($v,$id) { + if {[info exists varcid($v,$p)]} { + set isrelated($varcid($v,$p)) 1 + } + } + } + incr ntot + set b [lindex $vdownptr($v) $a] + if {$b == 0} { + while {$a != 0} { + set b [lindex $vleftptr($v) $a] + if {$b != 0} break + set a [lindex $vupptr($v) $a] + } + } + set a $b } foreach a $todo { - if {![info exists kidchanged($a)]} continue - set id [lindex $varcstart($v) $a] - if {[llength $children($v,$id)] > 1} { - set children($v,$id) [lsort -command [list vtokcmp $v] \ - $children($v,$id)] - } - set oldtok [lindex $varctok($v) $a] - if {!$vdatemode($v)} { - set tok {} - } else { - set tok $oldtok - } - set ka 0 - set kid [last_real_child $v,$id] - if {$kid ne {}} { - set k $varcid($v,$kid) - if {[string compare [lindex $varctok($v) $k] $tok] > 0} { - set ki $kid - set ka $k - set tok [lindex $varctok($v) $k] - } - } - if {$ka != 0} { - set i [lsearch -exact $parents($v,$ki) $id] - set j [expr {[llength $parents($v,$ki)] - 1 - $i}] - append tok [strrep $j] - } - if {$tok eq $oldtok} { - continue - } - set id [lindex $varccommits($v,$a) end] - foreach p $parents($v,$id) { - if {[info exists varcid($v,$p)]} { - set kidchanged($varcid($v,$p)) 1 - } else { - set sortkids($p) 1 - } - } - lset varctok($v) $a $tok - set b [lindex $vupptr($v) $a] - if {$b != $ka} { - if {[string compare [lindex $varctok($v) $ka] $vtokmod($v)] < 0} { - modify_arc $v $ka - } - if {[string compare [lindex $varctok($v) $b] $vtokmod($v)] < 0} { - modify_arc $v $b - } - set c [lindex $vbackptr($v) $a] - set d [lindex $vleftptr($v) $a] - if {$c == 0} { - lset vdownptr($v) $b $d - } else { - lset vleftptr($v) $c $d - } - if {$d != 0} { - lset vbackptr($v) $d $c - } - if {[lindex $vlastins($v) $b] == $a} { - lset vlastins($v) $b $c - } - lset vupptr($v) $a $ka - set c [lindex $vlastins($v) $ka] - if {$c == 0 || \ - [string compare $tok [lindex $varctok($v) $c]] < 0} { - set c $ka - set b [lindex $vdownptr($v) $ka] - } else { - set b [lindex $vleftptr($v) $c] - } - while {$b != 0 && \ - [string compare $tok [lindex $varctok($v) $b]] >= 0} { - set c $b - set b [lindex $vleftptr($v) $c] - } - if {$c == $ka} { - lset vdownptr($v) $ka $a - lset vbackptr($v) $a 0 - } else { - lset vleftptr($v) $c $a - lset vbackptr($v) $a $c - } - lset vleftptr($v) $a $b - if {$b != 0} { - lset vbackptr($v) $b $a - } - lset vlastins($v) $ka $a - } + if {![info exists kidchanged($a)]} continue + set id [lindex $varcstart($v) $a] + if {[llength $children($v,$id)] > 1} { + set children($v,$id) [lsort -command [list vtokcmp $v] \ + $children($v,$id)] + } + set oldtok [lindex $varctok($v) $a] + if {!$vdatemode($v)} { + set tok {} + } else { + set tok $oldtok + } + set ka 0 + set kid [last_real_child $v,$id] + if {$kid ne {}} { + set k $varcid($v,$kid) + if {[string compare [lindex $varctok($v) $k] $tok] > 0} { + set ki $kid + set ka $k + set tok [lindex $varctok($v) $k] + } + } + if {$ka != 0} { + set i [lsearch -exact $parents($v,$ki) $id] + set j [expr {[llength $parents($v,$ki)] - 1 - $i}] + append tok [strrep $j] + } + if {$tok eq $oldtok} { + continue + } + set id [lindex $varccommits($v,$a) end] + foreach p $parents($v,$id) { + if {[info exists varcid($v,$p)]} { + set kidchanged($varcid($v,$p)) 1 + } else { + set sortkids($p) 1 + } + } + lset varctok($v) $a $tok + set b [lindex $vupptr($v) $a] + if {$b != $ka} { + if {[string compare [lindex $varctok($v) $ka] $vtokmod($v)] < 0} { + modify_arc $v $ka + } + if {[string compare [lindex $varctok($v) $b] $vtokmod($v)] < 0} { + modify_arc $v $b + } + set c [lindex $vbackptr($v) $a] + set d [lindex $vleftptr($v) $a] + if {$c == 0} { + lset vdownptr($v) $b $d + } else { + lset vleftptr($v) $c $d + } + if {$d != 0} { + lset vbackptr($v) $d $c + } + if {[lindex $vlastins($v) $b] == $a} { + lset vlastins($v) $b $c + } + lset vupptr($v) $a $ka + set c [lindex $vlastins($v) $ka] + if {$c == 0 || \ + [string compare $tok [lindex $varctok($v) $c]] < 0} { + set c $ka + set b [lindex $vdownptr($v) $ka] + } else { + set b [lindex $vleftptr($v) $c] + } + while {$b != 0 && \ + [string compare $tok [lindex $varctok($v) $b]] >= 0} { + set c $b + set b [lindex $vleftptr($v) $c] + } + if {$c == $ka} { + lset vdownptr($v) $ka $a + lset vbackptr($v) $a 0 + } else { + lset vleftptr($v) $c $a + lset vbackptr($v) $a $c + } + lset vleftptr($v) $a $b + if {$b != 0} { + lset vbackptr($v) $b $a + } + lset vlastins($v) $ka $a + } } foreach id [array names sortkids] { - if {[llength $children($v,$id)] > 1} { - set children($v,$id) [lsort -command [list vtokcmp $v] \ - $children($v,$id)] - } + if {[llength $children($v,$id)] > 1} { + set children($v,$id) [lsort -command [list vtokcmp $v] \ + $children($v,$id)] + } } set t2 [clock clicks -milliseconds] #puts "renumbervarc did [llength $todo] of $ntot arcs in [expr {$t2-$t1}]ms" @@ -936,14 +936,14 @@ proc fix_reversal {p a v} { set pa $varcid($v,$p) if {$p ne [lindex $varcstart($v) $pa]} { - splitvarc $p $v - set pa $varcid($v,$p) + splitvarc $p $v + set pa $varcid($v,$p) } # seeds always need to be renumbered if {[lindex $vupptr($v) $pa] == 0 || - [string compare [lindex $varctok($v) $a] \ - [lindex $varctok($v) $pa]] > 0} { - renumbervarc $pa $v + [string compare [lindex $varctok($v) $a] \ + [lindex $varctok($v) $pa]] > 0} { + renumbervarc $pa $v } } @@ -961,24 +961,24 @@ proc insertrow {id p v} { set varcid($vid) $a lappend vshortids($v,[string range $id 0 3]) $id if {[string compare [lindex $varctok($v) $a] $vtokmod($v)] < 0} { - modify_arc $v $a + modify_arc $v $a } lappend varccommits($v,$a) $id set vp $v,$p if {[llength [lappend children($vp) $id]] > 1} { - set children($vp) [lsort -command [list vtokcmp $v] $children($vp)] - unset -nocomplain ordertok + set children($vp) [lsort -command [list vtokcmp $v] $children($vp)] + unset -nocomplain ordertok } fix_reversal $p $a $v incr commitidx($v) if {$v == $curview} { - set numcommits $commitidx($v) - setcanvscroll - if {[info exists targetid]} { - if {![comes_before $targetid $p]} { - incr targetrow - } - } + set numcommits $commitidx($v) + setcanvscroll + if {[info exists targetid]} { + if {![comes_before $targetid $p]} { + incr targetrow + } + } } } @@ -990,8 +990,8 @@ proc insertfakerow {id p} { set a $varcid($v,$p) set i [lsearch -exact $varccommits($v,$a) $p] if {$i < 0} { - puts "oops: insertfakerow can't find [shortids $p] on arc $a" - return + puts "oops: insertfakerow can't find [shortids $p] on arc $a" + return } set children($v,$id) {} set parents($v,$id) [list $p] @@ -1003,9 +1003,9 @@ proc insertfakerow {id p} { set varccommits($v,$a) [linsert $varccommits($v,$a) $i $id] modify_arc $v $a $i if {[info exists targetid]} { - if {![comes_before $targetid $p]} { - incr targetrow - } + if {![comes_before $targetid $p]} { + incr targetrow + } } setcanvscroll drawvisible @@ -1018,15 +1018,15 @@ proc removefakerow {id} { set v $curview if {[llength $parents($v,$id)] != 1} { - puts "oops: removefakerow [shortids $id] has [llength $parents($v,$id)] parents" - return + puts "oops: removefakerow [shortids $id] has [llength $parents($v,$id)] parents" + return } set p [lindex $parents($v,$id) 0] set a $varcid($v,$id) set i [lsearch -exact $varccommits($v,$a) $id] if {$i < 0} { - puts "oops: removefakerow can't find [shortids $id] on arc $a" - return + puts "oops: removefakerow can't find [shortids $id] on arc $a" + return } unset varcid($v,$id) set varccommits($v,$a) [lreplace $varccommits($v,$a) $i $i] @@ -1036,15 +1036,15 @@ proc removefakerow {id} { set numcommits [incr commitidx($v) -1] set j [lsearch -exact $children($v,$p) $id] if {$j >= 0} { - set children($v,$p) [lreplace $children($v,$p) $j $j] + set children($v,$p) [lreplace $children($v,$p) $j $j] } modify_arc $v $a $i if {[info exist currentid] && $id eq $currentid} { - unset currentid - set selectedline {} + unset currentid + set selectedline {} } if {[info exists targetid] && $targetid eq $id} { - set targetid $p + set targetid $p } setcanvscroll drawvisible @@ -1055,9 +1055,9 @@ proc real_children {vp} { set kids {} foreach id $children($vp) { - if {$id ne $nullid && $id ne $nullid2} { - lappend kids $id - } + if {$id ne $nullid && $id ne $nullid2} { + lappend kids $id + } } return $kids } @@ -1066,9 +1066,9 @@ proc first_real_child {vp} { global children nullid nullid2 foreach id $children($vp) { - if {$id ne $nullid && $id ne $nullid2} { - return $id - } + if {$id ne $nullid && $id ne $nullid2} { + return $id + } } return {} } @@ -1078,10 +1078,10 @@ proc last_real_child {vp} { set kids $children($vp) for {set i [llength $kids]} {[incr i -1] >= 0} {} { - set id [lindex $kids $i] - if {$id ne $nullid && $id ne $nullid2} { - return $id - } + set id [lindex $kids $i] + if {$id ne $nullid && $id ne $nullid2} { + return $id + } } return {} } @@ -1090,7 +1090,7 @@ proc vtokcmp {v a b} { global varctok varcid return [string compare [lindex $varctok($v) $varcid($v,$a)] \ - [lindex $varctok($v) $varcid($v,$b)]] + [lindex $varctok($v) $varcid($v,$b)]] } # This assumes that if lim is not given, the caller has checked that @@ -1099,29 +1099,29 @@ proc modify_arc {v a {lim {}}} { global varctok vtokmod varcmod varcrow vupptr curview vrowmod varccommits if {$lim ne {}} { - set c [string compare [lindex $varctok($v) $a] $vtokmod($v)] - if {$c > 0} return - if {$c == 0} { - set r [lindex $varcrow($v) $a] - if {$r ne {} && $vrowmod($v) <= $r + $lim} return - } + set c [string compare [lindex $varctok($v) $a] $vtokmod($v)] + if {$c > 0} return + if {$c == 0} { + set r [lindex $varcrow($v) $a] + if {$r ne {} && $vrowmod($v) <= $r + $lim} return + } } set vtokmod($v) [lindex $varctok($v) $a] set varcmod($v) $a if {$v == $curview} { - while {$a != 0 && [lindex $varcrow($v) $a] eq {}} { - set a [lindex $vupptr($v) $a] - set lim {} - } - set r 0 - if {$a != 0} { - if {$lim eq {}} { - set lim [llength $varccommits($v,$a)] - } - set r [expr {[lindex $varcrow($v) $a] + $lim}] - } - set vrowmod($v) $r - undolayout $r + while {$a != 0 && [lindex $varcrow($v) $a] eq {}} { + set a [lindex $vupptr($v) $a] + set lim {} + } + set r 0 + if {$a != 0} { + if {$lim eq {}} { + set lim [llength $varccommits($v,$a)] + } + set r [expr {[lindex $varcrow($v) $a] + $lim}] + } + set vrowmod($v) $r + undolayout $r } } @@ -1133,62 +1133,62 @@ proc update_arcrows {v} { if {$vrowmod($v) == $commitidx($v)} return if {$v == $curview} { - if {[llength $displayorder] > $vrowmod($v)} { - set displayorder [lrange $displayorder 0 [expr {$vrowmod($v) - 1}]] - set parentlist [lrange $parentlist 0 [expr {$vrowmod($v) - 1}]] - } - unset -nocomplain cached_commitrow + if {[llength $displayorder] > $vrowmod($v)} { + set displayorder [lrange $displayorder 0 [expr {$vrowmod($v) - 1}]] + set parentlist [lrange $parentlist 0 [expr {$vrowmod($v) - 1}]] + } + unset -nocomplain cached_commitrow } set narctot [expr {[llength $varctok($v)] - 1}] set a $varcmod($v) while {$a != 0 && [lindex $varcix($v) $a] eq {}} { - # go up the tree until we find something that has a row number, - # or we get to a seed - set a [lindex $vupptr($v) $a] + # go up the tree until we find something that has a row number, + # or we get to a seed + set a [lindex $vupptr($v) $a] } if {$a == 0} { - set a [lindex $vdownptr($v) 0] - if {$a == 0} return - set vrownum($v) {0} - set varcorder($v) [list $a] - lset varcix($v) $a 0 - lset varcrow($v) $a 0 - set arcn 0 - set row 0 + set a [lindex $vdownptr($v) 0] + if {$a == 0} return + set vrownum($v) {0} + set varcorder($v) [list $a] + lset varcix($v) $a 0 + lset varcrow($v) $a 0 + set arcn 0 + set row 0 } else { - set arcn [lindex $varcix($v) $a] - if {[llength $vrownum($v)] > $arcn + 1} { - set vrownum($v) [lrange $vrownum($v) 0 $arcn] - set varcorder($v) [lrange $varcorder($v) 0 $arcn] - } - set row [lindex $varcrow($v) $a] + set arcn [lindex $varcix($v) $a] + if {[llength $vrownum($v)] > $arcn + 1} { + set vrownum($v) [lrange $vrownum($v) 0 $arcn] + set varcorder($v) [lrange $varcorder($v) 0 $arcn] + } + set row [lindex $varcrow($v) $a] } while {1} { - set p $a - incr row [llength $varccommits($v,$a)] - # go down if possible - set b [lindex $vdownptr($v) $a] - if {$b == 0} { - # if not, go left, or go up until we can go left - while {$a != 0} { - set b [lindex $vleftptr($v) $a] - if {$b != 0} break - set a [lindex $vupptr($v) $a] - } - if {$a == 0} break - } - set a $b - incr arcn - lappend vrownum($v) $row - lappend varcorder($v) $a - lset varcix($v) $a $arcn - lset varcrow($v) $a $row + set p $a + incr row [llength $varccommits($v,$a)] + # go down if possible + set b [lindex $vdownptr($v) $a] + if {$b == 0} { + # if not, go left, or go up until we can go left + while {$a != 0} { + set b [lindex $vleftptr($v) $a] + if {$b != 0} break + set a [lindex $vupptr($v) $a] + } + if {$a == 0} break + } + set a $b + incr arcn + lappend vrownum($v) $row + lappend varcorder($v) $a + lset varcix($v) $a $arcn + lset varcrow($v) $a $row } set vtokmod($v) [lindex $varctok($v) $p] set varcmod($v) $p set vrowmod($v) $row if {[info exists currentid]} { - set selectedline [rowofcommit $currentid] + set selectedline [rowofcommit $currentid] } } @@ -1206,20 +1206,20 @@ proc rowofcommit {id} { set v $curview if {![info exists varcid($v,$id)]} { - puts "oops rowofcommit no arc for [shortids $id]" - return {} + puts "oops rowofcommit no arc for [shortids $id]" + return {} } set a $varcid($v,$id) if {[string compare [lindex $varctok($v) $a] $vtokmod($v)] >= 0} { - update_arcrows $v + update_arcrows $v } if {[info exists cached_commitrow($id)]} { - return $cached_commitrow($id) + return $cached_commitrow($id) } set i [lsearch -exact $varccommits($v,$a) $id] if {$i < 0} { - puts "oops didn't find commit [shortids $id] in arc $a" - return {} + puts "oops didn't find commit [shortids $id] in arc $a" + return {} } incr i [lindex $varcrow($v) $a] set cached_commitrow($id) $i @@ -1232,32 +1232,32 @@ proc comes_before {a b} { set v $curview if {$a eq $b || ![info exists varcid($v,$a)] || \ - ![info exists varcid($v,$b)]} { - return 0 + ![info exists varcid($v,$b)]} { + return 0 } if {$varcid($v,$a) != $varcid($v,$b)} { - return [expr {[string compare [lindex $varctok($v) $varcid($v,$a)] \ - [lindex $varctok($v) $varcid($v,$b)]] < 0}] + return [expr {[string compare [lindex $varctok($v) $varcid($v,$a)] \ + [lindex $varctok($v) $varcid($v,$b)]] < 0}] } return [expr {[rowofcommit $a] < [rowofcommit $b]}] } proc bsearch {l elt} { if {[llength $l] == 0 || $elt <= [lindex $l 0]} { - return 0 + return 0 } set lo 0 set hi [llength $l] while {$hi - $lo > 1} { - set mid [expr {int(($lo + $hi) / 2)}] - set t [lindex $l $mid] - if {$elt < $t} { - set hi $mid - } elseif {$elt > $t} { - set lo $mid - } else { - return $mid - } + set mid [expr {int(($lo + $hi) / 2)}] + set t [lindex $l $mid] + if {$elt < $t} { + set hi $mid + } elseif {$elt > $t} { + set lo $mid + } else { + return $mid + } } return $lo } @@ -1269,37 +1269,37 @@ proc make_disporder {start end} { global d_valid_start d_valid_end if {$end > $vrowmod($curview)} { - update_arcrows $curview + update_arcrows $curview } set ai [bsearch $vrownum($curview) $start] set start [lindex $vrownum($curview) $ai] set narc [llength $vrownum($curview)] for {set r $start} {$ai < $narc && $r < $end} {incr ai} { - set a [lindex $varcorder($curview) $ai] - set l [llength $displayorder] - set al [llength $varccommits($curview,$a)] - if {$l < $r + $al} { - if {$l < $r} { - set pad [ntimes [expr {$r - $l}] {}] - set displayorder [concat $displayorder $pad] - set parentlist [concat $parentlist $pad] - } elseif {$l > $r} { - set displayorder [lrange $displayorder 0 [expr {$r - 1}]] - set parentlist [lrange $parentlist 0 [expr {$r - 1}]] - } - foreach id $varccommits($curview,$a) { - lappend displayorder $id - lappend parentlist $parents($curview,$id) - } - } elseif {[lindex $displayorder [expr {$r + $al - 1}]] eq {}} { - set i $r - foreach id $varccommits($curview,$a) { - lset displayorder $i $id - lset parentlist $i $parents($curview,$id) - incr i - } - } - incr r $al + set a [lindex $varcorder($curview) $ai] + set l [llength $displayorder] + set al [llength $varccommits($curview,$a)] + if {$l < $r + $al} { + if {$l < $r} { + set pad [ntimes [expr {$r - $l}] {}] + set displayorder [concat $displayorder $pad] + set parentlist [concat $parentlist $pad] + } elseif {$l > $r} { + set displayorder [lrange $displayorder 0 [expr {$r - 1}]] + set parentlist [lrange $parentlist 0 [expr {$r - 1}]] + } + foreach id $varccommits($curview,$a) { + lappend displayorder $id + lappend parentlist $parents($curview,$id) + } + } elseif {[lindex $displayorder [expr {$r + $al - 1}]] eq {}} { + set i $r + foreach id $varccommits($curview,$a) { + lset displayorder $i $id + lset parentlist $i $parents($curview,$id) + incr i + } + } + incr r $al } } @@ -1308,8 +1308,8 @@ proc commitonrow {row} { set id [lindex $displayorder $row] if {$id eq {}} { - make_disporder $row [expr {$row + 1}] - set id [lindex $displayorder $row] + make_disporder $row [expr {$row + 1}] + set id [lindex $displayorder $row] } return $id } @@ -1322,35 +1322,35 @@ proc closevarcs {v} { set scripts {} set narcs [llength $varctok($v)] for {set a 1} {$a < $narcs} {incr a} { - set id [lindex $varccommits($v,$a) end] - foreach p $parents($v,$id) { - if {[info exists varcid($v,$p)]} continue - # add p as a new commit - incr missing_parents - set cmitlisted($v,$p) 0 - set parents($v,$p) {} - if {[llength $children($v,$p)] == 1 && - [llength $parents($v,$id)] == 1} { - set b $a - } else { - set b [newvarc $v $p] - } - set varcid($v,$p) $b - if {[string compare [lindex $varctok($v) $b] $vtokmod($v)] < 0} { - modify_arc $v $b - } - lappend varccommits($v,$b) $p - incr commitidx($v) - if {$v == $curview} { - set numcommits $commitidx($v) - } - set scripts [check_interest $p $scripts] - } + set id [lindex $varccommits($v,$a) end] + foreach p $parents($v,$id) { + if {[info exists varcid($v,$p)]} continue + # add p as a new commit + incr missing_parents + set cmitlisted($v,$p) 0 + set parents($v,$p) {} + if {[llength $children($v,$p)] == 1 && + [llength $parents($v,$id)] == 1} { + set b $a + } else { + set b [newvarc $v $p] + } + set varcid($v,$p) $b + if {[string compare [lindex $varctok($v) $b] $vtokmod($v)] < 0} { + modify_arc $v $b + } + lappend varccommits($v,$b) $p + incr commitidx($v) + if {$v == $curview} { + set numcommits $commitidx($v) + } + set scripts [check_interest $p $scripts] + } } if {$missing_parents > 0} { - foreach s $scripts { - eval $s - } + foreach s $scripts { + eval $s + } } } @@ -1360,23 +1360,23 @@ proc rewrite_commit {v id rwid} { global children parents varcid varctok vtokmod varccommits foreach ch $children($v,$id) { - # make $rwid be $ch's parent in place of $id - set i [lsearch -exact $parents($v,$ch) $id] - if {$i < 0} { - puts "oops rewrite_commit didn't find $id in parent list for $ch" - } - set parents($v,$ch) [lreplace $parents($v,$ch) $i $i $rwid] - # add $ch to $rwid's children and sort the list if necessary - if {[llength [lappend children($v,$rwid) $ch]] > 1} { - set children($v,$rwid) [lsort -command [list vtokcmp $v] \ - $children($v,$rwid)] - } - # fix the graph after joining $id to $rwid - set a $varcid($v,$ch) - fix_reversal $rwid $a $v - # parentlist is wrong for the last element of arc $a - # even if displayorder is right, hence the 3rd arg here - modify_arc $v $a [expr {[llength $varccommits($v,$a)] - 1}] + # make $rwid be $ch's parent in place of $id + set i [lsearch -exact $parents($v,$ch) $id] + if {$i < 0} { + puts "oops rewrite_commit didn't find $id in parent list for $ch" + } + set parents($v,$ch) [lreplace $parents($v,$ch) $i $i $rwid] + # add $ch to $rwid's children and sort the list if necessary + if {[llength [lappend children($v,$rwid) $ch]] > 1} { + set children($v,$rwid) [lsort -command [list vtokcmp $v] \ + $children($v,$rwid)] + } + # fix the graph after joining $id to $rwid + set a $varcid($v,$ch) + fix_reversal $rwid $a $v + # parentlist is wrong for the last element of arc $a + # even if displayorder is right, hence the 3rd arg here + modify_arc $v $a [expr {[llength $varccommits($v,$a)] - 1}] } } @@ -1396,19 +1396,19 @@ proc check_interest {id scripts} { set prefix [string range $id 0 3] if {[info exists commitinterest($prefix)]} { - set newlist {} - foreach {i script} $commitinterest($prefix) { - if {[string match "$i*" $id]} { - lappend scripts [string map [list "%I" $id "%P" $i] $script] - } else { - lappend newlist $i $script - } - } - if {$newlist ne {}} { - set commitinterest($prefix) $newlist - } else { - unset commitinterest($prefix) - } + set newlist {} + foreach {i script} $commitinterest($prefix) { + if {[string match "$i*" $id]} { + lappend scripts [string map [list "%I" $id "%P" $i] $script] + } else { + lappend newlist $i $script + } + } + if {$newlist ne {}} { + set commitinterest($prefix) $newlist + } else { + unset commitinterest($prefix) + } } return $scripts } @@ -1423,192 +1423,192 @@ proc getcommitlines {fd inst view updating} { set stuff [read $fd 500000] # git log doesn't terminate the last commit with a null... if {$stuff == {} && $leftover($inst) ne {} && [eof $fd]} { - set stuff "\0" + set stuff "\0" } if {$stuff == {}} { - if {![eof $fd]} { - return 1 - } - global commfd viewcomplete viewactive viewname - global viewinstances - unset commfd($inst) - set i [lsearch -exact $viewinstances($view) $inst] - if {$i >= 0} { - set viewinstances($view) [lreplace $viewinstances($view) $i $i] - } - # set it blocking so we wait for the process to terminate - fconfigure $fd -blocking 1 - if {[catch {close $fd} err]} { - set fv {} - if {$view != $curview} { - set fv " for the \"$viewname($view)\" view" - } - if {[string range $err 0 4] == "usage"} { - set err "Gitk: error reading commits$fv:\ - bad arguments to git log." - if {$viewname($view) eq [mc "Command line"]} { - append err \ - " (Note: arguments to gitk are passed to git log\ - to allow selection of commits to be displayed.)" - } - } else { - set err "Error reading commits$fv: $err" - } - error_popup $err - } - if {[incr viewactive($view) -1] <= 0} { - set viewcomplete($view) 1 - # Check if we have seen any ids listed as parents that haven't - # appeared in the list - closevarcs $view - notbusy $view - } - if {$view == $curview} { - run chewcommits - } - return 0 + if {![eof $fd]} { + return 1 + } + global commfd viewcomplete viewactive viewname + global viewinstances + unset commfd($inst) + set i [lsearch -exact $viewinstances($view) $inst] + if {$i >= 0} { + set viewinstances($view) [lreplace $viewinstances($view) $i $i] + } + # set it blocking so we wait for the process to terminate + fconfigure $fd -blocking 1 + if {[catch {close $fd} err]} { + set fv {} + if {$view != $curview} { + set fv " for the \"$viewname($view)\" view" + } + if {[string range $err 0 4] == "usage"} { + set err "Gitk: error reading commits$fv:\ + bad arguments to git log." + if {$viewname($view) eq [mc "Command line"]} { + append err \ + " (Note: arguments to gitk are passed to git log\ + to allow selection of commits to be displayed.)" + } + } else { + set err "Error reading commits$fv: $err" + } + error_popup $err + } + if {[incr viewactive($view) -1] <= 0} { + set viewcomplete($view) 1 + # Check if we have seen any ids listed as parents that haven't + # appeared in the list + closevarcs $view + notbusy $view + } + if {$view == $curview} { + run chewcommits + } + return 0 } set start 0 set gotsome 0 set scripts {} while 1 { - set i [string first "\0" $stuff $start] - if {$i < 0} { - append leftover($inst) [string range $stuff $start end] - break - } - if {$start == 0} { - set cmit $leftover($inst) - append cmit [string range $stuff 0 [expr {$i - 1}]] - set leftover($inst) {} - } else { - set cmit [string range $stuff $start [expr {$i - 1}]] - } - set start [expr {$i + 1}] - set j [string first "\n" $cmit] - set ok 0 - set listed 1 - if {$j >= 0 && [string match "commit *" $cmit]} { - set ids [string range $cmit 7 [expr {$j - 1}]] - if {[string match {[-^<>]*} $ids]} { - switch -- [string index $ids 0] { - "-" {set listed 0} - "^" {set listed 2} - "<" {set listed 3} - ">" {set listed 4} - } - set ids [string range $ids 1 end] - } - set ok 1 - foreach id $ids { - if {[string length $id] != 40} { - set ok 0 - break - } - } - } - if {!$ok} { - set shortcmit $cmit - if {[string length $shortcmit] > 80} { - set shortcmit "[string range $shortcmit 0 80]..." - } - error_popup "[mc "Can't parse git log output:"] {$shortcmit}" - exit 1 - } - set id [lindex $ids 0] - set vid $view,$id + set i [string first "\0" $stuff $start] + if {$i < 0} { + append leftover($inst) [string range $stuff $start end] + break + } + if {$start == 0} { + set cmit $leftover($inst) + append cmit [string range $stuff 0 [expr {$i - 1}]] + set leftover($inst) {} + } else { + set cmit [string range $stuff $start [expr {$i - 1}]] + } + set start [expr {$i + 1}] + set j [string first "\n" $cmit] + set ok 0 + set listed 1 + if {$j >= 0 && [string match "commit *" $cmit]} { + set ids [string range $cmit 7 [expr {$j - 1}]] + if {[string match {[-^<>]*} $ids]} { + switch -- [string index $ids 0] { + "-" {set listed 0} + "^" {set listed 2} + "<" {set listed 3} + ">" {set listed 4} + } + set ids [string range $ids 1 end] + } + set ok 1 + foreach id $ids { + if {[string length $id] != 40} { + set ok 0 + break + } + } + } + if {!$ok} { + set shortcmit $cmit + if {[string length $shortcmit] > 80} { + set shortcmit "[string range $shortcmit 0 80]..." + } + error_popup "[mc "Can't parse git log output:"] {$shortcmit}" + exit 1 + } + set id [lindex $ids 0] + set vid $view,$id - lappend vshortids($view,[string range $id 0 3]) $id + lappend vshortids($view,[string range $id 0 3]) $id - if {!$listed && $updating && ![info exists varcid($vid)] && - $vfilelimit($view) ne {}} { - # git log doesn't rewrite parents for unlisted commits - # when doing path limiting, so work around that here - # by working out the rewritten parent with git rev-list - # and if we already know about it, using the rewritten - # parent as a substitute parent for $id's children. - if {![catch { - set rwid [exec git rev-list --first-parent --max-count=1 \ - $id -- $vfilelimit($view)] - }]} { - if {$rwid ne {} && [info exists varcid($view,$rwid)]} { - # use $rwid in place of $id - rewrite_commit $view $id $rwid - continue - } - } - } + if {!$listed && $updating && ![info exists varcid($vid)] && + $vfilelimit($view) ne {}} { + # git log doesn't rewrite parents for unlisted commits + # when doing path limiting, so work around that here + # by working out the rewritten parent with git rev-list + # and if we already know about it, using the rewritten + # parent as a substitute parent for $id's children. + if {![catch { + set rwid [exec git rev-list --first-parent --max-count=1 \ + $id -- $vfilelimit($view)] + }]} { + if {$rwid ne {} && [info exists varcid($view,$rwid)]} { + # use $rwid in place of $id + rewrite_commit $view $id $rwid + continue + } + } + } - set a 0 - if {[info exists varcid($vid)]} { - if {$cmitlisted($vid) || !$listed} continue - set a $varcid($vid) - } - if {$listed} { - set olds [lrange $ids 1 end] - } else { - set olds {} - } - set commitdata($id) [string range $cmit [expr {$j + 1}] end] - set cmitlisted($vid) $listed - set parents($vid) $olds - if {![info exists children($vid)]} { - set children($vid) {} - } elseif {$a == 0 && [llength $children($vid)] == 1} { - set k [lindex $children($vid) 0] - if {[llength $parents($view,$k)] == 1 && - (!$vdatemode($view) || - $varcid($view,$k) == [llength $varctok($view)] - 1)} { - set a $varcid($view,$k) - } - } - if {$a == 0} { - # new arc - set a [newvarc $view $id] - } - if {[string compare [lindex $varctok($view) $a] $vtokmod($view)] < 0} { - modify_arc $view $a - } - if {![info exists varcid($vid)]} { - set varcid($vid) $a - lappend varccommits($view,$a) $id - incr commitidx($view) - } + set a 0 + if {[info exists varcid($vid)]} { + if {$cmitlisted($vid) || !$listed} continue + set a $varcid($vid) + } + if {$listed} { + set olds [lrange $ids 1 end] + } else { + set olds {} + } + set commitdata($id) [string range $cmit [expr {$j + 1}] end] + set cmitlisted($vid) $listed + set parents($vid) $olds + if {![info exists children($vid)]} { + set children($vid) {} + } elseif {$a == 0 && [llength $children($vid)] == 1} { + set k [lindex $children($vid) 0] + if {[llength $parents($view,$k)] == 1 && + (!$vdatemode($view) || + $varcid($view,$k) == [llength $varctok($view)] - 1)} { + set a $varcid($view,$k) + } + } + if {$a == 0} { + # new arc + set a [newvarc $view $id] + } + if {[string compare [lindex $varctok($view) $a] $vtokmod($view)] < 0} { + modify_arc $view $a + } + if {![info exists varcid($vid)]} { + set varcid($vid) $a + lappend varccommits($view,$a) $id + incr commitidx($view) + } - set i 0 - foreach p $olds { - if {$i == 0 || [lsearch -exact $olds $p] >= $i} { - set vp $view,$p - if {[llength [lappend children($vp) $id]] > 1 && - [vtokcmp $view [lindex $children($vp) end-1] $id] > 0} { - set children($vp) [lsort -command [list vtokcmp $view] \ - $children($vp)] - unset -nocomplain ordertok - } - if {[info exists varcid($view,$p)]} { - fix_reversal $p $a $view - } - } - incr i - } + set i 0 + foreach p $olds { + if {$i == 0 || [lsearch -exact $olds $p] >= $i} { + set vp $view,$p + if {[llength [lappend children($vp) $id]] > 1 && + [vtokcmp $view [lindex $children($vp) end-1] $id] > 0} { + set children($vp) [lsort -command [list vtokcmp $view] \ + $children($vp)] + unset -nocomplain ordertok + } + if {[info exists varcid($view,$p)]} { + fix_reversal $p $a $view + } + } + incr i + } - set scripts [check_interest $id $scripts] - set gotsome 1 + set scripts [check_interest $id $scripts] + set gotsome 1 } if {$gotsome} { - global numcommits hlview + global numcommits hlview - if {$view == $curview} { - set numcommits $commitidx($view) - run chewcommits - } - if {[info exists hlview] && $view == $hlview} { - # we never actually get here... - run vhighlightmore - } - foreach s $scripts { - eval $s - } + if {$view == $curview} { + set numcommits $commitidx($view) + run chewcommits + } + if {[info exists hlview] && $view == $hlview} { + # we never actually get here... + run vhighlightmore + } + foreach s $scripts { + eval $s + } } return 2 } @@ -1619,28 +1619,28 @@ proc chewcommits {} { layoutmore if {$viewcomplete($curview)} { - global commitidx varctok - global numcommits startmsecs + global commitidx varctok + global numcommits startmsecs - if {[info exists pending_select]} { - update - reset_pending_select {} + if {[info exists pending_select]} { + update + reset_pending_select {} - if {[commitinview $pending_select $curview]} { - selectline [rowofcommit $pending_select] 1 - } else { - set row [first_real_row] - selectline $row 1 - } - } - if {$commitidx($curview) > 0} { - #set ms [expr {[clock clicks -milliseconds] - $startmsecs}] - #puts "overall $ms ms for $numcommits commits" - #puts "[llength $varctok($view)] arcs, $commitidx($view) commits" - } else { - show_status [mc "No commits selected"] - } - notbusy layout + if {[commitinview $pending_select $curview]} { + selectline [rowofcommit $pending_select] 1 + } else { + set row [first_real_row] + selectline $row 1 + } + } + if {$commitidx($curview) > 0} { + #set ms [expr {[clock clicks -milliseconds] - $startmsecs}] + #puts "overall $ms ms for $numcommits commits" + #puts "[llength $varctok($view)] arcs, $commitidx($view) commits" + } else { + show_status [mc "No commits selected"] + } + notbusy layout } return 0 } @@ -1653,7 +1653,7 @@ proc do_readcommit {id} { # Read the results using i18n.logoutputencoding fconfigure $fd -translation lf -eofchar {} if {$tclencoding != {}} { - fconfigure $fd -encoding $tclencoding + fconfigure $fd -encoding $tclencoding } set contents [read $fd] close $fd @@ -1680,44 +1680,44 @@ proc parsecommit {id contents listed} { set comdate {} set hdrend [string first "\n\n" $contents] if {$hdrend < 0} { - # should never happen... - set hdrend [string length $contents] + # should never happen... + set hdrend [string length $contents] } set header [string range $contents 0 [expr {$hdrend - 1}]] set comment [string range $contents [expr {$hdrend + 2}] end] foreach line [split $header "\n"] { - set line [split $line " "] - set tag [lindex $line 0] - if {$tag == "author"} { - set audate [lrange $line end-1 end] - set auname [join [lrange $line 1 end-2] " "] - } elseif {$tag == "committer"} { - set comdate [lrange $line end-1 end] - set comname [join [lrange $line 1 end-2] " "] - } + set line [split $line " "] + set tag [lindex $line 0] + if {$tag == "author"} { + set audate [lrange $line end-1 end] + set auname [join [lrange $line 1 end-2] " "] + } elseif {$tag == "committer"} { + set comdate [lrange $line end-1 end] + set comname [join [lrange $line 1 end-2] " "] + } } set headline {} # take the first non-blank line of the comment as the headline set headline [string trimleft $comment] set i [string first "\n" $headline] if {$i >= 0} { - set headline [string range $headline 0 $i] + set headline [string range $headline 0 $i] } set headline [string trimright $headline] set i [string first "\r" $headline] if {$i >= 0} { - set headline [string trimright [string range $headline 0 $i]] + set headline [string trimright [string range $headline 0 $i]] } if {!$listed} { - # git log indents the comment by 4 spaces; - # if we got this via git cat-file, add the indentation - set newcomment {} - foreach line [split $comment "\n"] { - append newcomment " " - append newcomment $line - append newcomment "\n" - } - set comment $newcomment + # git log indents the comment by 4 spaces; + # if we got this via git cat-file, add the indentation + set newcomment {} + foreach line [split $comment "\n"] { + append newcomment " " + append newcomment $line + append newcomment "\n" + } + set comment $newcomment } set hasnote [string first "\nNotes:\n" $contents] set diff "" @@ -1726,23 +1726,23 @@ proc parsecommit {id contents listed} { # diff. set i [string first "\n\ndiff" $comment] if {$i >= 0} { - set diff [string range $comment $i+1 end] - set comment [string range $comment 0 $i-1] + set diff [string range $comment $i+1 end] + set comment [string range $comment 0 $i-1] } set commitinfo($id) [list $headline $auname $audate \ - $comname $comdate $comment $hasnote $diff] + $comname $comdate $comment $hasnote $diff] } proc getcommit {id} { global commitdata commitinfo if {[info exists commitdata($id)]} { - parsecommit $id $commitdata($id) 1 + parsecommit $id $commitdata($id) 1 } else { - readcommit $id - if {![info exists commitinfo($id)]} { - set commitinfo($id) [list [mc "No commit information available"]] - } + readcommit $id + if {![info exists commitinfo($id)]} { + set commitinfo($id) [list [mc "No commit information available"]] + } } return 1 } @@ -1755,22 +1755,22 @@ proc longid {prefix} { set ids {} if {[string length $prefix] >= 4} { - set vshortid $curview,[string range $prefix 0 3] - if {[info exists vshortids($vshortid)]} { - foreach id $vshortids($vshortid) { - if {[string match "$prefix*" $id]} { - if {[lsearch -exact $ids $id] < 0} { - lappend ids $id - if {[llength $ids] >= 2} break - } - } - } - } + set vshortid $curview,[string range $prefix 0 3] + if {[info exists vshortids($vshortid)]} { + foreach id $vshortids($vshortid) { + if {[string match "$prefix*" $id]} { + if {[lsearch -exact $ids $id] < 0} { + lappend ids $id + if {[llength $ids] >= 2} break + } + } + } + } } else { - foreach match [array names varcid "$curview,$prefix*"] { - lappend ids [lindex [split $match ","] 1] - if {[llength $ids] >= 2} break - } + foreach match [array names varcid "$curview,$prefix*"] { + lappend ids [lindex [split $match ","] 1] + if {[llength $ids] >= 2} break + } } return $ids } @@ -1783,58 +1783,58 @@ proc readrefs {} { global tclencoding foreach v {tagids idtags headids idheads otherrefids idotherrefs} { - unset -nocomplain $v + unset -nocomplain $v } set refd [open [list | git show-ref -d] r] if {$tclencoding != {}} { - fconfigure $refd -encoding $tclencoding + fconfigure $refd -encoding $tclencoding } while {[gets $refd line] >= 0} { - if {[string index $line 40] ne " "} continue - set id [string range $line 0 39] - set ref [string range $line 41 end] - if {![string match "refs/*" $ref]} continue - set name [string range $ref 5 end] - if {[string match "remotes/*" $name]} { - if {![string match "*/HEAD" $name] && !$hideremotes} { - set headids($name) $id - lappend idheads($id) $name - } - } elseif {[string match "heads/*" $name]} { - set name [string range $name 6 end] - set headids($name) $id - lappend idheads($id) $name - } elseif {[string match "tags/*" $name]} { - # this lets refs/tags/foo^{} overwrite refs/tags/foo, - # which is what we want since the former is the commit ID - set name [string range $name 5 end] - if {[string match "*^{}" $name]} { - set name [string range $name 0 end-3] - } else { - set tagobjid($name) $id - } - set tagids($name) $id - lappend idtags($id) $name - } else { - set otherrefids($name) $id - lappend idotherrefs($id) $name - } + if {[string index $line 40] ne " "} continue + set id [string range $line 0 39] + set ref [string range $line 41 end] + if {![string match "refs/*" $ref]} continue + set name [string range $ref 5 end] + if {[string match "remotes/*" $name]} { + if {![string match "*/HEAD" $name] && !$hideremotes} { + set headids($name) $id + lappend idheads($id) $name + } + } elseif {[string match "heads/*" $name]} { + set name [string range $name 6 end] + set headids($name) $id + lappend idheads($id) $name + } elseif {[string match "tags/*" $name]} { + # this lets refs/tags/foo^{} overwrite refs/tags/foo, + # which is what we want since the former is the commit ID + set name [string range $name 5 end] + if {[string match "*^{}" $name]} { + set name [string range $name 0 end-3] + } else { + set tagobjid($name) $id + } + set tagids($name) $id + lappend idtags($id) $name + } else { + set otherrefids($name) $id + lappend idotherrefs($id) $name + } } catch {close $refd} set mainhead {} set mainheadid {} catch { - set mainheadid [exec git rev-parse HEAD] - set thehead [exec git symbolic-ref HEAD] - if {[string match "refs/heads/*" $thehead]} { - set mainhead [string range $thehead 11 end] - } + set mainheadid [exec git rev-parse HEAD] + set thehead [exec git symbolic-ref HEAD] + if {[string match "refs/heads/*" $thehead]} { + set mainhead [string range $thehead 11 end] + } } set selectheadid {} if {$selecthead ne {}} { - catch { - set selectheadid [exec git rev-parse --verify $selecthead] - } + catch { + set selectheadid [exec git rev-parse --verify $selecthead] + } } } @@ -1843,10 +1843,10 @@ proc first_real_row {} { global nullid nullid2 numcommits for {set row 0} {$row < $numcommits} {incr row} { - set id [commitonrow $row] - if {$id ne $nullid && $id ne $nullid2} { - break - } + set id [commitonrow $row] + if {$id ne $nullid && $id ne $nullid2} { + break + } } return $row } @@ -1865,12 +1865,12 @@ proc removehead {id name} { global headids idheads if {$idheads($id) eq $name} { - unset idheads($id) + unset idheads($id) } else { - set i [lsearch -exact $idheads($id) $name] - if {$i >= 0} { - set idheads($id) [lreplace $idheads($id) $i $i] - } + set i [lsearch -exact $idheads($id) $name] + if {$i >= 0} { + set idheads($id) [lreplace $idheads($id) $i $i] + } } unset headids($name) } @@ -1898,7 +1898,7 @@ proc make_transient {window origin} { # Windows fails to place transient windows normally, so # schedule a callback to center them on the parent. if {[tk windowingsystem] eq {win32}} { - after idle [list tk::PlaceWindow $window widget $origin] + after idle [list tk::PlaceWindow $window widget $origin] } } @@ -1998,41 +1998,41 @@ proc setttkstyle {} { proc makemenu {m items} { menu $m if {[tk windowingsystem] eq {aqua}} { - set Meta1 Cmd + set Meta1 Cmd } else { - set Meta1 Ctrl + set Meta1 Ctrl } foreach i $items { - set name [mc [lindex $i 1]] - set type [lindex $i 2] - set thing [lindex $i 3] - set params [list $type] - if {$name ne {}} { - set u [string first "&" [string map {&& x} $name]] - lappend params -label [string map {&& & & {}} $name] - if {$u >= 0} { - lappend params -underline $u - } - } - switch -- $type { - "cascade" { - set submenu [string tolower [string map {& ""} [lindex $i 1]]] - lappend params -menu $m.$submenu - } - "command" { - lappend params -command $thing - } - "radiobutton" { - lappend params -variable [lindex $thing 0] \ - -value [lindex $thing 1] - } - } - set tail [lrange $i 4 end] - regsub -all {\yMeta1\y} $tail $Meta1 tail - eval $m add $params $tail - if {$type eq "cascade"} { - makemenu $m.$submenu $thing - } + set name [mc [lindex $i 1]] + set type [lindex $i 2] + set thing [lindex $i 3] + set params [list $type] + if {$name ne {}} { + set u [string first "&" [string map {&& x} $name]] + lappend params -label [string map {&& & & {}} $name] + if {$u >= 0} { + lappend params -underline $u + } + } + switch -- $type { + "cascade" { + set submenu [string tolower [string map {& ""} [lindex $i 1]]] + lappend params -menu $m.$submenu + } + "command" { + lappend params -command $thing + } + "radiobutton" { + lappend params -variable [lindex $thing 0] \ + -value [lindex $thing 1] + } + } + set tail [lrange $i 4 end] + regsub -all {\yMeta1\y} $tail $Meta1 tail + eval $m add $params $tail + if {$type eq "cascade"} { + makemenu $m.$submenu $thing + } } } @@ -2052,12 +2052,12 @@ proc makedroplist {w varname args} { set cx [string length $label] if {$cx > $width} {set width $cx} } - set gm [ttk::combobox $w -width $width -state readonly\ - -textvariable $varname -values $args \ - -exportselection false] - bind $gm <<ComboboxSelected>> [list $gm selection clear] + set gm [ttk::combobox $w -width $width -state readonly\ + -textvariable $varname -values $args \ + -exportselection false] + bind $gm <<ComboboxSelected>> [list $gm selection clear] } else { - set gm [eval [linsert $args 0 tk_optionMenu $w $varname]] + set gm [eval [linsert $args 0 tk_optionMenu $w $varname]] } return $gm } @@ -2087,49 +2087,49 @@ proc makewindow {} { # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated set file { - mc "&File" cascade { - {mc "&Update" command updatecommits -accelerator F5} - {mc "&Reload" command reloadcommits -accelerator Shift-F5} - {mc "Reread re&ferences" command rereadrefs} - {mc "&List references" command showrefs -accelerator F2} - {xx "" separator} - {mc "Start git &gui" command {exec git gui &}} - {xx "" separator} - {mc "&Quit" command doquit -accelerator Meta1-Q} - }} + mc "&File" cascade { + {mc "&Update" command updatecommits -accelerator F5} + {mc "&Reload" command reloadcommits -accelerator Shift-F5} + {mc "Reread re&ferences" command rereadrefs} + {mc "&List references" command showrefs -accelerator F2} + {xx "" separator} + {mc "Start git &gui" command {exec git gui &}} + {xx "" separator} + {mc "&Quit" command doquit -accelerator Meta1-Q} + }} set edit { - mc "&Edit" cascade { - {mc "&Preferences" command doprefs} - }} + mc "&Edit" cascade { + {mc "&Preferences" command doprefs} + }} set view { - mc "&View" cascade { - {mc "&New view..." command {newview 0} -accelerator Shift-F4} - {mc "&Edit view..." command editview -state disabled -accelerator F4} - {mc "&Delete view" command delview -state disabled} - {xx "" separator} - {mc "&All files" radiobutton {selectedview 0} -command {showview 0}} - }} + mc "&View" cascade { + {mc "&New view..." command {newview 0} -accelerator Shift-F4} + {mc "&Edit view..." command editview -state disabled -accelerator F4} + {mc "&Delete view" command delview -state disabled} + {xx "" separator} + {mc "&All files" radiobutton {selectedview 0} -command {showview 0}} + }} if {[tk windowingsystem] ne "aqua"} { - set help { - mc "&Help" cascade { - {mc "&About gitk" command about} - {mc "&Key bindings" command keys} - }} - set bar [list $file $edit $view $help] + set help { + mc "&Help" cascade { + {mc "&About gitk" command about} + {mc "&Key bindings" command keys} + }} + set bar [list $file $edit $view $help] } else { - proc ::tk::mac::ShowPreferences {} {doprefs} - proc ::tk::mac::Quit {} {doquit} - lset file end [lreplace [lindex $file end] end-1 end] - set apple { - xx "&Apple" cascade { - {mc "&About gitk" command about} - {xx "" separator} - }} - set help { - mc "&Help" cascade { - {mc "&Key bindings" command keys} - }} - set bar [list $apple $file $view $help] + proc ::tk::mac::ShowPreferences {} {doprefs} + proc ::tk::mac::Quit {} {doquit} + lset file end [lreplace [lindex $file end] end-1 end] + set apple { + xx "&Apple" cascade { + {mc "&About gitk" command about} + {xx "" separator} + }} + set help { + mc "&Help" cascade { + {mc "&Key bindings" command keys} + }} + set bar [list $apple $file $view $help] } makemenu .bar $bar . configure -menu .bar @@ -2157,36 +2157,36 @@ proc makewindow {} { ${NS}::frame .tf.histframe ${NS}::panedwindow .tf.histframe.pwclist -orient horizontal if {!$use_ttk} { - .tf.histframe.pwclist configure -sashpad 0 -handlesize 4 + .tf.histframe.pwclist configure -sashpad 0 -handlesize 4 } # create three canvases set cscroll .tf.histframe.csb set canv .tf.histframe.pwclist.canv canvas $canv \ - -selectbackground $selectbgcolor \ - -background $bgcolor -bd 0 \ - -yscrollincr $linespc -yscrollcommand "scrollcanv $cscroll" + -selectbackground $selectbgcolor \ + -background $bgcolor -bd 0 \ + -yscrollincr $linespc -yscrollcommand "scrollcanv $cscroll" .tf.histframe.pwclist add $canv set canv2 .tf.histframe.pwclist.canv2 canvas $canv2 \ - -selectbackground $selectbgcolor \ - -background $bgcolor -bd 0 -yscrollincr $linespc + -selectbackground $selectbgcolor \ + -background $bgcolor -bd 0 -yscrollincr $linespc .tf.histframe.pwclist add $canv2 set canv3 .tf.histframe.pwclist.canv3 canvas $canv3 \ - -selectbackground $selectbgcolor \ - -background $bgcolor -bd 0 -yscrollincr $linespc + -selectbackground $selectbgcolor \ + -background $bgcolor -bd 0 -yscrollincr $linespc .tf.histframe.pwclist add $canv3 if {$use_ttk} { - bind .tf.histframe.pwclist <Map> { - bind %W <Map> {} - .tf.histframe.pwclist sashpos 1 [lindex $::geometry(pwsash1) 0] - .tf.histframe.pwclist sashpos 0 [lindex $::geometry(pwsash0) 0] - } + bind .tf.histframe.pwclist <Map> { + bind %W <Map> {} + .tf.histframe.pwclist sashpos 1 [lindex $::geometry(pwsash1) 0] + .tf.histframe.pwclist sashpos 0 [lindex $::geometry(pwsash0) 0] + } } else { - eval .tf.histframe.pwclist sash place 0 $geometry(pwsash0) - eval .tf.histframe.pwclist sash place 1 $geometry(pwsash1) + eval .tf.histframe.pwclist sash place 0 $geometry(pwsash0) + eval .tf.histframe.pwclist sash place 1 $geometry(pwsash1) } # a scroll bar to rule them @@ -2205,7 +2205,7 @@ proc makewindow {} { set entries $sha1entry set sha1but .tf.bar.sha1label button $sha1but -text "[mc "SHA1 ID:"] " -state disabled -relief flat \ - -command gotocommit -width 8 + -command gotocommit -width 8 $sha1but conf -disabledforeground [$sha1but cget -foreground] pack .tf.bar.sha1label -side left ${NS}::entry $sha1entry -width 40 -font textfont -textvariable sha1string @@ -2213,20 +2213,20 @@ proc makewindow {} { pack $sha1entry -side left -pady 2 set bm_left_data { - #define left_width 16 - #define left_height 16 - static unsigned char left_bits[] = { - 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, - 0x0e, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x0e, 0x00, 0x1c, 0x00, - 0x38, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01}; + #define left_width 16 + #define left_height 16 + static unsigned char left_bits[] = { + 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x0e, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x0e, 0x00, 0x1c, 0x00, + 0x38, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01}; } set bm_right_data { - #define right_width 16 - #define right_height 16 - static unsigned char right_bits[] = { - 0x00, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x1c, - 0x00, 0x38, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x00, 0x38, 0x00, 0x1c, - 0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01}; + #define right_width 16 + #define right_height 16 + static unsigned char right_bits[] = { + 0x00, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x1c, + 0x00, 0x38, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x00, 0x38, 0x00, 0x1c, + 0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01}; } image create bitmap bm-left -data $bm_left_data -foreground $uifgcolor image create bitmap bm-left-gray -data $bm_left_data -foreground $uifgdisabledcolor @@ -2235,28 +2235,28 @@ proc makewindow {} { ${NS}::button .tf.bar.leftbut -command goback -state disabled -width 26 if {$use_ttk} { - .tf.bar.leftbut configure -image [list bm-left disabled bm-left-gray] + .tf.bar.leftbut configure -image [list bm-left disabled bm-left-gray] } else { - .tf.bar.leftbut configure -image bm-left + .tf.bar.leftbut configure -image bm-left } pack .tf.bar.leftbut -side left -fill y ${NS}::button .tf.bar.rightbut -command goforw -state disabled -width 26 if {$use_ttk} { - .tf.bar.rightbut configure -image [list bm-right disabled bm-right-gray] + .tf.bar.rightbut configure -image [list bm-right disabled bm-right-gray] } else { - .tf.bar.rightbut configure -image bm-right + .tf.bar.rightbut configure -image bm-right } pack .tf.bar.rightbut -side left -fill y ${NS}::label .tf.bar.rowlabel -text [mc "Row"] set rownumsel {} ${NS}::label .tf.bar.rownum -width 7 -textvariable rownumsel \ - -relief sunken -anchor e + -relief sunken -anchor e ${NS}::label .tf.bar.rowlabel2 -text "/" ${NS}::label .tf.bar.numcommits -width 7 -textvariable numcommits \ - -relief sunken -anchor e + -relief sunken -anchor e pack .tf.bar.rowlabel .tf.bar.rownum .tf.bar.rowlabel2 .tf.bar.numcommits \ - -side left + -side left if {!$use_ttk} { foreach w {rownum numcommits} {.tf.bar.$w configure -font textfont} } @@ -2268,14 +2268,14 @@ proc makewindow {} { ${NS}::label $statusw -width 15 -relief sunken pack $statusw -side left -padx 5 if {$use_ttk} { - set progresscanv [ttk::progressbar .tf.bar.progress] + set progresscanv [ttk::progressbar .tf.bar.progress] } else { - set h [expr {[font metrics uifont -linespace] + 2}] - set progresscanv .tf.bar.progress - canvas $progresscanv -relief sunken -height $h -borderwidth 2 - set progressitem [$progresscanv create rect -1 0 0 $h -fill "#00ff00"] - set fprogitem [$progresscanv create rect -1 0 0 $h -fill yellow] - set rprogitem [$progresscanv create rect -1 0 0 $h -fill red] + set h [expr {[font metrics uifont -linespace] + 2}] + set progresscanv .tf.bar.progress + canvas $progresscanv -relief sunken -height $h -borderwidth 2 + set progressitem [$progresscanv create rect -1 0 0 $h -fill "#00ff00"] + set fprogitem [$progresscanv create rect -1 0 0 $h -fill yellow] + set rprogitem [$progresscanv create rect -1 0 0 $h -fill red] } pack $progresscanv -side right -expand 1 -fill x -padx {0 2} set progresscoords {0 0} @@ -2289,26 +2289,26 @@ proc makewindow {} { ${NS}::label .tf.lbar.flabel -text "[mc "Find"] " set bm_down_data { - #define down_width 16 - #define down_height 16 - static unsigned char down_bits[] = { - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x87, 0xe1, 0x8e, 0x71, 0x9c, 0x39, 0xb8, 0x1d, - 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01}; + #define down_width 16 + #define down_height 16 + static unsigned char down_bits[] = { + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x87, 0xe1, 0x8e, 0x71, 0x9c, 0x39, 0xb8, 0x1d, + 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01}; } image create bitmap bm-down -data $bm_down_data -foreground $uifgcolor ${NS}::button .tf.lbar.fnext -width 26 -command {dofind 1 1} .tf.lbar.fnext configure -image bm-down set bm_up_data { - #define up_width 16 - #define up_height 16 - static unsigned char up_bits[] = { - 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, - 0xb8, 0x1d, 0x9c, 0x39, 0x8e, 0x71, 0x87, 0xe1, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01}; + #define up_width 16 + #define up_height 16 + static unsigned char up_bits[] = { + 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, + 0xb8, 0x1d, 0x9c, 0x39, 0x8e, 0x71, 0x87, 0xe1, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01}; } image create bitmap bm-up -data $bm_up_data -foreground $uifgcolor ${NS}::button .tf.lbar.fprev -width 26 -command {dofind -1 1} @@ -2317,13 +2317,13 @@ proc makewindow {} { ${NS}::label .tf.lbar.flab2 -text " [mc "commit"] " pack .tf.lbar.flabel .tf.lbar.fnext .tf.lbar.fprev .tf.lbar.flab2 \ - -side left -fill y + -side left -fill y set gdttype [mc "containing:"] set gm [makedroplist .tf.lbar.gdttype gdttype \ - [mc "containing:"] \ - [mc "touching paths:"] \ - [mc "adding/removing string:"] \ - [mc "changing lines matching:"]] + [mc "containing:"] \ + [mc "touching paths:"] \ + [mc "adding/removing string:"] \ + [mc "changing lines matching:"]] trace add variable gdttype write gdttype_change pack .tf.lbar.gdttype -side left -fill y @@ -2334,11 +2334,11 @@ proc makewindow {} { trace add variable findstring write find_change set findtype [mc "Exact"] set findtypemenu [makedroplist .tf.lbar.findtype \ - findtype [mc "Exact"] [mc "IgnCase"] [mc "Regexp"]] + findtype [mc "Exact"] [mc "IgnCase"] [mc "Regexp"]] trace add variable findtype write findcom_change set findloc [mc "All fields"] makedroplist .tf.lbar.findloc findloc [mc "All fields"] [mc "Headline"] \ - [mc "Comments"] [mc "Author"] [mc "Committer"] + [mc "Comments"] [mc "Author"] [mc "Committer"] trace add variable findloc write find_change pack .tf.lbar.findloc -side right pack .tf.lbar.findtype -side right @@ -2350,8 +2350,8 @@ proc makewindow {} { pack .tf.histframe -fill both -side top -expand 1 .ctop add .tf if {!$use_ttk} { - .ctop paneconfigure .tf -height $geometry(topheight) - .ctop paneconfigure .tf -width $geometry(topwidth) + .ctop paneconfigure .tf -height $geometry(topheight) + .ctop paneconfigure .tf -width $geometry(topwidth) } # now build up the bottom @@ -2361,9 +2361,9 @@ proc makewindow {} { # 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)]} { - ${NS}::frame .bleft -width $geometry(botwidth) + ${NS}::frame .bleft -width $geometry(botwidth) } else { - ${NS}::frame .bleft -width $geometry(botwidth) -height $geometry(botheight) + ${NS}::frame .bleft -width $geometry(botwidth) -height $geometry(botheight) } ${NS}::frame .bleft.top ${NS}::frame .bleft.mid @@ -2381,41 +2381,41 @@ proc makewindow {} { trace add variable searchstring write incrsearch pack $sstring -side left -expand 1 -fill x ${NS}::radiobutton .bleft.mid.diff -text [mc "Diff"] \ - -command changediffdisp -variable diffelide -value {0 0} + -command changediffdisp -variable diffelide -value {0 0} ${NS}::radiobutton .bleft.mid.old -text [mc "Old version"] \ - -command changediffdisp -variable diffelide -value {0 1} + -command changediffdisp -variable diffelide -value {0 1} ${NS}::radiobutton .bleft.mid.new -text [mc "New version"] \ - -command changediffdisp -variable diffelide -value {1 0} + -command changediffdisp -variable diffelide -value {1 0} ${NS}::label .bleft.mid.labeldiffcontext -text " [mc "Lines of context"]: " pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left -ipadx $wgap spinbox .bleft.mid.diffcontext -width 5 \ - -from 0 -increment 1 -to 10000000 \ - -validate all -validatecommand "diffcontextvalidate %P" \ - -textvariable diffcontextstring + -from 0 -increment 1 -to 10000000 \ + -validate all -validatecommand "diffcontextvalidate %P" \ + -textvariable diffcontextstring .bleft.mid.diffcontext set $diffcontext trace add variable diffcontextstring write diffcontextchange lappend entries .bleft.mid.diffcontext pack .bleft.mid.labeldiffcontext .bleft.mid.diffcontext -side left -ipadx $wgap ${NS}::checkbutton .bleft.mid.ignspace -text [mc "Ignore space change"] \ - -command changeignorespace -variable ignorespace + -command changeignorespace -variable ignorespace pack .bleft.mid.ignspace -side left -padx 5 set worddiff [mc "Line diff"] if {[package vcompare $git_version "1.7.2"] >= 0} { - makedroplist .bleft.mid.worddiff worddiff [mc "Line diff"] \ - [mc "Markup words"] [mc "Color words"] - trace add variable worddiff write changeworddiff - pack .bleft.mid.worddiff -side left -padx 5 + makedroplist .bleft.mid.worddiff worddiff [mc "Line diff"] \ + [mc "Markup words"] [mc "Color words"] + trace add variable worddiff write changeworddiff + pack .bleft.mid.worddiff -side left -padx 5 } set ctext .bleft.bottom.ctext text $ctext -background $bgcolor -foreground $fgcolor \ - -state disabled -undo 0 -font textfont \ - -yscrollcommand scrolltext -wrap none \ - -xscrollcommand ".bleft.bottom.sbhorizontal set" + -state disabled -undo 0 -font textfont \ + -yscrollcommand scrolltext -wrap none \ + -xscrollcommand ".bleft.bottom.sbhorizontal set" if {$have_tk85} { - $ctext conf -tabstyle wordprocessor + $ctext conf -tabstyle wordprocessor } ${NS}::scrollbar .bleft.bottom.sb -command "$ctext yview" ${NS}::scrollbar .bleft.bottom.sbhorizontal -command "$ctext xview" -orient h @@ -2462,35 +2462,35 @@ proc makewindow {} { .pwbottom add .bleft if {!$use_ttk} { - .pwbottom paneconfigure .bleft -width $geometry(botwidth) + .pwbottom paneconfigure .bleft -width $geometry(botwidth) } # lower right ${NS}::frame .bright ${NS}::frame .bright.mode ${NS}::radiobutton .bright.mode.patch -text [mc "Patch"] \ - -command reselectline -variable cmitmode -value "patch" + -command reselectline -variable cmitmode -value "patch" ${NS}::radiobutton .bright.mode.tree -text [mc "Tree"] \ - -command reselectline -variable cmitmode -value "tree" + -command reselectline -variable cmitmode -value "tree" 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 \ - -selectbackground $selectbgcolor \ - -background $bgcolor -foreground $fgcolor \ - -font mainfont \ - -tabs [list $indent [expr {2 * $indent}]] \ - -yscrollcommand ".bright.sb set" \ - -cursor [. cget -cursor] \ - -spacing1 1 -spacing3 1 + -selectbackground $selectbgcolor \ + -background $bgcolor -foreground $fgcolor \ + -font mainfont \ + -tabs [list $indent [expr {2 * $indent}]] \ + -yscrollcommand ".bright.sb set" \ + -cursor [. cget -cursor] \ + -spacing1 1 -spacing3 1 lappend bglist $cflist lappend fglist $cflist ${NS}::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] + -background [$cflist cget -selectbackground] $cflist tag configure bold -font mainfontbold .pwbottom add .bright @@ -2498,15 +2498,15 @@ proc makewindow {} { # restore window width & height if known if {[info exists geometry(main)]} { - if {[scan $geometry(main) "%dx%d" w h] >= 2} { - if {$w > [winfo screenwidth .]} { - set w [winfo screenwidth .] - } - if {$h > [winfo screenheight .]} { - set h [winfo screenheight .] - } - wm geometry . "${w}x$h" - } + if {[scan $geometry(main) "%dx%d" w h] >= 2} { + if {$w > [winfo screenwidth .]} { + set w [winfo screenwidth .] + } + if {$h > [winfo screenheight .]} { + set h [winfo screenheight .] + } + wm geometry . "${w}x$h" + } } if {[info exists geometry(state)] && $geometry(state) eq "zoomed"} { @@ -2530,25 +2530,25 @@ proc makewindow {} { bind %W <Map> {} %W sashpos 0 $::geometry(botwidth) } - bind .pwbottom <Configure> {resizecdetpanes %W %w} + bind .pwbottom <Configure> {resizecdetpanes %W %w} } pack .ctop -fill both -expand 1 bindall <1> {selcanvline %W %x %y} #bindall <B1-Motion> {selcanvline %W %x %y} if {[tk windowingsystem] == "win32"} { - bind . <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D } - bind $ctext <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D ; break } + bind . <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D } + bind $ctext <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D ; break } } else { - bindall <ButtonRelease-4> "allcanvs yview scroll -5 units" - bindall <ButtonRelease-5> "allcanvs yview scroll 5 units" - bind $ctext <Button> { - if {"%b" eq 6} { - $ctext xview scroll -5 units - } elseif {"%b" eq 7} { - $ctext xview scroll 5 units - } - } + bindall <ButtonRelease-4> "allcanvs yview scroll -5 units" + bindall <ButtonRelease-5> "allcanvs yview scroll 5 units" + bind $ctext <Button> { + if {"%b" eq 6} { + $ctext xview scroll -5 units + } elseif {"%b" eq 7} { + $ctext xview scroll 5 units + } + } if {[tk windowingsystem] eq "aqua"} { bindall <MouseWheel> { set delta [expr {- (%D)}] @@ -2631,7 +2631,7 @@ proc makewindow {} { bind $ctext <Button-1> {focus %W} bind $ctext <<Selection>> rehighlight_search_results for {set i 1} {$i < 10} {incr i} { - bind . <$M1B-Key-$i> [list go_to_parent $i] + bind . <$M1B-Key-$i> [list go_to_parent $i] } set maincursor [. cget -cursor] @@ -2640,60 +2640,60 @@ proc makewindow {} { set rowctxmenu .rowctxmenu makemenu $rowctxmenu { - {mc "Diff this -> selected" command {diffvssel 0}} - {mc "Diff selected -> this" command {diffvssel 1}} - {mc "Make patch" command mkpatch} - {mc "Create tag" command mktag} - {mc "Copy commit reference" command copyreference} - {mc "Write commit to file" command writecommit} - {mc "Create new branch" command mkbranch} - {mc "Cherry-pick this commit" command cherrypick} - {mc "Reset HEAD branch to here" command resethead} - {mc "Mark this commit" command markhere} - {mc "Return to mark" command gotomark} - {mc "Find descendant of this and mark" command find_common_desc} - {mc "Compare with marked commit" command compare_commits} - {mc "Diff this -> marked commit" command {diffvsmark 0}} - {mc "Diff marked commit -> this" command {diffvsmark 1}} - {mc "Revert this commit" command revert} + {mc "Diff this -> selected" command {diffvssel 0}} + {mc "Diff selected -> this" command {diffvssel 1}} + {mc "Make patch" command mkpatch} + {mc "Create tag" command mktag} + {mc "Copy commit reference" command copyreference} + {mc "Write commit to file" command writecommit} + {mc "Create new branch" command mkbranch} + {mc "Cherry-pick this commit" command cherrypick} + {mc "Reset HEAD branch to here" command resethead} + {mc "Mark this commit" command markhere} + {mc "Return to mark" command gotomark} + {mc "Find descendant of this and mark" command find_common_desc} + {mc "Compare with marked commit" command compare_commits} + {mc "Diff this -> marked commit" command {diffvsmark 0}} + {mc "Diff marked commit -> this" command {diffvsmark 1}} + {mc "Revert this commit" command revert} } $rowctxmenu configure -tearoff 0 set fakerowmenu .fakerowmenu makemenu $fakerowmenu { - {mc "Diff this -> selected" command {diffvssel 0}} - {mc "Diff selected -> this" command {diffvssel 1}} - {mc "Make patch" command mkpatch} - {mc "Diff this -> marked commit" command {diffvsmark 0}} - {mc "Diff marked commit -> this" command {diffvsmark 1}} + {mc "Diff this -> selected" command {diffvssel 0}} + {mc "Diff selected -> this" command {diffvssel 1}} + {mc "Make patch" command mkpatch} + {mc "Diff this -> marked commit" command {diffvsmark 0}} + {mc "Diff marked commit -> this" command {diffvsmark 1}} } $fakerowmenu configure -tearoff 0 set headctxmenu .headctxmenu makemenu $headctxmenu { - {mc "Check out this branch" command cobranch} - {mc "Rename this branch" command mvbranch} - {mc "Remove this branch" command rmbranch} - {mc "Copy branch name" command {clipboard clear; clipboard append $headmenuhead}} + {mc "Check out this branch" command cobranch} + {mc "Rename this branch" command mvbranch} + {mc "Remove this branch" command rmbranch} + {mc "Copy branch name" command {clipboard clear; clipboard append $headmenuhead}} } $headctxmenu configure -tearoff 0 global flist_menu set flist_menu .flistctxmenu makemenu $flist_menu { - {mc "Highlight this too" command {flist_hl 0}} - {mc "Highlight this only" command {flist_hl 1}} - {mc "External diff" command {external_diff}} - {mc "Blame parent commit" command {external_blame 1}} - {mc "Copy path" command {clipboard clear; clipboard append $flist_menu_file}} + {mc "Highlight this too" command {flist_hl 0}} + {mc "Highlight this only" command {flist_hl 1}} + {mc "External diff" command {external_diff}} + {mc "Blame parent commit" command {external_blame 1}} + {mc "Copy path" command {clipboard clear; clipboard append $flist_menu_file}} } $flist_menu configure -tearoff 0 global diff_menu set diff_menu .diffctxmenu makemenu $diff_menu { - {mc "Show origin of this line" command show_line_source} - {mc "Run git gui blame on this line" command {external_blame_diff}} + {mc "Show origin of this line" command show_line_source} + {mc "Run git gui blame on this line" command {external_blame_diff}} } $diff_menu configure -tearoff 0 } @@ -2705,14 +2705,14 @@ proc windows_mousewheel_redirector {W X Y D} { global canv canv2 canv3 set w [winfo containing -displayof $W $X $Y] if {$w ne ""} { - set u [expr {$D < 0 ? 5 : -5}] - if {$w == $canv || $w == $canv2 || $w == $canv3} { - allcanvs yview scroll $u units - } else { - catch { - $w yview scroll $u units - } - } + set u [expr {$D < 0 ? 5 : -5}] + if {$w == $canv || $w == $canv2 || $w == $canv3} { + allcanvs yview scroll $u units + } else { + catch { + $w yview scroll $u units + } + } } } @@ -2721,9 +2721,9 @@ proc selectedline_change {n1 n2 op} { global selectedline rownumsel if {$selectedline eq {}} { - set rownumsel {} + set rownumsel {} } else { - set rownumsel [expr {$selectedline + 1}] + set rownumsel [expr {$selectedline + 1}] } } @@ -2732,11 +2732,11 @@ proc selectedline_change {n1 n2 op} { proc canvscan {op w x y} { global canv canv2 canv3 foreach c [list $canv $canv2 $canv3] { - if {$c == $w} { - $c scan $op $x $y - } else { - $c scan $op 0 $y - } + if {$c == $w} { + $c scan $op $x $y + } else { + $c scan $op 0 $y + } } } @@ -2754,10 +2754,10 @@ proc bindkey {ev script} { bind . $ev $script set escript [bind Entry $ev] if {$escript == {}} { - set escript [bind Entry <Key>] + set escript [bind Entry <Key>] } foreach e $entries { - bind $e $ev "$escript; break" + bind $e $ev "$escript; break" } } @@ -2771,7 +2771,7 @@ proc bindmodfunctionkey {mod n script} { proc click {w} { global ctext entries foreach e [concat $entries $ctext] { - if {$w == $e} return + if {$w == $e} return } focus . } @@ -2783,8 +2783,8 @@ proc adjustprogress {} { global rprogitem rprogcoord use_ttk if {$use_ttk} { - $progresscanv configure -value [expr {int($fprogcoord * 100)}] - return + $progresscanv configure -value [expr {int($fprogcoord * 100)}] + return } set w [expr {[winfo width $progresscanv] - 4}] @@ -2796,11 +2796,11 @@ proc adjustprogress {} { $progresscanv coords $rprogitem 0 0 [expr {$w * $rprogcoord}] $h set now [clock clicks -milliseconds] if {$now >= $lastprogupdate + 100} { - set progupdatepending 0 - update + set progupdatepending 0 + update } elseif {!$progupdatepending} { - set progupdatepending 1 - after [expr {$lastprogupdate + 100 - $now}] doprogupdate + set progupdatepending 1 + after [expr {$lastprogupdate + 100 - $now}] doprogupdate } } @@ -2808,9 +2808,9 @@ proc doprogupdate {} { global lastprogupdate progupdatepending if {$progupdatepending} { - set progupdatepending 0 - set lastprogupdate [clock clicks -milliseconds] - update + set progupdatepending 0 + set lastprogupdate [clock clicks -milliseconds] + update } } @@ -2818,14 +2818,14 @@ proc config_check_tmp_exists {tries_left} { global config_file_tmp if {[file exists $config_file_tmp]} { - incr tries_left -1 - if {$tries_left > 0} { - after 100 [list config_check_tmp_exists $tries_left] - } else { - error_popup "There appears to be a stale $config_file_tmp\ + incr tries_left -1 + if {$tries_left > 0} { + after 100 [list config_check_tmp_exists $tries_left] + } else { + error_popup "There appears to be a stale $config_file_tmp\ file, which will prevent gitk from saving its configuration on exit.\ Please remove it if it is not being used by any existing gitk process." - } + } } } @@ -2842,9 +2842,9 @@ proc config_variable_change_cb {name name2 op} { upvar #0 $name var if {$op eq "write" && - (![info exists config_variable_original($name)] || - $config_variable_original($name) ne $var)} { - set config_variable_changed($name) 1 + (![info exists config_variable_original($name)] || + $config_variable_original($name) ne $var)} { + set config_variable_changed($name) 1 } } @@ -2866,81 +2866,81 @@ proc savestuff {w} { if {![winfo viewable .]} return set remove_tmp 0 if {[catch { - set try_count 0 - while {[catch {set f [open $config_file_tmp {WRONLY CREAT EXCL}]}]} { - if {[incr try_count] > 50} { - error "Unable to write config file: $config_file_tmp exists" - } - after 100 - } - set remove_tmp 1 - if {$::tcl_platform(platform) eq {windows}} { - file attributes $config_file_tmp -hidden true - } - if {[file exists $config_file]} { - source $config_file - } - foreach var_name $config_variables { - upvar #0 $var_name var - upvar 0 $var_name old_var - if {!$config_variable_changed($var_name) && [info exists old_var]} { - puts $f [list set $var_name $old_var] - } else { - puts $f [list set $var_name $var] - } - } + set try_count 0 + while {[catch {set f [open $config_file_tmp {WRONLY CREAT EXCL}]}]} { + if {[incr try_count] > 50} { + error "Unable to write config file: $config_file_tmp exists" + } + after 100 + } + set remove_tmp 1 + if {$::tcl_platform(platform) eq {windows}} { + file attributes $config_file_tmp -hidden true + } + if {[file exists $config_file]} { + source $config_file + } + foreach var_name $config_variables { + upvar #0 $var_name var + upvar 0 $var_name old_var + if {!$config_variable_changed($var_name) && [info exists old_var]} { + puts $f [list set $var_name $old_var] + } else { + puts $f [list set $var_name $var] + } + } - puts $f "set geometry(main) [wm geometry .]" - puts $f "set geometry(state) [wm state .]" - puts $f "set geometry(topwidth) [winfo width .tf]" - puts $f "set geometry(topheight) [winfo height .tf]" - if {$current_use_ttk} { - puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sashpos 0] 1\"" - puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sashpos 1] 1\"" - } else { - 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 $f "set geometry(main) [wm geometry .]" + puts $f "set geometry(state) [wm state .]" + puts $f "set geometry(topwidth) [winfo width .tf]" + puts $f "set geometry(topheight) [winfo height .tf]" + if {$current_use_ttk} { + puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sashpos 0] 1\"" + puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sashpos 1] 1\"" + } else { + 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]" - array set view_save {} - array set views {} - if {![info exists permviews]} { set permviews {} } - foreach view $permviews { - set view_save([lindex $view 0]) 1 - set views([lindex $view 0]) $view - } - puts -nonewline $f "set permviews {" - for {set v 1} {$v < $current_nextviewnum} {incr v} { - if {$viewchanged($v)} { - if {$current_viewperm($v)} { - set views($current_viewname($v)) [list $current_viewname($v) $current_viewfiles($v) $current_viewargs($v) $current_viewargscmd($v)] - } else { - set view_save($current_viewname($v)) 0 - } - } - } - # write old and updated view to their places and append remaining to the end - foreach view $permviews { - set view_name [lindex $view 0] - if {$view_save($view_name)} { - puts $f "{$views($view_name)}" - } - unset views($view_name) - } - foreach view_name [array names views] { - puts $f "{$views($view_name)}" - } - puts $f "}" - close $f - file rename -force $config_file_tmp $config_file - set remove_tmp 0 + array set view_save {} + array set views {} + if {![info exists permviews]} { set permviews {} } + foreach view $permviews { + set view_save([lindex $view 0]) 1 + set views([lindex $view 0]) $view + } + puts -nonewline $f "set permviews {" + for {set v 1} {$v < $current_nextviewnum} {incr v} { + if {$viewchanged($v)} { + if {$current_viewperm($v)} { + set views($current_viewname($v)) [list $current_viewname($v) $current_viewfiles($v) $current_viewargs($v) $current_viewargscmd($v)] + } else { + set view_save($current_viewname($v)) 0 + } + } + } + # write old and updated view to their places and append remaining to the end + foreach view $permviews { + set view_name [lindex $view 0] + if {$view_save($view_name)} { + puts $f "{$views($view_name)}" + } + unset views($view_name) + } + foreach view_name [array names views] { + puts $f "{$views($view_name)}" + } + puts $f "}" + close $f + file rename -force $config_file_tmp $config_file + set remove_tmp 0 } err]} { puts "Error saving config: $err" } if {$remove_tmp} { - file delete -force $config_file_tmp + file delete -force $config_file_tmp } set stuffsaved 1 } @@ -2948,40 +2948,40 @@ proc savestuff {w} { proc resizeclistpanes {win w} { global oldwidth use_ttk if {[info exists oldwidth($win)]} { - if {$use_ttk} { - set s0 [$win sashpos 0] - set s1 [$win sashpos 1] - } else { - set s0 [$win sash coord 0] - set s1 [$win sash coord 1] - } - if {$w < 60} { - set sash0 [expr {int($w/2 - 2)}] - set sash1 [expr {int($w*5/6 - 2)}] - } else { - set factor [expr {1.0 * $w / $oldwidth($win)}] - set sash0 [expr {int($factor * [lindex $s0 0])}] - set sash1 [expr {int($factor * [lindex $s1 0])}] - if {$sash0 < 30} { - set sash0 30 - } - if {$sash1 < $sash0 + 20} { - set sash1 [expr {$sash0 + 20}] - } - if {$sash1 > $w - 10} { - set sash1 [expr {$w - 10}] - if {$sash0 > $sash1 - 20} { - set sash0 [expr {$sash1 - 20}] - } - } - } - if {$use_ttk} { - $win sashpos 0 $sash0 - $win sashpos 1 $sash1 - } else { - $win sash place 0 $sash0 [lindex $s0 1] - $win sash place 1 $sash1 [lindex $s1 1] - } + if {$use_ttk} { + set s0 [$win sashpos 0] + set s1 [$win sashpos 1] + } else { + set s0 [$win sash coord 0] + set s1 [$win sash coord 1] + } + if {$w < 60} { + set sash0 [expr {int($w/2 - 2)}] + set sash1 [expr {int($w*5/6 - 2)}] + } else { + set factor [expr {1.0 * $w / $oldwidth($win)}] + set sash0 [expr {int($factor * [lindex $s0 0])}] + set sash1 [expr {int($factor * [lindex $s1 0])}] + if {$sash0 < 30} { + set sash0 30 + } + if {$sash1 < $sash0 + 20} { + set sash1 [expr {$sash0 + 20}] + } + if {$sash1 > $w - 10} { + set sash1 [expr {$w - 10}] + if {$sash0 > $sash1 - 20} { + set sash0 [expr {$sash1 - 20}] + } + } + } + if {$use_ttk} { + $win sashpos 0 $sash0 + $win sashpos 1 $sash1 + } else { + $win sash place 0 $sash0 [lindex $s0 1] + $win sash place 1 $sash1 [lindex $s1 1] + } } set oldwidth($win) $w } @@ -2989,28 +2989,28 @@ proc resizeclistpanes {win w} { proc resizecdetpanes {win w} { global oldwidth use_ttk if {[info exists oldwidth($win)]} { - if {$use_ttk} { - set s0 [$win sashpos 0] - } else { - set s0 [$win sash coord 0] - } - if {$w < 60} { - set sash0 [expr {int($w*3/4 - 2)}] - } else { - set factor [expr {1.0 * $w / $oldwidth($win)}] - set sash0 [expr {int($factor * [lindex $s0 0])}] - if {$sash0 < 45} { - set sash0 45 - } - if {$sash0 > $w - 15} { - set sash0 [expr {$w - 15}] - } - } - if {$use_ttk} { - $win sashpos 0 $sash0 - } else { - $win sash place 0 $sash0 [lindex $s0 1] - } + if {$use_ttk} { + set s0 [$win sashpos 0] + } else { + set s0 [$win sash coord 0] + } + if {$w < 60} { + set sash0 [expr {int($w*3/4 - 2)}] + } else { + set factor [expr {1.0 * $w / $oldwidth($win)}] + set sash0 [expr {int($factor * [lindex $s0 0])}] + if {$sash0 < 45} { + set sash0 45 + } + if {$sash0 > $w - 15} { + set sash0 [expr {$w - 15}] + } + } + if {$use_ttk} { + $win sashpos 0 $sash0 + } else { + $win sash place 0 $sash0 [lindex $s0 1] + } } set oldwidth($win) $w } @@ -3033,8 +3033,8 @@ proc about {} { global bgcolor NS set w .about if {[winfo exists $w]} { - raise $w - return + raise $w + return } ttk_toplevel $w wm title $w [mc "About gitk"] @@ -3045,7 +3045,7 @@ Gitk - a commit viewer for git Copyright \u00a9 2005-2016 Paul Mackerras Use and redistribute under the terms of the GNU General Public License"] \ - -justify center -aspect 400 -border 2 -bg $bgcolor -relief groove + -justify center -aspect 400 -border 2 -bg $bgcolor -relief groove pack $w.m -side top -fill x -padx 2 -pady 2 ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active pack $w.ok -side bottom @@ -3059,13 +3059,13 @@ proc keys {} { global bgcolor NS set w .keys if {[winfo exists $w]} { - raise $w - return + raise $w + return } if {[tk windowingsystem] eq {aqua}} { - set M1T Cmd + set M1T Cmd } else { - set M1T Ctrl + set M1T Ctrl } ttk_toplevel $w wm title $w [mc "Gitk key bindings"] @@ -3112,7 +3112,7 @@ proc keys {} { [mc "<%s-minus> Decrease font size" $M1T] [mc "<F5> Update"] " \ - -justify left -bg $bgcolor -border 2 -relief groove + -justify left -bg $bgcolor -border 2 -relief groove pack $w.m -side top -fill both -padx 2 -pady 2 ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active bind $w <Key-Escape> [list destroy $w] @@ -3139,68 +3139,68 @@ proc treeview {w l openlevs} { set treecontents() {} $w conf -state normal foreach f $l { - while {[string range $f 0 $prefixend] ne $prefix} { - if {$lev <= $openlevs} { - $w mark set e:$treeindex($prefix) "end -1c" - $w mark gravity e:$treeindex($prefix) left - } - set treeheight($prefix) $ht - incr ht [lindex $htstack end] - set htstack [lreplace $htstack end end] - set prefixend [lindex $prefendstack end] - set prefendstack [lreplace $prefendstack end end] - set prefix [string range $prefix 0 $prefixend] - incr lev -1 - } - set tail [string range $f [expr {$prefixend+1}] end] - while {[set slash [string first "/" $tail]] >= 0} { - lappend htstack $ht - set ht 0 - lappend prefendstack $prefixend - incr prefixend [expr {$slash + 1}] - set d [string range $tail 0 $slash] - lappend treecontents($prefix) $d - set oldprefix $prefix - append prefix $d - set treecontents($prefix) {} - set treeindex($prefix) [incr ix] - set treeparent($prefix) $oldprefix - set tail [string range $tail [expr {$slash+1}] end] - if {$lev <= $openlevs} { - set ht 1 - set treediropen($prefix) [expr {$lev < $openlevs}] - set bm [expr {$lev == $openlevs? "tri-rt": "tri-dn"}] - $w mark set d:$ix "end -1c" - $w mark gravity d:$ix left - set str "\n" - for {set i 0} {$i < $lev} {incr i} {append str "\t"} - $w insert end $str - $w image create end -align center -image $bm -padx 1 \ - -name a:$ix - $w insert end $d [highlight_tag $prefix] - $w mark set s:$ix "end -1c" - $w mark gravity s:$ix left - } - incr lev - } - if {$tail ne {}} { - if {$lev <= $openlevs} { - incr ht - set str "\n" - for {set i 0} {$i < $lev} {incr i} {append str "\t"} - $w insert end $str - $w insert end $tail [highlight_tag $f] - } - lappend treecontents($prefix) $tail - } + while {[string range $f 0 $prefixend] ne $prefix} { + if {$lev <= $openlevs} { + $w mark set e:$treeindex($prefix) "end -1c" + $w mark gravity e:$treeindex($prefix) left + } + set treeheight($prefix) $ht + incr ht [lindex $htstack end] + set htstack [lreplace $htstack end end] + set prefixend [lindex $prefendstack end] + set prefendstack [lreplace $prefendstack end end] + set prefix [string range $prefix 0 $prefixend] + incr lev -1 + } + set tail [string range $f [expr {$prefixend+1}] end] + while {[set slash [string first "/" $tail]] >= 0} { + lappend htstack $ht + set ht 0 + lappend prefendstack $prefixend + incr prefixend [expr {$slash + 1}] + set d [string range $tail 0 $slash] + lappend treecontents($prefix) $d + set oldprefix $prefix + append prefix $d + set treecontents($prefix) {} + set treeindex($prefix) [incr ix] + set treeparent($prefix) $oldprefix + set tail [string range $tail [expr {$slash+1}] end] + if {$lev <= $openlevs} { + set ht 1 + set treediropen($prefix) [expr {$lev < $openlevs}] + set bm [expr {$lev == $openlevs? "tri-rt": "tri-dn"}] + $w mark set d:$ix "end -1c" + $w mark gravity d:$ix left + set str "\n" + for {set i 0} {$i < $lev} {incr i} {append str "\t"} + $w insert end $str + $w image create end -align center -image $bm -padx 1 \ + -name a:$ix + $w insert end $d [highlight_tag $prefix] + $w mark set s:$ix "end -1c" + $w mark gravity s:$ix left + } + incr lev + } + if {$tail ne {}} { + if {$lev <= $openlevs} { + incr ht + set str "\n" + for {set i 0} {$i < $lev} {incr i} {append str "\t"} + $w insert end $str + $w insert end $tail [highlight_tag $f] + } + lappend treecontents($prefix) $tail + } } while {$htstack ne {}} { - set treeheight($prefix) $ht - incr ht [lindex $htstack end] - set htstack [lreplace $htstack end end] - set prefixend [lindex $prefendstack end] - set prefendstack [lreplace $prefendstack end end] - set prefix [string range $prefix 0 $prefixend] + set treeheight($prefix) $ht + incr ht [lindex $htstack end] + set htstack [lreplace $htstack end end] + set prefixend [lindex $prefendstack end] + set prefendstack [lreplace $prefendstack end end] + set prefix [string range $prefix 0 $prefixend] } $w conf -state disabled } @@ -3211,21 +3211,21 @@ proc linetoelt {l} { set y 2 set prefix {} while {1} { - foreach e $treecontents($prefix) { - if {$y == $l} { - return "$prefix$e" - } - set n 1 - if {[string index $e end] eq "/"} { - set n $treeheight($prefix$e) - if {$y + $n > $l} { - append prefix $e - incr y - break - } - } - incr y $n - } + foreach e $treecontents($prefix) { + if {$y == $l} { + return "$prefix$e" + } + set n 1 + if {[string index $e end] eq "/"} { + set n $treeheight($prefix$e) + if {$y + $n > $l} { + append prefix $e + incr y + break + } + } + incr y $n + } } } @@ -3233,14 +3233,14 @@ proc highlight_tree {y prefix} { global treeheight treecontents cflist foreach e $treecontents($prefix) { - set path $prefix$e - if {[highlight_tag $path] ne {}} { - $cflist tag add bold $y.0 "$y.0 lineend" - } - incr y - if {[string index $e end] eq "/" && $treeheight($path) > 1} { - set y [highlight_tree $y $path] - } + set path $prefix$e + if {[highlight_tag $path] ne {}} { + $cflist tag add bold $y.0 "$y.0 lineend" + } + incr y + if {[string index $e end] eq "/" && $treeheight($path) > 1} { + set y [highlight_tree $y $path] + } } return $y } @@ -3256,8 +3256,8 @@ proc treeclosedir {w dir} { $w conf -state disabled set n [expr {1 - $treeheight($dir)}] while {$dir ne {}} { - incr treeheight($dir) $n - set dir $treeparent($dir) + incr treeheight($dir) $n + set dir $treeparent($dir) } } @@ -3273,28 +3273,28 @@ proc treeopendir {w dir} { set str "\n" set n [llength $treecontents($dir)] for {set x $dir} {$x ne {}} {set x $treeparent($x)} { - incr lev - append str "\t" - incr treeheight($x) $n + incr lev + append str "\t" + incr treeheight($x) $n } foreach e $treecontents($dir) { - set de $dir$e - if {[string index $e end] eq "/"} { - set iy $treeindex($de) - $w mark set d:$iy e:$ix - $w mark gravity d:$iy left - $w insert e:$ix $str - set treediropen($de) 0 - $w image create e:$ix -align center -image tri-rt -padx 1 \ - -name a:$iy - $w insert e:$ix $e [highlight_tag $de] - $w mark set s:$iy e:$ix - $w mark gravity s:$iy left - set treeheight($de) 1 - } else { - $w insert e:$ix $str - $w insert e:$ix $e [highlight_tag $de] - } + set de $dir$e + if {[string index $e end] eq "/"} { + set iy $treeindex($de) + $w mark set d:$iy e:$ix + $w mark gravity d:$iy left + $w insert e:$ix $str + set treediropen($de) 0 + $w image create e:$ix -align center -image tri-rt -padx 1 \ + -name a:$iy + $w insert e:$ix $e [highlight_tag $de] + $w mark set s:$iy e:$ix + $w mark gravity s:$iy left + set treeheight($de) 1 + } else { + $w insert e:$ix $str + $w insert e:$ix $e [highlight_tag $de] + } } $w mark gravity e:$ix right $w conf -state disabled @@ -3303,13 +3303,13 @@ proc treeopendir {w dir} { set ht [$w cget -height] set l [lindex [split [$w index s:$ix] .] 0] if {$l < $top} { - $w yview $l.0 + $w yview $l.0 } elseif {$l + $n + 1 > $top + $ht} { - set top [expr {$l + $n + 2 - $ht}] - if {$l < $top} { - set top $l - } - $w yview $top.0 + set top [expr {$l + $n + 2 - $ht}] + if {$l < $top} { + set top $l + } + $w yview $top.0 } } @@ -3323,16 +3323,16 @@ proc treeclick {w x y} { $cflist tag add highlight $l.0 "$l.0 lineend" set cflist_top $l if {$l == 1} { - $ctext yview 1.0 - return + $ctext yview 1.0 + return } set e [linetoelt $l] if {[string index $e end] ne "/"} { - showfile $e + showfile $e } elseif {$treediropen($e)} { - treeclosedir $w $e + treeclosedir $w $e } else { - treeopendir $w $e + treeopendir $w $e } } @@ -3341,10 +3341,10 @@ proc setfilelist {id} { treeview $cflist $treefilelist($id) 0 if {$jump_to_here ne {}} { - set f [lindex $jump_to_here 0] - if {[lsearch -exact $treefilelist($id) $f] >= 0} { - showfile $f - } + set f [lindex $jump_to_here 0] + if {[lsearch -exact $treefilelist($id) $f] >= 0} { + showfile $f + } } } @@ -3419,11 +3419,11 @@ proc init_flist {first} { $cflist conf -state normal $cflist delete 0.0 end if {$first ne {}} { - $cflist insert end $first - set cflist_top 1 - $cflist tag add highlight 1.0 "1.0 lineend" + $cflist insert end $first + set cflist_top 1 + $cflist tag add highlight 1.0 "1.0 lineend" } else { - unset -nocomplain cflist_top + unset -nocomplain cflist_top } $cflist conf -state disabled set difffilestart {} @@ -3433,9 +3433,9 @@ proc highlight_tag {f} { global highlight_paths foreach p $highlight_paths { - if {[string match $p $f]} { - return "bold" - } + if {[string match $p $f]} { + return "bold" + } } return {} } @@ -3445,15 +3445,15 @@ proc highlight_filelist {} { $cflist conf -state normal if {$cmitmode ne "tree"} { - set end [lindex [split [$cflist index end] .] 0] - for {set l 2} {$l < $end} {incr l} { - set line [$cflist get $l.0 "$l.0 lineend"] - if {[highlight_tag $line] ne {}} { - $cflist tag add bold $l.0 "$l.0 lineend" - } - } + set end [lindex [split [$cflist index end] .] 0] + for {set l 2} {$l < $end} {incr l} { + set line [$cflist get $l.0 "$l.0 lineend"] + if {[highlight_tag $line] ne {}} { + $cflist tag add bold $l.0 "$l.0 lineend" + } + } } else { - highlight_tree 2 {} + highlight_tree 2 {} } $cflist conf -state disabled } @@ -3471,8 +3471,8 @@ proc add_flist {fl} { $cflist conf -state normal foreach f $fl { - $cflist insert end "\n" - $cflist insert end $f [highlight_tag $f] + $cflist insert end "\n" + $cflist insert end $f [highlight_tag $f] } $cflist conf -state disabled } @@ -3487,9 +3487,9 @@ proc sel_flist {w x y} { $cflist tag add highlight $l.0 "$l.0 lineend" set cflist_top $l if {$l == 1} { - $ctext yview 1.0 + $ctext yview 1.0 } else { - catch {$ctext yview [lindex $difffilestart [expr {$l - 2}]]} + catch {$ctext yview [lindex $difffilestart [expr {$l - 2}]]} } suppress_highlighting_file_for_current_scrollpos } @@ -3502,15 +3502,15 @@ proc pop_flist_menu {w X Y x y} { set l [lindex [split [$w index "@$x,$y"] "."] 0] if {$l <= 1} return if {$cmitmode eq "tree"} { - set e [linetoelt $l] - if {[string index $e end] eq "/"} return + set e [linetoelt $l] + if {[string index $e end] eq "/"} return } else { - set e [lindex $treediffs($diffids) [expr {$l-2}]] + set e [lindex $treediffs($diffids) [expr {$l-2}]] } set flist_menu_file $e set xdiffstate "normal" if {$cmitmode eq "tree"} { - set xdiffstate "disabled" + set xdiffstate "disabled" } # Disable "External diff" item in tree mode $flist_menu entryconf 2 -state $xdiffstate @@ -3539,7 +3539,7 @@ proc pop_diff_menu {w X Y x y} { set diff_menu_line [lindex $diff_menu_txtpos 0] # don't pop up the menu on hunk-separator or file-separator lines if {[lsearch -glob [$ctext tag names $diff_menu_line.0] "*sep"] >= 0} { - return + return } stopfinding set f [find_ctext_fileinfo $diff_menu_line] @@ -3554,9 +3554,9 @@ proc flist_hl {only} { set x [shellquote $flist_menu_file] if {$only || $findstring eq {} || $gdttype ne [mc "touching paths:"]} { - set findstring $x + set findstring $x } else { - append findstring " " $x + append findstring " " $x } set gdttype [mc "touching paths:"] } @@ -3565,29 +3565,29 @@ proc gitknewtmpdir {} { global diffnum gitktmpdir gitdir env if {![info exists gitktmpdir]} { - if {[info exists env(GITK_TMPDIR)]} { - set tmpdir $env(GITK_TMPDIR) - } elseif {[info exists env(TMPDIR)]} { - set tmpdir $env(TMPDIR) - } else { - set tmpdir $gitdir - } - set gitktmpformat [file join $tmpdir ".gitk-tmp.XXXXXX"] - if {[catch {set gitktmpdir [exec mktemp -d $gitktmpformat]}]} { - set gitktmpdir [file join $gitdir [format ".gitk-tmp.%s" [pid]]] - } - if {[catch {file mkdir $gitktmpdir} err]} { - error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err" - unset gitktmpdir - return {} - } - set diffnum 0 + if {[info exists env(GITK_TMPDIR)]} { + set tmpdir $env(GITK_TMPDIR) + } elseif {[info exists env(TMPDIR)]} { + set tmpdir $env(TMPDIR) + } else { + set tmpdir $gitdir + } + set gitktmpformat [file join $tmpdir ".gitk-tmp.XXXXXX"] + if {[catch {set gitktmpdir [exec mktemp -d $gitktmpformat]}]} { + set gitktmpdir [file join $gitdir [format ".gitk-tmp.%s" [pid]]] + } + if {[catch {file mkdir $gitktmpdir} err]} { + error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err" + unset gitktmpdir + return {} + } + set diffnum 0 } incr diffnum set diffdir [file join $gitktmpdir $diffnum] if {[catch {file mkdir $diffdir} err]} { - error_popup "[mc "Error creating temporary directory %s:" $diffdir] $err" - return {} + error_popup "[mc "Error creating temporary directory %s:" $diffdir] $err" + return {} } return $diffdir } @@ -3596,11 +3596,11 @@ proc save_file_from_commit {filename output what} { global nullfile if {[catch {exec git show $filename -- > $output} err]} { - if {[string match "fatal: bad revision *" $err]} { - return $nullfile - } - error_popup "[mc "Error getting \"%s\" from %s:" $filename $what] $err" - return {} + if {[string match "fatal: bad revision *" $err]} { + return $nullfile + } + error_popup "[mc "Error getting \"%s\" from %s:" $filename $what] $err" + return {} } return $output } @@ -3611,10 +3611,10 @@ proc external_diff_get_one_file {diffid filename diffdir} { if {$diffid == $nullid} { set difffile [file join $worktree $filename] - if {[file exists $difffile]} { - return $difffile - } - return $nullfile + if {[file exists $difffile]} { + return $difffile + } + return $nullfile } if {$diffid == $nullid2} { set difffile [file join $diffdir "\[index\] [file tail $filename]"] @@ -3622,7 +3622,7 @@ proc external_diff_get_one_file {diffid filename diffdir} { } set difffile [file join $diffdir "\[$diffid\] [file tail $filename]"] return [save_file_from_commit $diffid:$filename $difffile \ - "revision $diffid"] + "revision $diffid"] } proc external_diff {} { @@ -3679,18 +3679,18 @@ proc find_hunk_blamespec {base line} { set s_line [$ctext get $s_lix "$s_lix + 1 lines"] if {![regexp {^@@@*(( -\d+(,\d+)?)+) \+(\d+)(,\d+)? @@} $s_line \ - s_line old_specs osz osz1 new_line nsz]} { - return + s_line old_specs osz osz1 new_line nsz]} { + return } # base lines for the parents set base_lines [list $new_line] foreach old_spec [lrange [split $old_specs " "] 1 end] { - if {![regexp -- {-(\d+)(,\d+)?} $old_spec \ - old_spec old_line osz]} { - return - } - lappend base_lines $old_line + if {![regexp -- {-(\d+)(,\d+)?} $old_spec \ + old_spec old_line osz]} { + return + } + lappend base_lines $old_line } # Now scan the lines to determine offset within the hunk @@ -3701,38 +3701,38 @@ proc find_hunk_blamespec {base line} { # Determine if the line is removed set chunk [$ctext get $line.0 "$line.1 + $max_parent chars"] if {[string match {[-+ ]*} $chunk]} { - set removed_idx [string first "-" $chunk] - # Choose a parent index - if {$removed_idx >= 0} { - set parent $removed_idx - } else { - set unchanged_idx [string first " " $chunk] - if {$unchanged_idx >= 0} { - set parent $unchanged_idx - } else { - # blame the current commit - set parent -1 - } - } - # then count other lines that belong to it - for {set i $line} {[incr i -1] > $s_lno} {} { - set chunk [$ctext get $i.0 "$i.1 + $max_parent chars"] - # Determine if the line is removed - set removed_idx [string first "-" $chunk] - if {$parent >= 0} { - set code [string index $chunk $parent] - if {$code eq "-" || ($removed_idx < 0 && $code ne "+")} { - incr dline - } - } else { - if {$removed_idx < 0} { - incr dline - } - } - } - incr parent + set removed_idx [string first "-" $chunk] + # Choose a parent index + if {$removed_idx >= 0} { + set parent $removed_idx + } else { + set unchanged_idx [string first " " $chunk] + if {$unchanged_idx >= 0} { + set parent $unchanged_idx + } else { + # blame the current commit + set parent -1 + } + } + # then count other lines that belong to it + for {set i $line} {[incr i -1] > $s_lno} {} { + set chunk [$ctext get $i.0 "$i.1 + $max_parent chars"] + # Determine if the line is removed + set removed_idx [string first "-" $chunk] + if {$parent >= 0} { + set code [string index $chunk $parent] + if {$code eq "-" || ($removed_idx < 0 && $code ne "+")} { + incr dline + } + } else { + if {$removed_idx < 0} { + incr dline + } + } + } + incr parent } else { - set parent 0 + set parent 0 } incr dline [lindex $base_lines $parent] @@ -3745,17 +3745,17 @@ proc external_blame_diff {} { global diff_menu_filebase flist_menu_file if {$cmitmode eq "tree"} { - set parent_idx 0 - set line [expr {$diff_menu_line - $diff_menu_filebase}] + set parent_idx 0 + set line [expr {$diff_menu_line - $diff_menu_filebase}] } else { - set hinfo [find_hunk_blamespec $diff_menu_filebase $diff_menu_line] - if {$hinfo ne {}} { - set parent_idx [lindex $hinfo 0] - set line [lindex $hinfo 1] - } else { - set parent_idx 0 - set line 0 - } + set hinfo [find_hunk_blamespec $diff_menu_filebase $diff_menu_line] + if {$hinfo ne {}} { + set parent_idx [lindex $hinfo 0] + set line [lindex $hinfo 1] + } else { + set parent_idx 0 + set line 0 + } } external_blame $parent_idx $line @@ -3766,12 +3766,12 @@ proc external_blame_diff {} { proc index_sha1 {fname} { set f [open [list | git ls-files -s $fname] r] while {[gets $f line] >= 0} { - set info [lindex [split $line "\t"] 0] - set stage [lindex $info 2] - if {$stage eq "0" || $stage eq "2"} { - close $f - return [lindex $info 1] - } + set info [lindex [split $line "\t"] 0] + set stage [lindex $info 2] + if {$stage eq "0" || $stage eq "2"} { + close $f + return [lindex $info 1] + } } close $f return {} @@ -3780,7 +3780,7 @@ proc index_sha1 {fname} { # Turn an absolute path into one relative to the current directory proc make_relative {f} { if {[file pathtype $f] eq "relative"} { - return $f + return $f } set elts [file split $f] set here [file split [pwd]] @@ -3788,12 +3788,12 @@ proc make_relative {f} { set hi 0 set res {} foreach d $here { - if {$ei < $hi || $ei >= [llength $elts] || [lindex $elts $ei] ne $d} { - lappend res ".." - } else { - incr ei - } - incr hi + if {$ei < $hi || $ei >= [llength $elts] || [lindex $elts $ei] ne $d} { + lappend res ".." + } else { + incr ei + } + incr hi } set elts [concat $res [lrange $elts $ei end]] return [eval file join $elts] @@ -3805,19 +3805,19 @@ proc external_blame {parent_idx {line {}}} { global parentlist selectedline currentid if {$parent_idx > 0} { - set base_commit [lindex $parentlist $selectedline [expr {$parent_idx-1}]] + set base_commit [lindex $parentlist $selectedline [expr {$parent_idx-1}]] } else { - set base_commit $currentid + set base_commit $currentid } if {$base_commit eq {} || $base_commit eq $nullid || $base_commit eq $nullid2} { - error_popup [mc "No such commit"] - return + error_popup [mc "No such commit"] + return } set cmdline [list git gui blame] if {$line ne {} && $line > 1} { - lappend cmdline "--line=$line" + lappend cmdline "--line=$line" } set f [file join $cdup $flist_menu_file] # Unfortunately it seems git gui blame doesn't like @@ -3825,7 +3825,7 @@ proc external_blame {parent_idx {line {}}} { set f [make_relative $f] lappend cmdline $base_commit $f if {[catch {eval exec $cmdline &} err]} { - error_popup "[mc "git gui blame: command failed:"] $err" + error_popup "[mc "git gui blame: command failed:"] $err" } } @@ -3836,61 +3836,61 @@ proc show_line_source {} { set from_index {} if {$cmitmode eq "tree"} { - set id $currentid - set line [expr {$diff_menu_line - $diff_menu_filebase}] + set id $currentid + set line [expr {$diff_menu_line - $diff_menu_filebase}] } else { - set h [find_hunk_blamespec $diff_menu_filebase $diff_menu_line] - if {$h eq {}} return - set pi [lindex $h 0] - if {$pi == 0} { - mark_ctext_line $diff_menu_line - return - } - incr pi -1 - if {$currentid eq $nullid} { - if {$pi > 0} { - # must be a merge in progress... - if {[catch { - # get the last line from .git/MERGE_HEAD - set f [open [file join $gitdir MERGE_HEAD] r] - set id [lindex [split [read $f] "\n"] end-1] - close $f - } err]} { - error_popup [mc "Couldn't read merge head: %s" $err] - return - } - } elseif {$parents($curview,$currentid) eq $nullid2} { - # need to do the blame from the index - if {[catch { - set from_index [index_sha1 $flist_menu_file] - } err]} { - error_popup [mc "Error reading index: %s" $err] - return - } - } else { - set id $parents($curview,$currentid) - } - } else { - set id [lindex $parents($curview,$currentid) $pi] - } - set line [lindex $h 1] + set h [find_hunk_blamespec $diff_menu_filebase $diff_menu_line] + if {$h eq {}} return + set pi [lindex $h 0] + if {$pi == 0} { + mark_ctext_line $diff_menu_line + return + } + incr pi -1 + if {$currentid eq $nullid} { + if {$pi > 0} { + # must be a merge in progress... + if {[catch { + # get the last line from .git/MERGE_HEAD + set f [open [file join $gitdir MERGE_HEAD] r] + set id [lindex [split [read $f] "\n"] end-1] + close $f + } err]} { + error_popup [mc "Couldn't read merge head: %s" $err] + return + } + } elseif {$parents($curview,$currentid) eq $nullid2} { + # need to do the blame from the index + if {[catch { + set from_index [index_sha1 $flist_menu_file] + } err]} { + error_popup [mc "Error reading index: %s" $err] + return + } + } else { + set id $parents($curview,$currentid) + } + } else { + set id [lindex $parents($curview,$currentid) $pi] + } + set line [lindex $h 1] } set blameargs {} if {$from_index ne {}} { - lappend blameargs | git cat-file blob $from_index + lappend blameargs | git cat-file blob $from_index } lappend blameargs | git blame -p -L$line,+1 if {$from_index ne {}} { - lappend blameargs --contents - + lappend blameargs --contents - } else { - lappend blameargs $id + lappend blameargs $id } lappend blameargs -- [file join $cdup $flist_menu_file] if {[catch { - set f [open $blameargs r] + set f [open $blameargs r] } err]} { - error_popup [mc "Couldn't start git blame: %s" $err] - return + error_popup [mc "Couldn't start git blame: %s" $err] + return } nowbusy blaming [mc "Searching"] fconfigure $f -blocking 0 @@ -3904,9 +3904,9 @@ proc stopblaming {} { global blameinst if {[info exists blameinst]} { - stop_instance $blameinst - unset blameinst - notbusy blaming + stop_instance $blameinst + unset blameinst + notbusy blaming } } @@ -3914,18 +3914,18 @@ proc read_line_source {fd inst} { global blamestuff curview commfd blameinst nullid nullid2 while {[gets $fd line] >= 0} { - lappend blamestuff($inst) $line + lappend blamestuff($inst) $line } if {![eof $fd]} { - return 1 + return 1 } unset commfd($inst) unset blameinst notbusy blaming fconfigure $fd -blocking 1 if {[catch {close $fd} err]} { - error_popup [mc "Error running git blame: %s" $err] - return 0 + error_popup [mc "Error running git blame: %s" $err] + return 0 } set fname {} @@ -3933,30 +3933,30 @@ proc read_line_source {fd inst} { set id [lindex $line 0] set lnum [lindex $line 1] if {[string length $id] == 40 && [string is xdigit $id] && - [string is digit -strict $lnum]} { - # look for "filename" line - foreach l $blamestuff($inst) { - if {[string match "filename *" $l]} { - set fname [string range $l 9 end] - break - } - } + [string is digit -strict $lnum]} { + # look for "filename" line + foreach l $blamestuff($inst) { + if {[string match "filename *" $l]} { + set fname [string range $l 9 end] + break + } + } } if {$fname ne {}} { - # all looks good, select it - if {$id eq $nullid} { - # blame uses all-zeroes to mean not committed, - # which would mean a change in the index - set id $nullid2 - } - if {[commitinview $id $curview]} { - selectline [rowofcommit $id] 1 [list $fname $lnum] 1 - } else { - error_popup [mc "That line comes from commit %s, \ - which is not in this view" [shortids $id]] - } + # all looks good, select it + if {$id eq $nullid} { + # blame uses all-zeroes to mean not committed, + # which would mean a change in the index + set id $nullid2 + } + if {[commitinview $id $curview]} { + selectline [rowofcommit $id] 1 [list $fname $lnum] 1 + } else { + error_popup [mc "That line comes from commit %s, \ + which is not in this view" [shortids $id]] + } } else { - puts "oops couldn't parse git blame output" + puts "oops couldn't parse git blame output" } return 0 } @@ -3965,11 +3965,11 @@ proc read_line_source {fd inst} { proc delete_at_eof {f dir} { while {[gets $f line] >= 0} {} if {[eof $f]} { - if {[catch {close $f} err]} { - error_popup "[mc "External diff viewer failed:"] $err" - } - file delete -force $dir - return 0 + if {[catch {close $f} err]} { + error_popup "[mc "External diff viewer failed:"] $err" + } + file delete -force $dir + return 0 } return 1 } @@ -3978,13 +3978,13 @@ proc delete_at_eof {f dir} { proc shellquote {str} { if {![string match "*\['\"\\ \t]*" $str]} { - return $str + return $str } if {![string match "*\['\"\\]*" $str]} { - return "\"$str\"" + return "\"$str\"" } if {![string match "*'*" $str]} { - return "'$str'" + return "'$str'" } return "\"[string map {\" \\\" \\ \\\\} $str]\"" } @@ -3992,10 +3992,10 @@ proc shellquote {str} { proc shellarglist {l} { set str {} foreach a $l { - if {$str ne {}} { - append str " " - } - append str [shellquote $a] + if {$str ne {}} { + append str " " + } + append str [shellquote $a] } return $str } @@ -4004,52 +4004,52 @@ proc shelldequote {str} { set ret {} set used -1 while {1} { - incr used - if {![regexp -start $used -indices "\['\"\\\\ \t]" $str first]} { - append ret [string range $str $used end] - set used [string length $str] - break - } - set first [lindex $first 0] - set ch [string index $str $first] - if {$first > $used} { - append ret [string range $str $used [expr {$first - 1}]] - set used $first - } - if {$ch eq " " || $ch eq "\t"} break - incr used - if {$ch eq "'"} { - set first [string first "'" $str $used] - if {$first < 0} { - error "unmatched single-quote" - } - append ret [string range $str $used [expr {$first - 1}]] - set used $first - continue - } - if {$ch eq "\\"} { - if {$used >= [string length $str]} { - error "trailing backslash" - } - append ret [string index $str $used] - continue - } - # here ch == "\"" - while {1} { - if {![regexp -start $used -indices "\[\"\\\\]" $str first]} { - error "unmatched double-quote" - } - set first [lindex $first 0] - set ch [string index $str $first] - if {$first > $used} { - append ret [string range $str $used [expr {$first - 1}]] - set used $first - } - if {$ch eq "\""} break - incr used - append ret [string index $str $used] - incr used - } + incr used + if {![regexp -start $used -indices "\['\"\\\\ \t]" $str first]} { + append ret [string range $str $used end] + set used [string length $str] + break + } + set first [lindex $first 0] + set ch [string index $str $first] + if {$first > $used} { + append ret [string range $str $used [expr {$first - 1}]] + set used $first + } + if {$ch eq " " || $ch eq "\t"} break + incr used + if {$ch eq "'"} { + set first [string first "'" $str $used] + if {$first < 0} { + error "unmatched single-quote" + } + append ret [string range $str $used [expr {$first - 1}]] + set used $first + continue + } + if {$ch eq "\\"} { + if {$used >= [string length $str]} { + error "trailing backslash" + } + append ret [string index $str $used] + continue + } + # here ch == "\"" + while {1} { + if {![regexp -start $used -indices "\[\"\\\\]" $str first]} { + error "unmatched double-quote" + } + set first [lindex $first 0] + set ch [string index $str $first] + if {$first > $used} { + append ret [string range $str $used [expr {$first - 1}]] + set used $first + } + if {$ch eq "\""} break + incr used + append ret [string index $str $used] + incr used + } } return [list $used $ret] } @@ -4057,13 +4057,13 @@ proc shelldequote {str} { proc shellsplit {str} { set l {} while {1} { - set str [string trimleft $str] - if {$str eq {}} break - set dq [shelldequote $str] - set n [lindex $dq 0] - set word [lindex $dq 1] - set str [string range $str $n end] - lappend l $word + set str [string trimleft $str] + if {$str eq {}} break + set dq [shelldequote $str] + set n [lindex $dq 0] + set word [lindex $dq 1] + set str [string range $str $n end] + lappend l $word } return $l } @@ -4072,11 +4072,11 @@ proc set_window_title {} { global appname curview viewname vrevs set rev [mc "All files"] if {$curview ne 0} { - if {$viewname($curview) eq [mc "Command line"]} { - set rev [string map {"--gitk-symmetric-diff-marker" "--merge"} $vrevs($curview)] - } else { - set rev $viewname($curview) - } + if {$viewname($curview) eq [mc "Command line"]} { + set rev [string map {"--gitk-symmetric-diff-marker" "--merge"} $vrevs($curview)] + } else { + set rev $viewname($curview) + } } wm title . "[reponame]: $rev - $appname" } @@ -4090,8 +4090,8 @@ proc newview {ishighlight} { set newishighlight $ishighlight set top .gitkview if {[winfo exists $top]} { - raise $top - return + raise $top + return } decode_view_opts $nextviewnum $revtreeargs set newviewname($nextviewnum) "[mc "View"] $nextviewnum" @@ -4140,29 +4140,29 @@ proc encode_view_opts {n} { set rargs [list] foreach opt $known_view_options { - set patterns [lindex $opt 3] - if {$patterns eq {}} continue - set pattern [lindex $patterns 0] + set patterns [lindex $opt 3] + if {$patterns eq {}} continue + set pattern [lindex $patterns 0] - if {[lindex $opt 1] eq "b"} { - set val $newviewopts($n,[lindex $opt 0]) - if {$val} { - lappend rargs $pattern - } - } elseif {[regexp {^r(\d+)$} [lindex $opt 1] type value]} { - regexp {^(.*_)} [lindex $opt 0] uselessvar button_id - set val $newviewopts($n,$button_id) - if {$val eq $value} { - lappend rargs $pattern - } - } else { - set val $newviewopts($n,[lindex $opt 0]) - set val [string trim $val] - if {$val ne {}} { - set pfix [string range $pattern 0 end-1] - lappend rargs $pfix$val - } - } + if {[lindex $opt 1] eq "b"} { + set val $newviewopts($n,[lindex $opt 0]) + if {$val} { + lappend rargs $pattern + } + } elseif {[regexp {^r(\d+)$} [lindex $opt 1] type value]} { + regexp {^(.*_)} [lindex $opt 0] uselessvar button_id + set val $newviewopts($n,$button_id) + if {$val eq $value} { + lappend rargs $pattern + } + } else { + set val $newviewopts($n,[lindex $opt 0]) + set val [string trim $val] + if {$val ne {}} { + set pfix [string range $pattern 0 end-1] + lappend rargs $pfix$val + } + } } set rargs [concat $rargs [shellsplit $newviewopts($n,refs)]] return [concat $rargs [shellsplit $newviewopts($n,args)]] @@ -4173,59 +4173,59 @@ proc decode_view_opts {n view_args} { global known_view_options newviewopts foreach opt $known_view_options { - set id [lindex $opt 0] - if {[lindex $opt 1] eq "b"} { - # Checkboxes - set val 0 + set id [lindex $opt 0] + if {[lindex $opt 1] eq "b"} { + # Checkboxes + set val 0 } elseif {[regexp {^r(\d+)$} [lindex $opt 1]]} { - # Radiobuttons - regexp {^(.*_)} $id uselessvar id - set val 0 - } else { - # Text fields - set val {} - } - set newviewopts($n,$id) $val + # Radiobuttons + regexp {^(.*_)} $id uselessvar id + set val 0 + } else { + # Text fields + set val {} + } + set newviewopts($n,$id) $val } set oargs [list] set refargs [list] foreach arg $view_args { - if {[regexp -- {^-([0-9]+)$} $arg arg cnt] - && ![info exists found(limit)]} { - set newviewopts($n,limit) $cnt - set found(limit) 1 - continue - } - catch { unset val } - foreach opt $known_view_options { - set id [lindex $opt 0] - if {[info exists found($id)]} continue - foreach pattern [lindex $opt 3] { - if {![string match $pattern $arg]} continue - if {[lindex $opt 1] eq "b"} { - # Check buttons - set val 1 - } elseif {[regexp {^r(\d+)$} [lindex $opt 1] match num]} { - # Radio buttons - regexp {^(.*_)} $id uselessvar id - set val $num - } else { - # Text input fields - set size [string length $pattern] - set val [string range $arg [expr {$size-1}] end] - } - set newviewopts($n,$id) $val - set found($id) 1 - break - } - if {[info exists val]} break - } - if {[info exists val]} continue - if {[regexp {^-} $arg]} { - lappend oargs $arg - } else { - lappend refargs $arg - } + if {[regexp -- {^-([0-9]+)$} $arg arg cnt] + && ![info exists found(limit)]} { + set newviewopts($n,limit) $cnt + set found(limit) 1 + continue + } + catch { unset val } + foreach opt $known_view_options { + set id [lindex $opt 0] + if {[info exists found($id)]} continue + foreach pattern [lindex $opt 3] { + if {![string match $pattern $arg]} continue + if {[lindex $opt 1] eq "b"} { + # Check buttons + set val 1 + } elseif {[regexp {^r(\d+)$} [lindex $opt 1] match num]} { + # Radio buttons + regexp {^(.*_)} $id uselessvar id + set val $num + } else { + # Text input fields + set size [string length $pattern] + set val [string range $arg [expr {$size-1}] end] + } + set newviewopts($n,$id) $val + set found($id) 1 + break + } + if {[info exists val]} break + } + if {[info exists val]} continue + if {[regexp {^-} $arg]} { + lappend oargs $arg + } else { + lappend refargs $arg + } } set newviewopts($n,refs) [shellarglist $refargs] set newviewopts($n,args) [shellarglist $oargs] @@ -4235,9 +4235,9 @@ proc edit_or_newview {} { global curview if {$curview > 0} { - editview + editview } else { - newview 0 + newview 0 } } @@ -4248,8 +4248,8 @@ proc editview {} { set top .gitkvedit-$curview if {[winfo exists $top]} { - raise $top - return + raise $top + return } decode_view_opts $curview $viewargs($curview) set newviewname($curview) $viewname($curview) @@ -4279,66 +4279,66 @@ proc vieweditor {top n title} { set cexpand 0 set cnt 0 foreach opt $known_view_options { - set id [lindex $opt 0] - set type [lindex $opt 1] - set flags [lindex $opt 2] - set title [eval [lindex $opt 4]] - set lxpad 0 + set id [lindex $opt 0] + set type [lindex $opt 1] + set flags [lindex $opt 2] + set title [eval [lindex $opt 4]] + set lxpad 0 - if {$flags eq "+" || $flags eq "*"} { - set cframe $top.fr$cnt - incr cnt - ${NS}::frame $cframe - pack $cframe -in $top -fill x -pady 3 -padx 3 - set cexpand [expr {$flags eq "*"}] + if {$flags eq "+" || $flags eq "*"} { + set cframe $top.fr$cnt + incr cnt + ${NS}::frame $cframe + pack $cframe -in $top -fill x -pady 3 -padx 3 + set cexpand [expr {$flags eq "*"}] } elseif {$flags eq ".." || $flags eq "*."} { - set cframe $top.fr$cnt - incr cnt - ${NS}::frame $cframe - pack $cframe -in $top -fill x -pady 3 -padx [list 15 3] - set cexpand [expr {$flags eq "*."}] - } else { - set lxpad 5 - } + set cframe $top.fr$cnt + incr cnt + ${NS}::frame $cframe + pack $cframe -in $top -fill x -pady 3 -padx [list 15 3] + set cexpand [expr {$flags eq "*."}] + } else { + set lxpad 5 + } - if {$type eq "l"} { + if {$type eq "l"} { ${NS}::label $cframe.l_$id -text $title pack $cframe.l_$id -in $cframe -side left -pady [list 3 0] -anchor w - } elseif {$type eq "b"} { - ${NS}::checkbutton $cframe.c_$id -text $title -variable newviewopts($n,$id) - pack $cframe.c_$id -in $cframe -side left \ - -padx [list $lxpad 0] -expand $cexpand -anchor w - } elseif {[regexp {^r(\d+)$} $type type sz]} { - regexp {^(.*_)} $id uselessvar button_id - ${NS}::radiobutton $cframe.c_$id -text $title -variable newviewopts($n,$button_id) -value $sz - pack $cframe.c_$id -in $cframe -side left \ - -padx [list $lxpad 0] -expand $cexpand -anchor w - } elseif {[regexp {^t(\d+)$} $type type sz]} { - ${NS}::label $cframe.l_$id -text $title - ${NS}::entry $cframe.e_$id -width $sz -background $bgcolor \ - -textvariable newviewopts($n,$id) - pack $cframe.l_$id -in $cframe -side left -padx [list $lxpad 0] - pack $cframe.e_$id -in $cframe -side left -expand 1 -fill x - } elseif {[regexp {^t(\d+)=$} $type type sz]} { - ${NS}::label $cframe.l_$id -text $title - ${NS}::entry $cframe.e_$id -width $sz -background $bgcolor \ - -textvariable newviewopts($n,$id) - pack $cframe.l_$id -in $cframe -side top -pady [list 3 0] -anchor w - pack $cframe.e_$id -in $cframe -side top -fill x - } elseif {$type eq "path"} { - ${NS}::label $top.l -text $title - pack $top.l -in $top -side top -pady [list 3 0] -anchor w -padx 3 - text $top.t -width 40 -height 5 -background $bgcolor - if {[info exists viewfiles($n)]} { - foreach f $viewfiles($n) { - $top.t insert end $f - $top.t insert end "\n" - } - $top.t delete {end - 1c} end - $top.t mark set insert 0.0 - } - pack $top.t -in $top -side top -pady [list 0 5] -fill both -expand 1 -padx 3 - } + } elseif {$type eq "b"} { + ${NS}::checkbutton $cframe.c_$id -text $title -variable newviewopts($n,$id) + pack $cframe.c_$id -in $cframe -side left \ + -padx [list $lxpad 0] -expand $cexpand -anchor w + } elseif {[regexp {^r(\d+)$} $type type sz]} { + regexp {^(.*_)} $id uselessvar button_id + ${NS}::radiobutton $cframe.c_$id -text $title -variable newviewopts($n,$button_id) -value $sz + pack $cframe.c_$id -in $cframe -side left \ + -padx [list $lxpad 0] -expand $cexpand -anchor w + } elseif {[regexp {^t(\d+)$} $type type sz]} { + ${NS}::label $cframe.l_$id -text $title + ${NS}::entry $cframe.e_$id -width $sz -background $bgcolor \ + -textvariable newviewopts($n,$id) + pack $cframe.l_$id -in $cframe -side left -padx [list $lxpad 0] + pack $cframe.e_$id -in $cframe -side left -expand 1 -fill x + } elseif {[regexp {^t(\d+)=$} $type type sz]} { + ${NS}::label $cframe.l_$id -text $title + ${NS}::entry $cframe.e_$id -width $sz -background $bgcolor \ + -textvariable newviewopts($n,$id) + pack $cframe.l_$id -in $cframe -side top -pady [list 3 0] -anchor w + pack $cframe.e_$id -in $cframe -side top -fill x + } elseif {$type eq "path"} { + ${NS}::label $top.l -text $title + pack $top.l -in $top -side top -pady [list 3 0] -anchor w -padx 3 + text $top.t -width 40 -height 5 -background $bgcolor + if {[info exists viewfiles($n)]} { + foreach f $viewfiles($n) { + $top.t insert end $f + $top.t insert end "\n" + } + $top.t delete {end - 1c} end + $top.t mark set insert 0.0 + } + pack $top.t -in $top -side top -pady [list 0 5] -fill both -expand 1 -padx 3 + } } ${NS}::frame $top.buts @@ -4359,10 +4359,10 @@ proc vieweditor {top n title} { proc doviewmenu {m first cmd op argv} { set nmenu [$m index end] for {set i $first} {$i <= $nmenu} {incr i} { - if {[$m entrycget $i -command] eq $cmd} { - eval $m $op $i $argv - break - } + if {[$m entrycget $i -command] eq $cmd} { + eval $m $op $i $argv + break + } } } @@ -4379,53 +4379,53 @@ proc newviewok {top n {apply 0}} { global viewargs viewargscmd newviewopts viewhlmenu if {[catch { - set newargs [encode_view_opts $n] + set newargs [encode_view_opts $n] } err]} { - error_popup "[mc "Error in commit selection arguments:"] $err" $top - return + error_popup "[mc "Error in commit selection arguments:"] $err" $top + return } set files {} foreach f [split [$top.t get 0.0 end] "\n"] { - set ft [string trim $f] - if {$ft ne {}} { - lappend files $ft - } + set ft [string trim $f] + if {$ft ne {}} { + lappend files $ft + } } if {![info exists viewfiles($n)]} { - # creating a new view - incr nextviewnum - set viewname($n) $newviewname($n) - set viewperm($n) $newviewopts($n,perm) - set viewchanged($n) 1 - set viewfiles($n) $files - set viewargs($n) $newargs - set viewargscmd($n) $newviewopts($n,cmd) - addviewmenu $n - if {!$newishighlight} { - run showview $n - } else { - run addvhighlight $n - } + # creating a new view + incr nextviewnum + set viewname($n) $newviewname($n) + set viewperm($n) $newviewopts($n,perm) + set viewchanged($n) 1 + set viewfiles($n) $files + set viewargs($n) $newargs + set viewargscmd($n) $newviewopts($n,cmd) + addviewmenu $n + if {!$newishighlight} { + run showview $n + } else { + run addvhighlight $n + } } else { - # editing an existing view - set viewperm($n) $newviewopts($n,perm) - set viewchanged($n) 1 - if {$newviewname($n) ne $viewname($n)} { - set viewname($n) $newviewname($n) - doviewmenu .bar.view 5 [list showview $n] \ - entryconf [list -label $viewname($n)] - # doviewmenu $viewhlmenu 1 [list addvhighlight $n] \ - # entryconf [list -label $viewname($n) -value $viewname($n)] - } - if {$files ne $viewfiles($n) || $newargs ne $viewargs($n) || \ - $newviewopts($n,cmd) ne $viewargscmd($n)} { - set viewfiles($n) $files - set viewargs($n) $newargs - set viewargscmd($n) $newviewopts($n,cmd) - if {$curview == $n} { - run reloadcommits - } - } + # editing an existing view + set viewperm($n) $newviewopts($n,perm) + set viewchanged($n) 1 + if {$newviewname($n) ne $viewname($n)} { + set viewname($n) $newviewname($n) + doviewmenu .bar.view 5 [list showview $n] \ + entryconf [list -label $viewname($n)] + # doviewmenu $viewhlmenu 1 [list addvhighlight $n] \ + # entryconf [list -label $viewname($n) -value $viewname($n)] + } + if {$files ne $viewfiles($n) || $newargs ne $viewargs($n) || \ + $newviewopts($n,cmd) ne $viewargscmd($n)} { + set viewfiles($n) $files + set viewargs($n) $newargs + set viewargscmd($n) $newviewopts($n,cmd) + if {$curview == $n} { + run reloadcommits + } + } } if {$apply} return catch {destroy $top} @@ -4436,8 +4436,8 @@ proc delview {} { if {$curview == 0} return if {[info exists hlview] && $hlview == $curview} { - set selectedhlview [mc "None"] - unset hlview + set selectedhlview [mc "None"] + unset hlview } allviewmenus $curview delete set viewperm($curview) 0 @@ -4449,7 +4449,7 @@ proc addviewmenu {n} { global viewname viewhlmenu .bar.view add radiobutton -label $viewname($n) \ - -command [list showview $n] -variable selectedview -value $n + -command [list showview $n] -variable selectedview -value $n #$viewhlmenu add radiobutton -label $viewname($n) \ # -command [list addvhighlight $n] -variable selectedhlview } @@ -4474,22 +4474,22 @@ proc showview {n} { set ybot [expr {[lindex $span 1] * $ymax}] set yscreen [expr {($ybot - $ytop) / 2}] if {$selectedline ne {}} { - set selid $currentid - set y [yc $selectedline] - if {$ytop < $y && $y < $ybot} { - set yscreen [expr {$y - $ytop}] - } + set selid $currentid + set y [yc $selectedline] + if {$ytop < $y && $y < $ybot} { + set yscreen [expr {$y - $ytop}] + } } elseif {[info exists pending_select]} { - set selid $pending_select - unset pending_select + set selid $pending_select + unset pending_select } unselectline normalline unset -nocomplain treediffs clear_display if {[info exists hlview] && $hlview == $n} { - unset hlview - set selectedhlview [mc "None"] + unset hlview + set selectedhlview [mc "None"] } unset -nocomplain commitinterest unset -nocomplain cached_commitrow @@ -4502,8 +4502,8 @@ proc showview {n} { run refill_reflist if {![info exists viewcomplete($n)]} { - getcommits $selid - return + getcommits $selid + return } set displayorder {} @@ -4523,39 +4523,39 @@ proc showview {n} { set yf 0 set row {} if {$selid ne {} && [commitinview $selid $n]} { - set row [rowofcommit $selid] - # try to get the selected row in the same position on the screen - set ymax [lindex [$canv cget -scrollregion] 3] - set ytop [expr {[yc $row] - $yscreen}] - if {$ytop < 0} { - set ytop 0 - } - set yf [expr {$ytop * 1.0 / $ymax}] + set row [rowofcommit $selid] + # try to get the selected row in the same position on the screen + set ymax [lindex [$canv cget -scrollregion] 3] + set ytop [expr {[yc $row] - $yscreen}] + if {$ytop < 0} { + set ytop 0 + } + set yf [expr {$ytop * 1.0 / $ymax}] } allcanvs yview moveto $yf drawvisible if {$row ne {}} { - selectline $row 0 + selectline $row 0 } elseif {!$viewcomplete($n)} { - reset_pending_select $selid + reset_pending_select $selid } else { - reset_pending_select {} + reset_pending_select {} - if {[commitinview $pending_select $curview]} { - selectline [rowofcommit $pending_select] 1 - } else { - set row [first_real_row] - if {$row < $numcommits} { - selectline $row 0 - } - } + if {[commitinview $pending_select $curview]} { + selectline [rowofcommit $pending_select] 1 + } else { + set row [first_real_row] + if {$row < $numcommits} { + selectline $row 0 + } + } } if {!$viewcomplete($n)} { - if {$numcommits == 0} { - show_status [mc "Reading commits..."] - } + if {$numcommits == 0} { + show_status [mc "Reading commits..."] + } } elseif {$numcommits == 0} { - show_status [mc "No commits selected"] + show_status [mc "No commits selected"] } set_window_title } @@ -4566,16 +4566,16 @@ proc ishighlighted {id} { global vhighlights fhighlights nhighlights rhighlights if {[info exists nhighlights($id)] && $nhighlights($id) > 0} { - return $nhighlights($id) + return $nhighlights($id) } if {[info exists vhighlights($id)] && $vhighlights($id) > 0} { - return $vhighlights($id) + return $vhighlights($id) } if {[info exists fhighlights($id)] && $fhighlights($id) > 0} { - return $fhighlights($id) + return $fhighlights($id) } if {[info exists rhighlights($id)] && $rhighlights($id) > 0} { - return $rhighlights($id) + return $rhighlights($id) } return 0 } @@ -4588,14 +4588,14 @@ proc bolden {id font} { lappend boldids $id $canv itemconf $linehtag($id) -font $font if {[info exists currentid] && $id eq $currentid} { - $canv delete secsel - set t [eval $canv create rect [$canv bbox $linehtag($id)] \ - -outline {{}} -tags secsel \ - -fill [$canv cget -selectbackground]] - $canv lower $t + $canv delete secsel + set t [eval $canv create rect [$canv bbox $linehtag($id)] \ + -outline {{}} -tags secsel \ + -fill [$canv cget -selectbackground]] + $canv lower $t } if {[info exists markedid] && $id eq $markedid} { - make_idmark $id + make_idmark $id } } @@ -4606,11 +4606,11 @@ proc bolden_name {id font} { lappend boldnameids $id $canv2 itemconf $linentag($id) -font $font if {[info exists currentid] && $id eq $currentid} { - $canv2 delete secsel - set t [eval $canv2 create rect [$canv2 bbox $linentag($id)] \ - -outline {{}} -tags secsel \ - -fill [$canv2 cget -selectbackground]] - $canv2 lower $t + $canv2 delete secsel + set t [eval $canv2 create rect [$canv2 bbox $linentag($id)] \ + -outline {{}} -tags secsel \ + -fill [$canv2 cget -selectbackground]] + $canv2 lower $t } } @@ -4619,11 +4619,11 @@ proc unbolden {} { set stillbold {} foreach id $boldids { - if {![ishighlighted $id]} { - bolden $id mainfont - } else { - lappend stillbold $id - } + if {![ishighlighted $id]} { + bolden $id mainfont + } else { + lappend stillbold $id + } } set boldids $stillbold } @@ -4632,15 +4632,15 @@ proc addvhighlight {n} { global hlview viewcomplete curview vhl_done commitidx if {[info exists hlview]} { - delvhighlight + delvhighlight } set hlview $n if {$n != $curview && ![info exists viewcomplete($n)]} { - start_rev_list $n + start_rev_list $n } set vhl_done $commitidx($hlview) if {$vhl_done > 0} { - drawvisible + drawvisible } } @@ -4661,16 +4661,16 @@ proc vhighlightmore {} { set r0 [lindex $vr 0] set r1 [lindex $vr 1] for {set i $vhl_done} {$i < $max} {incr i} { - set id [commitonrow $i $hlview] - if {[commitinview $id $curview]} { - set row [rowofcommit $id] - if {$r0 <= $row && $row <= $r1} { - if {![highlighted $row]} { - bolden $id mainfontbold - } - set vhighlights($id) 1 - } - } + set id [commitonrow $i $hlview] + if {[commitinview $id $curview]} { + set row [rowofcommit $id] + if {$r0 <= $row && $row <= $r1} { + if {![highlighted $row]} { + bolden $id mainfontbold + } + set vhighlights($id) 1 + } + } } set vhl_done $max return 0 @@ -4680,12 +4680,12 @@ proc askvhighlight {row id} { global hlview vhighlights iddrawn if {[commitinview $id $hlview]} { - if {[info exists iddrawn($id)] && ![ishighlighted $id]} { - bolden $id mainfontbold - } - set vhighlights($id) 1 + if {[info exists iddrawn($id)] && ![ishighlighted $id]} { + bolden $id mainfontbold + } + set vhighlights($id) 1 } else { - set vhighlights($id) 0 + set vhighlights($id) 0 } } @@ -4694,18 +4694,18 @@ proc hfiles_change {} { global highlight_paths if {[info exists filehighlight]} { - # delete previous highlights - catch {close $filehighlight} - unset filehighlight - unset -nocomplain fhighlights - unbolden - unhighlight_filelist + # delete previous highlights + catch {close $filehighlight} + unset filehighlight + unset -nocomplain fhighlights + unbolden + unhighlight_filelist } set highlight_paths {} after cancel do_file_hl $fh_serial incr fh_serial if {$highlight_files ne {}} { - after 300 do_file_hl $fh_serial + after 300 do_file_hl $fh_serial } } @@ -4714,21 +4714,21 @@ proc gdttype_change {name ix op} { stopfinding if {$findstring ne {}} { - if {$gdttype eq [mc "containing:"]} { - if {$highlight_files ne {}} { - set highlight_files {} - hfiles_change - } - findcom_change - } else { - if {$findpattern ne {}} { - set findpattern {} - findcom_change - } - set highlight_files $findstring - hfiles_change - } - drawvisible + if {$gdttype eq [mc "containing:"]} { + if {$highlight_files ne {}} { + set highlight_files {} + hfiles_change + } + findcom_change + } else { + if {$findpattern ne {}} { + set findpattern {} + findcom_change + } + set highlight_files $findstring + hfiles_change + } + drawvisible } # enable/disable findtype/findloc menus too } @@ -4738,12 +4738,12 @@ proc find_change {name ix op} { stopfinding if {$gdttype eq [mc "containing:"]} { - findcom_change + findcom_change } else { - if {$highlight_files ne $findstring} { - set highlight_files $findstring - hfiles_change - } + if {$highlight_files ne $findstring} { + set highlight_files $findstring + hfiles_change + } } drawvisible } @@ -4755,33 +4755,33 @@ proc findcom_change args { stopfinding # delete previous highlights, if any foreach id $boldnameids { - bolden_name $id mainfont + bolden_name $id mainfont } set boldnameids {} unset -nocomplain nhighlights unbolden unmarkmatches if {$gdttype ne [mc "containing:"] || $findstring eq {}} { - set findpattern {} + set findpattern {} } elseif {$findtype eq [mc "Regexp"]} { - set findpattern $findstring + set findpattern $findstring } else { - set e [string map {"*" "\\*" "?" "\\?" "\[" "\\\[" "\\" "\\\\"} \ - $findstring] - set findpattern "*$e*" + set e [string map {"*" "\\*" "?" "\\?" "\[" "\\\[" "\\" "\\\\"} \ + $findstring] + set findpattern "*$e*" } } proc makepatterns {l} { set ret {} foreach e $l { - set ee [string map {"*" "\\*" "?" "\\?" "\[" "\\\[" "\\" "\\\\"} $e] - if {[string index $ee end] eq "/"} { - lappend ret "$ee*" - } else { - lappend ret $ee - lappend ret "$ee/*" - } + set ee [string map {"*" "\\*" "?" "\\?" "\[" "\\\[" "\\" "\\\\"} $e] + if {[string index $ee end] eq "/"} { + lappend ret "$ee*" + } else { + lappend ret $ee + lappend ret "$ee/*" + } } return $ret } @@ -4791,26 +4791,26 @@ proc do_file_hl {serial} { global cdup findtype if {$gdttype eq [mc "touching paths:"]} { - # If "exact" match then convert backslashes to forward slashes. - # Most useful to support Windows-flavoured file paths. - if {$findtype eq [mc "Exact"]} { - set highlight_files [string map {"\\" "/"} $highlight_files] - } - if {[catch {set paths [shellsplit $highlight_files]}]} return - set highlight_paths [makepatterns $paths] - highlight_filelist - set relative_paths {} - foreach path $paths { - lappend relative_paths [file join $cdup $path] - } - set gdtargs [concat -- $relative_paths] + # If "exact" match then convert backslashes to forward slashes. + # Most useful to support Windows-flavoured file paths. + if {$findtype eq [mc "Exact"]} { + set highlight_files [string map {"\\" "/"} $highlight_files] + } + if {[catch {set paths [shellsplit $highlight_files]}]} return + set highlight_paths [makepatterns $paths] + highlight_filelist + set relative_paths {} + foreach path $paths { + lappend relative_paths [file join $cdup $path] + } + set gdtargs [concat -- $relative_paths] } elseif {$gdttype eq [mc "adding/removing string:"]} { - set gdtargs [list "-S$highlight_files"] + set gdtargs [list "-S$highlight_files"] } elseif {$gdttype eq [mc "changing lines matching:"]} { - set gdtargs [list "-G$highlight_files"] + set gdtargs [list "-G$highlight_files"] } else { - # must be "containing:", i.e. we're searching commit info - return + # must be "containing:", i.e. we're searching commit info + return } set cmd [concat | git diff-tree -r -s --stdin $gdtargs] set filehighlight [open $cmd r+] @@ -4825,9 +4825,9 @@ proc flushhighlights {} { global filehighlight fhl_list if {[info exists filehighlight]} { - lappend fhl_list {} - puts $filehighlight "" - flush $filehighlight + lappend fhl_list {} + puts $filehighlight "" + flush $filehighlight } } @@ -4844,34 +4844,34 @@ proc readfhighlight {} { global fhl_list find_dirn if {![info exists filehighlight]} { - return 0 + return 0 } set nr 0 while {[incr nr] <= 100 && [gets $filehighlight line] >= 0} { - set line [string trim $line] - set i [lsearch -exact $fhl_list $line] - if {$i < 0} continue - for {set j 0} {$j < $i} {incr j} { - set id [lindex $fhl_list $j] - set fhighlights($id) 0 - } - set fhl_list [lrange $fhl_list [expr {$i+1}] end] - if {$line eq {}} continue - if {![commitinview $line $curview]} continue - if {[info exists iddrawn($line)] && ![ishighlighted $line]} { - bolden $line mainfontbold - } - set fhighlights($line) 1 + set line [string trim $line] + set i [lsearch -exact $fhl_list $line] + if {$i < 0} continue + for {set j 0} {$j < $i} {incr j} { + set id [lindex $fhl_list $j] + set fhighlights($id) 0 + } + set fhl_list [lrange $fhl_list [expr {$i+1}] end] + if {$line eq {}} continue + if {![commitinview $line $curview]} continue + if {[info exists iddrawn($line)] && ![ishighlighted $line]} { + bolden $line mainfontbold + } + set fhighlights($line) 1 } if {[eof $filehighlight]} { - # strange... - puts "oops, git diff-tree died" - catch {close $filehighlight} - unset filehighlight - return 0 + # strange... + puts "oops, git diff-tree died" + catch {close $filehighlight} + unset filehighlight + return 0 } if {[info exists find_dirn]} { - run findmore + run findmore } return 1 } @@ -4880,11 +4880,11 @@ proc doesmatch {f} { global findtype findpattern if {$findtype eq [mc "Regexp"]} { - return [regexp $findpattern $f] + return [regexp $findpattern $f] } elseif {$findtype eq [mc "IgnCase"]} { - return [string match -nocase $findpattern $f] + return [string match -nocase $findpattern $f] } else { - return [string match $findpattern $f] + return [string match $findpattern $f] } } @@ -4894,32 +4894,32 @@ proc askfindhighlight {row id} { global markingmatches if {![info exists commitinfo($id)]} { - getcommit $id + getcommit $id } set info $commitinfo($id) set isbold 0 set fldtypes [list [mc Headline] [mc Author] "" [mc Committer] "" [mc Comments]] foreach f $info ty $fldtypes { - if {$ty eq ""} continue - if {($findloc eq [mc "All fields"] || $findloc eq $ty) && - [doesmatch $f]} { - if {$ty eq [mc "Author"]} { - set isbold 2 - break - } - set isbold 1 - } + if {$ty eq ""} continue + if {($findloc eq [mc "All fields"] || $findloc eq $ty) && + [doesmatch $f]} { + if {$ty eq [mc "Author"]} { + set isbold 2 + break + } + set isbold 1 + } } if {$isbold && [info exists iddrawn($id)]} { - if {![ishighlighted $id]} { - bolden $id mainfontbold - if {$isbold > 1} { - bolden_name $id mainfontbold - } - } - if {$markingmatches} { - markrowmatches $row $id - } + if {![ishighlighted $id]} { + bolden $id mainfontbold + if {$isbold > 1} { + bolden_name $id mainfontbold + } + } + if {$markingmatches} { + markrowmatches $row $id + } } set nhighlights($id) $isbold } @@ -4932,18 +4932,18 @@ proc markrowmatches {row id} { $canv delete match$row $canv2 delete match$row if {$findloc eq [mc "All fields"] || $findloc eq [mc "Headline"]} { - set m [findmatches $headline] - if {$m ne {}} { - markmatches $canv $row $headline $linehtag($id) $m \ - [$canv itemcget $linehtag($id) -font] $row - } + set m [findmatches $headline] + if {$m ne {}} { + markmatches $canv $row $headline $linehtag($id) $m \ + [$canv itemcget $linehtag($id) -font] $row + } } if {$findloc eq [mc "All fields"] || $findloc eq [mc "Author"]} { - set m [findmatches $author] - if {$m ne {}} { - markmatches $canv2 $row $author $linentag($id) $m \ - [$canv2 itemcget $linentag($id) -font] $row - } + set m [findmatches $author] + if {$m ne {}} { + markmatches $canv2 $row $author $linentag($id) $m \ + [$canv2 itemcget $linentag($id) -font] $row + } } } @@ -4952,7 +4952,7 @@ proc vrel_change {name ix op} { rhighlight_none if {$highlight_related ne [mc "None"]} { - run drawvisible + run drawvisible } } @@ -4966,8 +4966,8 @@ proc rhighlight_sel {a} { unset -nocomplain ancestor set anc_todo [list $a] if {$highlight_related ne [mc "None"]} { - rhighlight_none - run drawvisible + rhighlight_none + run drawvisible } } @@ -4987,24 +4987,24 @@ proc is_descendent {a} { set leftover {} set done 0 for {set i 0} {$i < [llength $todo]} {incr i} { - set do [lindex $todo $i] - if {[rowofcommit $do] < $la} { - lappend leftover $do - continue - } - foreach nk $children($v,$do) { - if {![info exists descendent($nk)]} { - set descendent($nk) 1 - lappend todo $nk - if {$nk eq $a} { - set done 1 - } - } - } - if {$done} { - set desc_todo [concat $leftover [lrange $todo [expr {$i+1}] end]] - return - } + set do [lindex $todo $i] + if {[rowofcommit $do] < $la} { + lappend leftover $do + continue + } + foreach nk $children($v,$do) { + if {![info exists descendent($nk)]} { + set descendent($nk) 1 + lappend todo $nk + if {$nk eq $a} { + set done 1 + } + } + } + if {$done} { + set desc_todo [concat $leftover [lrange $todo [expr {$i+1}] end]] + return + } } set descendent($a) 0 set desc_todo $leftover @@ -5019,24 +5019,24 @@ proc is_ancestor {a} { set leftover {} set done 0 for {set i 0} {$i < [llength $todo]} {incr i} { - set do [lindex $todo $i] - if {![commitinview $do $v] || [rowofcommit $do] > $la} { - lappend leftover $do - continue - } - foreach np $parents($v,$do) { - if {![info exists ancestor($np)]} { - set ancestor($np) 1 - lappend todo $np - if {$np eq $a} { - set done 1 - } - } - } - if {$done} { - set anc_todo [concat $leftover [lrange $todo [expr {$i+1}] end]] - return - } + set do [lindex $todo $i] + if {![commitinview $do $v] || [rowofcommit $do] > $la} { + lappend leftover $do + continue + } + foreach np $parents($v,$do) { + if {![info exists ancestor($np)]} { + set ancestor($np) 1 + lappend todo $np + if {$np eq $a} { + set done 1 + } + } + } + if {$done} { + set anc_todo [concat $leftover [lrange $todo [expr {$i+1}] end]] + return + } } set ancestor($a) 0 set anc_todo $leftover @@ -5049,26 +5049,26 @@ proc askrelhighlight {row id} { if {$selectedline eq {}} return set isbold 0 if {$highlight_related eq [mc "Descendant"] || - $highlight_related eq [mc "Not descendant"]} { - if {![info exists descendent($id)]} { - is_descendent $id - } - if {$descendent($id) == ($highlight_related eq [mc "Descendant"])} { - set isbold 1 - } + $highlight_related eq [mc "Not descendant"]} { + if {![info exists descendent($id)]} { + is_descendent $id + } + if {$descendent($id) == ($highlight_related eq [mc "Descendant"])} { + set isbold 1 + } } elseif {$highlight_related eq [mc "Ancestor"] || - $highlight_related eq [mc "Not ancestor"]} { - if {![info exists ancestor($id)]} { - is_ancestor $id - } - if {$ancestor($id) == ($highlight_related eq [mc "Ancestor"])} { - set isbold 1 - } + $highlight_related eq [mc "Not ancestor"]} { + if {![info exists ancestor($id)]} { + is_ancestor $id + } + if {$ancestor($id) == ($highlight_related eq [mc "Ancestor"])} { + set isbold 1 + } } if {[info exists iddrawn($id)]} { - if {$isbold && ![ishighlighted $id]} { - bolden $id mainfontbold - } + if {$isbold && ![ishighlighted $id]} { + bolden $id mainfontbold + } } set rhighlights($id) $isbold } @@ -5078,13 +5078,13 @@ proc askrelhighlight {row id} { proc shortids {ids} { set res {} foreach id $ids { - if {[llength $id] > 1} { - lappend res [shortids $id] - } elseif {[regexp {^[0-9a-f]{40}$} $id]} { - lappend res [string range $id 0 7] - } else { - lappend res $id - } + if {[llength $id] > 1} { + lappend res [shortids $id] + } elseif {[regexp {^[0-9a-f]{40}$} $id]} { + lappend res [string range $id 0 7] + } else { + lappend res $id + } } return $res } @@ -5093,10 +5093,10 @@ proc ntimes {n o} { set ret {} set o [list $o] for {set mask 1} {$mask <= $n} {incr mask $mask} { - if {($n & $mask) != 0} { - set ret [concat $ret $o] - } - set o [concat $o $o] + if {($n & $mask) != 0} { + set ret [concat $ret $o] + } + set o [concat $o $o] } return $ret } @@ -5106,41 +5106,41 @@ proc ordertoken {id} { global nullid nullid2 if {[info exists ordertok($id)]} { - return $ordertok($id) + return $ordertok($id) } set origid $id set todo {} while {1} { - if {[info exists varcid($curview,$id)]} { - set a $varcid($curview,$id) - set p [lindex $varcstart($curview) $a] - } else { - set p [lindex $children($curview,$id) 0] - } - if {[info exists ordertok($p)]} { - set tok $ordertok($p) - break - } - set id [first_real_child $curview,$p] - if {$id eq {}} { - # it's a root - set tok [lindex $varctok($curview) $varcid($curview,$p)] - break - } - if {[llength $parents($curview,$id)] == 1} { - lappend todo [list $p {}] - } else { - set j [lsearch -exact $parents($curview,$id) $p] - if {$j < 0} { - puts "oops didn't find [shortids $p] in parents of [shortids $id]" - } - lappend todo [list $p [strrep $j]] - } + if {[info exists varcid($curview,$id)]} { + set a $varcid($curview,$id) + set p [lindex $varcstart($curview) $a] + } else { + set p [lindex $children($curview,$id) 0] + } + if {[info exists ordertok($p)]} { + set tok $ordertok($p) + break + } + set id [first_real_child $curview,$p] + if {$id eq {}} { + # it's a root + set tok [lindex $varctok($curview) $varcid($curview,$p)] + break + } + if {[llength $parents($curview,$id)] == 1} { + lappend todo [list $p {}] + } else { + set j [lsearch -exact $parents($curview,$id) $p] + if {$j < 0} { + puts "oops didn't find [shortids $p] in parents of [shortids $id]" + } + lappend todo [list $p [strrep $j]] + } } for {set i [llength $todo]} {[incr i -1] >= 0} {} { - set p [lindex $todo $i 0] - append tok [lindex $todo $i 1] - set ordertok($p) $tok + set p [lindex $todo $i 0] + append tok [lindex $todo $i 1] + set ordertok($p) $tok } set ordertok($origid) $tok return $tok @@ -5151,19 +5151,19 @@ proc ordertoken {id} { proc idcol {idlist id {i 0}} { set t [ordertoken $id] if {$i < 0} { - set i 0 + set i 0 } if {$i >= [llength $idlist] || $t < [ordertoken [lindex $idlist $i]]} { - if {$i > [llength $idlist]} { - set i [llength $idlist] - } - while {[incr i -1] >= 0 && $t < [ordertoken [lindex $idlist $i]]} {} - incr i + if {$i > [llength $idlist]} { + set i [llength $idlist] + } + while {[incr i -1] >= 0 && $t < [ordertoken [lindex $idlist $i]]} {} + incr i } else { - if {$t > [ordertoken [lindex $idlist $i]]} { - while {[incr i] < [llength $idlist] && - $t >= [ordertoken [lindex $idlist $i]]} {} - } + if {$t > [ordertoken [lindex $idlist $i]]} { + while {[incr i] < [llength $idlist] && + $t >= [ordertoken [lindex $idlist $i]]} {} + } } return $i } @@ -5208,12 +5208,12 @@ proc visiblerows {} { set y0 [expr {int([lindex $f 0] * $ymax)}] set r0 [expr {int(($y0 - 3) / $linespc) - 1}] if {$r0 < 0} { - set r0 0 + set r0 0 } set y1 [expr {int([lindex $f 1] * $ymax)}] set r1 [expr {int(($y1 - 3) / $linespc) + 1}] if {$r1 >= $numcommits} { - set r1 [expr {$numcommits - 1}] + set r1 [expr {$numcommits - 1}] } return [list $r0 $r1] } @@ -5224,13 +