summaryrefslogtreecommitdiffabout
path: root/ui-log.c
Side-by-side diff
Diffstat (limited to 'ui-log.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-log.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/ui-log.c b/ui-log.c
index 5cf66cb..05b5c29 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -100,2 +100,3 @@ void print_commit(struct commit *commit, struct rev_info *revs)
struct strbuf graphbuf = STRBUF_INIT;
+ struct strbuf msgbuf = STRBUF_INIT;
@@ -138,2 +139,27 @@ void print_commit(struct commit *commit, struct rev_info *revs)
htmlf("<td%s>", ctx.qry.showmsg ? " class='logsubject'" : "");
+ if (ctx.qry.showmsg) {
+ /* line-wrap long commit subjects instead of truncating them */
+ size_t subject_len = strlen(info->subject);
+
+ if (subject_len > ctx.cfg.max_msg_len &&
+ ctx.cfg.max_msg_len >= 15) {
+ /* symbol for signaling line-wrap (in PAGE_ENCODING) */
+ const char wrap_symbol[] = { ' ', 0xE2, 0x86, 0xB5, 0 };
+ int i = ctx.cfg.max_msg_len - strlen(wrap_symbol);
+
+ /* Rewind i to preceding space character */
+ while (i > 0 && !isspace(info->subject[i]))
+ --i;
+ if (!i) /* Oops, zero spaces. Reset i */
+ i = ctx.cfg.max_msg_len - strlen(wrap_symbol);
+
+ /* add remainder starting at i to msgbuf */
+ strbuf_add(&msgbuf, info->subject + i, subject_len - i);
+ strbuf_trim(&msgbuf);
+ strbuf_add(&msgbuf, "\n\n", 2);
+
+ /* Place wrap_symbol at position i in info->subject */
+ strcpy(info->subject + i, wrap_symbol);
+ }
+ }
cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
@@ -158,3 +184,2 @@ void print_commit(struct commit *commit, struct rev_info *revs)
if (revs->graph || ctx.qry.showmsg) { /* Print a second table row */
- struct strbuf msgbuf = STRBUF_INIT;
html("<tr class='nohover'><td/>"); /* Empty 'Age' column */
@@ -206,5 +231,5 @@ void print_commit(struct commit *commit, struct rev_info *revs)
html("</td></tr>\n");
- strbuf_release(&msgbuf);
}
+ strbuf_release(&msgbuf);
strbuf_release(&graphbuf);
@@ -248,3 +273,3 @@ static char *next_token(char **src)
void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern,
- char *path, int pager)
+ char *path, int pager, int commit_graph)
{
@@ -288,3 +313,3 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
}
- if (ctx.repo->enable_commit_graph) {
+ if (commit_graph) {
static const char *graph_arg = "--graph";
@@ -323,3 +348,3 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
html("<tr class='nohover'><th class='left'>Age</th>");
- if (ctx.repo->enable_commit_graph)
+ if (commit_graph)
html("<th></th>");