[PATCH] Reduce line number bloat, fix hover effect

Peter Wu lekensteyn at gmail.com
Wed Nov 27 17:59:11 CET 2013


Hi,

Could you have a look at this patch?

Regards,
Peter

On Thursday 03 October 2013 12:17:23 Peter Wu wrote:
> Currently line numbers look like (for blob view and sdiff respectively):
> 
>     <a class='no' id='n68' name='n68' href='#n68'>68</a>
>     <td class='lineno'><a class='no' href='...#n1' id='n1' name='n1'>1</a></td>
> 
> name=".." is unnecessary if the id attribute is set (this even applies
> to IE6), so drop it. (aside, in HTML5, the name attribute is gone.)
> 
> The line number links can be selected through their parent classes, no
> need for another class "no", so drop it too.
> 
> For a file with 2000 lines, this yields a saving of 40% (29% gzipped).
> 
> While at it, fix the hover effect of line numbers: now the line number
> get a black background as was intended.
> 
> Signed-off-by: Peter Wu <lekensteyn at gmail.com>
> ---
>  cgit.css    | 6 ++++--
>  ui-ssdiff.c | 8 ++++----
>  ui-tree.c   | 2 +-
>  3 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/cgit.css b/cgit.css
> index d467c66..71b0b9b 100644
> --- a/cgit.css
> +++ b/cgit.css
> @@ -291,13 +291,15 @@ div#cgit table.blob pre {
>  	padding: 0; margin: 0;
>  }
>  
> -div#cgit table.blob a.no, div#cgit table.ssdiff a.no {
> +div#cgit table.blob td.linenumbers a,
> +div#cgit table.ssdiff td.lineno a {
>  	color: gray;
>  	text-align: right;
>  	text-decoration: none;
>  }
>  
> -div#cgit table.blob a.no a:hover {
> +div#cgit table.blob td.linenumbers a:hover,
> +div#cgit table.ssdiff td.lineno a:hover {
>  	color: black;
>  }
>  
> diff --git a/ui-ssdiff.c b/ui-ssdiff.c
> index cbe60bd..08cf513 100644
> --- a/ui-ssdiff.c
> +++ b/ui-ssdiff.c
> @@ -230,9 +230,9 @@ static void print_ssdiff_line(char *class,
>  		struct diff_filespec *old_file = cgit_get_current_old_file();
>  		char *lineno_str = fmt("n%d", old_line_no);
>  		char *id_str = fmt("id=%s#%s", is_null_sha1(old_file->sha1)?"HEAD":sha1_to_hex(old_rev_sha1), lineno_str);
> -		html("<td class='lineno'><a class='no' href='");
> +		html("<td class='lineno'><a href='");
>  		html(cgit_fileurl(ctx.repo->url, "tree", old_file->path, id_str));
> -		htmlf("' id='%s' name='%s'>%s</a>", lineno_str, lineno_str, lineno_str + 1);
> +		htmlf("' id='%s'>%s</a>", lineno_str, lineno_str + 1);
>  		html("</td>");
>  		htmlf("<td class='%s'>", class);
>  	} else if (old_line)
> @@ -251,9 +251,9 @@ static void print_ssdiff_line(char *class,
>  		struct diff_filespec *new_file = cgit_get_current_new_file();
>  		char *lineno_str = fmt("n%d", new_line_no);
>  		char *id_str = fmt("id=%s#%s", is_null_sha1(new_file->sha1)?"HEAD":sha1_to_hex(new_rev_sha1), lineno_str);
> -		html("<td class='lineno'><a class='no' href='");
> +		html("<td class='lineno'><a href='");
>  		html(cgit_fileurl(ctx.repo->url, "tree", new_file->path, id_str));
> -		htmlf("' id='%s' name='%s'>%s</a>", lineno_str, lineno_str, lineno_str + 1);
> +		htmlf("' id='%s'>%s</a>", lineno_str, lineno_str + 1);
>  		html("</td>");
>  		htmlf("<td class='%s'>", class);
>  	} else if (new_line)
> diff --git a/ui-tree.c b/ui-tree.c
> index aa5dee9..9fb9590 100644
> --- a/ui-tree.c
> +++ b/ui-tree.c
> @@ -22,7 +22,7 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
>  {
>  	unsigned long lineno, idx;
>  	const char *numberfmt =
> -		"<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n";
> +		"<a id='n%1$d' href='#n%1$d'>%1$d</a>\n";
>  
>  	html("<table summary='blob content' class='blob'>\n");
>  
> 



More information about the CGit mailing list