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 -i -- "$@")" && __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)"
 |