All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zoli Szabó via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Pratyush Yadav" <me@yadavpratyush.com>,
	"Zoli Szabó" <zoli.szabo@gmail.com>
Subject: [PATCH 1/1] git-gui: add possibility to open currently selected file
Date: Thu, 26 Dec 2019 19:01:55 +0000	[thread overview]
Message-ID: <fce80f1b95f83915076640ca0be01aa473744777.1577386915.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.499.git.1577386915.gitgitgadget@gmail.com>

From: =?UTF-8?q?Zoli=20Szab=C3=B3?= <zoli.szabo@gmail.com>

...in the default associated app (e.g. in a text editor / IDE).

Many times there's the need to quickly open a source file (the one you're
looking at in Git GUI) in the predefined text editor / IDE. Of course,
the file can be searched for in your preferred file manager or directly
in the text editor, but having the option to directly open the current
file from Git GUI would be just faster. This change enables just that by:
 - Diff header path context menu -> Open;
 - or double-clicking the diff header path.

One "downside" of the approach is that executable files will be run
and not opened for editing.

Signed-off-by: Zoli Szabó <zoli.szabo@gmail.com>
---
 git-gui.sh | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index c1be733e3e..705b97f7ab 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -2248,8 +2248,8 @@ proc do_git_gui {} {
 	}
 }
 
-proc do_explore {} {
-	global _gitworktree
+# Get the system-specific explorer app/command.
+proc get_explorer {} {
 	set explorer {}
 	if {[is_Cygwin] || [is_Windows]} {
 		set explorer "explorer.exe"
@@ -2259,9 +2259,25 @@ proc do_explore {} {
 		# freedesktop.org-conforming system is our best shot
 		set explorer "xdg-open"
 	}
+	return $explorer
+}
+
+proc do_explore {} {
+	global _gitworktree
+	set explorer [get_explorer]
 	eval exec $explorer [list [file nativename $_gitworktree]] &
 }
 
+# Trigger opening a file (relative to the working tree) by the default
+# associated app of the OS (e.g. a text editor or IDE).
+# FIXME: What about executables (will be run, not opened for editing)?
+proc do_file_open {file} {
+	global _gitworktree
+	set explorer [get_explorer]
+	set full_file_path [file join $_gitworktree $file]
+	eval exec $explorer [list [file nativename $full_file_path]] &
+}
+
 set is_quitting 0
 set ret_code    1
 
@@ -3530,8 +3546,14 @@ $ctxm add command \
 			-type STRING \
 			-- $current_diff_path
 	}
+$ctxm add command \
+	-label [mc Open] \
+	-command {
+		do_file_open $current_diff_path
+	}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 bind_button3 .vpane.lower.diff.header.path "tk_popup $ctxm %X %Y"
+bind .vpane.lower.diff.header.path <Double-1> {do_file_open $current_diff_path}
 
 # -- Diff Body
 #
-- 
gitgitgadget

  reply	other threads:[~2019-12-26 19:02 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-26 19:01 [PATCH 0/1] git-gui: add possibility to open currently selected file Zoli Szabó via GitGitGadget
2019-12-26 19:01 ` Zoli Szabó via GitGitGadget [this message]
2019-12-27 19:34   ` [PATCH 1/1] " Pratyush Yadav
2019-12-27 22:32     ` Junio C Hamano
2019-12-29 20:15       ` Zoli Szabó
2019-12-29 23:14         ` Junio C Hamano
2019-12-30 16:13           ` Zoli Szabó
2019-12-29 13:23     ` Zoli Szabó
2019-12-29 19:32 ` [PATCH v2 0/1] git-gui: allow opening " Zoli Szabó via GitGitGadget
2019-12-29 19:32   ` [PATCH v2 1/1] " Zoli Szabó via GitGitGadget
2019-12-30 15:56   ` [PATCH v3 0/1] " Zoli Szabó via GitGitGadget
2019-12-30 15:56     ` [PATCH v3 1/1] git-gui: allow opening currently selected file in default app Zoli Szabó via GitGitGadget
2019-12-30 19:41       ` Pratyush Yadav
2019-12-30 20:31         ` Zoli Szabó

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=fce80f1b95f83915076640ca0be01aa473744777.1577386915.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=me@yadavpratyush.com \
    --cc=zoli.szabo@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.