mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	fzf: add support for debian packages (#8001)
This commit is contained in:
		| @@ -1,57 +1,95 @@ | |||||||
| test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}" | function setup_using_base_dir() { | ||||||
|  | 	# Declare all variables local not no mess with outside env in any way | ||||||
|  | 	local fzf_base | ||||||
|  | 	local fzf_shell | ||||||
|  | 	local fzfdirs | ||||||
|  | 	local dir | ||||||
|  |  | ||||||
| if [[ -z "${fzf_base}" ]]; then |     test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}" | ||||||
|   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 [[ -z "${fzf_base}" ]]; then | ||||||
|       if (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then |         fzfdirs=( | ||||||
|           if [[ -d "${dir}" ]]; then |           "${HOME}/.fzf" | ||||||
|               fzf_base="${dir}" |           "/usr/local/opt/fzf" | ||||||
|           fi |           "/usr/share/fzf" | ||||||
|       fi |         ) | ||||||
|   fi |         for dir in ${fzfdirs}; do | ||||||
| fi |             if [[ -d "${dir}" ]]; then | ||||||
|  |                 fzf_base="${dir}" | ||||||
|  |                 break | ||||||
|  |             fi | ||||||
|  |         done | ||||||
|  |  | ||||||
| if [[ -n "${fzf_base}" ]]; then |         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 | ||||||
|  |  | ||||||
|   # Fix fzf shell directory for Archlinux package |     if [[ -d "${fzf_base}" ]]; then | ||||||
|   if [[ ! -d "${fzf_base}/shell" ]] && [[ -f /etc/arch-release ]]; then |         # Fix fzf shell directory for Archlinux package | ||||||
|     fzf_shell="${fzf_base}" |         if [[ ! -d "${fzf_base}/shell" ]] && [[ -f /etc/arch-release ]]; then | ||||||
|   else |           fzf_shell="${fzf_base}" | ||||||
|     fzf_shell="${fzf_base}/shell" |         else | ||||||
|   fi |           fzf_shell="${fzf_base}/shell" | ||||||
|  |         fi | ||||||
|  |  | ||||||
|   # Setup fzf |         # Setup fzf binary path | ||||||
|   # --------- |         if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then | ||||||
|   if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then |           export PATH="$PATH:$fzf_base/bin" | ||||||
|     export PATH="$PATH:$fzf_base/bin" |         fi | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   # Auto-completion |         # Auto-completion | ||||||
|   # --------------- |         if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then | ||||||
|   if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then |           [[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null | ||||||
|     [[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null |         fi | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   # Key bindings |         # Key bindings | ||||||
|   # ------------ |         if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then | ||||||
|   if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then |           source "${fzf_shell}/key-bindings.zsh" | ||||||
|     source "${fzf_shell}/key-bindings.zsh" |         fi | ||||||
|   fi |     else | ||||||
|  |         return 1 | ||||||
|  |     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 | function setup_using_debian_package() { | ||||||
|  |     dpkg -s fzf &> /dev/null | ||||||
|  |     if (( $? )); then | ||||||
|  |         # Either not a debian based distro, or no fzf installed. In any case skip ahead | ||||||
|  |         return 1 | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     # NOTE: There is no need to configure PATH for debian package, all binaries | ||||||
|  |     # are installed to /usr/bin by default | ||||||
|  |  | ||||||
|  |     local completions="/usr/share/zsh/vendor-completions/_fzf" | ||||||
|  |     local key_bindings="/usr/share/doc/fzf/examples/key-bindings.zsh" | ||||||
|  |  | ||||||
|  |     # Auto-completion | ||||||
|  |     if [[ $- == *i* ]] && [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then | ||||||
|  |          source $completions 2> /dev/null | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     # Key bindings | ||||||
|  |     if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then | ||||||
|  |         source $key_bindings | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function indicate_error() { | ||||||
|  |     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 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Check for debian package first, because it easy to short cut | ||||||
|  | # Indicate to user that fzf installation not found if nothing worked | ||||||
|  | setup_using_debian_package || setup_using_base_dir || indicate_error | ||||||
|  |  | ||||||
|  | unset -f setup_using_debian_package setup_using_base_dir indicate_error | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user