diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/aliases.zsh | 4 | ||||
| -rw-r--r-- | lib/completion.zsh | 4 | ||||
| -rw-r--r-- | lib/directories.zsh | 11 | ||||
| -rw-r--r-- | lib/functions.zsh | 2 | ||||
| -rw-r--r-- | lib/git.zsh | 58 | ||||
| -rw-r--r-- | lib/key-bindings.zsh | 1 | ||||
| -rw-r--r-- | lib/misc.zsh | 4 | ||||
| -rw-r--r-- | lib/rvm.zsh | 11 | ||||
| -rw-r--r-- | lib/termsupport.zsh | 10 | 
9 files changed, 81 insertions, 24 deletions
| diff --git a/lib/aliases.zsh b/lib/aliases.zsh index 0555be264..a7f699c19 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -8,6 +8,7 @@ alias -- -='cd -'  # Super user  alias _='sudo' +alias please='sudo'  #alias g='grep -in' @@ -16,8 +17,9 @@ alias history='fc -l 1'  # List direcory contents  alias lsa='ls -lah' -alias l='ls -la' +alias l='ls -lA1'  alias ll='ls -l' +alias la='ls -lA'  alias sl=ls # often screw this up  alias afind='ack-grep -il' diff --git a/lib/completion.zsh b/lib/completion.zsh index b964595ed..ba839a067 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -32,7 +32,7 @@ zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-dir  cdpath=(.)  # use /etc/hosts and known_hosts for hostname completion -[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=() +[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _global_ssh_hosts=()  [ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()  [ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()  hosts=( @@ -46,7 +46,7 @@ zstyle ':completion:*:hosts' hosts $hosts  # Use caching so that commands like apt and dpkg complete are useable  zstyle ':completion::complete:*' use-cache 1 -zstyle ':completion::complete:*' cache-path ~/.oh-my-zsh/cache/ +zstyle ':completion::complete:*' cache-path $ZSH/cache/  # Don't complete uninteresting users  zstyle ':completion:*:*:*:users' ignored-patterns \ diff --git a/lib/directories.zsh b/lib/directories.zsh index bb114f615..6c743e40e 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -26,9 +26,9 @@ cd () {    elif [[ "x$*" == "x...." ]]; then      cd ../../..    elif [[ "x$*" == "x....." ]]; then -    cd ../../.. -  elif [[ "x$*" == "x......" ]]; then      cd ../../../.. +  elif [[ "x$*" == "x......" ]]; then +    cd ../../../../..    else      builtin cd "$@"    fi @@ -36,9 +36,4 @@ cd () {  alias md='mkdir -p'  alias rd=rmdir -alias d='dirs -v' - -# mkdir & cd to it -function mcd() {  -  mkdir -p "$1" && cd "$1";  -}
\ No newline at end of file +alias d='dirs -v | head -10' diff --git a/lib/functions.zsh b/lib/functions.zsh index d2dcadd0c..63ab755cf 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -1,5 +1,5 @@  function zsh_stats() { -  history | awk '{print $2}' | sort | uniq -c | sort -rn | head +  history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n20  }  function uninstall_oh_my_zsh() { diff --git a/lib/git.zsh b/lib/git.zsh index defa062c6..4eaa299f2 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -1,18 +1,44 @@  # get the name of the branch we are on  function git_prompt_info() { -  ref=$(git symbolic-ref HEAD 2> /dev/null) || return +  ref=$(git symbolic-ref HEAD 2> /dev/null) || \ +  ref=$(git rev-parse --short HEAD 2> /dev/null) || return    echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"  } +  # Checks if working tree is dirty  parse_git_dirty() { -  if [[ -n $(git status -s --ignore-submodules=dirty 2> /dev/null) ]]; then +  local SUBMODULE_SYNTAX='' +  if [[ $POST_1_7_2_GIT -gt 0 ]]; then +        SUBMODULE_SYNTAX="--ignore-submodules=dirty" +  fi +  if [[ -n $(git status -s ${SUBMODULE_SYNTAX}  2> /dev/null) ]]; then      echo "$ZSH_THEME_GIT_PROMPT_DIRTY"    else      echo "$ZSH_THEME_GIT_PROMPT_CLEAN"    fi  } +# get the difference between the local and remote branches +git_remote_status() { +    remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/} +    if [[ -n ${remote} ]] ; then +        ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) +        behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) + +        if [ $ahead -eq 0 ] && [ $behind -gt 0 ] +        then +            echo "$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" +        elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] +        then +            echo "$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" +        elif [ $ahead -gt 0 ] && [ $behind -gt 0 ] +        then +            echo "$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" +        fi +    fi +} +  # Checks if there are commits ahead from remote  function git_prompt_ahead() {    if $(echo "$(git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then @@ -54,6 +80,8 @@ git_prompt_status() {    fi    if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then      STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" +  elif $(echo "$INDEX" | grep '^D  ' &> /dev/null); then +    STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"    elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then      STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"    fi @@ -62,3 +90,29 @@ git_prompt_status() {    fi    echo $STATUS  } + +#compare the provided version of git to the version installed and on path +#prints 1 if input version <= installed version +#prints -1 otherwise  +function git_compare_version() { +  local INPUT_GIT_VERSION=$1; +  local INSTALLED_GIT_VERSION +  INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION}); +  INSTALLED_GIT_VERSION=($(git --version)); +  INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]}); + +  for i in {1..3}; do +    if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then +      echo -1 +      return 0 +    fi +  done +  echo 1 +} + +#this is unlikely to change so make it all statically assigned +POST_1_7_2_GIT=$(git_compare_version "1.7.2") +#clean up the namespace slightly by removing the checker function +unset -f git_compare_version + + diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 5c1b90bfa..5f499f3e8 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -3,7 +3,6 @@  bindkey -e  bindkey '\ew' kill-region  bindkey -s '\el' "ls\n" -bindkey -s '\e.' "..\n"  bindkey '^r' history-incremental-search-backward  bindkey "^[[5~" up-line-or-history  bindkey "^[[6~" down-line-or-history diff --git a/lib/misc.zsh b/lib/misc.zsh index 88732e664..a8678b8ec 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -9,5 +9,7 @@ bindkey "^[m" copy-prev-shell-word  setopt long_list_jobs  ## pager -export PAGER=less +export PAGER="less" +export LESS="-R" +  export LC_CTYPE=$LANG diff --git a/lib/rvm.zsh b/lib/rvm.zsh index 597be1b33..e8744e61e 100644 --- a/lib/rvm.zsh +++ b/lib/rvm.zsh @@ -1,7 +1,8 @@ -# get the name of the branch we are on +# get the name of the ruby version  function rvm_prompt_info() { -  ruby_version=$(~/.rvm/bin/rvm-prompt 2> /dev/null) || return -  echo "($ruby_version)" +  [ -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/lib/termsupport.zsh b/lib/termsupport.zsh index 221989502..7470110b6 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -3,9 +3,13 @@  #Fully support screen, iterm, and probably most modern xterm and rxvt  #Limited support for Apple Terminal (Terminal can't set window or tab separately)  function title { -  [ "$DISABLE_AUTO_TITLE" != "true" ] || return +  if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then +    return +  fi    if [[ "$TERM" == screen* ]]; then      print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars +  elif [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then +    print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal)    elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then      print -Pn "\e]2;$2:q\a" #set window name      print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal) @@ -24,8 +28,8 @@ function omz_termsupport_precmd {  function omz_termsupport_preexec {    emulate -L zsh    setopt extended_glob -  local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd -  title "$CMD" "%100>...>$2%<<" +  local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd +  title "$CMD" "%100>...>${2:gs/%/%%}%<<"  }  autoload -U add-zsh-hook | 
