]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - tig.pl
tig.pl: Print line when dieing.
[config/dotfiles.git] / tig.pl
diff --git a/tig.pl b/tig.pl
index 615107a993b2d8437cc2ef29bddec31e9955d402..77b7d9416600f812fd760bbf7f05df208e99effa 100755 (executable)
--- a/tig.pl
+++ b/tig.pl
@@ -44,13 +44,13 @@ open my $fh, '-|', $cmd or die $!;
 
 while (my $line = <$fh>) {
     # History graph line.
-    if ($line =~ m{^([|/\\ ]+)$}) {
+    if ($line =~ m{^([|/\\_ ]+)$}) {
         print colored($line, $color_graph);
         next;
     }
 
     # Commit line.
-    $line =~ /^([ *|]+) (.+)\x00(.+)\x00(.+)\x00(.+)\x00(.*)$/ or die;
+    $line =~ /^([ *|]+) (.+)\x00(.+)\x00(.+)\x00(.+)\x00(.*)$/ or die $line;
     my $prefix  = $1;
     my $hash    = colored($2, $color_hash);
     my $date    = POSIX::strftime('%Y-%m-%d', localtime($3));
@@ -61,11 +61,32 @@ while (my $line = <$fh>) {
     # Color "graph".
     $prefix =~ s/\|/colored($&, $color_graph)/ge;
 
-    # Strip leading whitespace.
+    # Strip leading whitespace and braces.
     $refs =~ s/^\s+//;
+    $refs =~ tr/()//d;
 
-    printf "%s %s %s %s %s %s\n",
-           $prefix, $hash, $date, $author, $message, $refs;
+    # Color refs.
+    $refs = join colored(', ', $color_ref_sep), map {
+        my $color;
+        if ($_ eq 'HEAD') {
+            $color = $color_ref_head;
+        } elsif (m{/}) {
+            $color = $color_ref_reference;
+        } else {
+            $color = $color_ref_branch;
+        }
+        colored($_, $color);
+    } split /, /, $refs;
+
+    if ($refs ne '') {
+        $refs = ' '
+              . colored('(', $color_ref_sep)
+              . $refs
+              . colored(')', $color_ref_sep);
+    }
+
+    printf "%s %s %s %s%s %s\n",
+           $prefix, $hash, $date, $author, $refs, $message;
 }
 
 close $fh or die $!;