t7300: add tests to document behavior of clean and nested git
[gitweb.git] / contrib / diff-highlight / diff-highlight
index 4a5f317b7c5412624a5cc463899a9f743b46cc9a..ffefc31a98a26dfd65d188bbb547cc114231c13d 100755 (executable)
@@ -1,5 +1,6 @@
 #!/usr/bin/perl
 
+use 5.008;
 use warnings FATAL => 'all';
 use strict;
 
@@ -24,6 +25,10 @@ my @removed;
 my @added;
 my $in_hunk;
 
+# Some scripts may not realize that SIGPIPE is being ignored when launching the
+# pager--for instance scripts written in Python.
+$SIG{PIPE} = 'DEFAULT';
+
 while (<>) {
        if (!$in_hunk) {
                print;
@@ -160,8 +165,12 @@ sub highlight_pair {
 
 sub split_line {
        local $_ = shift;
-       return map { /$COLOR/ ? $_ : (split //) }
-              split /($COLOR*)/;
+       return utf8::decode($_) ?
+               map { utf8::encode($_); $_ }
+                       map { /$COLOR/ ? $_ : (split //) }
+                       split /($COLOR+)/ :
+               map { /$COLOR/ ? $_ : (split //) }
+               split /($COLOR+)/;
 }
 
 sub highlight_line {