diff options
| -rw-r--r-- | cgit.css | 27 | ||||
| -rwxr-xr-x | tests/t0104-tree.sh | 4 | ||||
| -rw-r--r-- | ui-tree.c | 31 | 
3 files changed, 34 insertions, 28 deletions
| @@ -236,26 +236,31 @@ table.blob {  	border-top: solid 1px black;  } -table.blob td.no { -	border-right: solid 1px black; +table.blob td.lines { +	margin: 0; padding: 0; +	vertical-align: top;  	color: black; +} + +table.blob td.linenumbers { +	margin: 0; padding: 0; +	vertical-align: top; +	border-right: 1px solid gray;  	background-color: #eee; -	text-align: right;  } -table.blob td.no a { -	color: black; +table.blob pre { +	padding: 0; margin: 0;  } -table.blob td.no a:hover { -	color: black; +table.blob a.no { +	color: gray; +	text-align: right;  	text-decoration: none;  } -table.blob td.txt { -	white-space: pre; -	font-family: monospace; -	padding-left: 0.5em; +table.blob a.no a:hover { +	color: black;  }  table.nowrap td { diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh index 33f4eb0..2ce1251 100755 --- a/tests/t0104-tree.sh +++ b/tests/t0104-tree.sh @@ -11,11 +11,11 @@ run_test 'find file-50' 'grep -e "file-50" trash/tmp'  run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp'  run_test 'find line 1' ' -	grep -e "<a id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp +	grep -e "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp  '  run_test 'no line 2' ' -	! grep -e "<a id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp +	! grep -e "<a class=.no. id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp  '  run_test 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >trash/tmp' @@ -18,8 +18,8 @@ static void print_object(const unsigned char *sha1, char *path)  {  	enum object_type type;  	char *buf; -	unsigned long size, lineno, start, idx; -	const char *linefmt = "<tr><td class='no'><a id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a></td><td class='txt'>"; +	unsigned long size, lineno, idx; +	const char *numberfmt = "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n";  	type = sha1_object_info(sha1, &size);  	if (type == OBJ_BAD) { @@ -38,27 +38,28 @@ static void print_object(const unsigned char *sha1, char *path)  	html(" (");  	cgit_plain_link("plain", NULL, NULL, ctx.qry.head,  		        curr_rev, path); -	htmlf(")<br/>blob: %s", sha1_to_hex(sha1)); +	htmlf(")<br/>blob: %s\n", sha1_to_hex(sha1));  	html("<table summary='blob content' class='blob'>\n"); +	html("<tr>\n"); + +	html("<td class='linenumbers'><pre>");  	idx = 0; -	start = 0;  	lineno = 0; -	while(idx < size) { +	htmlf(numberfmt, ++lineno); +	while(idx < size - 1) { // skip absolute last newline  		if (buf[idx] == '\n') { -			buf[idx] = '\0'; -			htmlf(linefmt, ++lineno); -			html_txt(buf + start); -			html("</td></tr>\n"); -			start = idx + 1; +			htmlf(numberfmt, ++lineno);  		}  		idx++;  	} -	if (start < idx) { -		htmlf(linefmt, ++lineno); -		html_txt(buf + start); -	} -	html("</td></tr>\n"); +	html("</pre></td>\n"); + +	html("<td class='lines'><pre><code>"); +	html_txt(buf); +	html("</code></pre></td>\n"); + +	html("</tr>\n");  	html("</table>\n");  } | 
