diff options
| -rw-r--r-- | tv/5pkgs/override/default.nix | 7 | ||||
| -rw-r--r-- | tv/5pkgs/override/fzf.complete1.patch | 55 | 
2 files changed, 62 insertions, 0 deletions
| diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix index d18d66506..cf99e0377 100644 --- a/tv/5pkgs/override/default.nix +++ b/tv/5pkgs/override/default.nix @@ -1,5 +1,12 @@  with import <stockholm/lib>;  self: super: { +  fzf = super.fzf.overrideAttrs (old: { +    # XXX cannot use `patches` because fzf has a custom patchPhase +    patchPhase = '' +      patch -Np1 < ${./fzf.complete1.patch} +      ${old.patchPhase} +    ''; +  });    input-fonts = super.input-fonts.overrideAttrs (old: rec {      src = self.fetchurl {        url = "http://xu.r/~tv/mirrors/input-fonts/Input-Font-2.zip"; diff --git a/tv/5pkgs/override/fzf.complete1.patch b/tv/5pkgs/override/fzf.complete1.patch new file mode 100644 index 000000000..4b2126a2c --- /dev/null +++ b/tv/5pkgs/override/fzf.complete1.patch @@ -0,0 +1,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": | 
