diff --git a/templates/zsh.txt b/templates/zsh.txt index 82a6b8a9..cdcd542f 100644 --- a/templates/zsh.txt +++ b/templates/zsh.txt @@ -28,10 +28,6 @@ function __zoxide_cd() { # Hook configuration for zoxide. # -{% if hook == InitHook::None -%} -{{ not_configured -}} - -{% else -%} # Hook to add new entries to the database. function __zoxide_hook() { # shellcheck disable=SC2312 @@ -39,16 +35,36 @@ function __zoxide_hook() { } # Initialize hook. -# shellcheck disable=SC2154 -if [[ ${precmd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] && [[ ${chpwd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]]; then +# shellcheck disable=SC2034,SC2296 +precmd_functions=("${(@)precmd_functions:#__zoxide_hook}") +# shellcheck disable=SC2034,SC2296 +chpwd_functions=("${(@)chpwd_functions:#__zoxide_hook}") + {%- if hook == InitHook::Prompt %} - precmd_functions+=(__zoxide_hook) +precmd_functions+=(__zoxide_hook) {%- else if hook == InitHook::Pwd %} - chpwd_functions+=(__zoxide_hook) +chpwd_functions+=(__zoxide_hook) {%- endif %} -fi +function __zoxide_doctor() { +{%- if hook != InitHook::None %} + [[ ${_ZO_DOCTOR:-1} -ne 0 ]] || return 0 + +{%- if hook == InitHook::Prompt %} + [[ ${precmd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] || return 0 +{%- else if hook == InitHook::Pwd %} + [[ ${chpwd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] || return 0 +{%- endif %} + + _ZO_DOCTOR=0 + \builtin printf '%s\n' \ + 'zoxide: detected a possible configuration issue.' \ + 'Please ensure that zoxide is initialized right at the end of your shell config file.' \ + 'If the issue persists, consider filing an issue at https://github.com/ajeetdsouza/zoxide/issues.' \ + 'Disable this message by setting _ZO_DOCTOR=0.' \ + '' >&2 {%- endif %} +} {{ section }} # When using zoxide with --no-cmd, alias these internal functions as desired. @@ -56,7 +72,7 @@ fi # Jump to a directory using only keywords. function __zoxide_z() { - # shellcheck disable=SC2199 + __zoxide_doctor if [[ "$#" -eq 0 ]]; then __zoxide_cd ~ elif [[ "$#" -eq 1 ]] && { [[ -d "$1" ]] || [[ "$1" = '-' ]] || [[ "$1" =~ ^[-+][0-9]$ ]]; }; then @@ -72,6 +88,7 @@ function __zoxide_z() { # Jump to a directory using interactive search. function __zoxide_zi() { + __zoxide_doctor \builtin local result result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${result}" }