On Sun, Apr 13, 2014 at 5:54 PM, Kumar Appaiah
<[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html