diff options
-rw-r--r-- | lib/aliases.zsh | 11 | ||||
-rw-r--r-- | lib/prompt_info_functions.zsh | 33 | ||||
-rw-r--r-- | lib/rbenv.zsh | 2 | ||||
-rw-r--r-- | lib/rvm.zsh | 8 | ||||
-rw-r--r-- | plugins/svn-fast-info/svn-fast-info.plugin.zsh | 73 | ||||
-rw-r--r-- | themes/af-magic.zsh-theme | 9 |
6 files changed, 120 insertions, 16 deletions
diff --git a/lib/aliases.zsh b/lib/aliases.zsh index b279bf855..2094f60a0 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -6,6 +6,11 @@ alias po='popd' alias ...='cd ../..' alias -- -='cd -' +# Prevent headaches +alias cp='cp -v' +alias rm='rm -v' +alias mv='mv -v' + # Super user alias _='sudo' alias please='sudo' @@ -27,9 +32,9 @@ else fi # List direcory contents alias lsa='ls -lah' -alias l='ls -la' -alias ll='ls -l' -alias la='ls -lA' +alias l='ls -lah' +alias ll='ls -lh' +alias la='ls -lAh' alias sl=ls # often screw this up alias afind='ack-grep -il' diff --git a/lib/prompt_info_functions.zsh b/lib/prompt_info_functions.zsh new file mode 100644 index 000000000..335c02a3d --- /dev/null +++ b/lib/prompt_info_functions.zsh @@ -0,0 +1,33 @@ +# *_prompt_info functions for usage in your prompt +# +# Plugin creators, please add your *_prompt_info function to the list +# of dummy implementations to help theme creators not receiving errors +# without the need of implementing conditional clauses. +# +# See also lib/bzr.zsh, lib/git.zsh and lib/nvm.zsh for +# git_prompt_info, bzr_prompt_info and nvm_prompt_info + +# Dummy implementations that return false to prevent command_not_found +# errors with themes, that implement these functions +# Real implementations will be used when the respective plugins are loaded +function chruby_prompt_info hg_prompt_info pyenv_prompt_info \ + rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \ + virtualenv_prompt_info { + return 1 +} + +# oh-my-zsh supports an rvm prompt by default +# get the name of the rvm ruby version +function rvm_prompt_info() { + [ -f $HOME/.rvm/bin/rvm-prompt ] || return 1 + local rvm_prompt + rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) + [[ "${rvm_prompt}x" == "x" ]] && return 1 + echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}" +} + +# use this to enable users to see their ruby version, no matter which +# version management system they use +function ruby_prompt_info() { + echo $(rvm_prompt_info || rbenv_prompt_info || chruby_prompt_info) +} diff --git a/lib/rbenv.zsh b/lib/rbenv.zsh deleted file mode 100644 index a8b6c323c..000000000 --- a/lib/rbenv.zsh +++ /dev/null @@ -1,2 +0,0 @@ -# using the rbenv plugin will override this with a real implementation -function rbenv_prompt_info() {} diff --git a/lib/rvm.zsh b/lib/rvm.zsh deleted file mode 100644 index e8744e61e..000000000 --- a/lib/rvm.zsh +++ /dev/null @@ -1,8 +0,0 @@ -# get the name of the ruby version -function rvm_prompt_info() { - [ -f $HOME/.rvm/bin/rvm-prompt ] || return - local rvm_prompt - rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) - [[ "${rvm_prompt}x" == "x" ]] && return - echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}" -} diff --git a/plugins/svn-fast-info/svn-fast-info.plugin.zsh b/plugins/svn-fast-info/svn-fast-info.plugin.zsh new file mode 100644 index 000000000..ea19bcea0 --- /dev/null +++ b/plugins/svn-fast-info/svn-fast-info.plugin.zsh @@ -0,0 +1,73 @@ +# vim:ft=zsh ts=2 sw=2 sts=2 et +# +# Faster alternative to the current SVN plugin implementation. +# +# Works with svn 1.6, 1.7, 1.8. +# Use `svn_prompt_info` method to enquire the svn data. +# It's faster because his efficient use of svn (single svn call) which saves a lot on a huge codebase +# It displays the current status of the local files (added, deleted, modified, replaced, or else...) +# +# Use as a drop-in replacement of the svn plugin not as complementary plugin + +function svn_prompt_info() { + local info + info=$(svn info 2>&1) || return 1; # capture stdout and stderr + local repo_need_upgrade=$(svn_repo_need_upgrade $info) + + if [[ -n $repo_need_upgrade ]]; then + printf '%s%s%s%s%s%s%s\n' \ + $ZSH_PROMPT_BASE_COLOR \ + $ZSH_THEME_SVN_PROMPT_PREFIX \ + $ZSH_PROMPT_BASE_COLOR \ + $repo_need_upgrade \ + $ZSH_PROMPT_BASE_COLOR \ + $ZSH_THEME_SVN_PROMPT_SUFFIX \ + $ZSH_PROMPT_BASE_COLOR + else + printf '%s%s%s %s%s:%s%s%s%s%s' \ + $ZSH_PROMPT_BASE_COLOR \ + $ZSH_THEME_SVN_PROMPT_PREFIX \ + \ + "$(svn_status_info $info)" \ + $ZSH_PROMPT_BASE_COLOR \ + \ + $ZSH_THEME_BRANCH_NAME_COLOR \ + $(svn_current_branch_name $info) \ + $ZSH_PROMPT_BASE_COLOR \ + \ + $(svn_current_revision $info) \ + $ZSH_PROMPT_BASE_COLOR \ + \ + $ZSH_THEME_SVN_PROMPT_SUFFIX \ + $ZSH_PROMPT_BASE_COLOR + fi +} + +function svn_repo_need_upgrade() { + grep -q "E155036" <<< ${1:-$(svn info 2> /dev/null)} && \ + echo "E155036: upgrade repo with svn upgrade" +} + +function svn_current_branch_name() { + grep '^URL:' <<< "${1:-$(svn info 2> /dev/null)}" | egrep -o '(tags|branches)/[^/]+|trunk' +} + +function svn_repo_root_name() { + grep '^Repository\ Root:' <<< "${1:-$(svn info 2> /dev/null)}" | sed 's#.*/##' +} + +function svn_current_revision() { + echo "${1:-$(svn info 2> /dev/null)}" | sed -n 's/Revision: //p' +} + +function svn_status_info() { + local svn_status_string="$ZSH_THEME_SVN_PROMPT_CLEAN" + local svn_status="$(svn status 2> /dev/null)"; + if grep -E '^\s*A' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_ADDITIONS:-+}"; fi + if grep -E '^\s*D' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_DELETIONS:-✖}"; fi + if grep -E '^\s*M' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_MODIFICATIONS:-✎}"; fi + if grep -E '^\s*[R~]' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_REPLACEMENTS:-∿}"; fi + if grep -E '^\s*\?' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_UNTRACKED:-?}"; fi + if grep -E '^\s*[CI!L]' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_DIRTY:-'!'}"; fi + echo $svn_status_string +} diff --git a/themes/af-magic.zsh-theme b/themes/af-magic.zsh-theme index f241efb6a..3c2f45658 100644 --- a/themes/af-magic.zsh-theme +++ b/themes/af-magic.zsh-theme @@ -8,8 +8,6 @@ # Created on: June 19, 2012 # Last modified on: June 20, 2012 - - if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" @@ -27,7 +25,12 @@ eval my_gray='$FG[237]' eval my_orange='$FG[214]' # right prompt -RPROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%' +if type "virtualenv_prompt_info" > /dev/null +then + RPROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%' +else + RPROMPT='$my_gray%n@%m%{$reset_color%}%' +fi # git settings ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:" |