X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/2b95c9d49c8581e2b19efca1613ada292f56bf08..b759189574971eabf98aee73b4e4e4c604e21a94:/ui-blame.c diff --git a/ui-blame.c b/ui-blame.c index bbaad1c..b118a81 100644 --- a/ui-blame.c +++ b/ui-blame.c @@ -45,11 +45,17 @@ static void emit_blame_entry_hash(struct blame_entry *ent) { struct blame_origin *suspect = ent->suspect; struct object_id *oid = &suspect->commit->object.oid; + unsigned long line = 0; char *detail = emit_suspect_detail(suspect); + html(""); cgit_commit_link(find_unique_abbrev(oid->hash, DEFAULT_ABBREV), detail, NULL, ctx.qry.head, oid_to_hex(oid), suspect->path); + html(""); free(detail); + + while (line++ < ent->num_lines) + html("\n"); } static void emit_blame_entry_linenumber(struct blame_entry *ent) @@ -61,33 +67,29 @@ static void emit_blame_entry_linenumber(struct blame_entry *ent) htmlf(numberfmt, ++lineno); } -static void emit_blame_entry_line(struct blame_scoreboard *sb, - struct blame_entry *ent) -{ - const char *cp, *cpend; - - cp = blame_nth_line(sb, ent->lno); - cpend = blame_nth_line(sb, ent->lno + ent->num_lines); - - html_ntxt(cp, cpend - cp); -} - -static void emit_blame_entry(struct blame_scoreboard *sb, - struct blame_entry *ent) +static void emit_blame_entry_line_background(struct blame_scoreboard *sb, + struct blame_entry *ent) { - html("
");
- emit_blame_entry_linenumber(ent);
- html("");
- emit_blame_entry_line(sb, ent);
- html("");
+ for (ent = sb.ent; ent; ent = ent->next) {
+ html("");
+ emit_blame_entry_hash(ent);
+ html(" | \n");
+
+ /* Line numbers */
+ if (ctx.cfg.enable_tree_linenumbers) {
+ html("");
+ for (ent = sb.ent; ent; ent = ent->next) {
+ html("");
+ emit_blame_entry_linenumber(ent);
+ html(" | \n");
+ }
+
+ html("");
+
+ /* Colored bars behind lines */
+ html(" ");
for (ent = sb.ent; ent; ) {
struct blame_entry *e = ent->next;
- emit_blame_entry(&sb, ent);
+ html(" ");
+ emit_blame_entry_line_background(&sb, ent);
+ html(" |
");
+ if (ctx.repo->source_filter) {
+ char *filter_arg = xstrdup(basename);
+ cgit_open_filter(ctx.repo->source_filter, filter_arg);
+ html_raw(buf, size);
+ cgit_close_filter(ctx.repo->source_filter);
+ free(filter_arg);
+ } else {
+ html_txt(buf);
+ }
+ html("");
+
+ html("\n");
+
+ html("\n