On Sun, Apr 13, 2014 at 5:54 PM, Kumar Appaiah <a.kumar@xxxxxxxxxxxxxxxxx> wrote: > > This commit adds custom log_read and log_draw functions that utilize > the diff stat drawing functions from the diff module. The absence of > the triple hyphen separator prevents direct usage of the diff drawing > functions directly. See my comments below. > --- > src/log.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 53 insertions(+), 2 deletions(-) > > diff --git a/src/log.c b/src/log.c > index 40c9a21..468f7c3 100644 > --- a/src/log.c > +++ b/src/log.c > @@ -23,6 +23,9 @@ struct log_state { > * up/down in the log view. */ > int last_lineno; > enum line_type last_type; > + bool commit_title_read; > + bool after_commit_header; > + bool reading_diff_stat; > }; > > static void > @@ -78,14 +81,62 @@ log_request(struct view *view, enum request request, struct line *line) > } > } > > +static bool > +log_read(struct view *view, char *data) > +{ > + enum line_type type; > + struct log_state *state = view->private; > + size_t len; > + > + if (!data) > + return TRUE; > + > + type = get_line_type(data); > + len = strlen(data); > + > + if (type == LINE_COMMIT) > + state->commit_title_read = TRUE; > + else if (state->commit_title_read && len < 1) { > + state->commit_title_read = FALSE; > + state->after_commit_header = TRUE; > + } else if (state->after_commit_header && len < 1) { > + state->after_commit_header = FALSE; > + state->reading_diff_stat = TRUE; > + } else if (state->reading_diff_stat) { > + bool ret = diff_common_add_diff_stat(view, data); > + if (ret) { > + return TRUE; > + } else { > + state->reading_diff_stat = FALSE; > + } > + } > + > + return pager_common_read(view, data, type); > +} > + > +static bool > +log_draw(struct view *view, struct line *line, unsigned int lineno) > +{ > + char *text = line->data; > + enum line_type type = line->type; > + This is missing a call to draw_lineno(...) > + if (type == LINE_DIFF_STAT) { > + diff_common_draw_diff_stat(view, &type, &text); > + draw_text(view, type, text); I had to #include "tig/draw.h" for this to compile. > + return TRUE; > + } > + > + return pager_draw(view, line, lineno); > +} > + > static struct view_ops log_ops = { > "line", > argv_env.head, > VIEW_ADD_PAGER_REFS | VIEW_OPEN_DIFF | VIEW_SEND_CHILD_ENTER | VIEW_LOG_LIKE | VIEW_REFRESH, > sizeof(struct log_state), > log_open, > - pager_read, > - pager_draw, > + log_read, > + log_draw, > log_request, > pager_grep, > log_select, > -- > 1.9.1 > -- Jonas Fonseca -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html