[PATCH] gitk: Let user easily specify lines of context in diff view

More lines of context sometimes help to better understand a diff.
This patch introduces a text field above the box displaying the
blobdiffs. You can type in the number of lines of context that
you wish to view. The number of lines of context is saved to
~/.gitk.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
main
Steffen Prohaska 2007-08-12 12:05:46 +02:00 committed by Paul Mackerras
parent b1054ac985
commit 890fae7041
1 changed files with 32 additions and 2 deletions

34
gitk
View File

@ -519,6 +519,7 @@ proc makewindow {} {
global textfont mainfont uifont tabstop global textfont mainfont uifont tabstop
global findtype findtypemenu findloc findstring fstring geometry global findtype findtypemenu findloc findstring fstring geometry
global entries sha1entry sha1string sha1but global entries sha1entry sha1string sha1but
global diffcontextstring diffcontext
global maincursor textcursor curtextcursor global maincursor textcursor curtextcursor
global rowctxmenu fakerowmenu mergemax wrapcomment global rowctxmenu fakerowmenu mergemax wrapcomment
global highlight_files gdttype global highlight_files gdttype
@ -733,7 +734,17 @@ proc makewindow {} {
-command changediffdisp -variable diffelide -value {0 1} -command changediffdisp -variable diffelide -value {0 1}
radiobutton .bleft.mid.new -text "New version" \ radiobutton .bleft.mid.new -text "New version" \
-command changediffdisp -variable diffelide -value {1 0} -command changediffdisp -variable diffelide -value {1 0}
label .bleft.mid.labeldiffcontext -text " Lines of context: " \
-font $uifont
pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left
spinbox .bleft.mid.diffcontext -width 5 -font $textfont \
-from 1 -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
set ctext .bleft.ctext set ctext .bleft.ctext
text $ctext -background $bgcolor -foreground $fgcolor \ text $ctext -background $bgcolor -foreground $fgcolor \
-tabs "[expr {$tabstop * $charspc}]" \ -tabs "[expr {$tabstop * $charspc}]" \
@ -1002,7 +1013,7 @@ proc savestuff {w} {
global maxwidth showneartags showlocalchanges global maxwidth showneartags showlocalchanges
global viewname viewfiles viewargs viewperm nextviewnum global viewname viewfiles viewargs viewperm nextviewnum
global cmitmode wrapcomment global cmitmode wrapcomment
global colors bgcolor fgcolor diffcolors selectbgcolor global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor


if {$stuffsaved} return if {$stuffsaved} return
if {![winfo viewable .]} return if {![winfo viewable .]} return
@ -1023,6 +1034,7 @@ proc savestuff {w} {
puts $f [list set fgcolor $fgcolor] puts $f [list set fgcolor $fgcolor]
puts $f [list set colors $colors] puts $f [list set colors $colors]
puts $f [list set diffcolors $diffcolors] puts $f [list set diffcolors $diffcolors]
puts $f [list set diffcontext $diffcontext]
puts $f [list set selectbgcolor $selectbgcolor] puts $f [list set selectbgcolor $selectbgcolor]


puts $f "set geometry(main) [wm geometry .]" puts $f "set geometry(main) [wm geometry .]"
@ -5052,12 +5064,29 @@ proc gettreediffline {gdtf ids} {
return 0 return 0
} }


# empty string or positive integer
proc diffcontextvalidate {v} {
return [regexp {^(|[1-9][0-9]*)$} $v]
}

proc diffcontextchange {n1 n2 op} {
global diffcontextstring diffcontext

if {[string is integer -strict $diffcontextstring]} {
if {$diffcontextstring > 0} {
set diffcontext $diffcontextstring
reselectline
}
}
}

proc getblobdiffs {ids} { proc getblobdiffs {ids} {
global diffopts blobdifffd diffids env global diffopts blobdifffd diffids env
global diffinhdr treediffs global diffinhdr treediffs
global diffcontext


set env(GIT_DIFF_OPTS) $diffopts set env(GIT_DIFF_OPTS) $diffopts
if {[catch {set bdf [open [diffcmd $ids {-p -C --no-commit-id}] r]} err]} { if {[catch {set bdf [open [diffcmd $ids "-p -C --no-commit-id -U$diffcontext"] r]} err]} {
puts "error getting diffs: $err" puts "error getting diffs: $err"
return return
} }
@ -7631,6 +7660,7 @@ set colors {green red blue magenta darkgrey brown orange}
set bgcolor white set bgcolor white
set fgcolor black set fgcolor black
set diffcolors {red "#00a000" blue} set diffcolors {red "#00a000" blue}
set diffcontext 3
set selectbgcolor gray85 set selectbgcolor gray85


catch {source ~/.gitk} catch {source ~/.gitk}