git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-add-interactive: edit current file in editor
@ 2015-07-27 23:41 Sina Siadat
  2015-07-28  5:12 ` Jacob Keller
  2015-07-29 19:05 ` Eric Sunshine
  0 siblings, 2 replies; 3+ messages in thread
From: Sina Siadat @ 2015-07-27 23:41 UTC (permalink / raw)
  To: git; +Cc: Sina Siadat

Adds a new option 'o' to the 'add -p' command that lets you open and edit the
current file.

The existing 'e' mode is used to manually edit the hunk.  The new 'o' option
allows you to open and edit the file without having to quit the loop. The hunks
are updated when the editing is done, and the user will be able to review the
updated hunks.  Without this option you would have to quit the loop, edit the
file, and execute 'add -p filename' again.

I would appreciate it if you could let me know what you think about this
option. I will write more tests if there is any interest at all.

Thank you. :)

---
 Documentation/git-add.txt  |  1 +
 git-add--interactive.perl  | 11 ++++++++++-
 t/t3701-add-interactive.sh |  6 ++++++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index fe5282f..6752eb0 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -312,6 +312,7 @@ patch::
        K - leave this hunk undecided, see previous hunk
        s - split the current hunk into smaller hunks
        e - manually edit the current hunk
+       o - open this file in editor
        ? - print help
 +
 After deciding the fate for all hunks, if there is any hunk
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 77876d4..a44f3b3 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -1175,6 +1175,7 @@ k - leave this hunk undecided, see previous undecided hunk
 K - leave this hunk undecided, see previous hunk
 s - split the current hunk into smaller hunks
 e - manually edit the current hunk
+o - open this file in editor
 ? - print help
 EOF
 }
@@ -1359,7 +1360,7 @@ sub patch_update_file {
 		   $hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' :
 		   ' this hunk'),
 		  $patch_mode_flavour{TARGET},
-		  " [y,n,q,a,d,/$other,?]? ";
+		  " [y,n,q,a,d,o,/$other,?]? ";
 		my $line = prompt_single_character;
 		last unless defined $line;
 		if ($line) {
@@ -1378,6 +1379,14 @@ sub patch_update_file {
 				}
 				next;
 			}
+			elsif ($line =~ /^o/) {
+				chomp(my $editor = run_cmd_pipe(qw(git var GIT_EDITOR)));
+				system('sh', '-c', $editor.' "$@"', $editor, $path);
+				($head, @hunk) = parse_diff($path);
+				$num = scalar @hunk;
+				$ix = 0;
+				next;
+			}
 			elsif ($other =~ /g/ && $line =~ /^g(.*)/) {
 				my $response = $1;
 				my $no = $ix > 10 ? $ix - 10 : 0;
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index deae948..e5dd1c6 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -98,6 +98,12 @@ test_expect_success 'dummy edit works' '
 	test_cmp expected diff
 '
 
+test_expect_success 'dummy open works' '
+	(echo o; echo a) | git add -p &&
+	git diff > diff &&
+	test_cmp expected diff
+'
+
 test_expect_success 'setup patch' '
 cat >patch <<EOF
 @@ -1,1 +1,4 @@
-- 
2.5.0.rc3.2.g6f9504c.dirty

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-07-29 19:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-27 23:41 [PATCH] git-add-interactive: edit current file in editor Sina Siadat
2015-07-28  5:12 ` Jacob Keller
2015-07-29 19:05 ` Eric Sunshine

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).