1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
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":
|