X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/c1cd290d1f83d3d1c2d081d734e8d213f12cc06b..2b95c9d49c8581e2b19efca1613ada292f56bf08:/ui-blame.c diff --git a/ui-blame.c b/ui-blame.c index 62cf431..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"); } @@ -101,7 +117,7 @@ static void print_object(const unsigned char *sha1, const char *path, argv_array_push(&rev_argv, "blame"); argv_array_push(&rev_argv, rev); init_revisions(&revs, NULL); - DIFF_OPT_SET(&revs.diffopt, ALLOW_TEXTCONV); + revs.diffopt.flags.allow_textconv = 1; setup_revisions(rev_argv.argc, rev_argv.argv, &revs, NULL); init_scoreboard(&sb); sb.revs = &revs;