[PATCH 2/2] In add --patch, Handle K,k,J,j slightly more gracefully.
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