From ee246ab2042bf2a7baa344afde47a6afab3226b2 Mon Sep 17 00:00:00 2001 From: Thomas Koutcher Date: Mon, 27 Mar 2023 17:39:37 +0200 Subject: [PATCH] Support %(text) in all views with a text column PR #457 implemented %(text) for the pager view only. Extend %(text) support to the blame, blob, grep and log views. Fixes #1275 --- src/blame.c | 2 ++ src/blob.c | 2 ++ src/grep.c | 2 ++ src/log.c | 2 ++ 4 files changed, 8 insertions(+) diff --git a/src/blame.c b/src/blame.c index 83025860e..b9e153143 100644 --- a/src/blame.c +++ b/src/blame.c @@ -466,6 +466,7 @@ blame_select(struct view *view, struct line *line) { struct blame *blame = line->data; struct blame_commit *commit = blame->commit; + const char *text = blame->text; if (!commit) return; @@ -481,6 +482,7 @@ blame_select(struct view *view, struct line *line) view->env->file_old[0] = '\0'; view->env->lineno = view->pos.lineno + 1; + string_ncopy(view->env->text, text, strlen(text)); } static struct view_ops blame_ops = { diff --git a/src/blob.c b/src/blob.c index 05c258954..0673bf83e 100644 --- a/src/blob.c +++ b/src/blob.c @@ -111,10 +111,12 @@ static void blob_select(struct view *view, struct line *line) { struct blob_state *state = view->private; + const char *text = box_text(line); if (state->file) string_format(view->env->file, "%s", state->file); view->env->lineno = view->pos.lineno + 1; + string_ncopy(view->env->text, text, strlen(text)); } static enum request diff --git a/src/grep.c b/src/grep.c index 929ef0a8d..ae58ce997 100644 --- a/src/grep.c +++ b/src/grep.c @@ -77,6 +77,7 @@ static void grep_select(struct view *view, struct line *line) { struct grep_line *grep = grep_get_line(line); + const char *text = grep->text; if (!*grep->file) return; @@ -84,6 +85,7 @@ grep_select(struct view *view, struct line *line) string_ncopy(view->env->file, grep->file, strlen(grep->file)); string_ncopy(view->ref, grep->file, strlen(grep->file)); view->env->lineno = grep->lineno + 1; + string_ncopy(view->env->text, text, strlen(text)); } static const char *grep_args[] = { diff --git a/src/log.c b/src/log.c index b95c87b39..045affbcf 100644 --- a/src/log.c +++ b/src/log.c @@ -44,6 +44,7 @@ log_select(struct view *view, struct line *line) { struct log_state *state = view->private; int last_lineno = state->last_lineno; + const char *text = box_text(line); if (!last_lineno || abs(last_lineno - line->lineno) > 1 || (state->last_type == LINE_COMMIT && last_lineno > line->lineno)) { @@ -56,6 +57,7 @@ log_select(struct view *view, struct line *line) if (line->type == LINE_COMMIT && !view_has_flags(view, VIEW_NO_REF)) log_copy_rev(view, line); string_copy_rev(view->env->commit, view->ref); + string_ncopy(view->env->text, text, strlen(text)); state->last_lineno = line->lineno; state->last_type = line->type; }