@@ -72,6 +72,7 @@ my $CHANGED = ON_BLUE;
72
72
my $MISSINGNL = ON_MAGENTA;
73
73
my $UNCHANGED = " " ;
74
74
my $OMITTED = MAGENTA;
75
+ my $MESSAGE = BLACK . ON_YELLOW; # lines generated by sdiff outside of diffs proper
75
76
76
77
my $OFF = RESET;
77
78
@@ -174,7 +175,13 @@ my @spec = ();
174
175
for (my $n =0;$n <@out ;$n ++) {
175
176
my $line = $out [$n ];
176
177
chomp $line ;
177
- my $spec = length ($line ) >= $spos ? substr ($line ,$spos ,1) : " " ;
178
+ my $spec = " " ;
179
+ if ($line =~ / ^diff |^Common subdirectories:|^Only in/ ) {
180
+ $spec = " m" ; # means a message generated by sdiff
181
+ $line = $MESSAGE .$line .$OFF ." \n " ;
182
+ } else {
183
+ $spec = length ($line ) >= $spos ? substr ($line ,$spos ,1) : " " ;
184
+ }
178
185
if ($spec eq " >" ) {
179
186
$line .= (" " x ($cols - length ($line )));
180
187
$line = $INSERT .$line .$OFF ." \n " ;
@@ -187,9 +194,9 @@ for (my $n=0;$n<@out;$n++) {
187
194
} elsif (($spec eq " /" ) || ($spec eq " \\ " )) {
188
195
$line .= (" " x ($cols - length ($line )));
189
196
$line = $MISSINGNL .$line .$OFF ." \n " ;
190
- } else {
191
- $line = $UNCHANGED .$line .$UNCHOFF ." \n " ;
197
+ } elsif ($spec ne " m" ) {
192
198
$spec = " " ;
199
+ $line = $UNCHANGED .$line .$UNCHOFF ." \n " ;
193
200
}
194
201
$out [$n ] = $line ;
195
202
$spec [$n ] = $spec ;
@@ -198,6 +205,7 @@ for (my $n=0;$n<@out;$n++) {
198
205
my %SHOW_SPECS =();
199
206
$FILTERS ||= " udamco" ; # all
200
207
$FILTERS .= " u" if defined ($CONTEXT );
208
+ $SHOW_SPECS {" m" }=1; # sdiff messages
201
209
$SHOW_SPECS {" " }=1 if $FILTERS =~ / [us]/i ; # unchanged/same
202
210
$SHOW_SPECS {" <" }=1 if $FILTERS =~ / d/i ; # deleted
203
211
$SHOW_SPECS {" >" }=1 if $FILTERS =~ / a/i ; # added
@@ -210,7 +218,7 @@ if (defined($CONTEXT)) {
210
218
my $prevend = -1;
211
219
for (my $n =0;$n <@out ;$n ++) {
212
220
my $spec = $spec [$n ] || " " ;
213
- next if $spec eq " " || !$SHOW_SPECS {$spec };
221
+ next if $spec =~ / [m ] / || !$SHOW_SPECS {$spec };
214
222
my $start = $n - $CONTEXT ; $start = 0 if $start < 0;
215
223
$start = $prevend + 1 if $start <= $prevend ;
216
224
my $end = $n ;
0 commit comments