{% if short_description -%}
{% endif -%}
{% if include_aliases -%}
{% endif -%}
{% if include_bin_dir -%}
{% endif -%}
{% if include_functions_dir -%}
{% endif -%}
0="${ZERO:-${${0:#$ZSH_ARGZERO}:-${(%):-%N}}}"
0="${${(M)0:#/*}:-$PWD/$0}"
typeset -gA {{ plugin_var }}
{{ plugin_var }}[_PLUGIN_DIR]="${0:h}"
{%- if include_aliases %}
{{ plugin_var }}[_ALIASES]=""
{%- endif %}
{{ plugin_var }}[_FUNCTIONS]=""
.{{ plugin_name }}_remember_fn() {
builtin emulate -L zsh
local fn_name="${1}"
if [[ -z "{{ _shv_start }}{{ plugin_var }}[_FUNCTIONS]{{ _shv_end }}" ]]; then
{{ plugin_var }}[_FUNCTIONS]="${fn_name}"
elif [[ ",{{ _shv_start }}{{ plugin_var }}[_FUNCTIONS]{{ _shv_end }}," != *",${fn_name},"* ]]; then
{{ plugin_var }}[_FUNCTIONS]="{{ _shv_start }}{{ plugin_var }}[_FUNCTIONS]{{ _shv_end }},${fn_name}"
fi
}
.{{ plugin_name }}_remember_fn .{{ plugin_name }}_remember_fn
{% if include_aliases -%}
.{{ plugin_name }}_define_alias() {
local alias_name="${1}"
local alias_value="${2}"
alias ${alias_name}=${alias_value}
if [[ -z "{{ _shv_start }}{{ plugin_var }}[_ALIASES]{{ _shv_end }}" ]]; then
{{ plugin_var }}[_ALIASES]="${alias_name}"
elif [[ ",{{ _shv_start }}{{ plugin_var }}[_ALIASES]{{ _shv_end }}," != *",${alias_name},"* ]]; then
{{ plugin_var }}[_ALIASES]="{{ _shv_start }}{{ plugin_var }}[_ALIASES]{{ _shv_end }},${alias_name}"
fi
}
.{{ plugin_name }}_remember_fn .{{ plugin_name }}_remember_alias
{%- endif %}
{{ plugin_name }}_plugin_init() {
builtin emulate -L zsh
{% if include_functions_dir -%}
if [[ -d "{{ _shv_start }}{{ plugin_var }}[_PLUGIN_DIR]{{ _shv_end }}/functions" ]]; then
{{ plugin_var }}[_PLUGIN_FNS_DIR]="{{ _shv_start }}{{ plugin_var }}[_PLUGIN_DIR]{{ _shv_end }}/functions"
if [[ $PMSPEC != *f* ]]; then
fpath+=( "{{ _shv_start }}{{ plugin_var }}[_PLUGIN_FNS_DIR]{{ _shv_end }}" )
elif [[ ${zsh_loaded_plugins[-1]} != */{{ plugin_name }} && -z ${fpath[(r){{ _shv_start }}{{ plugin_var }}[_PLUGIN_FNS_DIR]{{ _shv_end }}]} ]]; then
fpath+=( "{{ _shv_start }}{{ plugin_var }}[_PLUGIN_FNS_DIR]{{ _shv_end }}" )
fi
local fn
for fn in {{ _shv_start }}{{ plugin_var }}[_PLUGIN_FNS_DIR]{{ _shv_end }}/*(.:t); do
autoload -Uz ${fn}
.{{ plugin_name }}_remember_fn ${fn}
done
fi
{%- endif %}
{% if include_bin_dir -%}
if [[ -d "{{ _shv_start }}{{ plugin_var }}[_PLUGIN_DIR]{{ _shv_end }}/bin" ]]; then
{{ plugin_var }}[_PLUGIN_BIN_DIR]="{{ _shv_start }}{{ plugin_var }}[_PLUGIN_DIR]{{ _shv_end }}/bin"
if [[ $PMSPEC != *b* ]]; then
path+=( "{{ plugin_var }}[_PLUGIN_BIN_DIR]" )
elif [[ ${zsh_loaded_plugins[-1]} != */{{ plugin_name }} && -z ${fpath[(r){{ plugin_var }}[_PLUGIN_BIN_DIR]]} ]]; then
path+=( "{{ plugin_var }}[_PLUGIN_BIN_DIR]" )
fi
fi
{%- endif %}
}
.{{ plugin_name }}_remember_fn {{ plugin_name }}_plugin_init
{{ plugin_name }}_plugin_unload() {
builtin emulate -L zsh
local plugin_fns
IFS=',' read -r -A plugin_fns <<< "{{ _shv_start }}{{ plugin_var }}[_FUNCTIONS]{{ _shv_end }}"
local fn
for fn in ${plugin_fns[@]}; do
whence -w "${fn}" &> /dev/null && unfunction "${fn}"
done
{% if include_aliases %}
local aliases
IFS=',' read -r -A aliases <<< "{{ _shv_start }}{{ plugin_var }}[_ALIASES]{{ _shv_end }}"
local alias
for alias in ${aliases[@]}; do
unalias "${alias}"
done
{% endif %}
{% if include_bin_dir -%}
path=( "${(@)path:#{{ _shv_start }}{{ plugin_var }}[_PLUGIN_BIN_DIR]{{ _shv_end }}}" )
{%- endif -%}
{% if include_functions_dir -%}
fpath=( "${(@)fpath:#{{ _shv_start }}{{ plugin_var }}[_PLUGIN_FNS_DIR]{{ _shv_end }}}" )
{%- endif -%}
unset {{ plugin_var }}
unfunction {{ plugin_name }}_plugin_unload
}
{% if not include_functions_dir -%}
{{ plugin_name }}_example() {
builtin emulate -L zsh
printf "An example function in {{plugin_name}}, var: {{ _shv_start }}{{ plugin_var }}_EXAMPLE{{ _shv_end }}"
}
.{{ plugin_name }}_remember_fn {{ plugin_name }}_example
{%- endif %}
{% if include_aliases -%}
.{{ plugin_name }}_define_alias my_example '{{ plugin_name }}_example'
{%- endif %}
{{ plugin_name }}_plugin_init
true