Add 'next-selected' and 'prev-selected' actions

Close #2749
This commit is contained in:
Junegunn Choi
2022-12-11 00:59:34 +09:00
parent 0ad30063ff
commit 18e3b38c69
5 changed files with 54 additions and 1 deletions

View File

@@ -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
}