From: David Fries <david@fries.net>
To: git@vger.kernel.org
Cc: Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH 1/2] git-gui blame, add a Control-G goto line option
Date: Sat, 16 Jul 2011 20:47:14 -0500 [thread overview]
Message-ID: <20110717014714.GD26701@spacedout.fries.net> (raw)
In-Reply-To: <20110716165850.GA9694@spacedout.fries.net>
Add a goto input field to jump to the specified line similar to the current search field.
Signed-off-by: David Fries <David@Fries.net>
---
This version hides the goto widget when pressing return or escape.
Patch 2/2 is unchanged.
git-gui/lib/blame.tcl | 11 ++++++++
git-gui/lib/line.tcl | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 0 deletions(-)
create mode 100644 git-gui/lib/line.tcl
diff --git a/git-gui/lib/blame.tcl b/git-gui/lib/blame.tcl
index 61e358f..062091b 100644
--- a/git-gui/lib/blame.tcl
+++ b/git-gui/lib/blame.tcl
@@ -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 Control-Key-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
diff --git a/git-gui/lib/line.tcl b/git-gui/lib/line.tcl
new file mode 100644
index 0000000..4913bdd
--- /dev/null
+++ b/git-gui/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
+ }
+}
+
+}
--
1.7.2.5
prev parent reply other threads:[~2011-07-17 1:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-16 16:58 [PATCH 1/2] git-gui blame, add a Control-G goto line option David Fries
2011-07-17 1:47 ` David Fries [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110717014714.GD26701@spacedout.fries.net \
--to=david@fries.net \
--cc=git@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).