Merge branch 'jk/colors'
authorJunio C Hamano <gitster@pobox.com>
Tue, 14 Apr 2015 18:49:13 +0000 (11:49 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Apr 2015 18:49:13 +0000 (11:49 -0700)
"diff-highlight" (in contrib/) used to show byte-by-byte
differences, which meant that multi-byte characters can be chopped
in the middle. It learned to pay attention to character boundaries
(assuming the UTF-8 payload).

* jk/colors:
diff-highlight: do not split multibyte characters

contrib/diff-highlight/diff-highlight
index 08c88bbc87e51e25cacc5826b26a223f3bfbd382..ffefc31a98a26dfd65d188bbb547cc114231c13d 100755 (executable)
@@ -1,5 +1,6 @@
 #!/usr/bin/perl
 
+use 5.008;
 use warnings FATAL => 'all';
 use strict;
 
@@ -164,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 {