summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md8
-rw-r--r--man/man1/fzf.12
-rw-r--r--src/options.go4
-rw-r--r--src/terminal.go15
4 files changed, 29 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 60a4710b..fabba3f4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -55,7 +55,15 @@ CHANGELOG
--bind 'preview-scroll-down:preview-down+preview-down' \
--preview 'cat {}'
```
+- Added `offset-up` and `offset-down` actions
+ ```sh
+ # Scrolling will behave similarly to CTRL-E and CTRL-Y of vim
+ fzf --bind scroll-up:offset-up,scroll-down:offset-down \
+ --bind ctrl-y:offset-up,ctrl-e:offset-down \
+ --scroll-off=5
+ ```
- Shell extensions
+ - Updated bash completion for fzf options
- bash key bindings no longer requires perl; it will use awk or mawk
instead if perl is not found
- Basic context-aware completion for ssh command
diff --git a/man/man1/fzf.1 b/man/man1/fzf.1
index 5ea00276..242db860 100644
--- a/man/man1/fzf.1
+++ b/man/man1/fzf.1
@@ -1157,6 +1157,8 @@ A key or an event can be bound to one or more of the following actions.
\fBhalf-page-down\fR
\fBhalf-page-up\fR
\fBhide-preview\fR
+ \fBoffset-down\fR (similar to CTRL-E of Vim)
+ \fBoffset-up\fR (similar to CTRL-Y of Vim)
\fBpos(...)\fR (move cursor to the numeric position; negative number to count from the end)
\fBprev-history\fR (\fIctrl-p\fR on \fB--history\fR)
\fBprev-selected\fR (move to the previous selected item)
diff --git a/src/options.go b/src/options.go
index 1c650a2f..b4f74e95 100644
--- a/src/options.go
+++ b/src/options.go
@@ -1179,6 +1179,10 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actTogglePreviewWrap)
case "toggle-sort":
appendAction(actToggleSort)
+ case "offset-up":
+ appendAction(actOffsetUp)
+ case "offset-down":
+ appendAction(actOffsetDown)
case "preview-top":
appendAction(actPreviewTop)
case "preview-bottom":
diff --git a/src/terminal.go b/src/terminal.go
index 56e472ce..ce25bb16 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -378,6 +378,8 @@ const (
actPosition
actHalfPageUp
actHalfPageDown
+ actOffsetUp
+ actOffsetDown
actJump
actJumpAccept
actPrintQuery
@@ -3404,6 +3406,19 @@ func (t *Terminal) Loop() {
case actHalfPageDown:
t.vmove(-(t.maxItems() / 2), false)
req(reqList)
+ case actOffsetUp, actOffsetDown:
+ diff := 1
+ if a.t == actOffsetDown {
+ diff = -1
+ }
+ t.offset += diff
+ before := t.offset
+ t.constrain()
+ if before != t.offset {
+ t.offset = before
+ t.vmove(diff, false)
+ }
+ req(reqList)
case actJump:
t.jumping = jumpEnabled
req(reqJump)