diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-08-23 12:32:20 +0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2008-08-24 22:00:01 -0700 |
commit | f7078b40917daa20ea3fa54c7e38766594e4b996 (patch) | |
tree | b7f04ebe76a01e353a753e767f0b625430fcfd60 | |
parent | 823f7cf81dbed741c3a645913d7461e9bc04e0d2 (diff) | |
download | git-f7078b40917daa20ea3fa54c7e38766594e4b996.tar.gz git-f7078b40917daa20ea3fa54c7e38766594e4b996.tar.xz |
git-gui: Allow specifying an initial line for git gui blame.
Add a command-line option to make git gui blame automatically
scroll to a specific line in the file. Useful for integration
with other tools.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-x | git-gui.sh | 13 | ||||
-rw-r--r-- | lib/blame.tcl | 4 | ||||
-rw-r--r-- | lib/browser.tcl | 2 |
3 files changed, 14 insertions, 5 deletions
diff --git a/git-gui.sh b/git-gui.sh index b0207ac36..ec08b5a92 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -2296,10 +2296,15 @@ proc usage {} { switch -- $subcommand { browser - blame { - set subcommand_args {rev? path} + if {$subcommand eq "blame"} { + set subcommand_args {[--line=<num>] rev? path} + } else { + set subcommand_args {rev? path} + } if {$argv eq {}} usage set head {} set path {} + set jump_spec {} set is_path 0 foreach a $argv { if {$is_path || [file exists $_prefix$a]} { @@ -2313,6 +2318,9 @@ blame { set path {} } set is_path 1 + } elseif {[regexp {^--line=(\d+)$} $a a lnum]} { + if {$jump_spec ne {} || $head ne {}} usage + set jump_spec [list $lnum] } elseif {$head eq {}} { if {$head ne {}} usage set head $a @@ -2344,6 +2352,7 @@ blame { switch -- $subcommand { browser { + if {$jump_spec ne {}} usage if {$head eq {}} { if {$path ne {} && [file isdirectory $path]} { set head $current_branch @@ -2359,7 +2368,7 @@ blame { puts stderr [mc "fatal: cannot stat path %s: No such file or directory" $path] exit 1 } - blame::new $head $path + blame::new $head $path $jump_spec } } return diff --git a/lib/blame.tcl b/lib/blame.tcl index 110697577..827c85d67 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -58,7 +58,7 @@ field tooltip_t {} ; # Text widget in $tooltip_wm field tooltip_timer {} ; # Current timer event for our tooltip field tooltip_commit {} ; # Commit(s) in tooltip -constructor new {i_commit i_path} { +constructor new {i_commit i_path i_jump} { global cursor_ptr variable active_color variable group_colors @@ -338,7 +338,7 @@ constructor new {i_commit i_path} { wm protocol $top WM_DELETE_WINDOW "destroy $top" bind $top <Destroy> [cb _kill] - _load $this {} + _load $this $i_jump } method _kill {} { diff --git a/lib/browser.tcl b/lib/browser.tcl index ab470d126..0410cc68d 100644 --- a/lib/browser.tcl +++ b/lib/browser.tcl @@ -151,7 +151,7 @@ method _enter {} { append p [lindex $n 1] } append p $name - blame::new $browser_commit $p + blame::new $browser_commit $p {} } } } |