From 0a4451bc150154cfb0390f242860d4b66930e1bd Mon Sep 17 00:00:00 2001 From: Eivind Uggedal Date: Thu, 10 Dec 2015 22:24:18 +0000 Subject: [PATCH] Line numbers on blob pages --- style.css | 15 ++++++++++++++- urmoms.c | 29 ++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/style.css b/style.css index 701e8ad..8fcf30c 100644 --- 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 index d4b3b9f..0b0cbe6 100644 --- 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 = "%d\n"; + const char *s = git_blob_rawcontent(blob); + git_off_t len = git_blob_rawsize(blob); + + fputs("
\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("
\n", fp);
+	xmlencode(fp, s, (size_t)len);
+	fputs("
\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("\n" + fputs("
AgeCommit messageAuthor
\n" "\n\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, "

Binary file

\n"); } else { - fputs("
\n", fp);
 		writeblobhtml(fp, (git_blob *)obj);
 		if (ferror(fp))
 			err(1, "fwrite");
-		fputs("
\n", fp); } git_object_free(obj); writefooter(fp); @@ -575,7 +594,7 @@ writefiles(FILE *fp) git_index *index; size_t count, i; - fputs("
AgeCommit messageAuthorFiles+-
\n" + fputs("
\n" "\n" "\n", fp);
ModeNameSize