From c33258832eeb855c0a269980aef89c37a7e13d6a Mon Sep 17 00:00:00 2001 From: Junegunn Choi <junegunn.c@gmail.com> Date: Sat, 20 Jun 2020 22:04:09 +0900 Subject: [PATCH] Add refresh-preview action --- man/man1/fzf.1 | 1 + src/options.go | 2 ++ src/terminal.go | 17 ++++++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 9f17177a..d1257c84 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -696,6 +696,7 @@ A key or an event can be bound to one or more of the following actions. \fBpreview-page-up\fR \fBprevious-history\fR (\fIctrl-p\fR on \fB--history\fR) \fBprint-query\fR (print query and exit) + \fBrefresh-preview\fR \fBreload(...)\fR (see below for the details) \fBreplace-query\fR (replace query string with the current selection) \fBselect-all\fR (select all matches) diff --git a/src/options.go b/src/options.go index 2979da6b..cb070ec2 100644 --- a/src/options.go +++ b/src/options.go @@ -756,6 +756,8 @@ func parseKeymap(keymap map[int][]action, str string) { appendAction(actAcceptNonEmpty) case "print-query": appendAction(actPrintQuery) + case "refresh-preview": + appendAction(actRefreshPreview) case "replace-query": appendAction(actReplaceQuery) case "backward-char": diff --git a/src/terminal.go b/src/terminal.go index a5dfe491..56da73a9 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -224,6 +224,7 @@ const ( actJump actJumpAccept actPrintQuery + actRefreshPreview actReplaceQuery actToggleSort actTogglePreview @@ -1659,6 +1660,14 @@ func (t *Terminal) Loop() { t.killPreview(code) } + refreshPreview := func() { + if t.isPreviewEnabled() { + _, list := t.buildPlusList(t.preview.command, false) + t.cancelPreview() + t.previewBox.Set(reqPreviewEnqueue, list) + } + } + go func() { var focusedIndex int32 = minItem.Index() var version int64 = -1 @@ -1685,11 +1694,7 @@ func (t *Terminal) Loop() { if focusedIndex != currentIndex || version != t.version { version = t.version focusedIndex = currentIndex - if t.isPreviewEnabled() { - _, list := t.buildPlusList(t.preview.command, false) - t.cancelPreview() - t.previewBox.Set(reqPreviewEnqueue, list) - } + refreshPreview() } case reqJump: if t.merger.Length() == 0 { @@ -1847,6 +1852,8 @@ func (t *Terminal) Loop() { } case actPrintQuery: req(reqPrintQuery) + case actRefreshPreview: + refreshPreview() case actReplaceQuery: if t.cy >= 0 && t.cy < t.merger.Length() { t.input = t.merger.Get(t.cy).item.text.ToRunes() -- GitLab