git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] In add --patch, Handle K,k,J,j slightly more gracefully.
@ 2008-11-26 20:51 William Pursell
  2008-11-26 21:55 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: William Pursell @ 2008-11-26 20:51 UTC (permalink / raw)
  To: git




Instead of printing the help menu, this will print
"No next hunk" and then process the given hunk again.
---
  git-add--interactive.perl |   35 +++++++++++++++++++----------------
  1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 7ad4ee0..6321bd9 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -964,29 +964,32 @@ sub patch_update_file {
  			elsif ($line =~ m|^/(.*)|) {
  				$search_s = $1;
  			}
-			elsif ($other =~ /K/ && $line =~ /^K/) {
-				$ix--;
+			elsif ( $line =~ /^K/) {
+				$other =~ /K/ ?  $ix-- : print STDERR "No previous hunk\n";
  				next;
  			}
-			elsif ($other =~ /J/ && $line =~ /^J/) {
-				$ix++;
+			elsif ($line =~ /^J/) {
+				$other =~ /J/ ?  $ix++ : print STDERR "No next hunk\n";
  				next;
  			}
-			elsif ($other =~ /k/ && $line =~ /^k/) {
-				while (1) {
-					$ix--;
-					last if (!$ix ||
-						 !defined $hunk[$ix]{USE});
+			elsif ($line =~ /^k/) {
+				if ($other =~ /k/) {
+					while (1) {
+						$ix--;
+						last if (!$ix ||
+							 !defined $hunk[$ix]{USE});
+					}
+					next;
+				}
+				else {
+					print STDERR "No previous hunk\n";
  				}
-				next;
  			}
-			elsif ($other =~ /j/ && $line =~ /^j/) {
-				while (1) {
-					$ix++;
-					last if ($ix >= $num ||
-						 !defined $hunk[$ix]{USE});
+			elsif ($line =~ /^j/) {
+				if ($other !~ /j/) {
+					print STDERR "No next hunk\n";
+					next;
  				}
-				next;
  			}
  			elsif ($other =~ /s/ && $line =~ /^s/) {
  				my @split = split_hunk($hunk[$ix]{TEXT}, $hunk[$ix]{DISPLAY});
-- 
1.6.0.4.781.gf2070.dirty


-- 
William Pursell

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

* Re: [PATCH 2/2] In add --patch, Handle K,k,J,j slightly more gracefully.
  2008-11-26 20:51 [PATCH 2/2] In add --patch, Handle K,k,J,j slightly more gracefully William Pursell
@ 2008-11-26 21:55 ` Junio C Hamano
  0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2008-11-26 21:55 UTC (permalink / raw)
  To: William Pursell; +Cc: git

William Pursell <bill.pursell@gmail.com> writes:

> Instead of printing the help menu, this will print
> "No next hunk" and then process the given hunk again.
> ---

Missing sign-off.

> -			elsif ($other =~ /K/ && $line =~ /^K/) {
> -				$ix--;
> +			elsif ( $line =~ /^K/) {
> +				$other =~ /K/ ?  $ix-- : print STDERR "No previous hunk\n";

This may be cute but I think it is harder to read than necessary.

	if ($other =~ /K/) {
        	$ix--;
        } else {
		print STDERR "No previous hunk\n";
        }

> +			elsif ($line =~ /^k/) {
> +				if ($other =~ /k/) {
> +					while (1) {
> +						$ix--;
> +						last if (!$ix ||
> +							 !defined $hunk[$ix]{USE});
> +					}
> +					next;
> +				}
> +				else {
> +					print STDERR "No previous hunk\n";
>  				}
> -				next;
>  			}
> +			elsif ($line =~ /^j/) {
> +				if ($other !~ /j/) {
> +					print STDERR "No next hunk\n";
> +					next;
>  				}
>  			}

Doesn't this behave differently against an unavailable 'k' and 'j'?  When
the user says 'j' when no next hunk is available, it will ask again about
that hunk, but when the user says 'k' at the first hunk, because you
discarded 'next', it will ask about the next hunk, no?  Shouldn't it ask
again about the same hunk, against which the user gave an erroneous input?

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

end of thread, other threads:[~2008-11-26 21:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-26 20:51 [PATCH 2/2] In add --patch, Handle K,k,J,j slightly more gracefully William Pursell
2008-11-26 21:55 ` Junio C Hamano

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