@@ -731,14 +731,17 @@ sub parse_diff_header {
731731
732732 my $head = { TEXT => [], DISPLAY => [], TYPE => ' header' };
733733 my $mode = { TEXT => [], DISPLAY => [], TYPE => ' mode' };
734+ my $deletion = { TEXT => [], DISPLAY => [], TYPE => ' deletion' };
734735
735736 for (my $i = 0; $i < @{$src -> {TEXT }}; $i ++) {
736- my $dest = $src -> {TEXT }-> [$i ] =~ / ^(old|new) mode (\d +)$ / ?
737- $mode : $head ;
737+ my $dest =
738+ $src -> {TEXT }-> [$i ] =~ / ^(old|new) mode (\d +)$ / ? $mode :
739+ $src -> {TEXT }-> [$i ] =~ / ^deleted file/ ? $deletion :
740+ $head ;
738741 push @{$dest -> {TEXT }}, $src -> {TEXT }-> [$i ];
739742 push @{$dest -> {DISPLAY }}, $src -> {DISPLAY }-> [$i ];
740743 }
741- return ($head , $mode );
744+ return ($head , $mode , $deletion );
742745}
743746
744747sub hunk_splittable {
@@ -1206,14 +1209,17 @@ sub patch_update_file {
12061209 my ($ix , $num );
12071210 my $path = shift ;
12081211 my ($head , @hunk ) = parse_diff($path );
1209- ($head , my $mode ) = parse_diff_header($head );
1212+ ($head , my $mode , my $deletion ) = parse_diff_header($head );
12101213 for (@{$head -> {DISPLAY }}) {
12111214 print ;
12121215 }
12131216
12141217 if (@{$mode -> {TEXT }}) {
12151218 unshift @hunk , $mode ;
12161219 }
1220+ if (@{$deletion -> {TEXT }} && !@hunk ) {
1221+ @hunk = ($deletion );
1222+ }
12171223
12181224 $num = scalar @hunk ;
12191225 $ix = 0;
@@ -1267,7 +1273,9 @@ sub patch_update_file {
12671273 print ;
12681274 }
12691275 print colored $prompt_color , $patch_mode_flavour {VERB },
1270- ($hunk [$ix ]{TYPE } eq ' mode' ? ' mode change' : ' this hunk' ),
1276+ ($hunk [$ix ]{TYPE } eq ' mode' ? ' mode change' :
1277+ $hunk [$ix ]{TYPE } eq ' deletion' ? ' deletion' :
1278+ ' this hunk' ),
12711279 $patch_mode_flavour {TARGET },
12721280 " [y,n,q,a,d,/$other ,?]? " ;
12731281 my $line = prompt_single_character;
0 commit comments