diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2022-12-11 00:59:34 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2022-12-11 00:59:34 +0900 |
| commit | 18e3b38c69da2828efac6adc2ea3a5e85f70e571 (patch) | |
| tree | 8ed4829217eafe73e836c1890eefa213a1e39dd3 /src | |
| parent | 0ad30063ff8f96eb311bf502056b96644216ad60 (diff) | |
| download | fzf-18e3b38c69da2828efac6adc2ea3a5e85f70e571.tar.gz | |
Add 'next-selected' and 'prev-selected' actions
Close #2749
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.go | 4 | ||||
| -rw-r--r-- | src/terminal.go | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/options.go b/src/options.go index eceeffa2..4728adff 100644 --- a/src/options.go +++ b/src/options.go @@ -1064,6 +1064,10 @@ func parseKeymap(keymap map[tui.Event][]*action, str string) { appendAction(actPrevHistory) case "next-history": appendAction(actNextHistory) + case "prev-selected": + appendAction(actPrevSelected) + case "next-selected": + appendAction(actNextSelected) case "toggle-preview": appendAction(actTogglePreview) case "toggle-preview-wrap": diff --git a/src/terminal.go b/src/terminal.go index a5d54694..2bb785c1 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -316,7 +316,9 @@ const ( actPreviewHalfPageUp actPreviewHalfPageDown actPrevHistory + actPrevSelected actNextHistory + actNextSelected actExecute actExecuteSilent actExecuteMulti // Deprecated @@ -3016,6 +3018,22 @@ func (t *Terminal) Loop() { scrollPreviewTo(t.evaluateScrollOffset()) } } + case actNextSelected, actPrevSelected: + if len(t.selected) > 0 { + total := t.merger.Length() + for i := 1; i < total; i++ { + y := (t.cy + i) % total + if t.layout == layoutDefault && a.t == actNextSelected || + t.layout != layoutDefault && a.t == actPrevSelected { + y = (t.cy - i + total) % total + } + if _, found := t.selected[t.merger.Get(y).item.Index()]; found { + t.vset(y) + req(reqList) + break + } + } + } } return true } |
