1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2024-07-01 12:50:27 +00:00
prezto/helper.zsh

51 lines
1.3 KiB
Bash
Raw Normal View History

2011-07-28 20:41:39 +00:00
# Checks if a file can be autoloaded by trying to load it in a subshell.
function autoloadable() {
( unfunction $1 ; autoload -U +X $1 ) &> /dev/null
}
# Checks boolean variable for "true" (case insensitive "1", "y", "yes", "t", "true", "o", and "on").
2012-01-21 03:03:17 +00:00
function is-true() {
2011-07-28 20:41:39 +00:00
[[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]]
}
# Trap signals were generated with 'kill -l'.
2011-10-12 03:13:58 +00:00
# DEBUG, EXIT, and ZERR are Zsh signals.
2011-07-28 20:41:39 +00:00
TRAP_SIGNALS=(
ABRT ALRM BUS CHLD CONT EMT FPE HUP ILL INFO INT IO KILL PIPE PROF QUIT
SEGV STOP SYS TERM TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ
DEBUG EXIT ZERR
)
# Adds a function to a list to be called when a trap is triggered.
function add-zsh-trap() {
2011-07-28 20:41:39 +00:00
if (( $# < 2 )); then
2012-01-19 07:28:01 +00:00
print "usage: $0 type function"
2011-07-28 20:41:39 +00:00
return 1
fi
if [[ -z "$TRAP_SIGNALS[(r)$1]" ]]; then
2011-10-12 03:13:58 +00:00
print "$0: unknown signal: $1"
2011-07-28 20:41:39 +00:00
return 1
fi
local trap_functions="TRAP${1}_FUNCTIONS"
if (( ! ${(P)+trap_functions} )); then
typeset -gaU "$trap_functions"
fi
eval "$trap_functions+="$2""
if (( ! $+functions[TRAP${1}] )); then
eval "
function TRAP${1}() {
for trap_function in \"\$TRAP${1}_FUNCTIONS[@]\"; do
if (( \$+functions[\$trap_function] )); then
\"\$trap_function\" \"\$1\"
fi
done
return \$(( 128 + \$1 ))
}
"
fi
}