aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter Wu <lekensteyn@gmail.com>2013-10-03 19:17:23 (JST)
committerGravatar Jason A. Donenfeld <Jason@zx2c4.com>2014-01-08 22:59:38 (JST)
commit4468ec1b15becf3838d8cf38440c527c487565a4 (patch)
tree4c9220561ab256dc012e17146f6d0546637e6c69
parent407f71cc061564d63b7358dd36a5bfebda05b15a (diff)
downloadcgit-4468ec1b15becf3838d8cf38440c527c487565a4.zip
cgit-4468ec1b15becf3838d8cf38440c527c487565a4.tar.gz
Reduce line number bloat, fix hover effect
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@gmail.com> Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
-rw-r--r--cgit.css6
-rwxr-xr-xtests/t0104-tree.sh4
-rw-r--r--ui-ssdiff.c8
-rw-r--r--ui-tree.c3
4 files changed, 11 insertions, 10 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 {
291 padding: 0; margin: 0; 291 padding: 0; margin: 0;
292} 292}
293 293
294div#cgit table.blob a.no, div#cgit table.ssdiff a.no { 294div#cgit table.blob td.linenumbers a,
295div#cgit table.ssdiff td.lineno a {
295 color: gray; 296 color: gray;
296 text-align: right; 297 text-align: right;
297 text-decoration: none; 298 text-decoration: none;
298} 299}
299 300
300div#cgit table.blob a.no a:hover { 301div#cgit table.blob td.linenumbers a:hover,
302div#cgit table.ssdiff td.lineno a:hover {
301 color: black; 303 color: black;
302} 304}
303 305
diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh
index 100b026..2e140f5 100755
--- a/tests/t0104-tree.sh
+++ b/tests/t0104-tree.sh
@@ -10,11 +10,11 @@ test_expect_success 'find file-50' 'grep "file-50" tmp'
10test_expect_success 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >tmp' 10test_expect_success 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >tmp'
11 11
12test_expect_success 'find line 1' ' 12test_expect_success 'find line 1' '
13 grep "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" tmp 13 grep "<a id=.n1. href=.#n1.>1</a>" tmp
14' 14'
15 15
16test_expect_success 'no line 2' ' 16test_expect_success 'no line 2' '
17 ! grep "<a class=.no. id=.n2. name=.n2. href=.#n2.>2</a>" tmp 17 ! grep "<a id=.n2. href=.#n2.>2</a>" tmp
18' 18'
19 19
20test_expect_success 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >tmp' 20test_expect_success 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >tmp'
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,
230 struct diff_filespec *old_file = cgit_get_current_old_file(); 230 struct diff_filespec *old_file = cgit_get_current_old_file();
231 char *lineno_str = fmt("n%d", old_line_no); 231 char *lineno_str = fmt("n%d", old_line_no);
232 char *id_str = fmt("id=%s#%s", is_null_sha1(old_file->sha1)?"HEAD":sha1_to_hex(old_rev_sha1), lineno_str); 232 char *id_str = fmt("id=%s#%s", is_null_sha1(old_file->sha1)?"HEAD":sha1_to_hex(old_rev_sha1), lineno_str);
233 html("<td class='lineno'><a class='no' href='"); 233 html("<td class='lineno'><a href='");
234 html(cgit_fileurl(ctx.repo->url, "tree", old_file->path, id_str)); 234 html(cgit_fileurl(ctx.repo->url, "tree", old_file->path, id_str));
235 htmlf("' id='%s' name='%s'>%s</a>", lineno_str, lineno_str, lineno_str + 1); 235 htmlf("' id='%s'>%s</a>", lineno_str, lineno_str + 1);
236 html("</td>"); 236 html("</td>");
237 htmlf("<td class='%s'>", class); 237 htmlf("<td class='%s'>", class);
238 } else if (old_line) 238 } else if (old_line)
@@ -251,9 +251,9 @@ static void print_ssdiff_line(char *class,
251 struct diff_filespec *new_file = cgit_get_current_new_file(); 251 struct diff_filespec *new_file = cgit_get_current_new_file();
252 char *lineno_str = fmt("n%d", new_line_no); 252 char *lineno_str = fmt("n%d", new_line_no);
253 char *id_str = fmt("id=%s#%s", is_null_sha1(new_file->sha1)?"HEAD":sha1_to_hex(new_rev_sha1), lineno_str); 253 char *id_str = fmt("id=%s#%s", is_null_sha1(new_file->sha1)?"HEAD":sha1_to_hex(new_rev_sha1), lineno_str);
254 html("<td class='lineno'><a class='no' href='"); 254 html("<td class='lineno'><a href='");
255 html(cgit_fileurl(ctx.repo->url, "tree", new_file->path, id_str)); 255 html(cgit_fileurl(ctx.repo->url, "tree", new_file->path, id_str));
256 htmlf("' id='%s' name='%s'>%s</a>", lineno_str, lineno_str, lineno_str + 1); 256 htmlf("' id='%s'>%s</a>", lineno_str, lineno_str + 1);
257 html("</td>"); 257 html("</td>");
258 htmlf("<td class='%s'>", class); 258 htmlf("<td class='%s'>", class);
259 } else if (new_line) 259 } else if (new_line)
diff --git a/ui-tree.c b/ui-tree.c
index aa5dee9..52b57b7 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -21,8 +21,7 @@ struct walk_tree_context {
21static void print_text_buffer(const char *name, char *buf, unsigned long size) 21static void print_text_buffer(const char *name, char *buf, unsigned long size)
22{ 22{
23 unsigned long lineno, idx; 23 unsigned long lineno, idx;
24 const char *numberfmt = 24 const char *numberfmt = "<a id='n%1$d' href='#n%1$d'>%1$d</a>\n";
25 "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n";
26 25
27 html("<table summary='blob content' class='blob'>\n"); 26 html("<table summary='blob content' class='blob'>\n");
28 27