.dotfiles/zsh/.fzf.zsh

44 lines
No EOL
1.5 KiB
Bash
Executable file

#!/usr/bin/env zsh
# FZF configuration
# Skip if already loaded
[[ -n "$_FZF_LOADED" ]] && return 0
# Check if FZF is available
if ! command -v fzf &>/dev/null; then
return 0
fi
# Configure for VSCode/Windsurf integrated terminals
if [[ "$TERM_PROGRAM" == "vscode" || "$TERM_PROGRAM" == "windsurf" ]]; then
export FZF_DEFAULT_OPTS="--height 40% --reverse --border"
export _FZF_LOADED=1
return 0
fi
# Configure FZF options for regular terminals
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border --cycle"
# Use fd for faster file searching if available
if command -v fd &>/dev/null; then
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'
fi
# Load FZF key bindings and completion
if [[ -n "${HOMEBREW_PREFIX}" && -d "${HOMEBREW_PREFIX}/opt/fzf/shell" ]]; then
source "${HOMEBREW_PREFIX}/opt/fzf/shell/key-bindings.zsh" 2>/dev/null
source "${HOMEBREW_PREFIX}/opt/fzf/shell/completion.zsh" 2>/dev/null
elif FZF_PATH="$(dirname "$(command -v fzf)" 2>/dev/null)"; then
[[ -f "$FZF_PATH/key-bindings.zsh" ]] && source "$FZF_PATH/key-bindings.zsh"
[[ -f "$FZF_PATH/completion.zsh" ]] && source "$FZF_PATH/completion.zsh"
fi
# Apply custom theme if available
if [[ -f "$HOME/.local/bin/scripts/fzf_theme.sh" ]]; then
FZF_THEME="$($HOME/.local/bin/scripts/fzf_theme.sh)"
export FZF_DEFAULT_OPTS="$FZF_THEME $FZF_DEFAULT_OPTS"
fi
export _FZF_LOADED=1