Commits

'Sam...@gmail.com>'  committed 2f4ae4a

Lots of new stuff

  • Participants
  • Parent commits 6551697

Comments (0)

Files changed (212)

File oh-my-zsh/.git/FETCH_HEAD

+762b55bb2bc0452ce3f5f2f21bc22b61936ef704		branch 'master' of git://github.com/robbyrussell/oh-my-zsh

File oh-my-zsh/.git/ORIG_HEAD

+2e9492969b0ea90932ad3f4298330b75ef8cf2ce

File oh-my-zsh/.git/index

Binary file modified.

File oh-my-zsh/.git/logs/HEAD

 0000000000000000000000000000000000000000 2e9492969b0ea90932ad3f4298330b75ef8cf2ce sdolan <sdolan@sdolan-laptop.(none)> 1301954601 -0700	clone: from git://github.com/robbyrussell/oh-my-zsh.git
+2e9492969b0ea90932ad3f4298330b75ef8cf2ce 762b55bb2bc0452ce3f5f2f21bc22b61936ef704 Sam Dolan <samdolan@gmail.com> 1315095022 -0700	pull origin master: Fast-forward

File oh-my-zsh/.git/logs/refs/heads/master

 0000000000000000000000000000000000000000 2e9492969b0ea90932ad3f4298330b75ef8cf2ce sdolan <sdolan@sdolan-laptop.(none)> 1301954601 -0700	clone: from git://github.com/robbyrussell/oh-my-zsh.git
+2e9492969b0ea90932ad3f4298330b75ef8cf2ce 762b55bb2bc0452ce3f5f2f21bc22b61936ef704 Sam Dolan <samdolan@gmail.com> 1315095022 -0700	pull origin master: Fast-forward

File oh-my-zsh/.git/objects/pack/pack-10aa71b45cfa30766ada4402d66f732aae2c4996.idx

Binary file added.

File oh-my-zsh/.git/objects/pack/pack-10aa71b45cfa30766ada4402d66f732aae2c4996.pack

Binary file added.

File oh-my-zsh/.git/refs/heads/master

-2e9492969b0ea90932ad3f4298330b75ef8cf2ce
+762b55bb2bc0452ce3f5f2f21bc22b61936ef704

