Browse Source

fzf: setup FZF_DEFAULT_COMMAND based on installed tools (#8895)

Co-authored-by: Marc Cornellà <marc.cornella@live.com>
Alessandro Martini 4 years ago
parent
commit
708ea42384
2 changed files with 32 additions and 8 deletions
  1. 22 8
      plugins/fzf/README.md
  2. 10 0
      plugins/fzf/fzf.plugin.zsh

+ 22 - 8
plugins/fzf/README.md

@@ -2,18 +2,32 @@
 
 This plugin enables [junegunn's fzf](https://github.com/junegunn/fzf) fuzzy auto-completion and key bindings
 
+To use it, add `fzf` to the plugins array in your zshrc file:
+```zsh
+plugins=(... fzf)
+```
+
+## Settings
+
+Add these before the `plugins=()` line in your zshrc file:
+
 ```zsh
 # Set fzf installation directory path
-export FZF_BASE=/path/to/fzf/install/dir
+# export FZF_BASE=/path/to/fzf/install/dir
+
+# Uncomment to set the FZF_DEFAULT_COMMAND
+# export FZF_DEFAULT_COMMAND='<your fzf default commmand>'
 
 # Uncomment the following line to disable fuzzy completion
-# export DISABLE_FZF_AUTO_COMPLETION="true"
+# 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
-)
+# DISABLE_FZF_KEY_BINDINGS="true"
 ```
+
+| Setting                     | Example value              | Description                                                 |
+|-----------------------------|----------------------------|-------------------------------------------------------------|
+| FZF_BASE                    | `/path/to/fzf/install/dir` | Set fzf installation directory path (**export**)            |
+| FZF_DEFAULT_COMMAND         | `fd --type f`              | Set default command to use when input is tty (**export**)   |
+| DISABLE_FZF_AUTO_COMPLETION | `true`                     | Set whether to load fzf auto-completion                     |
+| DISABLE_FZF_KEY_BINDINGS    | `true`                     | Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C) |

+ 10 - 0
plugins/fzf/fzf.plugin.zsh

@@ -98,3 +98,13 @@ function indicate_error() {
 setup_using_debian_package || setup_using_base_dir || indicate_error
 
 unset -f setup_using_debian_package setup_using_base_dir indicate_error
+
+if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then
+    if (( $+commands[rg] )); then
+        export FZF_DEFAULT_COMMAND='rg --files --hidden'
+    elif (( $+commands[fd] )); then
+        export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
+    elif (( $+commands[ag] )); then
+        export FZF_DEFAULT_COMMAND='ag -l --hidden -g ""'
+    fi
+fi