summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2021-02-04 14:11:42 +0100
committertv <tv@krebsco.de>2021-02-04 14:11:42 +0100
commitafa01c0b0df5fda52276e6c29e6ae6565b50ed09 (patch)
tree73acf0c2780d28e8a8ca2e89791bc1b0a90c855d
parent61aebc5adcab3a174a6e27686c0c8fc7f65df513 (diff)
tv fzf: add --complete-1
-rw-r--r--tv/5pkgs/override/default.nix7
-rw-r--r--tv/5pkgs/override/fzf.complete1.patch55
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":