stagit

My fork of stagit

git clone git://git.shimmy1996.com/stagit.git
commit 3a151527e1d72aa75d9461ee9918bda3bd08bcb1
parent 608593b0f875012875f13d28fbccd533d1266fd2
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun, 18 Nov 2018 18:08:20 +0100

in the diffstat prefix the type of change, allow CSS styling

Diffstat:
Mstagit.c | 17++++++++++++++++-
Mstyle.css | 2++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/stagit.c b/stagit.c
@@ -461,6 +461,7 @@ printshowfile(FILE *fp, struct commitinfo *ci)
 	git_patch *patch;
 	size_t nhunks, nhunklines, changed, add, del, total, i, j, k;
 	char linestr[80];
+	int c;
 
 	printcommit(fp, ci);
 
@@ -480,7 +481,21 @@ printshowfile(FILE *fp, struct commitinfo *ci)
 	for (i = 0; i < ci->ndeltas; i++) {
 		delta = git_patch_get_delta(ci->deltas[i]->patch);
 
-		fprintf(fp, "<tr><td><a href=\"#h%zu\">", i);
+		switch (delta->status) {
+		case GIT_DELTA_ADDED:      c = 'A'; break;
+		case GIT_DELTA_COPIED:     c = 'C'; break;
+		case GIT_DELTA_DELETED:    c = 'D'; break;
+		case GIT_DELTA_MODIFIED:   c = 'M'; break;
+		case GIT_DELTA_RENAMED:    c = 'R'; break;
+		case GIT_DELTA_TYPECHANGE: c = 'T'; break;
+		default:                   c = ' '; break;
+		}
+		if (c == ' ')
+			fprintf(fp, "<tr><td>%c", c);
+		else
+			fprintf(fp, "<tr><td class=\"%c\">%c", c, c);
+
+		fprintf(fp, "</td><td><a href=\"#h%zu\">", i);
 		xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path));
 		if (strcmp(delta->old_file.path, delta->new_file.path)) {
 			fputs(" -&gt; ", fp);
diff --git a/style.css b/style.css
@@ -84,11 +84,13 @@ pre a.h {
 	color: #00a;
 }
 
+.A,
 span.i,
 pre a.i {
 	color: #070;
 }
 
+.D,
 span.d,
 pre a.d {
 	color: #e00;