diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2024-03-13 23:59:34 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-13 23:59:34 +0900 |
| commit | e74b1251c0f579335e03b3e7182cd7a9f88dbe37 (patch) | |
| tree | 635d9bd3d4be38ca5623b8ce7241c2674c01b532 /main.go | |
| parent | d282a1649d7d953f028306f13d6616958f3fd1f3 (diff) | |
| download | fzf-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.go | 43 |
1 files changed, 42 insertions, 1 deletions
@@ -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) } |
