Browse Source

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>
maint
David Fries 14 years ago committed by Pat Thoyts
parent
commit
9a483e5c09
  1. 11
      lib/blame.tcl
  2. 64
      lib/line.tcl

11
lib/blame.tcl

@ -22,6 +22,7 @@ field w_asim ; # text column: annotations (simple computation) @@ -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} { @@ -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} { @@ -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} { @@ -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

@ -0,0 +1,64 @@ @@ -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…
Cancel
Save