diff options
author | tv <tv@krebsco.de> | 2021-02-04 14:11:42 +0100 |
---|---|---|
committer | tv <tv@krebsco.de> | 2021-02-04 14:11:42 +0100 |
commit | afa01c0b0df5fda52276e6c29e6ae6565b50ed09 (patch) | |
tree | 73acf0c2780d28e8a8ca2e89791bc1b0a90c855d /tv | |
parent | 61aebc5adcab3a174a6e27686c0c8fc7f65df513 (diff) |
tv fzf: add --complete-1
Diffstat (limited to 'tv')
-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": |