On Tue, Oct 17, 2017 at 11:17:33PM -0500, Jeff Smith wrote:
> Signed-off-by: Jeff Smith <[email protected]>

Reviewed-by: John Keeping <[email protected]>

> ---
>  ui-blame.c | 44 ++++++++++++++++++++++++++++++--------------
>  1 file changed, 30 insertions(+), 14 deletions(-)
> 
> diff --git a/ui-blame.c b/ui-blame.c
> index a5ac590..9b84147 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;
> +
> +     char *detail = emit_suspect_detail(suspect);
> +     cgit_commit_link(find_unique_abbrev(oid->hash, DEFAULT_ABBREV), detail,
> +                      NULL, ctx.qry.head, oid_to_hex(oid), suspect->path);
> +     free(detail);
> +}
> +
> +static void emit_blame_entry_linenumber(struct blame_entry *ent)
> +{
>       const char *numberfmt = "<a id='n%1$d' href='#n%1$d'>%1$d</a>\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;
>  
> -     char *detail = emit_suspect_detail(suspect);
> +     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("<tr><td class='sha1 hashes'>");
> -     cgit_commit_link(find_unique_abbrev(oid->hash, DEFAULT_ABBREV), detail,
> -                      NULL, ctx.qry.head, oid_to_hex(oid), suspect->path);
> +     emit_blame_entry_hash(ent);
>       html("</td>\n");
>  
> -     free(detail);
> -
>       if (ctx.cfg.enable_tree_linenumbers) {
> -             unsigned long lineno = ent->lno;
>               html("<td class='linenumbers'><pre>");
> -             while (lineno < ent->lno + ent->num_lines)
> -                     htmlf(numberfmt, ++lineno);
> +             emit_blame_entry_linenumber(ent);
>               html("</pre></td>\n");
>       }
>  
> -     cp = blame_nth_line(sb, ent->lno);
> -     cpend = blame_nth_line(sb, ent->lno + ent->num_lines);
> -
>       html("<td class='lines'><pre><code>");
> -     html_ntxt(cp, cpend - cp);
> +     emit_blame_entry_line(sb, ent);
>       html("</code></pre></td></tr>\n");
>  }
>  
_______________________________________________
CGit mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/cgit

Reply via email to