diff --git a/src/core.go b/src/core.go index a18c3a1..a3d92a4 100644 --- a/src/core.go +++ b/src/core.go @@ -331,6 +331,13 @@ func Run(opts *Options, version string, revision string) { } } terminal.UpdateList(val, clearSelection()) + if (opts.Complete1) { + count := val.Length() + if count == 1 { + opts.Printer(val.Get(0).item.AsString(opts.Ansi)) + terminal.reqBox.Set(reqClose, nil) + } + } } } } diff --git a/src/options.go b/src/options.go index a55dc34..7f121cd 100644 --- a/src/options.go +++ b/src/options.go @@ -92,6 +92,7 @@ const usage = `usage: fzf [options] -1, --select-1 Automatically select the only match -0, --exit-0 Exit immediately when there's no match -f, --filter=STR Filter mode. Do not start interactive finder. + --complete-1 Exit interactive finder when there's exactly one match --print-query Print query as the first line --expect=KEYS Comma-separated list of keys to complete fzf --read0 Read input delimited by ASCII NUL characters @@ -208,6 +209,7 @@ type Options struct { Query string Select1 bool Exit0 bool + Complete1 bool Filter *string ToggleSort bool Expect map[tui.Event]string @@ -269,6 +271,7 @@ func defaultOptions() *Options { Query: "", Select1: false, Exit0: false, + Complete1: false, Filter: nil, ToggleSort: false, Expect: make(map[tui.Event]string), @@ -1311,6 +1314,8 @@ func parseOptions(opts *Options, allArgs []string) { opts.Exit0 = true case "+0", "--no-exit-0": opts.Exit0 = false + case "--complete-1": + opts.Complete1 = true case "--read0": opts.ReadZero = true case "--no-read0":