@@ -731,14 +731,17 @@ sub parse_diff_header {
731
731
732
732
my $head = { TEXT => [], DISPLAY => [], TYPE => ' header' };
733
733
my $mode = { TEXT => [], DISPLAY => [], TYPE => ' mode' };
734
+ my $deletion = { TEXT => [], DISPLAY => [], TYPE => ' deletion' };
734
735
735
736
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 ;
738
741
push @{$dest -> {TEXT }}, $src -> {TEXT }-> [$i ];
739
742
push @{$dest -> {DISPLAY }}, $src -> {DISPLAY }-> [$i ];
740
743
}
741
- return ($head , $mode );
744
+ return ($head , $mode , $deletion );
742
745
}
743
746
744
747
sub hunk_splittable {
@@ -1206,14 +1209,17 @@ sub patch_update_file {
1206
1209
my ($ix , $num );
1207
1210
my $path = shift ;
1208
1211
my ($head , @hunk ) = parse_diff($path );
1209
- ($head , my $mode ) = parse_diff_header($head );
1212
+ ($head , my $mode , my $deletion ) = parse_diff_header($head );
1210
1213
for (@{$head -> {DISPLAY }}) {
1211
1214
print ;
1212
1215
}
1213
1216
1214
1217
if (@{$mode -> {TEXT }}) {
1215
1218
unshift @hunk , $mode ;
1216
1219
}
1220
+ if (@{$deletion -> {TEXT }} && !@hunk ) {
1221
+ @hunk = ($deletion );
1222
+ }
1217
1223
1218
1224
$num = scalar @hunk ;
1219
1225
$ix = 0;
@@ -1267,7 +1273,9 @@ sub patch_update_file {
1267
1273
print ;
1268
1274
}
1269
1275
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' ),
1271
1279
$patch_mode_flavour {TARGET },
1272
1280
" [y,n,q,a,d,/$other ,?]? " ;
1273
1281
my $line = prompt_single_character;
0 commit comments