107 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.5 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 cfg!(windows) %}
 | 
						|
    \command cygpath -w "$(\builtin pwd -P)"
 | 
						|
{%- else if resolve_symlinks %}
 | 
						|
    \command pwd -P
 | 
						|
{%- else %}
 | 
						|
    \command pwd -L
 | 
						|
{%- endif %}
 | 
						|
}
 | 
						|
 | 
						|
# cd + custom logic based on the value of _ZO_ECHO.
 | 
						|
__zoxide_cd() {
 | 
						|
    # shellcheck disable=SC2164
 | 
						|
    \command cd "$@" {%- if echo %} && __zoxide_pwd {%- endif %}
 | 
						|
}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# Hook configuration for zoxide.
 | 
						|
#
 | 
						|
 | 
						|
{% match hook %}
 | 
						|
{%- when InitHook::None -%}
 | 
						|
{{ not_configured }}
 | 
						|
 | 
						|
{%- when InitHook::Prompt -%}
 | 
						|
# Hook to add new entries to the database.
 | 
						|
__zoxide_hook() {
 | 
						|
    \command zoxide add -- "$(__zoxide_pwd || \builtin true)"
 | 
						|
}
 | 
						|
 | 
						|
# Initialize hook.
 | 
						|
if [ "${PS1:=}" = "${PS1#*\$(__zoxide_hook)}" ]; then
 | 
						|
    PS1="${PS1}\$(__zoxide_hook)"
 | 
						|
fi
 | 
						|
 | 
						|
{%- when InitHook::Pwd -%}
 | 
						|
\command printf "%s\n%s\n" \
 | 
						|
    "zoxide: PWD hooks are not supported on POSIX shells." \
 | 
						|
    "        Use 'zoxide init posix --hook prompt' instead."
 | 
						|
 | 
						|
{%- endmatch %}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# When using zoxide with --no-cmd, 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
 | 
						|
            \command printf 'zoxide: $OLDPWD is not set'
 | 
						|
            return 1
 | 
						|
        fi
 | 
						|
    elif [ "$#" -eq 1 ] && [ -d "$1" ]; then
 | 
						|
        __zoxide_cd "$1"
 | 
						|
    else
 | 
						|
        __zoxide_result="$(\command zoxide query --exclude "$(__zoxide_pwd || \builtin true)" -- "$@")" &&
 | 
						|
            __zoxide_cd "${__zoxide_result}"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
# Jump to a directory using interactive search.
 | 
						|
__zoxide_zi() {
 | 
						|
    __zoxide_result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${__zoxide_result}"
 | 
						|
}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# Commands for zoxide. Disable these using --no-cmd.
 | 
						|
#
 | 
						|
 | 
						|
{%- match cmd %}
 | 
						|
{%- when Some with (cmd) %}
 | 
						|
 | 
						|
\command unalias {{cmd}} >/dev/null 2>&1 || \true
 | 
						|
{{cmd}}() {
 | 
						|
    __zoxide_z "$@"
 | 
						|
}
 | 
						|
 | 
						|
\command unalias {{cmd}}i >/dev/null 2>&1 || \true
 | 
						|
{{cmd}}i() {
 | 
						|
    __zoxide_zi "$@"
 | 
						|
}
 | 
						|
 | 
						|
{%- when None %}
 | 
						|
 | 
						|
{{ not_configured }}
 | 
						|
 | 
						|
{%- endmatch %}
 | 
						|
 | 
						|
{{ section }}
 | 
						|
# To initialize zoxide, add this to your configuration:
 | 
						|
#
 | 
						|
# eval "$(zoxide init posix --hook prompt)"
 |