diff --git a/NEWS.adoc b/NEWS.adoc index 87b841fa7..d62dae2bf 100644 --- a/NEWS.adoc +++ b/NEWS.adoc @@ -1,6 +1,13 @@ Release notes ============= +master +------ + +Improvements: + + - Open the blob corresponding to the diff line. (#1334) + tig-2.5.10 ---------- diff --git a/src/diff.c b/src/diff.c index 23746b41b..0d969df33 100644 --- a/src/diff.c +++ b/src/diff.c @@ -633,7 +633,7 @@ diff_get_lineno(struct view *view, struct line *line, bool old) } static enum request -diff_trace_origin(struct view *view, struct line *line) +diff_trace_origin(struct view *view, struct line *line, enum request request) { struct line *commit_line = find_prev_line_by_type(view, line, LINE_COMMIT); char id[SIZEOF_REV]; @@ -704,10 +704,10 @@ diff_trace_origin(struct view *view, struct line *line) } string_ncopy(view->env->file, commit.filename, strlen(commit.filename)); - string_copy(view->env->ref, header.id); + string_copy(request == REQ_VIEW_BLAME ? view->env->ref : view->env->commit, header.id); view->env->goto_lineno = header.orig_lineno - 1; - return REQ_VIEW_BLAME; + return request; } const char * @@ -782,7 +782,8 @@ diff_request(struct view *view, enum request request, struct line *line) { switch (request) { case REQ_VIEW_BLAME: - return diff_trace_origin(view, line); + case REQ_VIEW_BLOB: + return diff_trace_origin(view, line, request); case REQ_EDIT: return diff_common_edit(view, request, line);