Added helper functions.

This commit is contained in:
Sorin Ionescu 2011-07-28 16:41:39 -04:00
parent 90da5fc874
commit 9c24ac8211
6 changed files with 63 additions and 13 deletions

View File

@ -2,7 +2,7 @@ setopt correct # Correct commands.
setopt correct_all # Correct all arguments. setopt correct_all # Correct all arguments.
# The 'ls' Family # The 'ls' Family
if [[ "$DISABLE_COLOR" != 'true' ]]; then if ! check-bool "$DISABLE_COLOR"; then
if [[ -f "$HOME/.dir_colors" ]] && ( (( $+commands[dircolors] )) || ( (( $+plugins[(er)gnu-utils] )) && (( $+commands[gdircolors] )) ) ); then if [[ -f "$HOME/.dir_colors" ]] && ( (( $+commands[dircolors] )) || ( (( $+plugins[(er)gnu-utils] )) && (( $+commands[gdircolors] )) ) ); then
eval $("${commands[dircolors]:-$commands[gdircolors]}" "$HOME/.dir_colors") eval $("${commands[dircolors]:-$commands[gdircolors]}" "$HOME/.dir_colors")
alias ls='ls -hF --group-directories-first --color=auto' alias ls='ls -hF --group-directories-first --color=auto'
@ -80,7 +80,7 @@ else
fi fi
# Diff/Make # Diff/Make
if [[ "$DISABLE_COLOR" != 'true' ]]; then if ! check-bool "$DISABLE_COLOR"; then
if (( $+commands[colordiff] )); then if (( $+commands[colordiff] )); then
alias diff='colordiff -u' alias diff='colordiff -u'
compdef colordiff=diff compdef colordiff=diff

View File

@ -64,7 +64,7 @@ export VISUAL="vim"
export PAGER='less' export PAGER='less'
# Grep # Grep
if [[ "$DISABLE_COLOR" != 'true' ]]; then if ! check-bool "$DISABLE_COLOR"; then
export GREP_COLOR='37;45' export GREP_COLOR='37;45'
export GREP_OPTIONS='--color=auto' export GREP_OPTIONS='--color=auto'
fi fi
@ -89,7 +89,7 @@ if (( $+commands[lesspipe.sh] )); then
fi fi
# Termcap # Termcap
if [[ "$DISABLE_COLOR" != 'true' ]]; then if ! check-bool "$DISABLE_COLOR"; then
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;31m' # begin bold export LESS_TERMCAP_md=$'\E[01;31m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode export LESS_TERMCAP_me=$'\E[0m' # end mode

50
functions/helper.zsh Normal file
View File

@ -0,0 +1,50 @@
# 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").
function check-bool {
[[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]]
}
# Trap signals were generated with 'kill -l'.
# DEBUG, EXIT, and ZERR are ZSH signals.
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 {
if (( $# < 2 )); then
echo "Usage: $0 type function"
return 1
fi
if [[ -z "$TRAP_SIGNALS[(r)$1]" ]]; then
echo "$0: unknown signal: $1"
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
}

View File

@ -14,7 +14,7 @@ fi
# Partially supports Mac OS X Terminal since it can't set window and tab separately. # Partially supports Mac OS X Terminal since it can't set window and tab separately.
# Usage: title "tab title" "window title" # Usage: title "tab title" "window title"
function terminal-title { function terminal-title {
if [[ "$DISABLE_AUTO_TITLE" != 'true' ]]; then if ! check-bool "$DISABLE_AUTO_TITLE"; then
if [[ "$TERM" == screen* ]]; then if [[ "$TERM" == screen* ]]; then
# Set GNU Screen's hardstatus (usually truncated at 20 characters). # Set GNU Screen's hardstatus (usually truncated at 20 characters).
printf "\ek%s\e\\" ${(V)1} printf "\ek%s\e\\" ${(V)1}

View File

@ -2,14 +2,14 @@
# FILE: compleat.plugin.zsh # FILE: compleat.plugin.zsh
# DESCRIPTION: oh-my-zsh plugin file. # DESCRIPTION: oh-my-zsh plugin file.
# AUTHOR: Sorin Ionescu <sorin.ionescu@gmail.com> # AUTHOR: Sorin Ionescu <sorin.ionescu@gmail.com>
# VERSION: 1.0.1 # VERSION: 1.0.2
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
if (( ${+commands[compleat]} )); then if (( ${+commands[compleat]} )); then
compleat_setup="${commands[compleat]:h:h}/share/compleat-1.0/compleat_setup" compleat_setup="${commands[compleat]:h:h}/share/compleat-1.0/compleat_setup"
if [[ -f "$compleat_setup" ]]; then if [[ -f "$compleat_setup" ]]; then
if ! bashcompinit >/dev/null 2>&1; then if autoloadable bashcompinit; then
autoload -Uz bashcompinit && bashcompinit autoload -Uz bashcompinit && bashcompinit
fi fi

View File

@ -85,27 +85,27 @@ function git-prompt-status() {
fi fi
while IFS=$'\n' read line; do while IFS=$'\n' read line; do
if [[ "$line" == \?\?\ * ]] && [[ untracked != 'yes' ]]; then if [[ "$line" == \?\?\ * ]] && ! check-bool "$untracked"; then
untracked='yes' untracked='yes'
indicators="${ZSH_THEME_GIT_PROMPT_UNTRACKED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_UNTRACKED}${indicators}"
fi fi
if [[ "$line" == (((A|M|D|T) )|(AD|AM|AT|MM))\ * ]] && [[ added != 'yes' ]]; then if [[ "$line" == (((A|M|D|T) )|(AD|AM|AT|MM))\ * ]] && ! check-bool "$added"; then
added='yes' added='yes'
indicators="${ZSH_THEME_GIT_PROMPT_ADDED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_ADDED}${indicators}"
fi fi
if [[ "$line" == (( (M|T))|(AM|AT|MM))\ * ]] && [[ modified != 'yes' ]]; then if [[ "$line" == (( (M|T))|(AM|AT|MM))\ * ]] && ! check-bool "$modified"; then
modified='yes' modified='yes'
indicators="${ZSH_THEME_GIT_PROMPT_MODIFIED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_MODIFIED}${indicators}"
fi fi
if [[ "$line" == R\ \ * ]] && [[ renamed != 'yes' ]]; then if [[ "$line" == R\ \ * ]] && ! check-bool "$renamed"; then
renamed='yes' renamed='yes'
indicators="${ZSH_THEME_GIT_PROMPT_RENAMED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_RENAMED}${indicators}"
fi fi
if [[ "$line" == ( D|AD)\ * ]] && [[ deleted != 'yes' ]]; then if [[ "$line" == ( D|AD)\ * ]] && ! check-bool "$deleted"; then
deleted='yes' deleted='yes'
indicators="${ZSH_THEME_GIT_PROMPT_DELETED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_DELETED}${indicators}"
fi fi
if [[ "$line" == UU\ * ]] && [[ unmerged != 'yes' ]]; then if [[ "$line" == UU\ * ]] && ! check-bool "$unmerged"; then
unmerged='yes' unmerged='yes'
indicators="${ZSH_THEME_GIT_PROMPT_UNMERGED}${indicators}" indicators="${ZSH_THEME_GIT_PROMPT_UNMERGED}${indicators}"
fi fi