diff --git a/ui-blame.c b/ui-blame.c index 62647a8..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); +} - if (ctx.cfg.enable_tree_linenumbers) { - unsigned long lineno = ent->lno; - html("
");
-		while (lineno < ent->lno + ent->num_lines)
-			htmlf(numberfmt, ++lineno);
-		html("
\n"); - } +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("
");
 	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) {
+		html("
");
+		emit_blame_entry_linenumber(ent);
+		html("
\n"); + } + + html("
");
+	emit_blame_entry_line(sb, ent);
 	html("
\n"); }