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:
parent
768e300a50
commit
9a483e5c09
@ -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
64
lib/line.tcl
Normal 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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user