File oh-my-zsh/.gitignore

 log/.zsh_history
 projects.zsh
 custom/*
-!custom/example.zsh
+!custom/example
+!custom/example.zsh
+cache
+*.swp

File oh-my-zsh/README.textile

 h3. Customization
 
 If you want to override any of the default behavior, just add a new file (ending in @.zsh@) into the @custom/@ directory.
-If you have many functions which go good together you can put them as a *.plugin.zsh file in the @plugin/@ directory and then enable this plugin.
+If you have many functions which go good together you can put them as a *.plugin.zsh file in the @custom/plugins/@ directory and then enable this plugin.
+If you would like to override the functionality of a plugin distributed with oh-my-zsh, create a plugin of the same name in the @custom/plugins/@ directory and it will be loaded instead of the one in @plugins/@.
+
 
 h3. Uninstalling
 
 If you want to uninstall it, just run @uninstall_oh_my_zsh@ from the command line and it'll remove itself and revert you to bash (or your previous zsh config).
 
-h2. Thanks
-
-* Rick Olson (technoweenie) might remember some of the configuration, which I took from a pastie a few years ago.
-* Marcel (noradio) provided Rick the original zsh configuration.
-* Nicholas (ulysses) for the "rake autocompletion code":http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh.
-
 h2. Help out!
 
 I'm far from being a zsh-expert and suspect there are many ways to improve. If you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
 h3. Send us your theme!
 
 I'm hoping to collect a bunch of themes for our command prompts. You can see existing ones in the @themes/@ directory.
+
+h2. Contributors
+
+This project wouldn't exist without all of our awesome users and contributors.
+
+* "View our growing list of contributors":https://github.com/robbyrussell/oh-my-zsh/contributors
+
+Thank you so much!

File oh-my-zsh/custom/example/example.plugin.zsh

+# Add your own custom plugins in the custom/plugins directory. Plugins placed
+# here will override ones with the same name in the main plugins directory.

File oh-my-zsh/lib/aliases.zsh

 
 alias afind='ack-grep -il'
 
-alias x=extract

File oh-my-zsh/lib/completion.zsh

 unsetopt flowcontrol
 setopt auto_menu         # show completion menu on succesive tab press
 setopt complete_in_word
-setopt complete_aliases
 setopt always_to_end
 
 WORDCHARS=''
 
-autoload -U compinit
-compinit -i
-
 zmodload -i zsh/complist
 
 ## case-insensitive (all),partial-word and then substring completion
 # ... unless we really want to.
 zstyle '*' single-ignored show
 
+if [ "x$COMPLETION_WAITING_DOTS" = "xtrue" ]; then
+  expand-or-complete-with-dots() {
+    echo -n "\e[31m......\e[0m"
+    zle expand-or-complete
+    zle redisplay
+  }
+  zle -N expand-or-complete-with-dots
+  bindkey "^I" expand-or-complete-with-dots
+fi

File oh-my-zsh/lib/edit-command-line.zsh

+autoload -U edit-command-line
+zle -N edit-command-line
+bindkey '\C-x\C-e' edit-command-line

File oh-my-zsh/lib/functions.zsh

   cd $1
 }
 
-function extract() {
-    unset REMOVE_ARCHIVE
-    
-    if test "$1" = "-r"; then
-        REMOVE=1
-        shift
-    fi
-  if [[ -f $1 ]]; then
-    case $1 in
-      *.tar.bz2) tar xvjf $1;;
-      *.tar.gz) tar xvzf $1;;
-      *.tar.xz) tar xvJf $1;;
-      *.tar.lzma) tar --lzma -xvf $1;;
-      *.bz2) bunzip $1;;
-      *.rar) unrar $1;;
-      *.gz) gunzip $1;;
-      *.tar) tar xvf $1;;
-      *.tbz2) tar xvjf $1;;
-      *.tgz) tar xvzf $1;;
-      *.zip) unzip $1;;
-      *.Z) uncompress $1;;
-      *.7z) 7z x $1;;
-      *) echo "'$1' cannot be extracted via >extract<";;
-    esac
-
-    if [[ $REMOVE_ARCHIVE -eq 1 ]]; then
-        echo removing "$1";
-        /bin/rm "$1";
-    fi
-
-  else
-    echo "'$1' is not a valid file"
-  fi
-}
-

File oh-my-zsh/lib/git.zsh

   echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
 }
 
-parse_git_dirty () {
+# Checks if working tree is dirty
+parse_git_dirty() {
   if [[ -n $(git status -s 2> /dev/null) ]]; then
     echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
   else
   fi
 }
 
-# get the status of the working tree
+# 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
+    echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
+  fi
+}
+
+# Formats prompt string for current git commit short SHA
+function git_prompt_short_sha() {
+  SHA=$(git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
+}
+
+# Formats prompt string for current git commit long SHA
+function git_prompt_long_sha() {
+  SHA=$(git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
+}
+
+# Get the status of the working tree
 git_prompt_status() {
   INDEX=$(git status --porcelain 2> /dev/null)
   STATUS=""
   fi
   if $(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
   if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
     STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"

File oh-my-zsh/lib/key-bindings.zsh

 # TODO: Explain what some of this does..
-autoload -U compinit
-compinit -i
 
 bindkey -e
 bindkey '\ew' kill-region
 
 bindkey "^[[H" beginning-of-line
 bindkey "^[[1~" beginning-of-line
+bindkey "^[OH" beginning-of-line
 bindkey "^[[F"  end-of-line
 bindkey "^[[4~" end-of-line
+bindkey "^[OF" end-of-line
 bindkey ' ' magic-space    # also do history expansion on space
 
+bindkey "^[[1;5C" forward-word
+bindkey "^[[1;5D" backward-word
+
 bindkey '^[[Z' reverse-menu-complete
 
+# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~
+bindkey '^?' backward-delete-char
+bindkey "^[[3~" delete-char
+bindkey "^[3;5~" delete-char
+bindkey "\e[3~" delete-char
+
 # consider emacs keybindings:
 
 #bindkey -e  ## emacs key bindings

File oh-my-zsh/lib/misc.zsh

 
 ## pager
 export PAGER=less
-export LC_CTYPE=en_US.UTF-8
+export LC_CTYPE=$LANG

File oh-my-zsh/lib/spectrum.zsh

     FG[$color]="%{[38;5;${color}m%}"
     BG[$color]="%{[48;5;${color}m%}"
 done
+
+# Show all 256 colors with color number
+function spectrum_ls() {
+  for code in {000..255}; do
+    print -P -- "$code: %F{$code}Test%f"
+  done
+}
+

File oh-my-zsh/lib/termsupport.zsh

 #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 {
-  if [[ "$TERM" == "screen" ]]; then 
-    print -Pn "\ek$1\e\\" #set screen hardstatus, usually truncated at 20 chars
-  elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
-    print -Pn "\e]2;$2\a" #set window name
-    print -Pn "\e]1;$1\a" #set icon (=tab) name (will override window name on broken terminal)
+  [ "$DISABLE_AUTO_TITLE" != "true" ] || return
+  if [[ "$TERM" == screen* ]]; then 
+    print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
+  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)
   fi
 }
 
 
 #Appears when you have the prompt
 function precmd {
-  if [ "$DISABLE_AUTO_TITLE" != "true" ]; then
-    title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
-  fi
+  title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
 }
 
 #Appears at the beginning of (and during) of command execution
 function preexec {
-  if [ "$DISABLE_AUTO_TITLE" != "true" ]; then
-    local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
-    title "$CMD" "%100>...>$2%<<"
-  fi
+  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%<<"
 }

File oh-my-zsh/oh-my-zsh.sh

+# Check for updates on initial load...
+if [ "$DISABLE_AUTO_UPDATE" != "true" ]
+then
+  /usr/bin/env zsh $ZSH/tools/check_for_upgrade.sh
+fi
+
 # Initializes Oh My Zsh
 
 # add a function path
-fpath=($ZSH/functions $fpath)
+fpath=($ZSH/functions $ZSH/completions $fpath)
 
 # Load all of the config files in ~/oh-my-zsh that end in .zsh
 # TIP: Add files you don't want in git to .gitignore
 for config_file ($ZSH/lib/*.zsh) source $config_file
 
+# Add all defined plugins to fpath
+plugin=${plugin:=()}
+for plugin ($plugins) fpath=($ZSH/plugins/$plugin $fpath)
+
+# Load and run compinit
+autoload -U compinit
+compinit -i
+
+# Load all of the plugins that were defined in ~/.zshrc
+for plugin ($plugins); do
+  if [ -f $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh ]; then
+    source $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh
+  elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then
+    source $ZSH/plugins/$plugin/$plugin.plugin.zsh
+  fi
+done
+
 # Load all of your custom configurations from custom/
 for config_file ($ZSH/custom/*.zsh) source $config_file
 
-# Load all of the plugins that were defined in ~/.zshrc
-plugin=${plugin:=()}
-for plugin ($plugins) source $ZSH/plugins/$plugin/$plugin.plugin.zsh
+# Load the theme
+if [ "$ZSH_THEME" = "random" ]
+then
+  themes=($ZSH/themes/*zsh-theme)
+  N=${#themes[@]}
+  ((N=(RANDOM%N)+1))
+  RANDOM_THEME=${themes[$N]}
+  source "$RANDOM_THEME"
+  echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
+else
+  if [ ! "$ZSH_THEME" = ""  ]
+  then
+    source "$ZSH/themes/$ZSH_THEME.zsh-theme"
+  fi
+fi
 
-# Load the theme
-source "$ZSH/themes/$ZSH_THEME.zsh-theme"
-
-# Check for updates on initial load...
-if [ "$DISABLE_AUTO_UPDATE" = "true" ]
-then
-  return
-else
-  /usr/bin/env zsh $ZSH/tools/check_for_upgrade.sh
-fi

File oh-my-zsh/plugins/ant/ant.plugin.zsh

+stat -f%m . > /dev/null 2>&1
+if [ "$?" = 0 ]; then
+	stat_cmd=(stat -f%m)
+else
+	stat_cmd=(stat -L --format=%Y)
+fi
+
+_ant_does_target_list_need_generating () {
+  if [ ! -f .ant_targets ]; then return 0;
+  else
+    accurate=$($stat_cmd .ant_targets)
+    changed=$($stat_cmd build.xml)
+    return $(expr $accurate '>=' $changed)
+  fi
+}
+
+_ant () {
+  if [ -f build.xml ]; then
+    if _ant_does_target_list_need_generating; then
+     sed -n '/<target/s/<target.*name="\([^"]*\).*$/\1/p' build.xml > .ant_targets
+    fi
+    compadd `cat .ant_targets`
+  fi
+}
+
+compdef _ant ant

File oh-my-zsh/plugins/apache2-macports/apache2-macports.plugin.zsh

+# commands to control local apache2 server installation
+# paths are for osx installation via macports
+
+alias apache2start='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start'
+alias apache2stop='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop'
+alias apache2restart='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart'

File oh-my-zsh/plugins/archlinux/archlinux.plugin.zsh

+# Archlinux zsh aliases and functions
+# Usage is also described at https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins
+
+# Look for yaourt, and add some useful functions if we have it.
+if [[ -x `which yaourt` ]]; then
+  upgrade () {
+    yaourt -Syu
+  }
+  alias yaconf='yaourt -C'        # Fix all configuration files with vimdiff
+  # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
+  alias yaupg='yaourt -Syu'        # Synchronize with repositories before upgrading packages that are out of date on the local system.
+  alias yain='yaourt -S'           # Install specific package(s) from the repositories
+  alias yains='yaourt -U'          # Install specific package not from the repositories but from a file 
+  alias yare='yaourt -R'           # Remove the specified package(s), retaining its configuration(s) and required dependencies
+  alias yarem='yaourt -Rns'        # Remove the specified package(s), its configuration(s) and unneeded dependencies
+  alias yarep='yaourt -Si'         # Display information about a given package in the repositories
+  alias yareps='yaourt -Ss'        # Search for package(s) in the repositories
+  alias yaloc='yaourt -Qi'         # Display information about a given package in the local database
+  alias yalocs='yaourt -Qs'        # Search for package(s) in the local database
+  # Additional yaourt alias examples
+  if [[ -x `which abs` ]]; then
+    alias yaupd='yaourt -Sy && sudo abs'   # Update and refresh the local package and ABS databases against repositories
+  else
+    alias yaupd='yaourt -Sy'               # Update and refresh the local package and ABS databases against repositories
+  fi
+  alias yainsd='yaourt -S --asdeps'        # Install given package(s) as dependencies of another package
+  alias yamir='yaourt -Syy'                # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
+else
+ upgrade() {
+   sudo pacman -Syu
+ }
+fi
+
+# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
+alias pacupg='sudo pacman -Syu'        # Synchronize with repositories before upgrading packages that are out of date on the local system.
+alias pacin='sudo pacman -S'           # Install specific package(s) from the repositories
+alias pacins='sudo pacman -U'          # Install specific package not from the repositories but from a file 
+alias pacre='sudo pacman -R'           # Remove the specified package(s), retaining its configuration(s) and required dependencies
+alias pacrem='sudo pacman -Rns'        # Remove the specified package(s), its configuration(s) and unneeded dependencies
+alias pacrep='pacman -Si'              # Display information about a given package in the repositories
+alias pacreps='pacman -Ss'             # Search for package(s) in the repositories
+alias pacloc='pacman -Qi'              # Display information about a given package in the local database
+alias paclocs='pacman -Qs'             # Search for package(s) in the local database
+# Additional pacman alias examples
+if [[ -x `which abs` ]]; then
+  alias pacupd='sudo pacman -Sy && sudo abs'     # Update and refresh the local package and ABS databases against repositories
+else
+  alias pacupd='sudo pacman -Sy'     # Update and refresh the local package and ABS databases against repositories
+fi
+alias pacinsd='sudo pacman -S --asdeps'        # Install given package(s) as dependencies of another package
+alias pacmir='sudo pacman -Syy'                # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
+
+# https://bbs.archlinux.org/viewtopic.php?id=93683
+paclist() {
+  sudo pacman -Qei $(pacman -Qu|cut -d" " -f 1)|awk ' BEGIN {FS=":"}/^Name/{printf("\033[1;36m%s\033[1;37m", $2)}/^Description/{print $2}'
+}
+
+alias paclsorphans='sudo pacman -Qdt'
+alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)'
+
+pacdisowned() {
+  tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
+  db=$tmp/db
+  fs=$tmp/fs
+
+  mkdir "$tmp"
+  trap  'rm -rf "$tmp"' EXIT
+
+  pacman -Qlq | sort -u > "$db"
+
+  find /bin /etc /lib /sbin /usr \
+      ! -name lost+found \
+        \( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
+
+  comm -23 "$fs" "$db"
+}

File oh-my-zsh/plugins/autojump/autojump.plugin.zsh

+if [ -f `brew --prefix`/etc/autojump ]; then
+  . `brew --prefix`/etc/autojump
+fi

File oh-my-zsh/plugins/brew/_brew

   'link:link a formula'
   'list:list files in a formula or not-installed formulae'
   'log:git commit log for a formula'
+  'missing:check all installed formuale for missing dependencies.'
   'outdated:list formulas for which a newer version is available'
   'prune:remove dead links'
   'remove:remove a formula'
   'search:search for a formula (/regex/ or string)'
+  'server:start a local web app that lets you browse formulae (requires Sinatra)'
   'unlink:unlink a formula'
   'update:freshen up links'
+  'upgrade:upgrade outdated formulae'
   'uses:show formulas which depend on a formula'
 )
 
 local expl
-local -a formula installed_formulae
+local -a formulae installed_formulae
 
 _arguments \
-  '(-v --verbose)'{-v,--verbose}'[verbose]' \
+  '(-v)-v[verbose]' \
+  '(--cellar)--cellar[brew cellar]' \
+  '(--config)--config[brew configuration]' \
+  '(--env)--env[brew environment]' \
+  '(--repository)--repository[brew repository]' \
   '(--version)--version[version information]' \
   '(--prefix)--prefix[where brew lives on this system]' \
   '(--cache)--cache[brew cache]' \
 fi
 
 case "$words[1]" in
-  list)
+  search|-S)
+    _arguments \
+      '(--macports)--macports[search the macports repository]' \
+      '(--fink)--fink[search the fink repository]' ;;
+  list|ls)
     _arguments \
       '(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
+      '(--versions)--versions[list all installed versions of a formula]' \
       '1: :->forms' &&  return 0
 
       if [[ "$state" == forms ]]; then
         _brew_installed_formulae
-        _requested installed_formulae expl 'installed formulae' compadd -a installed_formulae
+        _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
       fi ;;
-  install|home|log|info|uses|cat|deps)
+  install|home|homepage|log|info|abv|uses|cat|deps|edit|options)
     _brew_all_formulae
     _wanted formulae expl 'all formulae' compadd -a formulae ;;
-  remove|edit|xo)
+  remove|rm|uninstall|unlink|cleanup|link|ln)
     _brew_installed_formulae
     _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
 esac
-

File oh-my-zsh/plugins/brew/brew.plugin.zsh

-# add brew completion function to path
-fpath=($ZSH/plugins/brew $fpath)
-autoload -U compinit
-compinit -i
+alias brews='brew list -1'

File oh-my-zsh/plugins/bundler/bundler.plugin.zsh

 alias be="bundle exec"
 alias bi="bundle install"
+alias bl="bundle list"
 alias bu="bundle update"
+alias bp="bundle package"
+
+# The following is based on https://github.com/gma/bundler-exec
+
+bundled_commands=(cap capify cucumber guard heroku rackup rails rake rspec ruby shotgun spec spork thin unicorn unicorn_rails)
+
+## Functions
+
+_bundler-installed() {
+  which bundle > /dev/null 2>&1
+}
+
+_within-bundled-project() {
+  local check_dir=$PWD
+  while [ "$(dirname $check_dir)" != "/" ]; do
+    [ -f "$check_dir/Gemfile" ] && return
+    check_dir="$(dirname $check_dir)"
+  done
+  false
+}
+
+_run-with-bundler() {
+  if _bundler-installed && _within-bundled-project; then
+    bundle exec $@
+  else
+    $@
+  fi
+}
+
+## Main program
+for cmd in $bundled_commands; do
+  alias $cmd="_run-with-bundler $cmd"
+done

File oh-my-zsh/plugins/cake/cake.plugin.zsh

+# Set this to 1 if you want to cache the tasks
+cache_task_list=1
+
+# Cache filename
+cache_file='.cake_task_cache'
+
+_cake_does_target_list_need_generating () {
+
+	if [ $cache_task_list -eq 0 ]; then
+		return 1;
+	fi
+
+	if [ ! -f $cache_file ]; then return 0;
+	else
+		accurate=$(stat -f%m $cache_file)
+		changed=$(stat -f%m Cakefile)
+		return $(expr $accurate '>=' $changed)
+	fi
+}
+
+_cake () {
+	if [ -f Cakefile ]; then
+		if _cake_does_target_list_need_generating; then
+			cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cache_file
+			compadd `cat $cache_file`
+		else
+			compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'`
+		fi
+	fi
+}
+
+compdef _cake cake

File oh-my-zsh/plugins/cap/cap.plugin.zsh

   fi
 }
 
-compctl -K _cap cap
+compctl -K _cap cap

File oh-my-zsh/plugins/cloudapp/cloudapp.plugin.zsh

+#!/bin/zsh
+alias cloudapp=$ZSH/plugins/cloudapp/cloudapp.rb

File oh-my-zsh/plugins/cloudapp/cloudapp.rb

+#!/usr/bin/env ruby
+#
+# cloudapp
+# Zach Holman / @holman
+#
+# Uploads a file from the command line to CloudApp, drops it into your 
+# clipboard (on a Mac, at least).
+#
+# Example:
+#
+#   cloudapp drunk-blake.png
+#
+# This requires Aaron Russell's cloudapp_api gem:
+#
+#   gem install cloudapp_api
+#
+# Requires you set your CloudApp credentials in ~/.cloudapp as a simple file of:
+#
+#   email
+#   password
+
+require 'rubygems'
+begin
+  require 'cloudapp_api'
+rescue LoadError
+  puts "You need to install cloudapp_api: gem install cloudapp_api"
+  exit!(1)
+end
+
+config_file = "#{ENV['HOME']}/.cloudapp"
+unless File.exist?(config_file)
+  puts "You need to type your email and password (one per line) into "+
+       "`~/.cloudapp`"
+  exit!(1)
+end
+
+email,password = File.read(config_file).split("\n")
+
+class HTTParty::Response
+  # Apparently HTTPOK.ok? IS NOT OKAY WTFFFFFFFFFFUUUUUUUUUUUUUU
+  # LETS MONKEY PATCH IT I FEEL OKAY ABOUT IT
+  def ok? ; true end
+end
+
+if ARGV[0].nil?
+   puts "You need to specify a file to upload."
+   exit!(1)
+end
+
+CloudApp.authenticate(email,password)
+url = CloudApp::Item.create(:upload, {:file => ARGV[0]}).url
+
+# Say it for good measure.
+puts "Uploaded to #{url}."
+
+# Get the embed link.
+url = "#{url}/#{ARGV[0].split('/').last}"
+
+# Copy it to your (Mac's) clipboard.
+`echo '#{url}' | tr -d "\n" | pbcopy`

File oh-my-zsh/plugins/compleat/compleat.plugin.zsh

+# ------------------------------------------------------------------------------
+#          FILE:  compleat.plugin.zsh
+#   DESCRIPTION:  oh-my-zsh plugin file.
+#        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
+#       VERSION:  1.0.0
+# ------------------------------------------------------------------------------
+
+if (( ${+commands[compleat]} )); then
+  local prefix="${commands[compleat]:h:h}"
+  local setup="${prefix}/share/compleat-1.0/compleat_setup" 
+
+  if [[ -f "$setup" ]]; then
+    if ! bashcompinit >/dev/null 2>&1; then
+      autoload -U bashcompinit
+      bashcompinit -i
+    fi
+
+    source "$setup" 
+  fi
+fi

File oh-my-zsh/plugins/deb/deb.plugin.zsh

 		sudo apt-get autoremove --purge"	# remove package
 alias ap="apt-cache policy"				# apt policy
 alias av="apt-cache show"				# show package info
+alias acs="apt-cache search"                            # search package
 alias ac="sudo apt-get clean && sudo apt-get autoclean" # clean apt cache

File oh-my-zsh/plugins/django/django.plugin.zsh

+#compdef manage.py
+
+typeset -ga nul_args
+nul_args=(
+  '--settings=-[the Python path to a settings module.]:file:_files'
+  '--pythonpath=-[a directory to add to the Python path.]::directory:_directories'
+  '--traceback[print traceback on exception.]'
+  "--version[show program's version number and exit.]"
+  {-h,--help}'[show this help message and exit.]'
+)
+
+_managepy-adminindex(){
+  _arguments -s : \
+    $nul_args \
+    '*::directory:_directories' && ret=0
+}
+
+_managepy-createcachetable(){
+  _arguments -s : \
+    $nul_args && ret=0
+}
+
+_managepy-dbshell(){
+  _arguments -s : \
+    $nul_args && ret=0
+}
+
+_managepy-diffsettings(){
+  _arguments -s : \
+    $nul_args && ret=0
+}
+
+_managepy-dumpdata(){
+  _arguments -s : \
+    '--format=-[specifies the output serialization format for fixtures.]:format:(json yaml xml)' \
+    '--indent=-[specifies the indent level to use when pretty-printing output.]:' \
+    $nul_args \
+    '*::appname:_applist' && ret=0
+}
+
+_managepy-flush(){
+  _arguments -s : \
+    '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+    '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+    $nul_args && ret=0
+}
+
+_managepy-help(){
+  _arguments -s : \
+    '*:command:_managepy_cmds' \
+    $nul_args && ret=0
+}
+
+_managepy_cmds(){
+    local line
+    local -a cmd
+    _call_program help-command ./manage.py help \
+      |& sed -n '/^ /s/[(), ]/ /gp' \
+      | while read -A line; do cmd=($line $cmd) done
+    _describe -t managepy-command 'manage.py command' cmd
+}
+
+_managepy-inspectdb(){
+  _arguments -s : \
+    $nul_args && ret=0
+}
+
+_managepy-loaddata(){
+  _arguments -s : \
+    '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+    '*::file:_files' \
+    $nul_args && ret=0
+}
+
+_managepy-reset(){
+  _arguments -s : \
+    '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+    '*::appname:_applist' \
+    $nul_args && ret=0
+}
+
+_managepy-runfcgi(){
+  local state
+  
+  local fcgi_opts
+  fcgi_opts=(
+    'protocol[fcgi, scgi, ajp, ... (default fcgi)]:protocol:(fcgi scgi ajp)'
+    'host[hostname to listen on..]:'
+    'port[port to listen on.]:'
+    'socket[UNIX socket to listen on.]::file:_files'
+    'method[prefork or threaded (default prefork)]:method:(prefork threaded)'
+    'maxrequests[number of requests a child handles before it is killed and a new child is forked (0 = no limit).]:'
+    'maxspare[max number of spare processes / threads.]:'
+    'minspare[min number of spare processes / threads.]:'
+    'maxchildren[hard limit number of processes / threads.]:'
+    'daemonize[whether to detach from terminal.]:boolean:(False True)'
+    'pidfile[write the spawned process-id to this file.]:file:_files'
+    'workdir[change to this directory when daemonizing.]:directory:_files'
+    'outlog[write stdout to this file.]:file:_files'
+    'errlog[write stderr to this file.]:file:_files'
+  )
+  
+  _arguments -s : \
+    $nul_args \
+    '*: :_values "FCGI Setting" $fcgi_opts' && ret=0
+}
+
+_managepy-runserver(){
+  _arguments -s : \
+    '--noreload[tells Django to NOT use the auto-reloader.]' \
+    '--adminmedia[specifies the directory from which to serve admin media.]:directory:_files' \
+    $nul_args && ret=0
+}
+
+_managepy-shell(){
+  _arguments -s : \
+    '--plain[tells Django to use plain Python, not IPython.]' \
+    $nul_args && ret=0
+}
+
+_managepy-sql(){}
+_managepy-sqlall(){}
+_managepy-sqlclear(){}
+_managepy-sqlcustom(){}
+_managepy-sqlflush(){}
+_managepy-sqlindexes(){}
+_managepy-sqlinitialdata(){}
+_managepy-sqlreset(){}
+_managepy-sqlsequencereset(){}
+_managepy-startapp(){}
+
+_managepy-syncdb() {
+  _arguments -s : \
+    '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+    '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+    $nul_args && ret=0
+}
+
+_managepy-test() {
+  _arguments -s : \
+    '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+    '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+    '*::appname:_applist' \
+    $nul_args && ret=0
+}
+
+_managepy-testserver() {
+  _arguments -s : \
+    '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+    '--addrport=-[port number or ipaddr:port to run the server on.]' \
+    '*::fixture:_files' \
+    $nul_args && ret=0
+}
+
+_managepy-validate() {
+  _arguments -s : \
+    $nul_args && ret=0
+}
+
+_managepy-commands() {
+  local -a commands
+  
+  commands=(
+    'adminindex:prints the admin-index template snippet for the given app name(s).'
+    'createcachetable:creates the table needed to use the SQL cache backend.'
+    'dbshell:runs the command-line client for the current DATABASE_ENGINE.'
+    "diffsettings:displays differences between the current settings.py and Django's default settings."
+    'dumpdata:Output the contents of the database as a fixture of the given format.'
+    'flush:Executes ``sqlflush`` on the current database.'
+    'help:manage.py help.'
+    'inspectdb:Introspects the database tables in the given database and outputs a Django model module.'
+    'loaddata:Installs the named fixture(s) in the database.'
+    'reset:Executes ``sqlreset`` for the given app(s) in the current database.'
+    'runfcgi:Run this project as a fastcgi (or some other protocol supported by flup) application,'
+    'runserver:Starts a lightweight Web server for development.'
+    'shell:Runs a Python interactive interpreter.'
+    'sql:Prints the CREATE TABLE SQL statements for the given app name(s).'
+    'sqlall:Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).'
+    'sqlclear:Prints the DROP TABLE SQL statements for the given app name(s).'
+    'sqlcustom:Prints the custom table modifying SQL statements for the given app name(s).'
+    'sqlflush:Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed.'
+    'sqlindexes:Prints the CREATE INDEX SQL statements for the given model module name(s).'
+    "sqlinitialdata:RENAMED: see 'sqlcustom'"
+    'sqlreset:Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s).'
+    'sqlsequencereset:Prints the SQL statements for resetting sequences for the given app name(s).'
+    "startapp:Creates a Django app directory structure for the given app name in this project's directory."
+    "syncdb:Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
+    'test:Runs the test suite for the specified applications, or the entire site if no apps are specified.'
+    'testserver:Runs a development server with data from the given fixture(s).'
+    'validate:Validates all installed models.'
+  )
+  
+  _describe -t commands 'manage.py command' commands && ret=0
+}
+
+_applist() {
+  local line
+  local -a apps
+  _call_program help-command "python -c \"import os.path as op, re, django.conf, sys;\\
+                                          bn=op.basename(op.abspath(op.curdir));[sys\\
+                                          .stdout.write(str(re.sub(r'^%s\.(.*?)$' %
+                                          bn, r'\1', i)) + '\n') for i in django.conf.settings.\\
+                                          INSTALLED_APPS if re.match(r'^%s' % bn, i)]\"" \
+                             | while read -A line; do apps=($line $apps) done
+  _values 'Application' $apps && ret=0
+}
+
+_managepy() {
+  local curcontext=$curcontext ret=1
+  
+  if ((CURRENT == 2)); then
+    _managepy-commands
+  else
+    shift words
+    (( CURRENT -- ))
+    curcontext="${curcontext%:*:*}:managepy-$words[1]:"
+    _call_function ret _managepy-$words[1]
+  fi
+}
+
+compdef _managepy manage.py
+compdef _managepy django

File oh-my-zsh/plugins/extract/_extract

+#compdef extract
+#autoload
+
+_arguments \
+  '(-r --remove)'{-r,--remove}'[Remove archive.]' \
+  "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0
+
+

File oh-my-zsh/plugins/extract/extract.plugin.zsh

+# ------------------------------------------------------------------------------
+#          FILE:  extract.plugin.zsh
+#   DESCRIPTION:  oh-my-zsh plugin file.
+#        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
+#       VERSION:  1.0.1
+# ------------------------------------------------------------------------------
+
+
+function extract() {
+  local remove_archive
+  local success
+  local file_name
+  local extract_dir
+
+  if (( $# == 0 )); then
+    echo "Usage: extract [-option] [file ...]"
+    echo
+    echo Options:
+    echo "    -r, --remove    Remove archive."
+    echo
+    echo "Report bugs to <sorin.ionescu@gmail.com>."
+  fi
+
+  remove_archive=1
+  if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
+    remove_archive=0 
+    shift
+  fi
+
+  while (( $# > 0 )); do
+    if [[ ! -f "$1" ]]; then
+      echo "extract: '$1' is not a valid file" 1>&2
+      shift
+      continue
+    fi
+
+    success=0
+    file_name="$( basename "$1" )"
+    extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
+    case "$1" in
+      (*.tar.gz|*.tgz) tar xvzf "$1" ;;
+      (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
+      (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
+        && tar --xz -xvf "$1" \
+        || xzcat "$1" | tar xvf - ;;
+      (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
+        && tar --lzma -xvf "$1" \
+        || lzcat "$1" | tar xvf - ;;
+      (*.tar) tar xvf "$1" ;;
+      (*.gz) gunzip "$1" ;;
+      (*.bz2) bunzip2 "$1" ;;
+      (*.xz) unxz "$1" ;;
+      (*.lzma) unlzma "$1" ;;
+      (*.Z) uncompress "$1" ;;
+      (*.zip) unzip "$1" -d $extract_dir ;;
+      (*.rar) unrar e -ad "$1" ;;
+      (*.7z) 7za x "$1" ;;
+      (*.deb)
+        mkdir -p "$extract_dir/control"
+        mkdir -p "$extract_dir/data"
+        cd "$extract_dir"; ar vx "../${1}" > /dev/null
+        cd control; tar xzvf ../control.tar.gz
+        cd ../data; tar xzvf ../data.tar.gz
+        cd ..; rm *.tar.gz debian-binary
+        cd ..
+      ;;
+      (*) 
+        echo "extract: '$1' cannot be extracted" 1>&2
+        success=1 
+      ;; 
+    esac
+
+    (( success = $success > 0 ? $success : $? ))
+    (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
+    shift
+  done
+}
+
+alias x=extract
+
+# add extract completion function to path
+fpath=($ZSH/plugins/extract $fpath)
+autoload -U compinit
+compinit -i
+

File oh-my-zsh/plugins/gas/_gas

+#compdef gas
+
+local curcontext="$curcontext" state line cmds ret=1
+
+_arguments -C \
+	'(- 1 *)'{-v,--version}'[display version information]' \
+	'(-h|--help)'{-h,--help}'[show help information]' \
+	'1: :->cmds' \
+	'*: :->args' && ret=0
+
+case $state in
+	cmds)
+		cmds=(
+            "version:Prints Gas's version"
+            "use:Uses author"
+            "show:Shows your current user"
+            "list:Lists your authors"
+            "import:Imports current user to gasconfig"
+            "help:Describe available tasks or one specific task"
+            "delete:Deletes author"
+            "add:Adds author to gasconfig"
+        )
+		_describe -t commands 'gas command' cmds && ret=0
+		;;
+	args)
+		case $line[1] in
+			(use|delete)
+				_values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0
+				;;
+		esac
+		;;
+esac
+
+return ret

File oh-my-zsh/plugins/git-flow/git-flow.plugin.zsh

+#!zsh
+#
+# Installation
+# ------------
+#
+# To achieve git-flow completion nirvana:
+#
+#  0. Update your zsh's git-completion module to the newest verion.
+#     From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD
+#
+#  1. Install this file. Either:
+#
+#     a. Place it in your .zshrc:
+#
+#     b. Or, copy it somewhere (e.g. ~/.git-flow-completion.zsh) and put the following line in
+#        your .zshrc:
+#
+#            source ~/.git-flow-completion.zsh
+#
+#     c. Or, use this file as a oh-my-zsh plugin.
+#
+
+_git-flow ()
+{
+	local curcontext="$curcontext" state line
+	typeset -A opt_args
+
+	_arguments -C \
+		':command:->command' \
+		'*::options:->options'
+
+	case $state in
+		(command)
+
+			local -a subcommands
+			subcommands=(
+				'init:Initialize a new git repo with support for the branching model.'
+				'feature:Manage your feature branches.'
+				'release:Manage your release branches.'
+				'hotfix:Manage your hotfix branches.'
+				'support:Manage your support branches.'
+				'version:Shows version information.'
+			)
+			_describe -t commands 'git flow' subcommands
+		;;
+
+		(options)
+			case $line[1] in
+
+				(init)
+					_arguments \
+						-f'[Force setting of gitflow branches, even if already configured]'
+					;;
+
+					(version)
+					;;
+
+					(hotfix)
+						__git-flow-hotfix
+					;;
+
+					(release)
+						__git-flow-release
+					;;
+
+					(feature)
+						__git-flow-feature
+					;;
+			esac
+		;;
+	esac
+}
+
+__git-flow-release ()
+{
+	local curcontext="$curcontext" state line
+	typeset -A opt_args
+
+	_arguments -C \
+		':command:->command' \
+		'*::options:->options'
+
+	case $state in
+		(command)
+
+			local -a subcommands
+			subcommands=(
+				'start:Start a new release branch.'
+				'finish:Finish a release branch.'
+				'list:List all your release branches. (Alias to `git flow release`)'
+			)
+			_describe -t commands 'git flow release' subcommands
+			_arguments \
+				-v'[Verbose (more) output]'
+		;;
+
+		(options)
+			case $line[1] in
+
+				(start)
+					_arguments \
+						-F'[Fetch from origin before performing finish]'\
+						':version:__git_flow_version_list'
+				;;
+
+				(finish)
+					_arguments \
+						-F'[Fetch from origin before performing finish]' \
+						-s'[Sign the release tag cryptographically]'\
+						-u'[Use the given GPG-key for the digital signature (implies -s)]'\
+						-m'[Use the given tag message]'\
+						-p'[Push to $ORIGIN after performing finish]'\
+						':version:__git_flow_version_list'
+				;;
+
+				*)
+					_arguments \
+						-v'[Verbose (more) output]'
+				;;
+			esac
+		;;
+	esac
+}
+
+__git-flow-hotfix ()
+{
+	local curcontext="$curcontext" state line
+	typeset -A opt_args
+
+	_arguments -C \
+		':command:->command' \
+		'*::options:->options'
+
+	case $state in
+		(command)
+
+			local -a subcommands
+			subcommands=(
+				'start:Start a new hotfix branch.'
+				'finish:Finish a hotfix branch.'
+				'list:List all your hotfix branches. (Alias to `git flow hotfix`)'
+			)
+			_describe -t commands 'git flow hotfix' subcommands
+			_arguments \
+				-v'[Verbose (more) output]'
+		;;
+
+		(options)
+			case $line[1] in
+
+				(start)
+					_arguments \
+						-F'[Fetch from origin before performing finish]'\
+						':hotfix:__git_flow_version_list'\
+						':branch-name:__git_branch_names'
+				;;
+
+				(finish)
+					_arguments \
+						-F'[Fetch from origin before performing finish]' \
+						-s'[Sign the release tag cryptographically]'\
+						-u'[Use the given GPG-key for the digital signature (implies -s)]'\
+						-m'[Use the given tag message]'\
+						-p'[Push to $ORIGIN after performing finish]'\
+						':hotfix:__git_flow_hotfix_list'
+				;;
+
+				*)
+					_arguments \
+						-v'[Verbose (more) output]'
+				;;
+			esac
+		;;
+	esac
+}
+
+__git-flow-feature ()
+{
+	local curcontext="$curcontext" state line
+	typeset -A opt_args
+
+	_arguments -C \
+		':command:->command' \
+		'*::options:->options'
+
+	case $state in
+		(command)
+
+			local -a subcommands
+			subcommands=(
+				'start:Start a new feature branch.'
+				'finish:Finish a feature branch.'
+				'list:List all your feature branches. (Alias to `git flow feature`)'
+				'publish: public'
+				'track: track'
+				'diff: diff'
+				'rebase: rebase'
+				'checkout: checkout'
+				'pull: pull'
+			)
+			_describe -t commands 'git flow feature' subcommands
+			_arguments \
+				-v'[Verbose (more) output]'
+		;;
+
+		(options)
+			case $line[1] in
+
+				(start)
+					_arguments \
+						-F'[Fetch from origin before performing finish]'\
+						':feature:__git_flow_feature_list'\
+						':branch-name:__git_branch_names'
+				;;
+
+				(finish)
+					_arguments \
+						-F'[Fetch from origin before performing finish]' \
+						-r'[Rebase instead of merge]'\
+						':feature:__git_flow_feature_list'
+				;;
+
+				(publish)
+					_arguments \
+						':feature:__git_flow_feature_list'\
+				;;
+
+				(track)
+					_arguments \
+						':feature:__git_flow_feature_list'\
+				;;
+
+				(diff)
+					_arguments \
+						':branch:__git_branch_names'\
+				;;
+
+				(rebase)
+					_arguments \
+						-i'[Do an interactive rebase]' \
+						':branch:__git_branch_names'
+				;;
+
+				(checkout)
+					_arguments \
+						':branch:__git_flow_feature_list'\
+				;;
+
+				(pull)
+					_arguments \
+						':remote:__git_remotes'\
+						':branch:__git_branch_names'
+				;;
+
+				*)
+					_arguments \
+						-v'[Verbose (more) output]'
+				;;
+			esac
+		;;
+	esac
+}
+
+__git_flow_version_list ()
+{
+	local expl
+	declare -a versions
+
+	versions=(${${(f)"$(_call_program versions git flow release list 2> /dev/null | tr -d ' |*')"}})
+	__git_command_successful || return
+
+	_wanted versions expl 'version' compadd $versions
+}
+
+__git_flow_feature_list ()
+{
+	local expl
+	declare -a features
+
+	features=(${${(f)"$(_call_program features git flow feature list 2> /dev/null | tr -d ' |*')"}})
+	__git_command_successful || return
+
+	_wanted features expl 'feature' compadd $features
+}
+
+__git_remotes () {
+	local expl gitdir remotes
+
+	gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null)
+	__git_command_successful || return
+
+	remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]})
+	__git_command_successful || return
+
+	# TODO: Should combine the two instead of either or.
+	if (( $#remotes > 0 )); then
+		_wanted remotes expl remote compadd $* - $remotes
+	else
+		_wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*"
+	fi
+}
+
+__git_flow_hotfix_list ()
+{
+	local expl
+	declare -a hotfixes
+
+	hotfixes=(${${(f)"$(_call_program hotfixes git flow hotfix list 2> /dev/null | tr -d ' |*')"}})
+	__git_command_successful || return
+
+	_wanted hotfixes expl 'hotfix' compadd $hotfixes
+}
+
+__git_branch_names () {
+	local expl
+	declare -a branch_names
+
+	branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
+	__git_command_successful || return
+
+	_wanted branch-names expl branch-name compadd $* - $branch_names
+}
+
+__git_command_successful () {
+	if (( ${#pipestatus:#0} > 0 )); then
+		_message 'not a git repository'
+		return 1
+	fi
+	return 0
+}
+
+zstyle ':completion:*:*:git:*' user-commands flow:'description for foo'

File oh-my-zsh/plugins/git/git.plugin.zsh

 alias gl='git pull'
 compdef _git gl=git-pull
 alias gup='git fetch && git rebase'
-compdef gup=git
+compdef _git gup=git-fetch
 alias gp='git push'
 compdef _git gp=git-push
-alias gd='git diff | mate'
-# WTF is mate??
-compdef _git gd=git-diff
-alias gdv='git diff -w "$@" | vim -R -'
-compdef gdv=git
+gdv() { git-diff -w "$@" | view - }
+compdef _git gdv=git-diff
 alias gc='git commit -v'
-compdef gc=git
+compdef _git gc=git-commit
 alias gca='git commit -v -a'
-compdef gca=git
+compdef _git gca=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout
 alias gb='git branch'
 compdef _git gb=git-branch
 alias gba='git branch -a'
-compdef gba=git
+compdef _git gba=git-branch
 alias gcount='git shortlog -sn'
 compdef gcount=git
 alias gcp='git cherry-pick'
 compdef _git gcp=git-cherry-pick
 alias glg='git log --stat --max-count=5'
 compdef _git glg=git-log
+alias glgg='git log --graph --max-count=5'
+compdef _git glgg=git-log
+alias gss='git status -s'
+compdef _git gss=git-status
+alias ga='git add'
+compdef _git ga=git-add
 
 # Git and svn mix
 alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
 compdef git-svn-dcommit-push=git
 
+alias gsr='git svn rebase'
+alias gsd='git svn dcommit'
 #
 # Will return the current branch name
 # Usage example: git pull origin $(current_branch)

File oh-my-zsh/plugins/github/github.plugin.zsh

-# add github completion function to path
-fpath=($ZSH/plugins/github $fpath)
-autoload -U compinit
-compinit -i
+# hub alias from defunkt
+# https://github.com/defunkt/hub
+if [ "$commands[(I)hub]" ]; then
+    # eval `hub alias -s zsh`
+    function git(){hub "$@"}
+fi

File oh-my-zsh/plugins/gpg-agent/gpg-agent.plugin.zsh

+# Based on ssh-agent code
+
+local GPG_ENV=$HOME/.gnupg/gpg-agent.env
+
+function start_agent {
+  /usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV} > /dev/null
+  chmod 600 ${GPG_ENV}
+  . ${GPG_ENV} > /dev/null
+}
+
+# Source GPG agent settings, if applicable
+if [ -f "${GPG_ENV}" ]; then
+  . ${GPG_ENV} > /dev/null
+  ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || {
+    start_agent;
+  }
+else
+  start_agent;
+fi
+
+export GPG_AGENT_INFO
+export SSH_AUTH_SOCK
+export SSH_AGENT_PID
+
+GPG_TTY=$(tty)
+export GPG_TTY

File oh-my-zsh/plugins/heroku/_heroku

+#compdef heroku
+
+# Heroku Autocomplete plugin for Oh-My-Zsh
+# Requires: The Heroku client gem (https://github.com/heroku/heroku)
+# Author: Ali B. (http://awhitebox.com)
+
+local -a _1st_arguments
+_1st_arguments=(
+  "account\:confirm_billing":"Confirm that your account can be billed at the end of the month"
+  "addons":"list installed addons"
+  "addons\:list":"list all available addons"
+  "addons\:add":"install an addon"
+  "addons\:upgrade":"upgrade an existing addon"
+  "addons\:downgrade":"downgrade an existing addon"
+  "addons\:remove":"uninstall an addon"
+  "addons\:open":"open an addon's dashboard in your browser"
+  "apps":"list your apps"
+  "apps\:info":"show detailed app information"
+  "apps\:create":"create a new app"
+  "apps\:rename":"rename the app"
+  "apps\:open":"open the app in a web browser"
+  "apps\:destroy":"permanently destroy an app"
+  "auth\:login":"log in with your heroku credentials"
+  "auth\:logout":"clear local authentication credentials"
+  "config":"display the config vars for an app"
+  "config\:add":"add one or more config vars"
+  "config\:remove":"remove a config var"
+  "db\:push":"push local data up to your app"
+  "db\:pull":"pull heroku data down into your local database"
+  "domains":"list custom domains for an app"
+  "domains\:add":"add a custom domain to an app"
+  "domains\:remove":"remove a custom domain from an app"
+  "domains\:clear":"remove all custom domains from an app"
+  "help":"list available commands or display help for a specific command"
+  "keys":"display keys for the current user"
+  "keys\:add":"add a key for the current user"
+  "keys\:remove":"remove a key from the current user"
+  "keys\:clear":"remove all authentication keys from the current user"
+  "logs":"display recent log output"
+  "logs\:cron":"DEPRECATED: display cron logs from legacy logging"
+  "logs\:drains":"manage syslog drains"
+  "maintenance\:on":"put the app into maintenance mode"
+  "maintenance\:off":"take the app out of maintenance mode"
+  "pg\:info":"display database information"
+  "pg\:ingress":"allow direct connections to the database from this IP for one minute"
+  "pg\:promote":"sets DATABASE as your DATABASE_URL"
+  "pg\:psql":"open a psql shell to the database"
+  "pg\:reset":"delete all data in DATABASE"
+  "pg\:unfollow":"stop a replica from following and make it a read/write database"
+  "pg\:wait":"monitor database creation, exit when complete"
+  "pgbackups":"list captured backups"
+  "pgbackups\:url":"get a temporary URL for a backup"
+  "pgbackups\:capture":"capture a backup from a database id"
+  "pgbackups\:restore":"restore a backup to a database"
+  "pgbackups\:destroy":"destroys a backup"
+  "plugins":"list installed plugins"
+  "plugins\:install":"install a plugin"
+  "plugins\:uninstall":"uninstall a plugin"
+  "ps\:dynos":"scale to QTY web processes"
+  "ps\:workers":"scale to QTY background processes"
+  "ps":"list processes for an app"
+  "ps\:restart":"restart an app process"
+  "ps\:scale":"scale processes by the given amount"
+  "releases":"list releases"
+  "releases\:info":"view detailed information for a release"
+  "rollback":"roll back to an older release"
+  "run":"run an attached process"
+  "run\:rake":"remotely execute a rake command"
+  "run\:console":"open a remote console session"
+  "sharing":"list collaborators on an app"
+  "sharing\:add":"add a collaborator to an app"
+  "sharing\:remove":"remove a collaborator from an app"
+  "sharing\:transfer":"transfer an app to a new owner"
+  "ssl":"list certificates for an app"
+  "ssl\:add":"add an ssl certificate to an app"
+  "ssl\:remove":"remove an ssl certificate from an app"
+  "ssl\:clear":"remove all ssl certificates from an app"
+  "stack":"show the list of available stacks"
+  "stack\:migrate":"prepare migration of this app to a new stack"
+  "version":"show heroku client version"
+)
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+  _describe -t commands "heroku command" _1st_arguments
+  return
+fi
+
+local -a _command_args
+case "$words[1]" in
+  apps:info)
+    _command_args=(
+      '(-r|--raw)'{-r,--raw}'[output info as raw key/value pairs]' \
+    )
+    ;;
+  apps:create)
+    _command_args=(
+      '(-a|--addons)'{-a,--addons}'[a list of addons to install]' \
+      '(-r|--remote)'{-r,--remote}'[the git remote to create, default "heroku"]' \
+      '(-s|--stack)'{-s,--stack}'[the stack on which to create the app]' \
+    )
+    ;;
+  config)
+    _command_args=(
+      '(-s|--shell)'{-s,--shell}'[output config vars in shell format]' \
+    )
+    ;;
+  db:push)
+    _command_args=(
+      '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \
+      '(-d|--debug)'{-d,--debug}'[enable debugging output]' \
+      '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the push]' \
+      '(-f|--filter)'{-f,--filter}'[only push certain tables]' \
+      '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \
+      '(-t|--tables)'{-t,--tables}'[only push the specified tables]' \
+    )
+    ;;
+  db:pull)
+    _command_args=(
+      '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \
+      '(-d|--debug)'{-d,--debug}'[enable debugging output]' \
+      '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the pull]' \
+      '(-f|--filter)'{-f,--filter}'[only pull certain tables]' \
+      '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \
+      '(-t|--tables)'{-t,--tables}'[only pull the specified tables]' \
+    )