Commits

Anonymous committed b90d479

git-gui: Expose the browser as a subcommand.

Some users may find being able to browse around an arbitrary
branch to be handy, so we now expose our graphical browser
through `git gui browse <committish>`.

Yes, I'm being somewhat lazy and making the user give us
the name of the branch to browse. They can always enter
HEAD.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

  • Participants
  • Parent commits 101e3ae

Comments (0)

Files changed (1)

 	global next_browser_id cursor_ptr M1B
 	global browser_commit browser_status browser_stack browser_path browser_busy
 
-	set w .browser[incr next_browser_id]
+	if {[winfo ismapped .]} {
+		set w .browser[incr next_browser_id]
+		set tl $w
+		toplevel $w
+	} else {
+		set w {}
+		set tl .
+	}
 	set w_list $w.list.l
 	set browser_commit($w_list) $commit
 	set browser_status($w_list) {Starting...}
 	set browser_path($w_list) $browser_commit($w_list):
 	set browser_busy($w_list) 1
 
-	toplevel $w
 	label $w.path -textvariable browser_path($w_list) \
 		-anchor w \
 		-justify left \
 	bind $w_list <Left>            break
 	bind $w_list <Right>           break
 
-	bind $w <Visibility> "focus $w"
-	bind $w <Destroy> "
+	bind $tl <Visibility> "focus $w"
+	bind $tl <Destroy> "
 		array unset browser_buffer $w_list
 		array unset browser_files $w_list
 		array unset browser_status $w_list
 		array unset browser_commit $w_list
 		array unset browser_busy $w_list
 	"
-	wm title $w "[appname] ([reponame]): File Browser"
+	wm title $tl "[appname] ([reponame]): File Browser"
 	ls_tree $w_list $browser_commit($w_list) {}
 }
 
 switch -- $subcommand {
 --version -
 version -
+browser -
 blame {
 	disable_option multicommit
 	disable_option branch
 	puts "git-gui version $appvers"
 	exit
 }
+browser {
+	if {[llength $argv] != 1} {
+		puts stderr "usage: $argv0 browser commit"
+		exit 1
+	}
+	set current_branch [lindex $argv 0]
+	new_browser $current_branch
+	return
+}
 blame {
 	if {[llength $argv] != 2} {
 		puts stderr "usage: $argv0 blame commit path"