diff options
Diffstat (limited to '')
| -rw-r--r-- | cgit.css | 66 | ||||
| -rw-r--r-- | ui-diff.c | 27 | ||||
| -rw-r--r-- | ui-ssdiff.c | 30 | ||||
| -rw-r--r-- | ui-ssdiff.h | 3 | 
4 files changed, 96 insertions, 30 deletions
| @@ -602,37 +602,91 @@ table.hgraph div.bar {  	height: 1em;  } +table.ssdiff { +	width: 100%; +} + +table.ssdiff td { +	font-size: 75%; +	font-family: monospace; +	white-space: pre; +	padding: 1px 4px 1px 4px; +	border-left: solid 1px #aaa; +	border-right: solid 1px #aaa; +} +  table.ssdiff td.add {  	color: black; -	background: #afa; +	background: #cfc; +	min-width: 50%;  }  table.ssdiff td.add_dark {  	color: black; -	background: #9c9; +	background: #aca; +	min-width: 50%;  }  table.ssdiff td.del {  	color: black; -	background: #faa; +	background: #fcc; +	min-width: 50%;  }  table.ssdiff td.del_dark {  	color: black; -	background: #c99; +	background: #caa; +	min-width: 50%;  }  table.ssdiff td.changed {  	color: black; -	background: #ffa; +	background: #ffc; +	min-width: 50%;  }  table.ssdiff td.changed_dark {  	color: black; -	background: #cc9; +	background: #cca; +	min-width: 50%; +} + +table.ssdiff td.lineno { +	color: black; +	background: #eee; +	text-align: right; +	width: 3em; +	min-width: 3em;  }  table.ssdiff td.hunk {  	color: #black;  	background: #ccf; +	border-top: solid 1px #aaa; +	border-bottom: solid 1px #aaa;  } + +table.ssdiff td.head { +	border-top: solid 1px #aaa; +	border-bottom: solid 1px #aaa; +} + +table.ssdiff td.head div.head { +	font-weight: bold; +	color: black; +} + +table.ssdiff td.foot { +	border-top: solid 1px #aaa; +        border-left: none; +        border-right: none; +        border-bottom: none; +} + +table.ssdiff td.space { +	border: none; +} + +table.ssdiff td.space div { +	min-height: 3em; +}
\ No newline at end of file @@ -246,8 +246,6 @@ static void header(unsigned char *sha1, char *path1, int mode1,  			html_txt(path2);  	}  	html("</div>"); -	if (use_ssdiff) -		cgit_ssdiff_header();  }  static void print_ssdiff_link() @@ -270,24 +268,26 @@ static void filepair_cb(struct diff_filepair *pair)  	int binary = 0;  	linediff_fn print_line_fn = print_line; -	header(pair->one->sha1, pair->one->path, pair->one->mode, -	       pair->two->sha1, pair->two->path, pair->two->mode);  	if (use_ssdiff) { -		cgit_ssdiff_header(); +		cgit_ssdiff_header_begin();  		print_line_fn = cgit_ssdiff_line_cb;  	} +	header(pair->one->sha1, pair->one->path, pair->one->mode, +	       pair->two->sha1, pair->two->path, pair->two->mode); +	if (use_ssdiff) +		cgit_ssdiff_header_end();  	if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) {  		if (S_ISGITLINK(pair->one->mode)) -			print_line(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); +			print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52);  		if (S_ISGITLINK(pair->two->mode)) -			print_line(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); +			print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52);  		return;  	}  	if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,  			    &new_size, &binary, print_line_fn))  		cgit_print_error("Error running diff");  	if (binary) -		html("Binary files differ"); +		print_line_fn(" Binary files differ", 20);  	if (use_ssdiff)  		cgit_ssdiff_footer();  } @@ -334,9 +334,14 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi  	print_ssdiff_link();  	cgit_print_diffstat(old_rev_sha1, new_rev_sha1); -	html("<table summary='diff' class='diff'>"); -	html("<tr><td>"); +	if (use_ssdiff) { +		html("<table summary='ssdiff' class='ssdiff'>"); +	} else { +		html("<table summary='diff' class='diff'>"); +		html("<tr><td>"); +	}  	cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix); -	html("</td></tr>"); +	if (!use_ssdiff) +		html("</td></tr>");  	html("</table>");  } diff --git a/ui-ssdiff.c b/ui-ssdiff.c index 3591ab4..8215051 100644 --- a/ui-ssdiff.c +++ b/ui-ssdiff.c @@ -40,9 +40,9 @@ static char *replace_tabs(char *line)  {  	char *prev_buf = line;  	char *cur_buf; -        int linelen = strlen(line); +	int linelen = strlen(line);  	int n_tabs = 0; -        int i; +	int i;  	char *result;  	char *spaces = "        "; @@ -52,10 +52,10 @@ static char *replace_tabs(char *line)  		return result;  	} -        for (i = 0; i < linelen; i++) +	for (i = 0; i < linelen; i++)  		if (line[i] == '\t')  			n_tabs += 1; -        result = xmalloc(linelen + n_tabs * 8 + 1); +	result = xmalloc(linelen + n_tabs * 8 + 1);  	result[0] = '\0';  	while (1) { @@ -106,10 +106,10 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,  {  	html("<tr>");  	if (old_line_no > 0) -		htmlf("<td class='%s'>%d </td><td class='%s'>", class, +		htmlf("<td class='lineno'>%d</td><td class='%s'>",  		      old_line_no, class);  	else -		htmlf("<td class='%s_dark'>  </td><td class='%s_dark'>", class, class); +		htmlf("<td class='lineno'></td><td class='%s_dark'>", class);  	if (old_line) {  		old_line = replace_tabs(old_line + 1); @@ -117,13 +117,13 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,  		free(old_line);  	} -	html("  </td>"); +	html("</td>");  	if (new_line_no > 0) -		htmlf("<td class='%s'>  %d </td><td class='%s'>", class, +		htmlf("<td class='lineno'>%d</td><td class='%s'>",  		      new_line_no, class);  	else -		htmlf("<td class='%s_dark'>  </td><td class='%s_dark'>", class, class); +		htmlf("<td class='lineno'></td><td class='%s_dark'>", class);  	if (new_line) {  		new_line = replace_tabs(new_line + 1); @@ -249,16 +249,22 @@ void cgit_ssdiff_line_cb(char *line, int len)  	line[len - 1] = c;  } -void cgit_ssdiff_header() +void cgit_ssdiff_header_begin()  {  	current_old_line = 0;  	current_new_line = 0; -	html("<table class='ssdiff'>"); +	html("<tr><td class='space' colspan='4'><div></div></td></tr>"); +	html("<tr><td class='head' colspan='4'>"); +} + +void cgit_ssdiff_header_end() +{ +	html("</td><tr>");  }  void cgit_ssdiff_footer()  {  	if (deferred_old || deferred_new)  		cgit_ssdiff_print_deferred_lines(); -	html("</table>"); +	html("<tr><td class='foot' colspan='4'></td></tr>");  } diff --git a/ui-ssdiff.h b/ui-ssdiff.h index a0b1efe..64b4b12 100644 --- a/ui-ssdiff.h +++ b/ui-ssdiff.h @@ -5,7 +5,8 @@ extern void cgit_ssdiff_print_deferred_lines();  extern void cgit_ssdiff_line_cb(char *line, int len); -extern void cgit_ssdiff_header(); +extern void cgit_ssdiff_header_begin(); +extern void cgit_ssdiff_header_end();  extern void cgit_ssdiff_footer(); | 
