mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-12-23 11:29:01 +00:00
'reload' action should be allowed even where there's no match
If the command template doesn't have any placeholder expressions. : | fzf --bind 'space:reload:seq 10'
This commit is contained in:
parent
5e42b1c9f8
commit
1e6ac5590e
@ -1237,7 +1237,7 @@ func parsePlaceholder(match string) (bool, string, placeholderFlags) {
|
||||
return false, matchWithoutFlags, flags
|
||||
}
|
||||
|
||||
func hasPreviewFlags(template string) (plus bool, query bool) {
|
||||
func hasPreviewFlags(template string) (slot bool, plus bool, query bool) {
|
||||
for _, match := range placeholder.FindAllString(template, -1) {
|
||||
_, _, flags := parsePlaceholder(match)
|
||||
if flags.plus {
|
||||
@ -1246,6 +1246,7 @@ func hasPreviewFlags(template string) (plus bool, query bool) {
|
||||
if flags.query {
|
||||
query = true
|
||||
}
|
||||
slot = true
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -1409,7 +1410,7 @@ func (t *Terminal) currentItem() *Item {
|
||||
|
||||
func (t *Terminal) buildPlusList(template string, forcePlus bool) (bool, []*Item) {
|
||||
current := t.currentItem()
|
||||
plus, query := hasPreviewFlags(template)
|
||||
_, plus, query := hasPreviewFlags(template)
|
||||
if !(query && len(t.input) > 0 || (forcePlus || plus) && len(t.selected) > 0) {
|
||||
return current != nil, []*Item{current, current}
|
||||
}
|
||||
@ -2045,11 +2046,12 @@ func (t *Terminal) Loop() {
|
||||
t.failed = nil
|
||||
|
||||
valid, list := t.buildPlusList(a.a, false)
|
||||
// If the command template has {q}, we run the command even when the
|
||||
// query string is empty.
|
||||
if !valid {
|
||||
_, query := hasPreviewFlags(a.a)
|
||||
valid = query
|
||||
// We run the command even when there's no match
|
||||
// 1. If the template doesn't have any slots
|
||||
// 2. If the template has {q}
|
||||
slot, _, query := hasPreviewFlags(a.a)
|
||||
valid = !slot || query
|
||||
}
|
||||
if valid {
|
||||
command := replacePlaceholder(a.a,
|
||||
@ -2095,7 +2097,7 @@ func (t *Terminal) Loop() {
|
||||
|
||||
if queryChanged {
|
||||
if t.isPreviewEnabled() {
|
||||
_, q := hasPreviewFlags(t.preview.command)
|
||||
_, _, q := hasPreviewFlags(t.preview.command)
|
||||
if q {
|
||||
t.version++
|
||||
}
|
||||
|
@ -1640,6 +1640,13 @@ class TestGoFZF < TestBase
|
||||
tmux.until { |lines| lines.item_count == 553 && lines.match_count == 1 }
|
||||
tmux.until { |lines| !lines[-2].include?('(1/2)') }
|
||||
end
|
||||
|
||||
def test_reload_even_when_theres_no_match
|
||||
tmux.send_keys %(: | #{FZF} --bind 'space:reload(seq 10)'), :Enter
|
||||
tmux.until { |lines| lines.item_count.zero? }
|
||||
tmux.send_keys :Space
|
||||
tmux.until { |lines| lines.item_count == 10 }
|
||||
end
|
||||
end
|
||||
|
||||
module TestShell
|
||||
|
Loading…
Reference in New Issue
Block a user