mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-12-23 11:29:01 +00:00
Allow put action with an argument i.e. put(...)
This commit is contained in:
parent
12af069dca
commit
4b3f0b9f08
@ -32,6 +32,11 @@ CHANGELOG
|
|||||||
seq 10 | fzf --multi --bind ctrl-n:next-selected,ctrl-p:prev-selected --layout reverse
|
seq 10 | fzf --multi --bind ctrl-n:next-selected,ctrl-p:prev-selected --layout reverse
|
||||||
```
|
```
|
||||||
- Added `change-query(...)` action
|
- Added `change-query(...)` action
|
||||||
|
- `put` action can optionally take an argument string
|
||||||
|
```sh
|
||||||
|
# a will put 'alpha' on the prompt, ctrl-b will put 'bravo'
|
||||||
|
fzf --bind 'a:put+put(lpha),ctrl-b:put(bravo)'
|
||||||
|
```
|
||||||
- `double-click` will behave the same as `enter` unless otherwise specified,
|
- `double-click` will behave the same as `enter` unless otherwise specified,
|
||||||
so you don't have to repeat the same action twice in `--bind` in most cases.
|
so you don't have to repeat the same action twice in `--bind` in most cases.
|
||||||
```sh
|
```sh
|
||||||
|
@ -1008,6 +1008,7 @@ A key or an event can be bound to one or more of the following actions.
|
|||||||
\fBpreview-top\fR
|
\fBpreview-top\fR
|
||||||
\fBprint-query\fR (print query and exit)
|
\fBprint-query\fR (print query and exit)
|
||||||
\fBput\fR (put the character to the prompt)
|
\fBput\fR (put the character to the prompt)
|
||||||
|
\fBput(...)\fR (put the given string to the prompt)
|
||||||
\fBrefresh-preview\fR
|
\fBrefresh-preview\fR
|
||||||
\fBrebind(...)\fR (rebind bindings after \fBunbind\fR)
|
\fBrebind(...)\fR (rebind bindings after \fBunbind\fR)
|
||||||
\fBreload(...)\fR (see below for the details)
|
\fBreload(...)\fR (see below for the details)
|
||||||
|
@ -890,7 +890,7 @@ const (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
executeRegexp = regexp.MustCompile(
|
executeRegexp = regexp.MustCompile(
|
||||||
`(?si)[:+](execute(?:-multi|-silent)?|reload|preview|change-query|change-prompt|change-preview-window|change-preview|(?:re|un)bind|pos)`)
|
`(?si)[:+](execute(?:-multi|-silent)?|reload|preview|change-query|change-prompt|change-preview-window|change-preview|(?:re|un)bind|pos|put)`)
|
||||||
splitRegexp = regexp.MustCompile("[,:]+")
|
splitRegexp = regexp.MustCompile("[,:]+")
|
||||||
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
|
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
|
||||||
}
|
}
|
||||||
@ -1205,6 +1205,8 @@ func isExecuteAction(str string) actionType {
|
|||||||
return actExecuteSilent
|
return actExecuteSilent
|
||||||
case "execute-multi":
|
case "execute-multi":
|
||||||
return actExecuteMulti
|
return actExecuteMulti
|
||||||
|
case "put":
|
||||||
|
return actPut
|
||||||
}
|
}
|
||||||
return actIgnore
|
return actIgnore
|
||||||
}
|
}
|
||||||
|
@ -321,6 +321,7 @@ const (
|
|||||||
actPreviewHalfPageDown
|
actPreviewHalfPageDown
|
||||||
actPrevHistory
|
actPrevHistory
|
||||||
actPrevSelected
|
actPrevSelected
|
||||||
|
actPut
|
||||||
actNextHistory
|
actNextHistory
|
||||||
actNextSelected
|
actNextSelected
|
||||||
actExecute
|
actExecute
|
||||||
@ -2848,6 +2849,11 @@ func (t *Terminal) Loop() {
|
|||||||
t.vset(n)
|
t.vset(n)
|
||||||
req(reqList)
|
req(reqList)
|
||||||
}
|
}
|
||||||
|
case actPut:
|
||||||
|
str := []rune(a.a)
|
||||||
|
suffix := copySlice(t.input[t.cx:])
|
||||||
|
t.input = append(append(t.input[:t.cx], str...), suffix...)
|
||||||
|
t.cx += len(str)
|
||||||
case actUnixLineDiscard:
|
case actUnixLineDiscard:
|
||||||
beof = len(t.input) == 0
|
beof = len(t.input) == 0
|
||||||
if t.cx > 0 {
|
if t.cx > 0 {
|
||||||
|
@ -1620,6 +1620,15 @@ class TestGoFZF < TestBase
|
|||||||
tmux.until { |lines| assert_includes lines[1], ' 1/1' }
|
tmux.until { |lines| assert_includes lines[1], ' 1/1' }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_put
|
||||||
|
tmux.send_keys %(seq 1000 | #{FZF} --bind 'a:put+put,b:put+put(ravo)' --preview 'echo {q}/{q}'), :Enter
|
||||||
|
tmux.until { |lines| assert_equal 1000, lines.match_count }
|
||||||
|
tmux.send_keys :a
|
||||||
|
tmux.until { |lines| assert_includes lines[1], ' aa/aa' }
|
||||||
|
tmux.send_keys :b
|
||||||
|
tmux.until { |lines| assert_includes lines[1], ' aabravo/aabravo' }
|
||||||
|
end
|
||||||
|
|
||||||
def test_accept_non_empty
|
def test_accept_non_empty
|
||||||
tmux.send_keys %(seq 1000 | #{fzf('--print-query --bind enter:accept-non-empty')}), :Enter
|
tmux.send_keys %(seq 1000 | #{fzf('--print-query --bind enter:accept-non-empty')}), :Enter
|
||||||
tmux.until { |lines| assert_equal 1000, lines.match_count }
|
tmux.until { |lines| assert_equal 1000, lines.match_count }
|
||||||
|
Loading…
Reference in New Issue
Block a user