cgit

commit 5a36c2a291a00b59b8ec2f112453e117797c2fe5

Author: Johan Herland <johan@herland.net>

ui-log: Change display of full commit messages (and notes)

When showmsg is enabled, ui-log (in addition to the table row containing
the details of the current commit) adds a second table row containing the
remainder of the commit message, and yet another table row containing the
commit notes (if any). The vertical margins between commit subject, commit
message and commit notes are controlled by CSS.

In preparation for the commit graph (which will be printed to the left of
the commit message/notes) we need to eliminate these vertical margins (as
they would produce ugly gaps in the commit graph) and instead achieve them
by adding newlines to the commit message/notes. Furthermore, we can no
longer print the "Notes:" header in the "Age" column, since the graph will
be drawn between the "Age" column and the "Commit message" column.

This patch therefore prepares the commit message and commit notes in a
single buffer (properly formatting the notes using the NOTES_SHOW_HEADER
and NOTES_INDENT flags to format_note()), and then prints the entire
buffer into a single table row.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 cgit.css | 13 +------------
 ui-log.c | 30 +++++++++++++++++-------------


diff --git a/cgit.css b/cgit.css
index 0c88b65fe4cb1e5003c6bd569cefe4cd819af2a3..7a5f423f1b7cdf864de54a5201146f36d85be52b 100644
--- a/cgit.css
+++ b/cgit.css
@@ -161,18 +161,7 @@
 table.list td.logmsg {
 	font-family: monospace;
 	white-space: pre;
-	padding: 1em 0.5em 2em 0.5em;
-}
-
-table.list td.lognotes-label {
-	text-align:right;
-	vertical-align:top;
-}
-
-table.list td.lognotes {
-	font-family: monospace;
-	white-space: pre;
-	padding: 0em 0.5em 2em 0.5em;
+	padding: 0 0.5em;
 }
 
 table.list td a {




diff --git a/ui-log.c b/ui-log.c
index 27f5a1a111cef792b45b9bb35b399a25c53e1a58..6d7fcaefa49b81485a4f40ca056f48aa97d38af5 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -111,29 +111,33 @@ 			htmlf("-%d/+%d", rem_lines, add_lines);
 		}
 	}
 	html("</td></tr>\n");
-	if (ctx.qry.showmsg) {
-		struct strbuf notes = STRBUF_INIT;
-		format_note(NULL, commit->object.sha1, &notes, PAGE_ENCODING, 0);
+
+	if (ctx.qry.showmsg) { /* Print message + notes in a second table row */
+		/* Concatenate commit message and notes in msgbuf */
+		struct strbuf msgbuf = STRBUF_INIT;
+		if (info->msg && *(info->msg)) {
+			strbuf_addstr(&msgbuf, info->msg);
+			strbuf_addch(&msgbuf, '\n');
+		}
+		format_note(NULL, commit->object.sha1, &msgbuf, PAGE_ENCODING,
+		            NOTES_SHOW_HEADER | NOTES_INDENT);
+		strbuf_addch(&msgbuf, '\n');
+		strbuf_ltrim(&msgbuf);
 
 		if (ctx.repo->enable_log_filecount) {
 			cols++;
 			if (ctx.repo->enable_log_linecount)
 				cols++;
 		}
+
+		/* Create second table row containing msgbuf */
 		htmlf("<tr class='nohover'><td/><td colspan='%d' class='logmsg'>",
 			cols);
-		html_txt(info->msg);
+		html_txt(msgbuf.buf);
 		html("</td></tr>\n");
-		if (notes.len != 0) {
-			html("<tr class='nohover'>");
-			html("<td class='lognotes-label'>Notes:</td>");
-			htmlf("<td colspan='%d' class='lognotes'>",
-				cols);
-			html_txt(notes.buf);
-			html("</td></tr>\n");
-		}
-		strbuf_release(&notes);
+		strbuf_release(&msgbuf);
 	}
+
 	cgit_free_commitinfo(info);
 }