summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2022-12-11 00:59:34 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2022-12-11 00:59:34 +0900
commit18e3b38c69da2828efac6adc2ea3a5e85f70e571 (patch)
tree8ed4829217eafe73e836c1890eefa213a1e39dd3 /src
parent0ad30063ff8f96eb311bf502056b96644216ad60 (diff)
downloadfzf-18e3b38c69da2828efac6adc2ea3a5e85f70e571.tar.gz
Add 'next-selected' and 'prev-selected' actions
Close #2749
Diffstat (limited to 'src')
-rw-r--r--src/options.go4
-rw-r--r--src/terminal.go18
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
}