X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/1dd53e3a2ffec730ec27ebe15b3d63e0b417a544..2b95c9d49c8581e2b19efca1613ada292f56bf08:/ui-blame.c diff --git a/ui-blame.c b/ui-blame.c index d4a4534..bbaad1c 100644 --- a/ui-blame.c +++ b/ui-blame.c @@ -41,36 +41,52 @@ static char *emit_suspect_detail(struct blame_origin *suspect) return strbuf_detach(&detail, NULL); } -static void emit_blame_entry(struct blame_scoreboard *sb, - struct blame_entry *ent) +static void emit_blame_entry_hash(struct blame_entry *ent) { struct blame_origin *suspect = ent->suspect; struct object_id *oid = &suspect->commit->object.oid; - const char *numberfmt = "%1$d\n"; - const char *cp, *cpend; 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("\n"); - free(detail); +} + +static void emit_blame_entry_linenumber(struct blame_entry *ent) +{ + const char *numberfmt = "%1$d\n"; + + unsigned long lineno = ent->lno; + while (lineno < ent->lno + ent->num_lines) + 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) +{ + html(""); + emit_blame_entry_hash(ent); + html("\n"); if (ctx.cfg.enable_tree_linenumbers) { - unsigned long lineno = ent->lno; html("
");
-		while (lineno < ent->lno + ent->num_lines)
-			htmlf(numberfmt, ++lineno);
+		emit_blame_entry_linenumber(ent);
 		html("
\n"); } - cp = blame_nth_line(sb, ent->lno); - cpend = blame_nth_line(sb, ent->lno + ent->num_lines); - html("
");
-	html_ntxt(cp, cpend - cp);
+	emit_blame_entry_line(sb, ent);
 	html("
\n"); }