In add --patch, Handle K,k,J,j slightly more gracefully.
authorWilliam Pursell <bill.pursell@gmail.com>
Thu, 27 Nov 2008 04:08:03 +0000 (04:08 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 2 Feb 2009 03:43:38 +0000 (19:43 -0800)
Instead of printing the help menu, this will print "No next hunk" and then
process the given hunk again.

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-add--interactive.perl

index 64ad28998e55f189cfa079db232bbf7ef12d93ba..30ddab293b4b4eb2862d068b352e8ccedc31ea5e 100755 (executable)
@@ -1039,29 +1039,42 @@ sub patch_update_file {
                                $ix = $iy;
                                next;
                        }
-                       elsif ($other =~ /K/ && $line =~ /^K/) {
-                               $ix--;
+                       elsif ($line =~ /^K/) {
+                               if ($other =~ /K/) {
+                                       $ix--;
+                               }
+                               else {
+                                       print STDERR "No previous hunk\n";
+                               }
                                next;
                        }
-                       elsif ($other =~ /J/ && $line =~ /^J/) {
-                               $ix++;
+                       elsif ($line =~ /^J/) {
+                               if ($other =~ /J/) {
+                                       $ix++;
+                               }
+                               else {
+                                       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});
+                                       }
+                               }
+                               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});