summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-12-30 01:51:25 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-12-30 18:39:17 +0900
commit0de7ab18f64db7838c8ca06d08188f976cbfdbb4 (patch)
tree65de1c044098b491d8cc1979a25a214681f03887
parente9bc7331bde238e84f24b76ebb1f5e18799b15c4 (diff)
Add "last" action to move the cursor to the last match
This is the opposite of "first" (previously known as "top").
-rw-r--r--CHANGELOG.md3
-rw-r--r--man/man1/fzf.19
-rw-r--r--src/options.go6
-rw-r--r--src/options_test.go4
-rw-r--r--src/terminal.go8
5 files changed, 20 insertions, 10 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 678efdda..b02dcbe4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,9 @@ CHANGELOG
# Write "regular" if you want to clear the attributes
fzf --color hl:176:regular,hl+:177:regular
```
+- Added `last` action to move the cursor to the last match
+ - The opposite action `top` is renamed to `first`, but `top` is still
+ recognized as a synonym for backward compatibility
0.24.4
------
diff --git a/man/man1/fzf.1 b/man/man1/fzf.1
index eeb83945..b6ae8a62 100644
--- a/man/man1/fzf.1
+++ b/man/man1/fzf.1
@@ -21,7 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
..
-.TH fzf 1 "Dec 2020" "fzf 0.24.4" "fzf - a command-line fuzzy finder"
+.TH fzf 1 "Dec 2020" "fzf 0.24.5" "fzf - a command-line fuzzy finder"
.SH NAME
fzf - a command-line fuzzy finder
@@ -750,8 +750,8 @@ or any single character
Triggered whenever the query string is changed
e.g.
- \fB# Moves cursor to the top (or bottom depending on --layout) whenever the query is changed
- fzf --bind change:top\fR
+ \fB# Move cursor to the first entry whenever the query is changed
+ fzf --bind change:first\fR
.RE
\fIbackward-eof\fR
@@ -788,6 +788,7 @@ A key or an event can be bound to one or more of the following actions.
\fBend-of-line\fR \fIctrl-e end\fR
\fBexecute(...)\fR (see below for the details)
\fBexecute-silent(...)\fR (see below for the details)
+ \fBfirst\fR (move to the first match)
\fBforward-char\fR \fIctrl-f right\fR
\fBforward-word\fR \fIalt-f shift-right\fR
\fBignore\fR
@@ -795,6 +796,7 @@ A key or an event can be bound to one or more of the following actions.
\fBjump-accept\fR (jump and accept)
\fBkill-line\fR
\fBkill-word\fR \fIalt-d\fR
+ \fBlast\fR (move to the last match)
\fBnext-history\fR (\fIctrl-n\fR on \fB--history\fR)
\fBpage-down\fR \fIpgdn\fR
\fBpage-up\fR \fIpgup\fR
@@ -822,7 +824,6 @@ A key or an event can be bound to one or more of the following actions.
\fBtoggle-preview-wrap\fR
\fBtoggle-sort\fR
\fBtoggle+up\fR \fIbtab (shift-tab)\fR
- \fBtop\fR (move to the top result)
\fBunix-line-discard\fR \fIctrl-u\fR
\fBunix-word-rubout\fR \fIctrl-w\fR
\fBup\fR \fIctrl-k ctrl-p up\fR
diff --git a/src/options.go b/src/options.go
index f5a7c614..5eff033f 100644
--- a/src/options.go
+++ b/src/options.go
@@ -879,8 +879,10 @@ func parseKeymap(keymap map[int][]action, str string) {
appendAction(actDown)
case "up":
appendAction(actUp)
- case "top":
- appendAction(actTop)
+ case "first", "top":
+ appendAction(actFirst)
+ case "last":
+ appendAction(actLast)
case "page-up":
appendAction(actPageUp)
case "page-down":
diff --git a/src/options_test.go b/src/options_test.go
index a8fc75bd..5cc11c85 100644
--- a/src/options_test.go
+++ b/src/options_test.go
@@ -246,7 +246,7 @@ func TestBind(t *testing.T) {
"f1:execute(ls {+})+abort+execute(echo {+})+select-all,f2:execute/echo {}, {}, {}/,f3:execute[echo '({})'],f4:execute;less {};,"+
"alt-a:execute-Multi@echo (,),[,],/,:,;,%,{}@,alt-b:execute;echo (,),[,],/,:,@,%,{};,"+
"x:Execute(foo+bar),X:execute/bar+baz/"+
- ",f1:+top,f1:+top"+
+ ",f1:+first,f1:+top"+
",,:abort,::accept,+:execute:++\nfoobar,Y:execute(baz)+up")
check(tui.CtrlA, "", actKillLine)
check(tui.CtrlB, "", actToggleSort, actUp, actDown)
@@ -254,7 +254,7 @@ func TestBind(t *testing.T) {
check(tui.AltZ+',', "", actAbort)
check(tui.AltZ+':', "", actAccept)
check(tui.AltZ, "", actPageDown)
- check(tui.F1, "ls {+}", actExecute, actAbort, actExecute, actSelectAll, actTop, actTop)
+ check(tui.F1, "ls {+}", actExecute, actAbort, actExecute, actSelectAll, actFirst, actFirst)
check(tui.F2, "echo {}, {}, {}", actExecute)
check(tui.F3, "echo '({})'", actExecute)
check(tui.F4, "less {}", actExecute)
diff --git a/src/terminal.go b/src/terminal.go
index ec85ae99..2bba9c21 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -265,7 +265,8 @@ const (
actExecuteSilent
actExecuteMulti // Deprecated
actSigStop
- actTop
+ actFirst
+ actLast
actReload
)
@@ -2366,9 +2367,12 @@ func (t *Terminal) Loop() {
t.version++
req(reqList, reqInfo)
}
- case actTop:
+ case actFirst:
t.vset(0)
req(reqList)
+ case actLast:
+ t.vset(t.merger.Length() - 1)
+ req(reqList)
case actUnixLineDiscard:
beof = len(t.input) == 0
if t.cx > 0 {