git-gui: Simplify consecutive lines that come from the same commit
[gitweb.git] / lib / blame.tcl
index f48624a99eba8820230c7f30e6e9f802af1890ad..86160092c662673dfe0d852228097d9a68ed91df 100644 (file)
@@ -267,7 +267,18 @@ method _read_blame {fd} {
                        set n    $r_line_count
                        set lno  $r_final_line
                        set cmit $r_commit
-                       set abbr [string range $cmit 0 4]
+
+                       if {[regexp {^0{40}$} $cmit]} {
+                               set abbr work
+                       } else {
+                               set abbr [string range $cmit 0 4]
+                       }
+
+                       if {![catch {set ncmit $line_commit([expr {$lno - 1}])}]} {
+                               if {$ncmit eq $cmit} {
+                                       set abbr |
+                               }
+                       }
 
                        while {$n > 0} {
                                set lno_e "$lno.0 lineend + 1c"
@@ -286,8 +297,9 @@ method _read_blame {fd} {
                                set line_commit($lno) $cmit
                                set line_file($lno)   $file
 
-                               $w_cgrp delete $lno.0 $lno_e
-                               $w_cgrp insert $lno.0 "$abbr\n"
+                               $w_cgrp delete $lno.0 "$lno.0 lineend"
+                               $w_cgrp insert $lno.0 $abbr
+                               set abbr |
 
                                $w_cgrp tag add g$cmit $lno.0 $lno_e
                                $w_line tag add g$cmit $lno.0 $lno_e
@@ -311,6 +323,13 @@ method _read_blame {fd} {
                                incr blame_lines
                        }
 
+                       if {![catch {set ncmit $line_commit($lno)}]} {
+                               if {$ncmit eq $cmit} {
+                                       $w_cgrp delete $lno.0 "$lno.0 lineend + 1c"
+                                       $w_cgrp insert $lno.0 "|\n"
+                               }
+                       }
+
                        set hc $highlight_commit
                        if {$hc ne {}
                                && [expr {$order($hc) + 1}] == $order($cmit)} {