From 8705ded7624991ce69a706c767f91f6b4e4c3d2a Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Thu, 28 Jul 2011 16:41:39 -0400 Subject: [PATCH] Added helper functions. --- functions/alias.zsh | 4 ++-- functions/environment.zsh | 4 ++-- functions/helper.zsh | 10 ++++++++++ functions/terminal.zsh | 2 +- plugins/compleat/compleat.plugin.zsh | 4 ++-- plugins/git/git.plugin.zsh | 12 ++++++------ 6 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 functions/helper.zsh diff --git a/functions/alias.zsh b/functions/alias.zsh index db46c291..98e0a809 100644 --- a/functions/alias.zsh +++ b/functions/alias.zsh @@ -2,7 +2,7 @@ setopt correct # Correct commands. setopt correct_all # Correct all arguments. # 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 eval $("${commands[dircolors]:-$commands[gdircolors]}" "$HOME/.dir_colors") alias ls='ls -hF --group-directories-first --color=auto' @@ -79,7 +79,7 @@ else fi # Diff/Make -if [[ "$DISABLE_COLOR" != 'true' ]]; then +if ! check-bool "$DISABLE_COLOR"; then if (( $+commands[colordiff] )); then alias diff='colordiff -u' compdef colordiff=diff diff --git a/functions/environment.zsh b/functions/environment.zsh index 4909ea98..ec725ffb 100644 --- a/functions/environment.zsh +++ b/functions/environment.zsh @@ -64,7 +64,7 @@ export VISUAL="vim" export PAGER='less' # Grep -if [[ "$DISABLE_COLOR" != 'true' ]]; then +if ! check-bool "$DISABLE_COLOR"; then export GREP_COLOR='37;45' export GREP_OPTIONS='--color=auto' fi @@ -89,7 +89,7 @@ if (( $+commands[lesspipe.sh] )); then fi # Termcap -if [[ "$DISABLE_COLOR" != 'true' ]]; then +if ! check-bool "$DISABLE_COLOR"; then export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking export LESS_TERMCAP_md=$'\E[01;31m' # begin bold export LESS_TERMCAP_me=$'\E[0m' # end mode diff --git a/functions/helper.zsh b/functions/helper.zsh new file mode 100644 index 00000000..8c6272f1 --- /dev/null +++ b/functions/helper.zsh @@ -0,0 +1,10 @@ +# 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", and "true"). +function check-bool { + [[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)) ]] +} + diff --git a/functions/terminal.zsh b/functions/terminal.zsh index bdd71cc4..ab5071ae 100644 --- a/functions/terminal.zsh +++ b/functions/terminal.zsh @@ -14,7 +14,7 @@ fi # Partially supports Mac OS X Terminal since it can't set window and tab separately. # Usage: title "tab title" "window title" function terminal-title { - if [[ "$DISABLE_AUTO_TITLE" != 'true' ]]; then + if ! check-bool "$DISABLE_AUTO_TITLE"; then if [[ "$TERM" == screen* ]]; then # Set GNU Screen's hardstatus (usually truncated at 20 characters). printf "\ek%s\e\\" ${(V)1} diff --git a/plugins/compleat/compleat.plugin.zsh b/plugins/compleat/compleat.plugin.zsh index 23f784a6..89eff097 100644 --- a/plugins/compleat/compleat.plugin.zsh +++ b/plugins/compleat/compleat.plugin.zsh @@ -2,14 +2,14 @@ # FILE: compleat.plugin.zsh # DESCRIPTION: oh-my-zsh plugin file. # AUTHOR: Sorin Ionescu -# VERSION: 1.0.1 +# VERSION: 1.0.2 # ------------------------------------------------------------------------------ if (( ${+commands[compleat]} )); then compleat_setup="${commands[compleat]:h:h}/share/compleat-1.0/compleat_setup" if [[ -f "$compleat_setup" ]]; then - if ! bashcompinit >/dev/null 2>&1; then + if autoloadable bashcompinit; then autoload -Uz bashcompinit && bashcompinit -i fi diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index cbf00395..c89ce016 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -85,27 +85,27 @@ function git-prompt-status() { fi while IFS=$'\n' read line; do - if [[ "$line" == \?\?\ * ]] && [[ untracked != 'yes' ]]; then + if [[ "$line" == \?\?\ * ]] && ! check-bool "$untracked"; then untracked='yes' indicators="${ZSH_THEME_GIT_PROMPT_UNTRACKED}${indicators}" 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' indicators="${ZSH_THEME_GIT_PROMPT_ADDED}${indicators}" fi - if [[ "$line" == (( (M|T))|(AM|AT|MM))\ * ]] && [[ modified != 'yes' ]]; then + if [[ "$line" == (( (M|T))|(AM|AT|MM))\ * ]] && ! check-bool "$modified"; then modified='yes' indicators="${ZSH_THEME_GIT_PROMPT_MODIFIED}${indicators}" fi - if [[ "$line" == R\ \ * ]] && [[ renamed != 'yes' ]]; then + if [[ "$line" == R\ \ * ]] && ! check-bool "$renamed"; then renamed='yes' indicators="${ZSH_THEME_GIT_PROMPT_RENAMED}${indicators}" fi - if [[ "$line" == ( D|AD)\ * ]] && [[ deleted != 'yes' ]]; then + if [[ "$line" == ( D|AD)\ * ]] && ! check-bool "$deleted"; then deleted='yes' indicators="${ZSH_THEME_GIT_PROMPT_DELETED}${indicators}" fi - if [[ "$line" == UU\ * ]] && [[ unmerged != 'yes' ]]; then + if [[ "$line" == UU\ * ]] && ! check-bool "$unmerged"; then unmerged='yes' indicators="${ZSH_THEME_GIT_PROMPT_UNMERGED}${indicators}" fi