This sequence of 2 patches adds a '/' command to add --patch that allows the user to search for a hunk that matches a regex, and deals with j,k slightly more gracefully. (Rather than printing the help menu if k is invalid, it will print a relevant error message.) This is naive, and it is easy for an invalid search string to cause a perl error. I think it could be useful functionality to make robust. (Please CC me in any response) --- git-add--interactive.perl | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diff --git a/git-add--interactive.perl b/git-add--interactive.perl index b0223c3..7ad4ee0 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -876,12 +876,14 @@ sub patch_update_file { $num = scalar @hunk; $ix = 0; + my $search_s; # User entered string to match a hunk. while (1) { my ($prev, $next, $other, $undecided, $i); $other = ''; if ($num <= $ix) { + $search_s = 0; $ix = 0; } for ($i = 0; $i < $ix; $i++) { @@ -916,11 +918,24 @@ sub patch_update_file { $other .= '/s'; } $other .= '/e'; - for (@{$hunk[$ix]{DISPLAY}}) { - print; + + my $line; + if( $search_s ) { + my $text = join( "", @{$hunk[$ix]{DISPLAY}} ); + if( $text !~ $search_s ) { + $line = "n\n"; + } else { + print $text; + } + } else { + for (@{$hunk[$ix]{DISPLAY}}) { + print; + } + } + if (!$line) { + print colored $prompt_color, "Stage this hunk [y/n/a/d///$other/?]? "; + $line = <STDIN>; } - print colored $prompt_color, "Stage this hunk [y/n/a/d$other/?]? "; - my $line = <STDIN>; if ($line) { if ($line =~ /^y/i) { $hunk[$ix]{USE} = 1; @@ -946,6 +961,9 @@ sub patch_update_file { } next; } + elsif ($line =~ m|^/(.*)|) { + $search_s = $1; + } elsif ($other =~ /K/ && $line =~ /^K/) { $ix--; next; -- 1.6.0.4.781.gf2070.dirty -- William Pursell -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html