Line numbers on blob pages - stagit-gopher - A git gopher frontend. (mirror) | |
git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2h… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit 0a4451bc150154cfb0390f242860d4b66930e1bd | |
parent 3f77fb211d696b8d768fdd1f0a015cde3faa6cfe | |
Author: Eivind Uggedal <[email protected]> | |
Date: Thu, 10 Dec 2015 22:24:18 +0000 | |
Line numbers on blob pages | |
Diffstat: | |
M style.css | 15 ++++++++++++++- | |
M urmoms.c | 29 ++++++++++++++++++++++++----- | |
2 files changed, 38 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/style.css b/style.css | |
@@ -21,6 +21,15 @@ a:hover { | |
text-decoration: underline; | |
} | |
+#blob a { | |
+ color: #777; | |
+} | |
+ | |
+#blob a:hover { | |
+ color: blue; | |
+ text-decoration: none; | |
+} | |
+ | |
table thead td { | |
font-weight: bold; | |
} | |
@@ -29,10 +38,14 @@ table td { | |
padding: 0 0.4em; | |
} | |
-#content table tr:hover td { | |
+#log tr:hover td, #files tr:hover td { | |
background-color: #eee; | |
} | |
+td.num { | |
+ text-align: right; | |
+} | |
+ | |
.desc { | |
color: #777; | |
} | |
diff --git a/urmoms.c b/urmoms.c | |
@@ -241,7 +241,28 @@ printtimeshort(FILE *fp, const git_time *intime) | |
void | |
writeblobhtml(FILE *fp, const git_blob *blob) | |
{ | |
- xmlencode(fp, git_blob_rawcontent(blob), (size_t)git_blob_rawsize(blob… | |
+ off_t i = 0; | |
+ size_t n = 1; | |
+ char *nfmt = "<a href=\"#l%d\" id=\"l%d\">%d</a>\n"; | |
+ const char *s = git_blob_rawcontent(blob); | |
+ git_off_t len = git_blob_rawsize(blob); | |
+ | |
+ fputs("<table id=\"blob\"><tr><td class=\"num\"><pre>\n", fp); | |
+ | |
+ if (len) { | |
+ fprintf(fp, nfmt, n, n, n); | |
+ while (i < len - 1) { | |
+ if (s[i] == '\n') { | |
+ n++; | |
+ fprintf(fp, nfmt, n, n, n); | |
+ } | |
+ i++; | |
+ } | |
+ } | |
+ | |
+ fputs("</pre></td><td><pre>\n", fp); | |
+ xmlencode(fp, s, (size_t)len); | |
+ fputs("</pre></td></tr></table>\n", fp); | |
} | |
void | |
@@ -392,7 +413,7 @@ writelog(FILE *fp) | |
git_revwalk_simplify_first_parent(w); | |
/* TODO: also make "expanded" log ? (with message body) */ | |
- fputs("<table><thead>\n<tr><td>Age</td><td>Commit message</td><td>Auth… | |
+ fputs("<table id=\"log\"><thead>\n<tr><td>Age</td><td>Commit message</… | |
"<td>Files</td><td>+</td><td>-</td></tr>\n</thead><tbody>\n", fp… | |
while (!git_revwalk_next(&id, w)) { | |
relpath = ""; | |
@@ -553,11 +574,9 @@ writeblob(const git_index_entry *entry) | |
if (git_blob_is_binary((git_blob *)obj)) { | |
fprintf(fp, "<p>Binary file</p>\n"); | |
} else { | |
- fputs("<pre>\n", fp); | |
writeblobhtml(fp, (git_blob *)obj); | |
if (ferror(fp)) | |
err(1, "fwrite"); | |
- fputs("</pre>\n", fp); | |
} | |
git_object_free(obj); | |
writefooter(fp); | |
@@ -575,7 +594,7 @@ writefiles(FILE *fp) | |
git_index *index; | |
size_t count, i; | |
- fputs("<table><thead>\n" | |
+ fputs("<table id=\"files\"><thead>\n" | |
"<tr><td>Mode</td><td>Name</td><td>Size</td></tr>\n" | |
"</thead><tbody>\n", fp); | |