diff --git a/src/draw.c b/src/draw.c index afab85f2b..1b6bed53a 100644 --- a/src/draw.c +++ b/src/draw.c @@ -543,12 +543,13 @@ view_column_draw(struct view *view, struct line *line, unsigned int lineno) { enum line_type type = line->type; const char *text = column_data.text; + size_t indent = 0; if (line->wrapped && draw_text(view, LINE_DELIMITER, "+")) return true; if (line->graph_indent) { - size_t indent = get_graph_indent(text); + indent = get_graph_indent(text); if (draw_text_expanded(view, LINE_DEFAULT, text, -1, indent, false)) return true; @@ -567,11 +568,18 @@ view_column_draw(struct view *view, struct line *line, unsigned int lineno) for (i = 0; i < box->cells; i++) { const struct box_cell *cell = &box->cell[i]; + int length = cell->length; - if (draw_textn(view, cell->type, text, cell->length)) + if (indent) { + text += indent; + length -= indent; + indent = 0; + } + + if (draw_textn(view, cell->type, text, length)) return true; - text += cell->length; + text += length; } } else if (draw_text(view, type, text)) { diff --git a/src/log.c b/src/log.c index cc8fbb7f5..15a05029e 100644 --- a/src/log.c +++ b/src/log.c @@ -68,8 +68,15 @@ log_open(struct view *view, enum open_flags flags) "--stat", use_mailmap_arg(), "%(logargs)", "%(cmdlineargs)", "%(revargs)", "--no-color", "--", "%(fileargs)", NULL }; + enum status_code code; - return begin_update(view, NULL, log_argv, flags); + code = begin_update(view, NULL, log_argv, flags); + if (code != SUCCESS) + return code; + + watch_register(&view->watch, WATCH_HEAD | WATCH_REFS); + + return SUCCESS; } static enum request @@ -97,7 +104,7 @@ static bool log_read(struct view *view, struct buffer *buf, bool force_stop) { struct line *line = NULL; - enum line_type type; + enum line_type type = LINE_DEFAULT; struct log_state *state = view->private; size_t len; char *commit; @@ -111,8 +118,11 @@ log_read(struct view *view, struct buffer *buf, bool force_stop) if (commit && get_graph_indent(data) == commit - data) state->graph_indent = commit - data; - type = get_line_type(data + state->graph_indent); - len = strlen(data + state->graph_indent); + len = strlen(data); + if (len >= state->graph_indent) { + type = get_line_type(data + state->graph_indent); + len -= state->graph_indent; + } if (type == LINE_COMMIT) state->commit_title_read = true; diff --git a/test/log/log-graph-test b/test/log/log-graph-test new file mode 100755 index 000000000..c7c7c1df2 --- /dev/null +++ b/test/log/log-graph-test @@ -0,0 +1,44 @@ +#!/bin/sh + +. libtest.sh +. libgit.sh + +steps ' + :save-display log-graph.screen +' + +in_work_dir create_repo_from_tgz "$base_dir/files/scala-js-benchmarks.tgz" + +test_tig log --graph e59a941 + +assert_equals 'log-graph.screen' < +| | Date: Thu Jan 16 07:47:58 2014 -0800 +| | +| | Merge pull request #4 from phaller/patch-1 +| | +| | Fix link to Dart benchmark harness +| | +| | README.md | 2 +- +| | 1 file changed, 1 insertion(+), 1 deletion(-) +| | +| * commit 940efafc379db7c6df99449d6c4da98c6a2b3d07 +|/ Author: Philipp Haller +| Date: Thu Jan 16 15:32:52 2014 +0100 +| +| Fix link to Dart benchmark harness +| +| README.md | 2 +- +| 1 file changed, 1 insertion(+), 1 deletion(-) +| +* commit 110e090f815f40d649f5432172584057b550a160 +| Author: Jonas Fonseca +| Date: Tue Dec 17 00:02:15 2013 +0100 +| +| Update links to reflect project name change +| +| scalajs-benchmarks -> scala-js-benchmarks +[log] e59a941c4e7d51cd172ee2767a031f5f3fd25d05 - line 1 of 559 5% +EOF