1
0
mirror of https://github.com/git/git.git synced 2025-04-07 04:47:44 +00:00

git-gui: Enable jumping to a specific line number in blame view.

This patch adds a goto control similar to the search control currently
available. The goto control permits the user to specify a line number to
jump to.
When in blame, Control-G is bound to display this control.

Signed-off-by: David Fries <David@Fries.net>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
This commit is contained in:
David Fries 2011-07-16 20:47:14 -05:00 committed by Pat Thoyts
parent 768e300a50
commit 9a483e5c09
2 changed files with 75 additions and 0 deletions

View File

@ -22,6 +22,7 @@ field w_asim ; # text column: annotations (simple computation)
field w_file ; # text column: actual file data
field w_cviewer ; # pane showing commit message
field finder ; # find mini-dialog frame
field gotoline ; # line goto mini-dialog frame
field status ; # status mega-widget instance
field old_height ; # last known height of $w.file_pane
@ -231,6 +232,11 @@ constructor new {i_commit i_path i_jump} {
-column [expr {[llength $w_columns] - 1}] \
]
set gotoline [::linebar::new \
$w.file_pane.out.lf $w_file \
-column [expr {[llength $w_columns] - 1}] \
]
set w_cviewer $w.file_pane.cm.t
text $w_cviewer \
-background white \
@ -275,6 +281,10 @@ constructor new {i_commit i_path i_jump} {
-label [mc "Find Text..."] \
-accelerator F7 \
-command [list searchbar::show $finder]
$w.ctxm add command \
-label [mc "Goto Line..."] \
-accelerator "Ctrl-G" \
-command [list linebar::show $gotoline]
menu $w.ctxm.enc
build_encoding_menu $w.ctxm.enc [cb _setencoding]
$w.ctxm add cascade \
@ -345,6 +355,7 @@ constructor new {i_commit i_path i_jump} {
bind $top <Escape> [list searchbar::hide $finder]
bind $top <F3> [list searchbar::find_next $finder]
bind $top <Shift-F3> [list searchbar::find_prev $finder]
bind $top <Control-Key-g> [list linebar::show $gotoline]
catch { bind $top <Shift-Key-XF86_Switch_VT_3> [list searchbar::find_prev $finder] }
grid configure $w.header -sticky ew

64
lib/line.tcl Normal file
View File

@ -0,0 +1,64 @@
# goto line number
# based on code from gitk, Copyright (C) Paul Mackerras
class linebar {
field w
field ctext
field linenum {}
constructor new {i_w i_text args} {
global use_ttk NS
set w $i_w
set ctext $i_text
${NS}::frame $w
${NS}::label $w.l -text [mc "Goto Line:"]
entry $w.ent -textvariable ${__this}::linenum -background lightgreen
${NS}::button $w.bn -text [mc Go] -command [cb _incrgoto]
pack $w.l -side left
pack $w.bn -side right
pack $w.ent -side left -expand 1 -fill x
eval grid conf $w -sticky we $args
grid remove $w
bind $w.ent <Return> [cb _incrgoto]
bind $w.ent <Escape> [list linebar::hide $this]
bind $w <Destroy> [list delete_this $this]
return $this
}
method show {} {
if {![visible $this]} {
grid $w
}
focus -force $w.ent
}
method hide {} {
if {[visible $this]} {
focus $ctext
grid remove $w
}
}
method visible {} {
return [winfo ismapped $w]
}
method editor {} {
return $w.ent
}
method _incrgoto {} {
if {$linenum ne {}} {
$ctext see $linenum.0
hide $this
}
}
}