diff options
Diffstat (limited to 'plugins/fzf')
| -rw-r--r-- | plugins/fzf/README.md | 19 | ||||
| -rw-r--r-- | plugins/fzf/fzf.plugin.zsh | 57 | 
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 | 
