Skip to content

Commit

Permalink
git-gui: Enable jumping to a specific line number in blame view.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
dfries authored and patthoyts committed Jul 19, 2011
1 parent 768e300 commit 9a483e5
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/blame.tcl
Expand Up @@ -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

Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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
Expand Down
64 changes: 64 additions & 0 deletions lib/line.tcl
@@ -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
}
}

}

0 comments on commit 9a483e5

Please sign in to comment.