aboutsummaryrefslogtreecommitdiff
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
-rw-r--r--cgit.css27
-rwxr-xr-xtests/t0104-tree.sh4
-rw-r--r--ui-tree.c31
3 files changed, 28 insertions, 34 deletions
diff --git a/cgit.css b/cgit.css
index 068c37b..7928c2f 100644
--- a/cgit.css
+++ b/cgit.css
@@ -236,31 +236,26 @@ table.blob {
border-top: solid 1px black;
}
-table.blob td.lines {
- margin: 0; padding: 0;
- vertical-align: top;
+table.blob td.no {
+ border-right: solid 1px black;
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 pre {
- padding: 0; margin: 0;
+table.blob td.no a {
+ color: black;
}
-table.blob a.no {
- color: gray;
- text-align: right;
+table.blob td.no a:hover {
+ color: black;
text-decoration: none;
}
-table.blob a.no a:hover {
- color: black;
+table.blob td.txt {
+ white-space: pre;
+ font-family: monospace;
+ padding-left: 0.5em;
}
table.nowrap td {
diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh
index 2ce1251..33f4eb0 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 class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp
+ grep -e "<a id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp
'
run_test 'no line 2' '
- ! grep -e "<a class=.no. id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp
+ ! grep -e "<a id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp
'
run_test 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >trash/tmp'
diff --git a/ui-tree.c b/ui-tree.c
index 2a8625c..9876c99 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -18,8 +18,8 @@ static void print_object(const unsigned char *sha1, char *path)
{
enum object_type type;
char *buf;
- 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";
+ 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'>";
type = sha1_object_info(sha1, &size);
if (type == OBJ_BAD) {
@@ -38,28 +38,27 @@ 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\n", sha1_to_hex(sha1));
+ htmlf(")<br/>blob: %s", 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;
- htmlf(numberfmt, ++lineno);
- while(idx < size - 1) { // skip absolute last newline
+ while(idx < size) {
if (buf[idx] == '\n') {
- htmlf(numberfmt, ++lineno);
+ buf[idx] = '\0';
+ htmlf(linefmt, ++lineno);
+ html_txt(buf + start);
+ html("</td></tr>\n");
+ start = idx + 1;
}
idx++;
}
- html("</pre></td>\n");
-
- html("<td class='lines'><pre><code>");
- html_txt(buf);
- html("</code></pre></td>\n");
-
- html("</tr>\n");
+ if (start < idx) {
+ htmlf(linefmt, ++lineno);
+ html_txt(buf + start);
+ }
+ html("</td></tr>\n");
html("</table>\n");
}