121 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
{%- let section = "# =============================================================================\n#" -%}
 | 
						|
{%- let not_configured = "# -- not configured --" -%}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# Utility functions for zoxide.
 | 
						|
#
 | 
						|
 | 
						|
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
 | 
						|
__zoxide_pwd() {
 | 
						|
{%- if resolve_symlinks %}
 | 
						|
    \pwd -P
 | 
						|
{%- else %}
 | 
						|
    \pwd -L
 | 
						|
{%- endif %}
 | 
						|
}
 | 
						|
 | 
						|
# cd + custom logic based on the value of _ZO_ECHO.
 | 
						|
__zoxide_cd() {
 | 
						|
    # shellcheck disable=SC2164
 | 
						|
    \cd "$@" {%- if echo %} && __zoxide_pwd {%- endif %}
 | 
						|
}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# Hook configuration for zoxide.
 | 
						|
#
 | 
						|
 | 
						|
# Hook to add new entries to the database.
 | 
						|
{%- match hook %}
 | 
						|
{%- when InitHook::None %}
 | 
						|
{{ not_configured }}
 | 
						|
 | 
						|
{%- when InitHook::Prompt %}
 | 
						|
__zoxide_hook() {
 | 
						|
    zoxide add -- "$(__zoxide_pwd)"
 | 
						|
}
 | 
						|
 | 
						|
{%- when InitHook::Pwd %}
 | 
						|
{{ not_configured }}
 | 
						|
 | 
						|
{%- endmatch %}
 | 
						|
 | 
						|
# Initialize hook.
 | 
						|
if [ "${__zoxide_hooked}" != '1' ]; then
 | 
						|
    __zoxide_hooked='1'
 | 
						|
{%- match hook %}
 | 
						|
{%- when InitHook::None %}
 | 
						|
    {{ not_configured }}
 | 
						|
{%- when InitHook::Prompt %}
 | 
						|
    PS1="${PS1}\$(__zoxide_hook)"
 | 
						|
{%- when InitHook::Pwd %}
 | 
						|
    \printf "%s\n%s\n" \
 | 
						|
        "zoxide: PWD hooks are not supported on POSIX shells." \
 | 
						|
        "        Use 'zoxide init posix --hook prompt' instead."
 | 
						|
{%- endmatch %}
 | 
						|
fi
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# When using zoxide with --no-aliases, alias these internal functions as
 | 
						|
# desired.
 | 
						|
#
 | 
						|
 | 
						|
# Jump to a directory using only keywords.
 | 
						|
__zoxide_z() {
 | 
						|
    if [ "$#" -eq 0 ]; then
 | 
						|
        __zoxide_cd ~
 | 
						|
    elif [ "$#" -eq 1 ] && [ "$1" = '-' ]; then
 | 
						|
        if [ -n "${OLDPWD}" ]; then
 | 
						|
            __zoxide_cd "${OLDPWD}"
 | 
						|
        else
 | 
						|
            # shellcheck disable=SC2016
 | 
						|
            \printf 'zoxide: $OLDPWD is not set'
 | 
						|
            return 1
 | 
						|
        fi
 | 
						|
    elif [ "$#" -eq 1 ] && [ -d "$1" ]; then
 | 
						|
        __zoxide_cd "$1"
 | 
						|
    else
 | 
						|
        __zoxide_result="$(zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" && __zoxide_cd "${__zoxide_result}"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
# Jump to a directory using interactive search.
 | 
						|
__zoxide_zi() {
 | 
						|
    __zoxide_result="$(zoxide query -i -- "$@")" && __zoxide_cd "${__zoxide_result}"
 | 
						|
}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# Convenient aliases for zoxide. Disable these using --no-aliases.
 | 
						|
#
 | 
						|
 | 
						|
{%- match cmd %}
 | 
						|
{%- when Some with (cmd) %}
 | 
						|
 | 
						|
# Remove definitions.
 | 
						|
__zoxide_unset() {
 | 
						|
    # shellcheck disable=SC1001
 | 
						|
    \unset -f "$@" >/dev/null 2>&1
 | 
						|
    # shellcheck disable=SC1001
 | 
						|
    \unset -v "$@" >/dev/null 2>&1
 | 
						|
}
 | 
						|
 | 
						|
__zoxide_unset '{{cmd}}'
 | 
						|
{{cmd}}() {
 | 
						|
    __zoxide_z "$@"
 | 
						|
}
 | 
						|
 | 
						|
__zoxide_unset '{{cmd}}i'
 | 
						|
{{cmd}}i() {
 | 
						|
    __zoxide_zi "$@"
 | 
						|
}
 | 
						|
 | 
						|
{%- when None %}
 | 
						|
 | 
						|
{{ not_configured }}
 | 
						|
 | 
						|
{%- endmatch %}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# To initialize zoxide, add this to your configuration:
 | 
						|
#
 | 
						|
# eval "$(zoxide init posix --hook prompt)"
 |