summaryrefslogtreecommitdiff
path: root/plugins/fzf
diff options
context:
space:
mode:
authorMarc Cornellà <marc.cornella@live.com>2019-05-08 20:40:36 +0200
committerGitHub <noreply@github.com>2019-05-08 20:40:36 +0200
commit0232ac4bb1cb64b5bfaa7e5fc979d6f7ab23e534 (patch)
tree946d9f8b758ebdd63da96152ca56b154c99068da /plugins/fzf
parentafb028763cf40fc339e49011b2cba124dc108fcb (diff)
parentebc700be9b2fa7ae770a644093a5c46a8e323726 (diff)
downloadzsh-0232ac4bb1cb64b5bfaa7e5fc979d6f7ab23e534.tar.gz
zsh-0232ac4bb1cb64b5bfaa7e5fc979d6f7ab23e534.tar.bz2
zsh-0232ac4bb1cb64b5bfaa7e5fc979d6f7ab23e534.zip
Merge branch 'master' into master
Diffstat (limited to 'plugins/fzf')
-rw-r--r--plugins/fzf/README.md19
-rw-r--r--plugins/fzf/fzf.plugin.zsh57
2 files changed, 76 insertions, 0 deletions
diff --git a/plugins/fzf/README.md b/plugins/fzf/README.md
new file mode 100644
index 000000000..b3a434347
--- /dev/null
+++ b/plugins/fzf/README.md
@@ -0,0 +1,19 @@
+# fzf
+
+This plugin enables [junegunn's fzf](https://github.com/junegunn/fzf) fuzzy auto-completion and key bindings
+
+```zsh
+# Set fzf installation directory path
+export FZF_BASE=/path/to/fzf/install/dir
+
+# Uncomment the following line to disable fuzzy completion
+# export DISABLE_FZF_AUTO_COMPLETION="true"
+
+# Uncomment the following line to disable key bindings (CTRL-T, CTRL-R, ALT-C)
+# export DISABLE_FZF_KEY_BINDINGS="true"
+
+plugins=(
+ ...
+ fzf
+)
+```
diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh
new file mode 100644
index 000000000..27e2d9246
--- /dev/null
+++ b/plugins/fzf/fzf.plugin.zsh
@@ -0,0 +1,57 @@
+test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}"
+
+if [[ -z "${fzf_base}" ]]; then
+ fzfdirs=(
+ "${HOME}/.fzf"
+ "/usr/local/opt/fzf"
+ "/usr/share/fzf"
+ )
+ for dir in ${fzfdirs}; do
+ if [[ -d "${dir}" ]]; then
+ fzf_base="${dir}"
+ break
+ fi
+ done
+
+ if [[ -z "${fzf_base}" ]]; then
+ if (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then
+ if [[ -d "${dir}" ]]; then
+ fzf_base="${dir}"
+ fi
+ fi
+ fi
+fi
+
+if [[ -n "${fzf_base}" ]]; then
+
+ # Fix fzf shell directory for Archlinux package
+ if [[ ! -d "${fzf_base}/shell" ]] && [[ -f /etc/arch-release ]]; then
+ fzf_shell="${fzf_base}"
+ else
+ fzf_shell="${fzf_base}/shell"
+ fi
+
+ # Setup fzf
+ # ---------
+ if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then
+ export PATH="$PATH:$fzf_base/bin"
+ fi
+
+ # Auto-completion
+ # ---------------
+ if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
+ [[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null
+ fi
+
+ # Key bindings
+ # ------------
+ if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
+ source "${fzf_shell}/key-bindings.zsh"
+ fi
+
+else
+ print "[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.\n"\
+ "Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc" >&2
+fi
+
+unset fzf_base fzf_shell dir fzfdirs