summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-03-13 23:59:34 +0900
committerGitHub <noreply@github.com>2024-03-13 23:59:34 +0900
commite74b1251c0f579335e03b3e7182cd7a9f88dbe37 (patch)
tree635d9bd3d4be38ca5623b8ce7241c2674c01b532 /main.go
parentd282a1649d7d953f028306f13d6616958f3fd1f3 (diff)
downloadfzf-e74b1251c0f579335e03b3e7182cd7a9f88dbe37.tar.gz
Embed shell integration scripts in fzf binary (`--bash` / `--zsh` / `--fish`) (#3675)
This simplifies the distribution, and the users are less likely to have problems caused by using incompatible scripts and binaries. # Set up fzf key bindings and fuzzy completion eval "$(fzf --bash)" # Set up fzf key bindings and fuzzy completion eval "$(fzf --zsh)" # Set up fzf key bindings fzf --fish | source
Diffstat (limited to 'main.go')
-rw-r--r--main.go43
1 files changed, 42 insertions, 1 deletions
diff --git a/main.go b/main.go
index d0350601..debd2408 100644
--- a/main.go
+++ b/main.go
@@ -1,6 +1,10 @@
package main
import (
+ _ "embed"
+ "fmt"
+ "strings"
+
fzf "github.com/junegunn/fzf/src"
"github.com/junegunn/fzf/src/protector"
)
@@ -8,7 +12,44 @@ import (
var version string = "0.47"
var revision string = "devel"
+//go:embed shell/key-bindings.bash
+var bashKeyBindings []byte
+
+//go:embed shell/completion.bash
+var bashCompletion []byte
+
+//go:embed shell/key-bindings.zsh
+var zshKeyBindings []byte
+
+//go:embed shell/completion.zsh
+var zshCompletion []byte
+
+//go:embed shell/key-bindings.fish
+var fishKeyBindings []byte
+
+func printScript(label string, content []byte) {
+ fmt.Println("### " + label + " ###")
+ fmt.Println(strings.TrimSpace(string(content)))
+ fmt.Println("### end: " + label + " ###")
+}
+
func main() {
protector.Protect()
- fzf.Run(fzf.ParseOptions(), version, revision)
+ options := fzf.ParseOptions()
+ if options.Bash {
+ printScript("key-bindings.bash", bashKeyBindings)
+ printScript("completion.bash", bashCompletion)
+ return
+ }
+ if options.Zsh {
+ printScript("key-bindings.zsh", zshKeyBindings)
+ printScript("completion.zsh", zshCompletion)
+ return
+ }
+ if options.Fish {
+ printScript("key-bindings.fish", fishKeyBindings)
+ fmt.Println("fzf_key_bindings")
+ return
+ }
+ fzf.Run(options, version, revision)
}