From e5f77b8f0496e5915383f2f456f91a20f5ff4ace Mon Sep 17 00:00:00 2001 From: Justin Riley Date: Thu, 28 Apr 2011 15:05:52 -0400 Subject: [PATCH 001/330] add git-prompt plugin from olivierverdier/zsh-git-prompt --- plugins/git-prompt/git-prompt.plugin.zsh | 60 +++++++++++++++++++++ plugins/git-prompt/gitstatus.py | 68 ++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 plugins/git-prompt/git-prompt.plugin.zsh create mode 100644 plugins/git-prompt/gitstatus.py diff --git a/plugins/git-prompt/git-prompt.plugin.zsh b/plugins/git-prompt/git-prompt.plugin.zsh new file mode 100644 index 000000000..01b8a88d9 --- /dev/null +++ b/plugins/git-prompt/git-prompt.plugin.zsh @@ -0,0 +1,60 @@ +# ZSH Git Prompt Plugin from: +# http://github.com/olivierverdier/zsh-git-prompt +# +export __GIT_PROMPT_DIR=$ZSH/plugins/git-prompt +# Initialize colors. +autoload -U colors +colors + +# Allow for functions in the prompt. +setopt PROMPT_SUBST + +## Enable auto-execution of functions. +typeset -ga preexec_functions +typeset -ga precmd_functions +typeset -ga chpwd_functions + +# Append git functions needed for prompt. +preexec_functions+='preexec_update_git_vars' +precmd_functions+='precmd_update_git_vars' +chpwd_functions+='chpwd_update_git_vars' + +## Function definitions +function preexec_update_git_vars() { + case "$2" in + git*) + __EXECUTED_GIT_COMMAND=1 + ;; + esac +} + +function precmd_update_git_vars() { + if [ -n "$__EXECUTED_GIT_COMMAND" ]; then + update_current_git_vars + unset __EXECUTED_GIT_COMMAND + fi +} + +function chpwd_update_git_vars() { + update_current_git_vars +} + +function update_current_git_vars() { + unset __CURRENT_GIT_STATUS + + local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py" + _GIT_STATUS=`python ${gitstatus}` + __CURRENT_GIT_STATUS=("${(f)_GIT_STATUS}") +} + +function prompt_git_info() { + if [ -n "$__CURRENT_GIT_STATUS" ]; then + echo "(%{${fg[red]}%}$__CURRENT_GIT_STATUS[1]%{${fg[default]}%}$__CURRENT_GIT_STATUS[2]%{${fg[magenta]}%}$__CURRENT_GIT_STATUS[3]%{${fg[default]}%})" + fi +} + +# Set the prompt. +#PROMPT='%B%m%~%b$(prompt_git_info) %# ' +# for a right prompt: +#RPROMPT='%b$(prompt_git_info)' +RPROMPT='$(prompt_git_info)' diff --git a/plugins/git-prompt/gitstatus.py b/plugins/git-prompt/gitstatus.py new file mode 100644 index 000000000..ee6fab9bd --- /dev/null +++ b/plugins/git-prompt/gitstatus.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +# change those symbols to whatever you prefer +symbols = {'ahead of': '↑', 'behind': '↓', 'staged':'♦', 'changed':'‣', 'untracked':'…', 'clean':'⚡', 'unmerged':'≠', 'sha1':':'} + +from subprocess import Popen, PIPE + +output,error = Popen(['git','status'], stdout=PIPE, stderr=PIPE).communicate() + +if error: + import sys + sys.exit(0) +lines = output.splitlines() + +import re +behead_re = re.compile(r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit") +diverge_re = re.compile(r"^# and have (\d+) and (\d+) different") + +status = '' +staged = re.compile(r'^# Changes to be committed:$', re.MULTILINE) +changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE) +untracked = re.compile(r'^# Untracked files:$', re.MULTILINE) +unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE) + +def execute(*command): + out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate() + if not err: + nb = len(out.splitlines()) + else: + nb = '?' + return nb + +if staged.search(output): + nb = execute(['git','diff','--staged','--name-only','--diff-filter=ACDMRT']) + status += '%s%s' % (symbols['staged'], nb) +if unmerged.search(output): + nb = execute(['git','diff', '--staged','--name-only', '--diff-filter=U']) + status += '%s%s' % (symbols['unmerged'], nb) +if changed.search(output): + nb = execute(['git','diff','--name-only', '--diff-filter=ACDMRT']) + status += '%s%s' % (symbols['changed'], nb) +if untracked.search(output): +## nb = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines()) +## status += "%s" % (symbols['untracked']*(nb//3 + 1), ) + status += symbols['untracked'] +if status == '': + status = symbols['clean'] + +remote = '' + +bline = lines[0] +if bline.find('Not currently on any branch') != -1: + branch = symbols['sha1']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1] +else: + branch = bline.split(' ')[3] + bstatusline = lines[1] + match = behead_re.match(bstatusline) + if match: + remote = symbols[match.groups()[0]] + remote += match.groups()[2] + elif lines[2:]: + div_match = diverge_re.match(lines[2]) + if div_match: + remote = "{behind}{1}{ahead of}{0}".format(*div_match.groups(), **symbols) + +print '\n'.join([branch,remote,status]) + From 6c95c4b68a97b41682084834b6e30822b6f06ab9 Mon Sep 17 00:00:00 2001 From: Ryan Doenges Date: Sun, 12 Jun 2011 13:57:00 -0700 Subject: [PATCH 002/330] use /home/ryan/d/.oh-my-zsh instead of ~/.oh-my-zsh for cache --- lib/completion.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/completion.zsh b/lib/completion.zsh index fdd0a8536..8c0e7701b 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -44,7 +44,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 \ From f20cfc68e81be754521672541fd6ff25983f402c Mon Sep 17 00:00:00 2001 From: Randy Hancock Date: Mon, 1 Aug 2011 10:10:42 -0500 Subject: [PATCH 003/330] Fix edit-command-line binding This binding doesn't work when the edit-command-line.zsh file is loaded after the key-bindings.zsh file because 'bindkey -e' in key-bindings.zsh resets the binding. Moving the bindings to they key-bindings.zsh file and removing edit-command-line.zsh. --- lib/edit-command-line.zsh | 3 --- lib/key-bindings.zsh | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 lib/edit-command-line.zsh diff --git a/lib/edit-command-line.zsh b/lib/edit-command-line.zsh deleted file mode 100644 index db2000325..000000000 --- a/lib/edit-command-line.zsh +++ /dev/null @@ -1,3 +0,0 @@ -autoload -U edit-command-line -zle -N edit-command-line -bindkey '\C-x\C-e' edit-command-line diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 9c2dda35a..d9611b557 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -26,6 +26,11 @@ bindkey "^[[3~" delete-char bindkey "^[3;5~" delete-char bindkey "\e[3~" delete-char +# Edit the current command line in $EDITOR +autoload -U edit-command-line +zle -N edit-command-line +bindkey '\C-x\C-e' edit-command-line + # consider emacs keybindings: #bindkey -e ## emacs key bindings From 0061dda057bb3b8b67f2bf06b374ab0b786e80fe Mon Sep 17 00:00:00 2001 From: artemk Date: Sat, 6 Aug 2011 16:46:37 +0300 Subject: [PATCH 004/330] Add bundle open alias, which open gem using EDITOR var --- plugins/bundler/bundler.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index f005700ff..af5bf2b3b 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -3,6 +3,7 @@ alias bi="bundle install" alias bl="bundle list" alias bu="bundle update" alias bp="bundle package" +alias bo="bundle open" # The following is based on https://github.com/gma/bundler-exec From deb8543bb48eb8bde85e2285ac9ce276113c433b Mon Sep 17 00:00:00 2001 From: "Marco A. Peraza" Date: Thu, 29 Sep 2011 14:39:09 -0400 Subject: [PATCH 005/330] Show if you're ahead of remote in the wedisagree theme --- themes/wedisagree.zsh-theme | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/themes/wedisagree.zsh-theme b/themes/wedisagree.zsh-theme index 7cb27934d..9bdbce40d 100644 --- a/themes/wedisagree.zsh-theme +++ b/themes/wedisagree.zsh-theme @@ -25,7 +25,7 @@ PROMPT='%{$fg[magenta]%}[%c] %{$reset_color%}' # The right-hand prompt -RPROMPT='${time} %{$fg[magenta]%}$(git_prompt_info)%{$reset_color%}$(git_prompt_status)%{$reset_color%}' +RPROMPT='${time} %{$fg[magenta]%}$(git_prompt_info)%{$reset_color%}$(git_prompt_status)%{$reset_color%}$(git_prompt_ahead)%{$reset_color%}' # Add this at the start of RPROMPT to include rvm info showing ruby-version@gemset-name # %{$fg[yellow]%}$(~/.rvm/bin/rvm-prompt)%{$reset_color%} @@ -46,6 +46,7 @@ ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%} ⚡" # ⓜ ⑁ ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" # ⓧ ⑂ ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%} ➜" # ⓡ ⑄ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[magenta]%} ♒" # ⓤ ⑊ +ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[blue]%} 𝝙" # More symbols to choose from: # ☀ ✹ ☄ ♆ ♀ ♁ ♐ ♇ ♈ ♉ ♚ ♛ ♜ ♝ ♞ ♟ ♠ ♣ ⚢ ⚲ ⚳ ⚴ ⚥ ⚤ ⚦ ⚒ ⚑ ⚐ ♺ ♻ ♼ ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ @@ -104,4 +105,4 @@ function git_time_since_commit() { echo "($(rvm_gemset)$COLOR~|" fi fi -} \ No newline at end of file +} From 9e3776f1ecbaa29d646cdfe8fc204597ca98746c Mon Sep 17 00:00:00 2001 From: Max Masnick Date: Sun, 30 Oct 2011 21:43:53 -0400 Subject: [PATCH 006/330] update fino theme to work with rbenv also fix bug where prompt char did not reflect whether or not you were in a git repo. --- themes/fino.zsh-theme | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/themes/fino.zsh-theme b/themes/fino.zsh-theme index 17cf59708..a7a63f661 100644 --- a/themes/fino.zsh-theme +++ b/themes/fino.zsh-theme @@ -1,7 +1,7 @@ # Fino theme by Max Masnick (http://max.masnick.me) # Use with a dark background and 256-color terminal! -# Meant for people with RVM and git. Tested only on OS X 10.7. +# Meant for people with rbenv and git. Tested only on OS X 10.7. # You can set your computer name in the ~/.box-name file if you want. @@ -11,27 +11,24 @@ # # Also borrowing from http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/ -function virtualenv_info { - [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' -} function prompt_char { - git branch >/dev/null 2>/dev/null && echo '±' && return - echo '○' + git branch >/dev/null 2>/dev/null && echo "±" && return + echo '○' } function box_name { [ -f ~/.box-name ] && cat ~/.box-name || hostname -s } - -local rvm_ruby='‹$(rvm-prompt i v g)›%{$reset_color%}' local current_dir='${PWD/#$HOME/~}' local git_info='$(git_prompt_info)' +local prompt_char='$(prompt_char)' +local rbenv_version='$(rbenv version-name)' -PROMPT="╭─%{$FG[040]%}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} %{$FG[033]%}$(box_name)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} %{$terminfo[bold]$FG[226]%}${current_dir}%{$reset_color%}${git_info} %{$FG[239]%}using%{$FG[243]%} ${rvm_ruby} -╰─$(virtualenv_info)$(prompt_char) " +PROMPT="╭─%{$FG[040]%}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} %{$FG[033]%}$(box_name)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} %{$terminfo[bold]$FG[226]%}${current_dir}%{$reset_color%}${git_info} %{$FG[239]%}using%{$FG[243]%} ‹${rbenv_version}›%{$reset_color%} +╰─${prompt_char} " ZSH_THEME_GIT_PROMPT_PREFIX=" %{$FG[239]%}on%{$reset_color%} %{$fg[255]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" From 914e1b52583e09298f10fab7a301711bd9613ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20M-B?= Date: Sat, 5 Nov 2011 00:34:15 +0100 Subject: [PATCH 007/330] Adding custom theme --- themes/essembeh.zsh-theme | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 themes/essembeh.zsh-theme diff --git a/themes/essembeh.zsh-theme b/themes/essembeh.zsh-theme new file mode 100644 index 000000000..f9cd6c241 --- /dev/null +++ b/themes/essembeh.zsh-theme @@ -0,0 +1,29 @@ +# Theme with full path names and hostname +# Handy if you work on different servers all the time; + + +local return_code="%(?..%{$fg_bold[red]%}%? ↵%{$reset_color%})" + +function my_git_prompt_info() { + ref=$(git symbolic-ref HEAD 2> /dev/null) || return + GIT_STATUS=$(git_prompt_status) + [[ -n $GIT_STATUS ]] && GIT_STATUS=" $GIT_STATUS" + echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$GIT_STATUS$ZSH_THEME_GIT_PROMPT_SUFFIX" +} + +LOGIN_COLOR=green +test -n "$SSH_CONNECTION" && LOGIN_COLOR=red +test $UID -eq 0 && LOGIN_COLOR=pink + +PROMPT='%{$fg[$LOGIN_COLOR]%}%B%n@%M:%{$fg[yellow]%}%B%~%{$reset_color%}%b $(my_git_prompt_info)%(!.#.$) ' +RPS1="${return_code}" + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(" +ZSH_THEME_GIT_PROMPT_SUFFIX=") %{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%%" +ZSH_THEME_GIT_PROMPT_ADDED="+" +ZSH_THEME_GIT_PROMPT_MODIFIED="*" +ZSH_THEME_GIT_PROMPT_RENAMED="~" +ZSH_THEME_GIT_PROMPT_DELETED="!" +ZSH_THEME_GIT_PROMPT_UNMERGED="?" + From c4434d2ddedd62737ad3f99111ef47d722e2b74e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20M-B?= Date: Sat, 5 Nov 2011 00:34:37 +0100 Subject: [PATCH 008/330] Update completion for SSH Add all hosts found in ~/.ssh/config. Tip found on: http://www.nerux.org/wiki/OpenSSH#coupler_avec_zsh_completion --- lib/completion.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/completion.zsh b/lib/completion.zsh index b3cc91822..dab9bb1d3 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -33,14 +33,17 @@ cdpath=(.) # use /etc/hosts and known_hosts for hostname completion [ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=() +[ -r ~/.ssh/config ] && _ssh_config=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) || _ssh_config=() [ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$( Date: Wed, 16 Nov 2011 19:44:02 +0100 Subject: [PATCH 009/330] Update theme Use different colors in case of root or ssh connection for prompt. --- themes/essembeh.zsh-theme | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/themes/essembeh.zsh-theme b/themes/essembeh.zsh-theme index f9cd6c241..8c98ea1ed 100644 --- a/themes/essembeh.zsh-theme +++ b/themes/essembeh.zsh-theme @@ -11,14 +11,16 @@ function my_git_prompt_info() { echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$GIT_STATUS$ZSH_THEME_GIT_PROMPT_SUFFIX" } -LOGIN_COLOR=green -test -n "$SSH_CONNECTION" && LOGIN_COLOR=red -test $UID -eq 0 && LOGIN_COLOR=pink - -PROMPT='%{$fg[$LOGIN_COLOR]%}%B%n@%M:%{$fg[yellow]%}%B%~%{$reset_color%}%b $(my_git_prompt_info)%(!.#.$) ' +# Colored prompt +ZSH_THEME_COLOR_USER="green" +ZSH_THEME_COLOR_HOST="green" +ZSH_THEME_COLOR_PWD="yellow" +test -n "$SSH_CONNECTION" && ZSH_THEME_COLOR_USER="red" && ZSH_THEME_COLOR_HOST="red" +test `id -u` = 0 && ZSH_THEME_COLOR_USER="magenta" && ZSH_THEME_COLOR_HOST="magenta" +PROMPT='%{$fg_bold[$ZSH_THEME_COLOR_USER]%}%n@%{$fg_bold[$ZSH_THEME_COLOR_HOST]%}%M%{$reset_color%}:%{$fg_bold[$ZSH_THEME_COLOR_PWD]%}%~%{$reset_color%} $(my_git_prompt_info)%(!.#.$) ' RPS1="${return_code}" -ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(" +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[cyan]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX=") %{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%%" ZSH_THEME_GIT_PROMPT_ADDED="+" From 30890b9eb9e1b6fc4b553d94a97424049bd6003e Mon Sep 17 00:00:00 2001 From: Jason Gill Date: Wed, 16 Nov 2011 15:51:30 -0500 Subject: [PATCH 010/330] Fixes and improves the behavior of the tm command --- plugins/textmate/textmate.plugin.zsh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/textmate/textmate.plugin.zsh b/plugins/textmate/textmate.plugin.zsh index a11a097f5..773c4f8d2 100644 --- a/plugins/textmate/textmate.plugin.zsh +++ b/plugins/textmate/textmate.plugin.zsh @@ -6,7 +6,16 @@ alias etts='mate app config lib db public script spec test vendor/plugins vendor # Edit Ruby app in TextMate alias mr='mate CHANGELOG app config db lib public script spec test' +# If the tm command is called without an argument, open TextMate in the current directory +# If tm is passed a directory, cd to it and open it in TextMate +# If tm is passed a file, open it in TextMate function tm() { - cd $1 - mate $1 + if [[ -z $1 ]]; then + mate . + else + mate $1 + if [[ -d $1 ]]; then + cd $1 + fi + fi } From 77045230f4e2c80f4f312fbbeeb8583a41aa5a92 Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Wed, 28 Dec 2011 15:54:47 +0100 Subject: [PATCH 011/330] make pygmalion theme use two lines when needed if the length of the prompt (excluding color escapes) exceeds 40 characters, emit the arrow prompt on its own line This helps a lot on smaller terminals --- themes/pygmalion.zsh-theme | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/themes/pygmalion.zsh-theme b/themes/pygmalion.zsh-theme index cf3bb908f..435c05830 100644 --- a/themes/pygmalion.zsh-theme +++ b/themes/pygmalion.zsh-theme @@ -1,9 +1,34 @@ # Yay! High voltage and arrows! -ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}" -ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " -ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_CLEAN="" +prompt_setup_pygmalion(){ + ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}" + ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " + ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}" + ZSH_THEME_GIT_PROMPT_CLEAN="" + + base_prompt='%{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}' + post_prompt='%{$fg[cyan]%}⇒%{$reset_color%} ' + + base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g") + post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g") + + add-zsh-hook precmd prompt_pygmalion_precmd +} + +prompt_pygmalion_precmd(){ + local gitinfo=$(git_prompt_info) + local gitinfo_nocolor=$(echo "$gitinfo" | perl -pe "s/%\{[^}]+\}//g") + local exp_nocolor=$(print -P "$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor") + local prompt_length=${#exp_nocolor} + + local nl="" + + if [[ $prompt_length -gt 40 ]]; then + nl=$'\n%{\r%}'; + fi + PROMPT="$base_prompt$gitinfo$nl$post_prompt" +} + +prompt_setup_pygmalion -PROMPT='%{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}$(git_prompt_info)%{$fg[cyan]%}⇒%{$reset_color%} ' From 3445dada95f7d5c4730b73ebb8b3abb0e5723e26 Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Thu, 29 Dec 2011 14:35:38 +0100 Subject: [PATCH 012/330] correctly handle path names with spaces --- themes/pygmalion.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/pygmalion.zsh-theme b/themes/pygmalion.zsh-theme index 435c05830..654e0fc37 100644 --- a/themes/pygmalion.zsh-theme +++ b/themes/pygmalion.zsh-theme @@ -18,7 +18,7 @@ prompt_setup_pygmalion(){ prompt_pygmalion_precmd(){ local gitinfo=$(git_prompt_info) local gitinfo_nocolor=$(echo "$gitinfo" | perl -pe "s/%\{[^}]+\}//g") - local exp_nocolor=$(print -P "$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor") + local exp_nocolor="$(print -P \"$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor\")" local prompt_length=${#exp_nocolor} local nl="" From 730e0296640fed91b6db83745abf920428aa5abf Mon Sep 17 00:00:00 2001 From: Jordan MacDonald Date: Sat, 7 Jan 2012 15:36:58 -0500 Subject: [PATCH 013/330] Added alias for git diff. --- plugins/git/git.plugin.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index c1b382b2c..00667a215 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -3,6 +3,8 @@ alias g='git' compdef g=git alias gst='git status' compdef _git gst=git-status +alias gd='git diff' +compdef _git diff=git-diff alias gl='git pull' compdef _git gl=git-pull alias gup='git fetch && git rebase' From 78a129ca06cbe9f9dbfd171491d734249e91dc2c Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Mon, 16 Jan 2012 16:39:28 +0100 Subject: [PATCH 014/330] Correct color and font issues on Ubuntu --- themes/sunrise.zsh-theme | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/themes/sunrise.zsh-theme b/themes/sunrise.zsh-theme index 88b371d79..acc6ed312 100644 --- a/themes/sunrise.zsh-theme +++ b/themes/sunrise.zsh-theme @@ -5,16 +5,15 @@ #------------------------------------------------------------------------------- # Color shortcuts -R=$fg[red] -G=$fg[green] -M=$fg[magenta] -RB=$fg_bold[red] -YB=$fg_bold[yellow] -BB=$fg_bold[blue] +R=$fg_no_bold[red] +G=$fg_no_bold[green] +M=$fg_no_bold[magenta] +Y=$fg_no_bold[yellow] +B=$fg_no_bold[blue] RESET=$reset_color if [ "$(whoami)" = "root" ]; then - PROMPTCOLOR="%{$RB%}" PREFIX="-!-"; + PROMPTCOLOR="%{$R%}" PREFIX="-!-"; else PROMPTCOLOR="" PREFIX="---"; fi @@ -73,13 +72,14 @@ function custom_git_prompt() { PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' RPS1="${return_code}" -ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹" -ZSH_THEME_GIT_PROMPT_SUFFIX="%{$YB%}›%{$RESET%} " +ZSH_THEME_GIT_PROMPT_PREFIX="%{$Y%}‹" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$Y%}›%{$RESET%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}*" ZSH_THEME_GIT_PROMPT_CLEAN="" -ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➔" +ZSH_THEME_GIT_PROMPT_AHEAD="%{$B%}➔" + ZSH_THEME_GIT_STATUS_PREFIX=" " @@ -90,7 +90,7 @@ ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$G%}R" ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D" # Not-staged -ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}⁇" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}?" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$R%}M" ZSH_THEME_GIT_PROMPT_DELETED="%{$R%}D" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU" From 49d44adb09f417fac24ea8e664b12f6546f22e9d Mon Sep 17 00:00:00 2001 From: Jordan MacDonald Date: Fri, 20 Jan 2012 13:07:03 -0500 Subject: [PATCH 015/330] Fixed compdef alias to use 'gd' as shortcut. --- plugins/git/git.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 00667a215..a42148fd9 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -4,7 +4,7 @@ compdef g=git alias gst='git status' compdef _git gst=git-status alias gd='git diff' -compdef _git diff=git-diff +compdef _git gd=git-diff alias gl='git pull' compdef _git gl=git-pull alias gup='git fetch && git rebase' From 72aeaa9d9ee55fbfe15b371c0bf127ab3948a965 Mon Sep 17 00:00:00 2001 From: Hao Hong Date: Mon, 6 Feb 2012 15:51:31 +0800 Subject: [PATCH 016/330] added "publish" and "track" command completion for git-flow plugin --- plugins/git-flow/git-flow.plugin.zsh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh index 270bcbe38..b94f1a81f 100644 --- a/plugins/git-flow/git-flow.plugin.zsh +++ b/plugins/git-flow/git-flow.plugin.zsh @@ -88,6 +88,8 @@ __git-flow-release () 'start:Start a new release branch.' 'finish:Finish a release branch.' 'list:List all your release branches. (Alias to `git flow release`)' + 'publish: public' + 'track: track' ) _describe -t commands 'git flow release' subcommands _arguments \ @@ -113,6 +115,16 @@ __git-flow-release () ':version:__git_flow_version_list' ;; + (publish) + _arguments \ + ':version:__git_flow_version_list'\ + ;; + + (track) + _arguments \ + ':version:__git_flow_version_list'\ + ;; + *) _arguments \ -v'[Verbose (more) output]' From fbf5b0ecb6b551b7d4ee2f1e85780c9fdbe052a0 Mon Sep 17 00:00:00 2001 From: Brent Faulkner Date: Mon, 6 Feb 2012 21:50:17 -0500 Subject: [PATCH 017/330] add default rbenv_prompt_info implementation to close #878 --- lib/rbenv.zsh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 lib/rbenv.zsh diff --git a/lib/rbenv.zsh b/lib/rbenv.zsh new file mode 100644 index 000000000..a8b6c323c --- /dev/null +++ b/lib/rbenv.zsh @@ -0,0 +1,2 @@ +# using the rbenv plugin will override this with a real implementation +function rbenv_prompt_info() {} From b62a3e89602bca23b794dd1e808d92a89880ad3f Mon Sep 17 00:00:00 2001 From: Brent Faulkner Date: Sun, 12 Feb 2012 12:27:06 -0500 Subject: [PATCH 018/330] handle case where ~/.rvm/bin/rvm-prompt is not in path, so "which" can't find it --- themes/crunch.zsh-theme | 2 +- themes/dallas.zsh-theme | 2 +- themes/macovsky-ruby.zsh-theme | 2 +- themes/macovsky.zsh-theme | 2 +- themes/superjarin.zsh-theme | 2 +- themes/zhann.zsh-theme | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/crunch.zsh-theme b/themes/crunch.zsh-theme index b2759a1b0..2fc066381 100644 --- a/themes/crunch.zsh-theme +++ b/themes/crunch.zsh-theme @@ -29,7 +29,7 @@ ZSH_THEME_GIT_PROMPT_DIRTY=" $CRUNCH_GIT_DIRTY_COLOR✗" # Our elements: CRUNCH_TIME_="$CRUNCH_BRACKET_COLOR{$CRUNCH_TIME_COLOR%T$CRUNCH_BRACKET_COLOR}%{$reset_color%}" -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then CRUNCH_RVM_="$CRUNCH_BRACKET_COLOR"["$CRUNCH_RVM_COLOR\${\$(~/.rvm/bin/rvm-prompt i v g)#ruby-}$CRUNCH_BRACKET_COLOR"]"%{$reset_color%}" else if which rbenv &> /dev/null; then diff --git a/themes/dallas.zsh-theme b/themes/dallas.zsh-theme index e9b4f852a..02285df52 100644 --- a/themes/dallas.zsh-theme +++ b/themes/dallas.zsh-theme @@ -3,7 +3,7 @@ # Grab the current date (%D) and time (%T) wrapped in {}: {%D %T} DALLAS_CURRENT_TIME_="%{$fg[white]%}{%{$fg[yellow]%}%D %T%{$fg[white]%}}%{$reset_color%}" # Grab the current version of ruby in use (via RVM): [ruby-1.8.7] -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then DALLAS_CURRENT_RUBY_="%{$fg[white]%}[%{$fg[magenta]%}\$(~/.rvm/bin/rvm-prompt i v)%{$fg[white]%}]%{$reset_color%}" else if which rbenv &> /dev/null; then diff --git a/themes/macovsky-ruby.zsh-theme b/themes/macovsky-ruby.zsh-theme index 045376761..69d80d588 100644 --- a/themes/macovsky-ruby.zsh-theme +++ b/themes/macovsky-ruby.zsh-theme @@ -1,7 +1,7 @@ # ZSH Theme - Preview: http://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then PROMPT='%{$fg[green]%}%~%{$reset_color%} %{$fg[red]%}‹$(~/.rvm/bin/rvm-prompt i v)› %{$reset_color%} $(git_prompt_info)%{$reset_color%}%B$%b ' else if which rbenv &> /dev/null; then diff --git a/themes/macovsky.zsh-theme b/themes/macovsky.zsh-theme index b6978b929..2e6dce42d 100644 --- a/themes/macovsky.zsh-theme +++ b/themes/macovsky.zsh-theme @@ -1,7 +1,7 @@ # ZSH Theme - Preview: http://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then PROMPT='%{$fg[green]%}%~%{$reset_color%} %{$fg[red]%}‹$(~/.rvm/bin/rvm-prompt i v)› %{$reset_color%} $(git_prompt_info)%{$reset_color%}%B$%b ' else if which rbenv &> /dev/null; then diff --git a/themes/superjarin.zsh-theme b/themes/superjarin.zsh-theme index 0be816de0..86955a560 100644 --- a/themes/superjarin.zsh-theme +++ b/themes/superjarin.zsh-theme @@ -1,5 +1,5 @@ # Grab the current version of ruby in use (via RVM): [ruby-1.8.7] -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then JARIN_CURRENT_RUBY_="%{$fg[white]%}[%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt i v)%{$fg[white]%}]%{$reset_color%}" else if which rbenv &> /dev/null; then diff --git a/themes/zhann.zsh-theme b/themes/zhann.zsh-theme index 574e0cec3..5c49fe79b 100644 --- a/themes/zhann.zsh-theme +++ b/themes/zhann.zsh-theme @@ -1,6 +1,6 @@ PROMPT='%{$fg_bold[green]%}%p %{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' -if which rvm-prompt &> /dev/null; then +if [ -e ~/.rvm/bin/rvm-prompt ]; then RPROMPT='%{$reset_color%} %{$fg[red]%}$(~/.rvm/bin/rvm-prompt i v g) %{$reset_color%}' else if which rbenv &> /dev/null; then From ff7e0648965e027d1b8c995065b5152333a82b7a Mon Sep 17 00:00:00 2001 From: Rach Belaid Date: Sun, 19 Feb 2012 19:54:33 +0000 Subject: [PATCH 019/330] change the color of arrow when the command line return an error --- themes/robbyrussell.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/themes/robbyrussell.zsh-theme b/themes/robbyrussell.zsh-theme index 7b524e82d..24e1e8c52 100644 --- a/themes/robbyrussell.zsh-theme +++ b/themes/robbyrussell.zsh-theme @@ -1,4 +1,5 @@ -PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' +local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ %s)" +PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" From bcd5b3b52b35a458df87b204119eb18a264a580b Mon Sep 17 00:00:00 2001 From: John Barker Date: Mon, 20 Feb 2012 19:05:27 -0500 Subject: [PATCH 020/330] Added a peepcode theme --- themes/peepcode.zsh-theme | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 themes/peepcode.zsh-theme diff --git a/themes/peepcode.zsh-theme b/themes/peepcode.zsh-theme new file mode 100644 index 000000000..ca2a8862f --- /dev/null +++ b/themes/peepcode.zsh-theme @@ -0,0 +1,44 @@ +# +# Based on Geoffrey Grosenbach's peepcode zsh theme from +# https://github.com/topfunky/zsh-simple +# + +git_repo_path() { + git rev-parse --git-dir 2>/dev/null +} + +git_commit_id() { + git rev-parse --short HEAD 2>/dev/null +} + +git_mode() { + if [[ -e "$repo_path/BISECT_LOG" ]]; then + echo "+bisect" + elif [[ -e "$repo_path/MERGE_HEAD" ]]; then + echo "+merge" + elif [[ -e "$repo_path/rebase" || -e "$repo_path/rebase-apply" || -e "$repo_path/rebase-merge" || -e "$repo_path/../.dotest" ]]; then + echo "+rebase" + fi +} + +git_dirty() { + if [[ "$repo_path" != '.' && `git ls-files -m` != "" ]]; then + echo " %{$fg_bold[grey]%}✗%{$reset_color%}" + fi +} + +git_prompt() { + local cb=$(current_branch) + if [ -n "$cb" ]; then + local repo_path=$(git_repo_path) + echo " %{$fg_bold[grey]%}$cb %{$fg[white]%}$(git_commit_id)%{$reset_color%}$(git_mode)$(git_dirty)" + fi +} + +local smiley="%(?,%{$fg[green]%}☺%{$reset_color%},%{$fg[red]%}☹%{$reset_color%})" + +PROMPT=' +%~ +${smiley} %{$reset_color%}' + +RPROMPT='%{$fg[white]%} $(~/.rvm/bin/rvm-prompt)$(git_prompt)%{$reset_color%}' From 6272b4854c0b13fa778fe7d4f6f9bb12d716299f Mon Sep 17 00:00:00 2001 From: Jeff McClure Date: Mon, 20 Feb 2012 22:37:23 -0500 Subject: [PATCH 021/330] Added New Theme: sonicradish (256 colors) Forked from muse theme and inspired by mustang vim theme Dark Background and Solarized Dark look great [ tested on OS X ] Screenshot: https://img.skitch.com/20120221-eb1cxey5aun84tb1ak7fm376k.png muse: https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/muse.zsh-theme mustang: http://hcalves.deviantart.com/art/Mustang-Vim-Colorscheme-98974484http://hcalves.deviantart.com/art/Mustang-Vim-Colorscheme-98974484 --- themes/sonicradish.zsh-theme | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 themes/sonicradish.zsh-theme diff --git a/themes/sonicradish.zsh-theme b/themes/sonicradish.zsh-theme new file mode 100644 index 000000000..cc7ba1c76 --- /dev/null +++ b/themes/sonicradish.zsh-theme @@ -0,0 +1,39 @@ +#!/usr/bin/env zsh +#local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" + +setopt promptsubst + +autoload -U add-zsh-hook +ROOT_ICON_COLOR=$FG[111] +MACHINE_NAME_COLOR=$FG[208] +PROMPT_SUCCESS_COLOR=$FG[103] +PROMPT_FAILURE_COLOR=$FG[124] +PROMPT_VCS_INFO_COLOR=$FG[242] +PROMPT_PROMPT=$FG[208] +GIT_DIRTY_COLOR=$FG[124] +GIT_CLEAN_COLOR=$FG[148] +GIT_PROMPT_INFO=$FG[148] + +# Hash +ROOT_ICON="# " +if [[ $EUID -ne 0 ]] ; then + ROOT_ICON="" +fi + +PROMPT='%{$ROOT_ICON_COLOR%}$ROOT_ICON%{$reset_color%}%{$MACHINE_NAME_COLOR%}%m➜ %{$reset_color%}%{$PROMPT_SUCCESS_COLOR%}%c%{$reset_color%} %{$GIT_PROMPT_INFO%}$(git_prompt_info)%{$GIT_DIRTY_COLOR%}$(git_prompt_status) %{$reset_color%}%{$PROMPT_PROMPT%}ᐅ %{$reset_color%} ' + +#RPS1="${return_code}" + +ZSH_THEME_GIT_PROMPT_PREFIX=": " +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$GIT_PROMPT_INFO%} :" +ZSH_THEME_GIT_PROMPT_DIRTY=" %{$GIT_DIRTY_COLOR%}✘" +ZSH_THEME_GIT_PROMPT_CLEAN=" %{$GIT_CLEAN_COLOR%}✔" + +ZSH_THEME_GIT_PROMPT_ADDED="%{$FG[103]%}✚%{$rset_color%}" +ZSH_THEME_GIT_PROMPT_MODIFIED="%{$FG[103]%}✹%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[103]%}✖%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[103]%}➜%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[103]%}═%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[103]%}✭%{$reset_color%}" + +export LSCOLORS=dxfxcxdxbxexexabagacad From 867cb3f511fe8d0cad04ae799b595d7b0c86746a Mon Sep 17 00:00:00 2001 From: Jeff McClure Date: Tue, 21 Feb 2012 00:45:33 -0500 Subject: [PATCH 022/330] [JM] Removed LSCOLOR Declaration for Wider Support --- themes/sonicradish.zsh-theme | 2 -- 1 file changed, 2 deletions(-) diff --git a/themes/sonicradish.zsh-theme b/themes/sonicradish.zsh-theme index cc7ba1c76..508611830 100644 --- a/themes/sonicradish.zsh-theme +++ b/themes/sonicradish.zsh-theme @@ -35,5 +35,3 @@ ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[103]%}✖%{$reset_color%}" ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[103]%}➜%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[103]%}═%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[103]%}✭%{$reset_color%}" - -export LSCOLORS=dxfxcxdxbxexexabagacad From 4e0b5be145cb0f4eda769906e9e72e31aec7c236 Mon Sep 17 00:00:00 2001 From: Andrew Ash Date: Thu, 23 Feb 2012 23:12:07 -0800 Subject: [PATCH 023/330] Fix spurious correction with sudo vim user@host:~ $ sudo vim /etc/rc.conf zsh: correct 'vim' to '.vim' [nyae]? http://www.zsh.org/mla/users/2012/msg00028.html --- lib/correction.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/correction.zsh b/lib/correction.zsh index fc60dcdbd..53c477d46 100644 --- a/lib/correction.zsh +++ b/lib/correction.zsh @@ -8,3 +8,4 @@ alias gist='nocorrect gist' alias heroku='nocorrect heroku' alias ebuild='nocorrect ebuild' alias hpodder='nocorrect hpodder' +alias sudo='nocorrect sudo' \ No newline at end of file From d49e98267a741075f889808b04b1f0c699917f8a Mon Sep 17 00:00:00 2001 From: Max Masnick Date: Sat, 25 Feb 2012 16:16:43 -0500 Subject: [PATCH 024/330] clean up rbenv support for 'fino' theme --- themes/fino.zsh-theme | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/themes/fino.zsh-theme b/themes/fino.zsh-theme index 2159e54a8..4c7aabcff 100644 --- a/themes/fino.zsh-theme +++ b/themes/fino.zsh-theme @@ -21,22 +21,21 @@ function box_name { [ -f ~/.box-name ] && cat ~/.box-name || hostname -s } -local rvm_ruby='' +local ruby_env='' if which rvm-prompt &> /dev/null; then - rvm_ruby='‹$(rvm-prompt i v g)›%{$reset_color%}' + ruby_env=' ‹$(rvm-prompt i v g)›%{$reset_color%}' else if which rbenv &> /dev/null; then - rvm_ruby='‹$(rbenv version | sed -e "s/ (set.*$//")›%{$reset_color%}' + ruby_env=' ‹$(rbenv version-name)›%{$reset_color%}' fi fi local current_dir='${PWD/#$HOME/~}' local git_info='$(git_prompt_info)' local prompt_char='$(prompt_char)' -local rbenv_version='$(rbenv version-name)' -PROMPT="╭─%{$FG[040]%}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} %{$FG[033]%}$(box_name)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} %{$terminfo[bold]$FG[226]%}${current_dir}%{$reset_color%}${git_info} %{$FG[239]%}using%{$FG[243]%} ‹${rbenv_version}›%{$reset_color%} +PROMPT="╭─%{$FG[040]%}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} %{$FG[033]%}$(box_name)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} %{$terminfo[bold]$FG[226]%}${current_dir}%{$reset_color%}${git_info} %{$FG[239]%}using%{$FG[243]%}${ruby_env} ╰─${prompt_char} " ZSH_THEME_GIT_PROMPT_PREFIX=" %{$FG[239]%}on%{$reset_color%} %{$fg[255]%}" From ce6a21c3b3c6b0fb6a8b8a2cb20991fec91ec86a Mon Sep 17 00:00:00 2001 From: Piotr Solnica Date: Fri, 23 Mar 2012 20:31:13 +0100 Subject: [PATCH 025/330] [themes/josh] Use $(current_branch) in prompt --- themes/josh.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/josh.zsh-theme b/themes/josh.zsh-theme index 142e76838..12dfe4069 100644 --- a/themes/josh.zsh-theme +++ b/themes/josh.zsh-theme @@ -31,7 +31,7 @@ function josh_prompt { prompt=" $prompt" done - prompt="%{%F{green}%}$PWD$prompt%{%F{red}%}$(rvm_prompt_info || rbenv_prompt_info)%{$reset_color%} $(git_prompt_info)" + prompt="%{%F{green}%}$PWD$prompt%{%F{red}%}$(rvm_prompt_info || rbenv_prompt_info)%{$reset_color%} $(current_branch)" echo $prompt } From a75aabad1e455dcbf62891ba7370f6c0ea1108b2 Mon Sep 17 00:00:00 2001 From: Corey Woodcox Date: Wed, 9 Nov 2011 14:43:32 -0700 Subject: [PATCH 026/330] add the half-life theme based on steeef and lambda --- themes/half-life.zsh-theme | 99 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 themes/half-life.zsh-theme diff --git a/themes/half-life.zsh-theme b/themes/half-life.zsh-theme new file mode 100644 index 000000000..699880027 --- /dev/null +++ b/themes/half-life.zsh-theme @@ -0,0 +1,99 @@ +# prompt style and colors based on Steve Losh's Prose theme: +# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme +# +# vcs_info modifications from Bart Trojanowski's zsh prompt: +# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt +# +# git untracked files modification from Brian Carper: +# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt + +function virtualenv_info { + [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' +} +PR_GIT_UPDATE=1 + +setopt prompt_subst +autoload colors +colors + +autoload -U add-zsh-hook +autoload -Uz vcs_info + +#use extended color pallete if available +if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then + turquoise="%F{81}" + orange="%F{166}" + purple="%F{135}" + hotpink="%F{161}" + limegreen="%F{118}" +else + turquoise="$fg[cyan]" + orange="$fg[yellow]" + purple="$fg[magenta]" + hotpink="$fg[red]" + limegreen="$fg[green]" +fi + +# enable VCS systems you use +zstyle ':vcs_info:*' enable git svn + +# check-for-changes can be really slow. +# you should disable it, if you work with large repositories +zstyle ':vcs_info:*:prompt:*' check-for-changes true + +# set formats +# %b - branchname +# %u - unstagedstr (see below) +# %c - stagedstr (see below) +# %a - action (e.g. rebase-i) +# %R - repository path +# %S - path in the repository +PR_RST="%{${reset_color}%}" +FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" +FMT_ACTION="(%{$limegreen%}%a${PR_RST})" +FMT_UNSTAGED="%{$orange%}●" +FMT_STAGED="%{$limegreen%}●" + +zstyle ':vcs_info:*:prompt:*' unstagedstr "${FMT_UNSTAGED}" +zstyle ':vcs_info:*:prompt:*' stagedstr "${FMT_STAGED}" +zstyle ':vcs_info:*:prompt:*' actionformats "${FMT_BRANCH}${FMT_ACTION}" +zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" +zstyle ':vcs_info:*:prompt:*' nvcsformats "" + + +function steeef_preexec { + case "$(history $HISTCMD)" in + *git*) + PR_GIT_UPDATE=1 + ;; + *svn*) + PR_GIT_UPDATE=1 + ;; + esac +} +add-zsh-hook preexec steeef_preexec + +function steeef_chpwd { + PR_GIT_UPDATE=1 +} +add-zsh-hook chpwd steeef_chpwd + +function steeef_precmd { + if [[ -n "$PR_GIT_UPDATE" ]] ; then + # check for untracked files or updated submodules, since vcs_info doesn't + if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + PR_GIT_UPDATE=1 + FMT_BRANCH="${PM_RST} on %{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST}" + else + FMT_BRANCH="${PM_RST} on %{$turquoise%}%b%u%c${PR_RST}" + fi + zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" + + vcs_info 'prompt' + PR_GIT_UPDATE= + fi +} +add-zsh-hook precmd steeef_precmd + +PROMPT=$' +%{$purple%}%n%{$reset_color%} in %{$limegreen%}%~%{$reset_color%}$(rvm-prompt " with%{$fg[red]%} " v g "%{$reset_color%}")$vcs_info_msg_0_%{$orange%} λ%{$reset_color%} ' From 0b70b6d0483210b7fcc74ee1073c7de887f4f3ac Mon Sep 17 00:00:00 2001 From: Corey Woodcox Date: Wed, 4 Apr 2012 00:58:09 -0600 Subject: [PATCH 027/330] small changes to make it prettier --- themes/half-life.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/half-life.zsh-theme b/themes/half-life.zsh-theme index 699880027..c8d09ce47 100644 --- a/themes/half-life.zsh-theme +++ b/themes/half-life.zsh-theme @@ -49,8 +49,8 @@ zstyle ':vcs_info:*:prompt:*' check-for-changes true # %R - repository path # %S - path in the repository PR_RST="%{${reset_color}%}" -FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" -FMT_ACTION="(%{$limegreen%}%a${PR_RST})" +FMT_BRANCH=" on %{$turquoise%}%b%u%c${PR_RST}" +FMT_ACTION=" performing a %{$limegreen%}%a${PR_RST}" FMT_UNSTAGED="%{$orange%}●" FMT_STAGED="%{$limegreen%}●" From 9b05a44387f84ae0b24e24023286534d0bbdf65f Mon Sep 17 00:00:00 2001 From: "Steven G. Harms" Date: Thu, 5 Apr 2012 10:18:16 -0700 Subject: [PATCH 028/330] Adds glo; glp (arg) * glo := git log --oneline * glp := git log --pretty=arg --- plugins/git/git.plugin.zsh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index c1b382b2c..63a276d25 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -30,6 +30,8 @@ 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 glo='git log --oneline' +compdef _git glo=git-log alias gss='git status -s' compdef _git gss=git-status alias ga='git add' @@ -59,3 +61,12 @@ alias ggpush='git push origin $(current_branch)' compdef ggpush=git alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)' compdef ggpnp=git + +# Pretty log messages +function _git_log_prettily(){ + if ! [ -z $1 ]; then + git log --pretty=$1 + fi +} +alias glp="_git_log_prettily" +compdef _git glp=git-log From 6f4c69cb48d6fb746149afddee264509a5245305 Mon Sep 17 00:00:00 2001 From: Justin Mazzi Date: Wed, 25 Apr 2012 11:59:53 -0300 Subject: [PATCH 029/330] Add instructions on handling updates and prompts. --- README.textile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.textile b/README.textile index bf6776665..f6b59fa26 100644 --- a/README.textile +++ b/README.textile @@ -59,6 +59,14 @@ If you want to override any of the default behavior, just add a new file (ending If you have many functions which go well 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. Updates +By default you will be prompted to check for updates. If you would like oh-my-zsh to automatically update itself without prompting you, set the following in your ~/.zshrc + +@DISABLE_UPDATE_PROMPT=true@ + +To disable updates entirely, put this in your ~/.zshrc + +@DISABLE_AUTO_UPDATE=true@ h3. Uninstalling From 7fd1bf597fd866480d41a4208fa23d04b1a79044 Mon Sep 17 00:00:00 2001 From: Justin Mazzi Date: Wed, 25 Apr 2012 11:02:17 -0400 Subject: [PATCH 030/330] Fix formatting --- README.textile | 1 + 1 file changed, 1 insertion(+) diff --git a/README.textile b/README.textile index f6b59fa26..701485690 100644 --- a/README.textile +++ b/README.textile @@ -60,6 +60,7 @@ If you have many functions which go well together you can put them as a *.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. Updates + By default you will be prompted to check for updates. If you would like oh-my-zsh to automatically update itself without prompting you, set the following in your ~/.zshrc @DISABLE_UPDATE_PROMPT=true@ From 79847ad77d1613fa823b2c6e097895b3b5193074 Mon Sep 17 00:00:00 2001 From: Dr Nic Williams Date: Wed, 2 May 2012 10:32:30 -0700 Subject: [PATCH 031/330] added 'gcl'for 'git config --list'; and gd for 'git diff' --- plugins/git/git.plugin.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index e1d682508..340485104 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -9,6 +9,7 @@ alias gup='git fetch && git rebase' compdef _git gup=git-fetch alias gp='git push' compdef _git gp=git-push +alias gd='git diff' gdv() { git diff -w "$@" | view - } compdef _git gdv=git-diff alias gc='git commit -v' @@ -24,6 +25,7 @@ alias gba='git branch -a' compdef _git gba=git-branch alias gcount='git shortlog -sn' compdef gcount=git +alias gcl='git config --list' alias gcp='git cherry-pick' compdef _git gcp=git-cherry-pick alias glg='git log --stat --max-count=5' From dbef8b1a92f789f4109435a3b7278f899e328767 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 10:39:05 +0200 Subject: [PATCH 032/330] Add helper to get the value of an alias only --- lib/functions.zsh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/functions.zsh b/lib/functions.zsh index d2dcadd0c..b4d89a64a 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -15,3 +15,33 @@ function take() { cd $1 } +# +# Get the value of an alias. +# +# Arguments: +# 1. alias - The alias to get its value from +# STDOUT: +# The value of alias $1 (if it has one). +# Return value: +# 0 if the alias was found, +# 1 if it does not exist +# +function alias_value() { + alias "$1" | sed "s/^$1='\(.*\)'$/\1/" + test $(alias "$1") +} + +# +# Try to get the value of an alias, +# otherwise return the input. +# +# Arguments: +# 1. alias - The alias to get its value from +# STDOUT: +# The value of alias $1, or $1 if there is no alias $1. +# Return value: +# Always 0 +# +function try_alias_value() { + alias_value "$1" || echo "$1" +} \ No newline at end of file From 8f71efc09b42d69cc053649fade92485d282a561 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 10:39:31 +0200 Subject: [PATCH 033/330] Add helper to easily define default values for variables and env variables. --- lib/functions.zsh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/functions.zsh b/lib/functions.zsh index b4d89a64a..3770d4e82 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -44,4 +44,32 @@ function alias_value() { # function try_alias_value() { alias_value "$1" || echo "$1" +} + +# +# Set variable "$1" to default value "$2" if "$1" is not yet defined. +# +# Arguments: +# 1. name - The variable to set +# 2. val - The default value +# Return value: +# 0 if the variable exists, 3 if it was set +# +function default() { + test `typeset +m "$1"` && return 0 + typeset -g "$1"="$2" && return 3 +} + +# +# Set enviroment variable "$1" to default value "$2" if "$1" is not yet defined. +# +# Arguments: +# 1. name - The env variable to set +# 2. val - The default value +# Return value: +# 0 if the env variable exists, 3 if it was set +# +function env_default() { + env | grep -q "^$1=" && return 0 + export "$1=$2" && return 3 } \ No newline at end of file From fcb153c2e32641bb13649bfdd8d3bbe8c17798c8 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 00:05:50 +0200 Subject: [PATCH 034/330] Add the singlechar plugin --- plugins/singlechar/singlechar.plugin.zsh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 plugins/singlechar/singlechar.plugin.zsh diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh new file mode 100644 index 000000000..1440a6237 --- /dev/null +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -0,0 +1,24 @@ +########################### +# Settings +# +# These can be overwritten any time. +# If they are not set yet, they will be +# overwritten with their default values + +default GREP grep +default ROOT sudo + +########################### +# Alias + +alias y='"$GREP" -i' +alias n='"$GREP" -vi' + +alias x='xargs' +alias xy='xargs "$GREP" -i' +alias xn='xargs "$GREP" -iv' + +alias s='"$ROOT"' +alias sx='"$ROOT" xargs' +alias sxy='"$ROOT" xargs "$GREP" -i' +alias sxn='"$ROOT" xargs "$GREP" -iv' \ No newline at end of file From f970d8206e9245eb2f78728623fdfff354402644 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 10:52:46 +0200 Subject: [PATCH 035/330] Add cat (+write, +append), enhance formatting --- plugins/singlechar/singlechar.plugin.zsh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 1440a6237..3635dd19a 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -11,14 +11,35 @@ default ROOT sudo ########################### # Alias +# CAT, GREP + alias y='"$GREP" -i' alias n='"$GREP" -vi' +alias c='cat' +alias w='cat >' +alias a='cat >>' + +# XARGS + alias x='xargs' + alias xy='xargs "$GREP" -i' alias xn='xargs "$GREP" -iv' +alias xc='xargs cat' +alias xw='xargs cat >' +alias xa='xargs cat >>' + +# SUDO + alias s='"$ROOT"' + alias sx='"$ROOT" xargs' + alias sxy='"$ROOT" xargs "$GREP" -i' -alias sxn='"$ROOT" xargs "$GREP" -iv' \ No newline at end of file +alias sxn='"$ROOT" xargs "$GREP" -iv' + +alias sxc='"$ROOT" xargs cat' +alias sxw='"$ROOT" xargs cat >' +alias sxa='"$ROOT" xargs cat >>' From 4c0b5c71d5332f6961156fc1cda0ab9cc54b8787 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 10:58:55 +0200 Subject: [PATCH 036/330] Add a description --- plugins/singlechar/singlechar.plugin.zsh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 3635dd19a..06fa78b9c 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -1,6 +1,16 @@ +################################################################################ +# FILE: singlechar.plugin.zsh +# DESCRIPTION: oh-my-zsh plugin file. +# AUTHOR: Michael Varner (musikmichael@web.de) +# VERSION: 1.0.0 +# +# This plugin adds single char shortcuts (and combinations) for some commands. +# +################################################################################ + ########################### # Settings -# + # These can be overwritten any time. # If they are not set yet, they will be # overwritten with their default values From e0b271264460219e624ac378c40421490a8e193c Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 16:03:48 +0200 Subject: [PATCH 037/330] Add download shortcuts --- plugins/singlechar/singlechar.plugin.zsh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 06fa78b9c..f4517d274 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -17,11 +17,13 @@ default GREP grep default ROOT sudo +default WGET wget +default CURL curl ########################### # Alias -# CAT, GREP +# CAT, GREP, CURL, WGET alias y='"$GREP" -i' alias n='"$GREP" -vi' @@ -30,6 +32,9 @@ alias c='cat' alias w='cat >' alias a='cat >>' +alias d='"$WGET"' +alias u='"$CURL"' + # XARGS alias x='xargs' @@ -41,6 +46,9 @@ alias xc='xargs cat' alias xw='xargs cat >' alias xa='xargs cat >>' +alias xd='xargs "$WGET"' +alias xu='xargs "$CURL"' + # SUDO alias s='"$ROOT"' @@ -53,3 +61,6 @@ alias sxn='"$ROOT" xargs "$GREP" -iv' alias sxc='"$ROOT" xargs cat' alias sxw='"$ROOT" xargs cat >' alias sxa='"$ROOT" xargs cat >>' + +alias sxd='"$ROOT" xargs "$WGET"' +alias sxu='"$ROOT" xargs "$CURL"' \ No newline at end of file From 712f850f3a860e87458d35a7d8ebba13b9975a06 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 16:07:05 +0200 Subject: [PATCH 038/330] Add pager shortcuts --- plugins/singlechar/singlechar.plugin.zsh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index f4517d274..aadcde423 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -20,6 +20,8 @@ default ROOT sudo default WGET wget default CURL curl +env_defaul PAGER less + ########################### # Alias @@ -32,6 +34,8 @@ alias c='cat' alias w='cat >' alias a='cat >>' +alias p='"$PAGER"' + alias d='"$WGET"' alias u='"$CURL"' @@ -46,6 +50,8 @@ alias xc='xargs cat' alias xw='xargs cat >' alias xa='xargs cat >>' +alias xp='xargs "$PAGER"' + alias xd='xargs "$WGET"' alias xu='xargs "$CURL"' @@ -62,5 +68,7 @@ alias sxc='"$ROOT" xargs cat' alias sxw='"$ROOT" xargs cat >' alias sxa='"$ROOT" xargs cat >>' +alias sxp='"$ROOT" xargs "$PAGER"' + alias sxd='"$ROOT" xargs "$WGET"' alias sxu='"$ROOT" xargs "$CURL"' \ No newline at end of file From 6f5599474f31516cec641242c0bdb391d8930cf2 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 16:08:40 +0200 Subject: [PATCH 039/330] Add sudo without xargs shortcuts --- plugins/singlechar/singlechar.plugin.zsh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index aadcde423..0a815736d 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -59,6 +59,19 @@ alias xu='xargs "$CURL"' alias s='"$ROOT"' +alias sy='"$ROOT" "$GREP" -i' +alias sn='"$ROOT" "$GREP" -iv' + +alias sc='"$ROOT" cat' +alias sw='"$ROOT" cat >' +alias sa='"$ROOT" cat >>' + +alias sp='"$ROOT" "$PAGER"' + +alias sd='"$ROOT" "$WGET"' + +# SUDO-XARGS + alias sx='"$ROOT" xargs' alias sxy='"$ROOT" xargs "$GREP" -i' From 88f3f28e8c634e54e68769d72f2ec40f7c5d35f9 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 16:10:52 +0200 Subject: [PATCH 040/330] env_defaul=>env_default --- plugins/singlechar/singlechar.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 0a815736d..b6c9665c5 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -20,7 +20,7 @@ default ROOT sudo default WGET wget default CURL curl -env_defaul PAGER less +env_default PAGER less ########################### # Alias From 67290ffca93d3fb7ebeb9253cc551a5632299c16 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 5 May 2012 16:17:26 +0200 Subject: [PATCH 041/330] Enhance writing routines --- plugins/singlechar/singlechar.plugin.zsh | 40 ++++++++++++++++-------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index b6c9665c5..ea9b34324 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -30,15 +30,20 @@ env_default PAGER less alias y='"$GREP" -i' alias n='"$GREP" -vi' -alias c='cat' -alias w='cat >' -alias a='cat >>' +alias w='echo >' +alias a='echo >>' +alias c='cat' alias p='"$PAGER"' alias d='"$WGET"' alias u='"$CURL"' +# enhanced writeing + +alias w:='cat >' +alias a:='cat >>' + # XARGS alias x='xargs' @@ -46,15 +51,18 @@ alias x='xargs' alias xy='xargs "$GREP" -i' alias xn='xargs "$GREP" -iv' -alias xc='xargs cat' -alias xw='xargs cat >' -alias xa='xargs cat >>' +alias xw='xargs echo >' +alias xa='xargs echo >>' +alias xc='xargs cat' alias xp='xargs "$PAGER"' alias xd='xargs "$WGET"' alias xu='xargs "$CURL"' +alias xw:='xargs cat >' +alias xa:='xargs >>' + # SUDO alias s='"$ROOT"' @@ -62,14 +70,17 @@ alias s='"$ROOT"' alias sy='"$ROOT" "$GREP" -i' alias sn='"$ROOT" "$GREP" -iv' -alias sc='"$ROOT" cat' -alias sw='"$ROOT" cat >' -alias sa='"$ROOT" cat >>' +alias sw='"$ROOT" echo >' +alias sa='"$ROOT" echo >>' +alias sc='"$ROOT" cat' alias sp='"$ROOT" "$PAGER"' alias sd='"$ROOT" "$WGET"' +alias sw:='"$ROOT" cat >' +alias sa:='"$ROOT" cat >>' + # SUDO-XARGS alias sx='"$ROOT" xargs' @@ -77,11 +88,14 @@ alias sx='"$ROOT" xargs' alias sxy='"$ROOT" xargs "$GREP" -i' alias sxn='"$ROOT" xargs "$GREP" -iv' -alias sxc='"$ROOT" xargs cat' -alias sxw='"$ROOT" xargs cat >' -alias sxa='"$ROOT" xargs cat >>' +alias sxw='"$ROOT" xargs echo >' +alias sxa='"$ROOT" xargs echo >>' +alias sxc='"$ROOT" xargs cat' alias sxp='"$ROOT" xargs "$PAGER"' alias sxd='"$ROOT" xargs "$WGET"' -alias sxu='"$ROOT" xargs "$CURL"' \ No newline at end of file +alias sxu='"$ROOT" xargs "$CURL"' + +alias sxw:='"$ROOT" xargs cat >' +alias sxa:='"$ROOT" xargs cat >>' \ No newline at end of file From 3af5cf3b1d40312101dae89c1d43c9d6afef8fcd Mon Sep 17 00:00:00 2001 From: mapc Date: Thu, 10 May 2012 09:21:50 +0200 Subject: [PATCH 042/330] Add file finders --- plugins/singlechar/singlechar.plugin.zsh | 26 +++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index ea9b34324..cd5191cbd 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -30,6 +30,12 @@ env_default PAGER less alias y='"$GREP" -i' alias n='"$GREP" -vi' +alias f.='find .' +alias f:='find' + +alias f='"$GREP" -li' +alias fn='"$GREP" -lvi' + alias w='echo >' alias a='echo >>' @@ -39,7 +45,7 @@ alias p='"$PAGER"' alias d='"$WGET"' alias u='"$CURL"' -# enhanced writeing +# enhanced writing alias w:='cat >' alias a:='cat >>' @@ -51,6 +57,12 @@ alias x='xargs' alias xy='xargs "$GREP" -i' alias xn='xargs "$GREP" -iv' +alias xf.='xargs find .' +alias xf:='xargs find' + +alias xf='xargs "$GREP" -li' +alias xfn='xargs "$GREP" -lvi' + alias xw='xargs echo >' alias xa='xargs echo >>' @@ -70,6 +82,12 @@ alias s='"$ROOT"' alias sy='"$ROOT" "$GREP" -i' alias sn='"$ROOT" "$GREP" -iv' +alias xf.='"$ROOT" find .' +alias xf:='"$ROOT" find' + +alias xf='"$ROOT" "$GREP" -li' +alias xfn='"$ROOT" "$GREP" -lvi' + alias sw='"$ROOT" echo >' alias sa='"$ROOT" echo >>' @@ -88,6 +106,12 @@ alias sx='"$ROOT" xargs' alias sxy='"$ROOT" xargs "$GREP" -i' alias sxn='"$ROOT" xargs "$GREP" -iv' +alias sxf.='"$ROOT" xargs find .' +alias sxf:='"$ROOT" xargs find' + +alias sxf='"$ROOT" xargs "$GREP" -li' +alias sxfn='"$ROOT" xargs "$GREP" -lvi' + alias sxw='"$ROOT" xargs echo >' alias sxa='"$ROOT" xargs echo >>' From 7a338ab6a5208a9f9b9fcbf69d225159fc4ae600 Mon Sep 17 00:00:00 2001 From: mapc Date: Thu, 10 May 2012 09:35:29 +0200 Subject: [PATCH 043/330] Add Man --- plugins/singlechar/singlechar.plugin.zsh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index cd5191cbd..d44a0e80f 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -42,6 +42,8 @@ alias a='echo >>' alias c='cat' alias p='"$PAGER"' +alias m='man' + alias d='"$WGET"' alias u='"$CURL"' @@ -69,6 +71,8 @@ alias xa='xargs echo >>' alias xc='xargs cat' alias xp='xargs "$PAGER"' +alias xm='xargs man' + alias xd='xargs "$WGET"' alias xu='xargs "$CURL"' @@ -82,11 +86,11 @@ alias s='"$ROOT"' alias sy='"$ROOT" "$GREP" -i' alias sn='"$ROOT" "$GREP" -iv' -alias xf.='"$ROOT" find .' -alias xf:='"$ROOT" find' +alias sf.='"$ROOT" find .' +alias sf:='"$ROOT" find' -alias xf='"$ROOT" "$GREP" -li' -alias xfn='"$ROOT" "$GREP" -lvi' +alias sf='"$ROOT" "$GREP" -li' +alias sfn='"$ROOT" "$GREP" -lvi' alias sw='"$ROOT" echo >' alias sa='"$ROOT" echo >>' @@ -94,6 +98,8 @@ alias sa='"$ROOT" echo >>' alias sc='"$ROOT" cat' alias sp='"$ROOT" "$PAGER"' +alias sm='"$ROOT" man' + alias sd='"$ROOT" "$WGET"' alias sw:='"$ROOT" cat >' @@ -118,6 +124,8 @@ alias sxa='"$ROOT" xargs echo >>' alias sxc='"$ROOT" xargs cat' alias sxp='"$ROOT" xargs "$PAGER"' +alias sxm='"$ROOT" xargs man' + alias sxd='"$ROOT" xargs "$WGET"' alias sxu='"$ROOT" xargs "$CURL"' From d573cddcc937be8c253b97b7343a0670aea3e9b7 Mon Sep 17 00:00:00 2001 From: mapc Date: Tue, 29 May 2012 03:07:15 +0200 Subject: [PATCH 044/330] Enhance file find --- plugins/singlechar/singlechar.plugin.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index d44a0e80f..4d3e16b12 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -30,7 +30,7 @@ env_default PAGER less alias y='"$GREP" -i' alias n='"$GREP" -vi' -alias f.='find .' +alias f.='find . | "$GREP"' alias f:='find' alias f='"$GREP" -li' @@ -59,7 +59,7 @@ alias x='xargs' alias xy='xargs "$GREP" -i' alias xn='xargs "$GREP" -iv' -alias xf.='xargs find .' +alias xf.='xargs find . | "$GREP"' alias xf:='xargs find' alias xf='xargs "$GREP" -li' @@ -86,7 +86,7 @@ alias s='"$ROOT"' alias sy='"$ROOT" "$GREP" -i' alias sn='"$ROOT" "$GREP" -iv' -alias sf.='"$ROOT" find .' +alias sf.='"$ROOT" find . | "$GREP"' alias sf:='"$ROOT" find' alias sf='"$ROOT" "$GREP" -li' @@ -112,7 +112,7 @@ alias sx='"$ROOT" xargs' alias sxy='"$ROOT" xargs "$GREP" -i' alias sxn='"$ROOT" xargs "$GREP" -iv' -alias sxf.='"$ROOT" xargs find .' +alias sxf.='"$ROOT" xargs find . | "$GREP"' alias sxf:='"$ROOT" xargs find' alias sxf='"$ROOT" xargs "$GREP" -li' From b1977d4049cbb7fd203f53511c1067a17150d3e4 Mon Sep 17 00:00:00 2001 From: mapc Date: Sun, 13 May 2012 10:22:45 +0200 Subject: [PATCH 045/330] Make grep recoursive --- plugins/singlechar/singlechar.plugin.zsh | 28 ++++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 4d3e16b12..58837407d 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -27,14 +27,14 @@ env_default PAGER less # CAT, GREP, CURL, WGET -alias y='"$GREP" -i' -alias n='"$GREP" -vi' +alias y='"$GREP" -Ri' +alias n='"$GREP" -Rvi' alias f.='find . | "$GREP"' alias f:='find' -alias f='"$GREP" -li' -alias fn='"$GREP" -lvi' +alias f='"$GREP" -Rli' +alias fn='"$GREP" -Rlvi' alias w='echo >' alias a='echo >>' @@ -56,14 +56,14 @@ alias a:='cat >>' alias x='xargs' -alias xy='xargs "$GREP" -i' -alias xn='xargs "$GREP" -iv' +alias xy='xargs "$GREP" -Ri' +alias xn='xargs "$GREP" -Riv' alias xf.='xargs find . | "$GREP"' alias xf:='xargs find' -alias xf='xargs "$GREP" -li' -alias xfn='xargs "$GREP" -lvi' +alias xf='xargs "$GREP" -Rli' +alias xfn='xargs "$GREP" -Rlvi' alias xw='xargs echo >' alias xa='xargs echo >>' @@ -83,14 +83,14 @@ alias xa:='xargs >>' alias s='"$ROOT"' -alias sy='"$ROOT" "$GREP" -i' -alias sn='"$ROOT" "$GREP" -iv' +alias sy='"$ROOT" "$GREP" -Ri' +alias sn='"$ROOT" "$GREP" -Riv' alias sf.='"$ROOT" find . | "$GREP"' alias sf:='"$ROOT" find' -alias sf='"$ROOT" "$GREP" -li' -alias sfn='"$ROOT" "$GREP" -lvi' +alias sf='"$ROOT" "$GREP" -Rli' +alias sfn='"$ROOT" "$GREP" -Rlvi' alias sw='"$ROOT" echo >' alias sa='"$ROOT" echo >>' @@ -109,8 +109,8 @@ alias sa:='"$ROOT" cat >>' alias sx='"$ROOT" xargs' -alias sxy='"$ROOT" xargs "$GREP" -i' -alias sxn='"$ROOT" xargs "$GREP" -iv' +alias sxy='"$ROOT" xargs "$GREP" -Ri' +alias sxn='"$ROOT" xargs "$GREP" -Riv' alias sxf.='"$ROOT" xargs find . | "$GREP"' alias sxf:='"$ROOT" xargs find' From 0f35726a003e133daf8879aa05ba276ed565c0dd Mon Sep 17 00:00:00 2001 From: mapc Date: Sun, 13 May 2012 10:23:20 +0200 Subject: [PATCH 046/330] Make (s)xf not search in current dir --- plugins/singlechar/singlechar.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/singlechar/singlechar.plugin.zsh b/plugins/singlechar/singlechar.plugin.zsh index 58837407d..44bd998aa 100644 --- a/plugins/singlechar/singlechar.plugin.zsh +++ b/plugins/singlechar/singlechar.plugin.zsh @@ -59,7 +59,7 @@ alias x='xargs' alias xy='xargs "$GREP" -Ri' alias xn='xargs "$GREP" -Riv' -alias xf.='xargs find . | "$GREP"' +alias xf.='xargs find | "$GREP"' alias xf:='xargs find' alias xf='xargs "$GREP" -Rli' @@ -112,7 +112,7 @@ alias sx='"$ROOT" xargs' alias sxy='"$ROOT" xargs "$GREP" -Ri' alias sxn='"$ROOT" xargs "$GREP" -Riv' -alias sxf.='"$ROOT" xargs find . | "$GREP"' +alias sxf.='"$ROOT" xargs find | "$GREP"' alias sxf:='"$ROOT" xargs find' alias sxf='"$ROOT" xargs "$GREP" -li' From b7bad0f69b064225a4557667eb1e95d3df8ad819 Mon Sep 17 00:00:00 2001 From: mapc Date: Sun, 6 May 2012 00:05:22 +0200 Subject: [PATCH 047/330] Add the fastfile plugin --- plugins/fastfile/fastfile.plugin.zsh | 128 +++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 plugins/fastfile/fastfile.plugin.zsh diff --git a/plugins/fastfile/fastfile.plugin.zsh b/plugins/fastfile/fastfile.plugin.zsh new file mode 100644 index 000000000..51e48df5b --- /dev/null +++ b/plugins/fastfile/fastfile.plugin.zsh @@ -0,0 +1,128 @@ +################################################################################ +# FILE: fastfile.plugin.zsh +# DESCRIPTION: oh-my-zsh plugin file. +# AUTHOR: Michael Varner (musikmichael@web.de) +# VERSION: 1.0.0 +# +# This plugin adds the ability to on the fly generate and access file shortcuts. +# +################################################################################ + +########################### +# Settings + +# These can be overwritten any time. +# If they are not set yet, they will be +# overwritten with their default values + +default fastfile_dir "${HOME}/.fastfile/" +default fastfile_var_prefix "§" + +########################### +# Impl + +# +# Generate a shortcut +# +# Arguments: +# 1. name - The name of the shortcut (default: name of the file) +# 2. file - The file or directory to make the shortcut for +# STDOUT: +# => fastfle_print +# +function fastfile() { + test "$2" || 2="." + 2=$(readlink -f "$2") + test "$1" || 1="$(basename "$2")" + + mkdir -p "${fastfile_dir}" + echo "$2" > "$(fastfile_resolv "$1")" + + fastfile_sync + fastfile_print "$1" +} + +# +# Resolve the location of a shortcut file (the database file, where the value is written!) +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# The path +# +function fastfile_resolv() { + echo "${fastfile_dir}${1}" +} + +# +# Get the real path of a shortcut +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# The path +# +function fastfile_get() { + cat "$(fastfile_resolv "$1")" +} + +# +# Print a shortcut +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# Name and value of the shortcut +# +function fastfile_print() { + echo "${fastfile_var_prefix}${1} -> $(fastfile_get "$1")" +} + +# +# List all shortcuts +# +# STDOUT: +# (=> fastfle_print) for each shortcut +# +function fastfile_ls() { + for f in $(ls "${fastfile_dir}"); do + fastfile_print "$f" + done | column -t +} + +# +# Remove a shortcut +# +# Arguments: +# 1. name - The name of the shortcut (default: name of the file) +# 2. file - The file or directory to make the shortcut for +# STDOUT: +# => fastfle_print +# +function fastfile_rm() { + fastfile_print "$1" + rm "$(fastfile_resolv "$1")" +} + +# +# Generate the aliases for the shortcuts +# +function fastfile_sync() { + for f in $(ls "${fastfile_dir}"); do + alias -g "${fastfile_var_prefix}${f}"="$(fastfile_get "$f")" + done +} + +################################## +# Shortcuts + +alias ff=fastfile +alias ffp=fastfile_print +alias ffrm=fastfile_rm +alias ffls=fastfile_ls +alias ffsync=fastfile_sync + +################################## +# Init + +fastfile_sync \ No newline at end of file From 8c18f007131eb242eacae16db85b07f986b08063 Mon Sep 17 00:00:00 2001 From: mapc Date: Sun, 6 May 2012 22:26:12 +0200 Subject: [PATCH 048/330] Enhance handleing of spaces in filenames --- plugins/fastfile/fastfile.plugin.zsh | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/plugins/fastfile/fastfile.plugin.zsh b/plugins/fastfile/fastfile.plugin.zsh index 51e48df5b..775e9483e 100644 --- a/plugins/fastfile/fastfile.plugin.zsh +++ b/plugins/fastfile/fastfile.plugin.zsh @@ -32,14 +32,17 @@ default fastfile_var_prefix "§" # function fastfile() { test "$2" || 2="." - 2=$(readlink -f "$2") - test "$1" || 1="$(basename "$2")" + file=$(readlink -f "$2") + + test "$1" || 1="$(basename "$file")" + name=$(echo "$1" | tr " " "_") + mkdir -p "${fastfile_dir}" - echo "$2" > "$(fastfile_resolv "$1")" + echo "$file" > "$(fastfile_resolv "$name")" fastfile_sync - fastfile_print "$1" + fastfile_print "$name" } # @@ -85,9 +88,13 @@ function fastfile_print() { # (=> fastfle_print) for each shortcut # function fastfile_ls() { - for f in $(ls "${fastfile_dir}"); do - fastfile_print "$f" - done | column -t + for f in "${fastfile_dir}"/*; do + file=`basename "$f"` # To enable simpler handeling of spaces in file names + varkey=`echo "$file" | tr " " "_"` + + # Special format for colums + echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")" + done | column -t -s "|" } # @@ -108,8 +115,11 @@ function fastfile_rm() { # Generate the aliases for the shortcuts # function fastfile_sync() { - for f in $(ls "${fastfile_dir}"); do - alias -g "${fastfile_var_prefix}${f}"="$(fastfile_get "$f")" + for f in "${fastfile_dir}"/*; do + file=`basename "$f"` # To enable simpler handeling of spaces in file names + varkey=`echo "$file" | tr " " "_"` + + alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'" done } From ce4431a160350e4d2d384251a9471cfed493b834 Mon Sep 17 00:00:00 2001 From: Kir Shatrov Date: Mon, 4 Jun 2012 11:50:42 +0300 Subject: [PATCH 049/330] Added spin to bundled_commands (Bundler plugin) --- plugins/bundler/bundler.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index 2b80b76e6..7d2d1dcfd 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -6,7 +6,7 @@ alias bu="bundle update" # The following is based on https://github.com/gma/bundler-exec -bundled_commands=(annotate cap capify cucumber ey foreman guard middleman nanoc rackup rainbows rails rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails) +bundled_commands=(annotate cap capify cucumber ey foreman guard middleman nanoc rackup rainbows rails rake rspec ruby shotgun spec spin spork thin thor unicorn unicorn_rails) ## Functions From 18cb11903f8208403a0ba5a8f2ece1a0bd4ef9a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20M-B?= Date: Wed, 27 Jun 2012 00:12:21 +0200 Subject: [PATCH 050/330] Comment l alias --- lib/aliases.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/aliases.zsh b/lib/aliases.zsh index 0555be264..d33d71cf0 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -16,7 +16,7 @@ alias history='fc -l 1' # List direcory contents alias lsa='ls -lah' -alias l='ls -la' +#alias l='ls -la' alias ll='ls -l' alias sl=ls # often screw this up From 0aa4456d5657c957eaf0c54f6eb24e58b9149d4b Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 30 Jun 2012 01:42:35 +0200 Subject: [PATCH 051/330] Add completion instructions for apt/aptitude commands --- plugins/debian/debian.plugin.zsh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index 39d3ef36a..22803ee1b 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -107,6 +107,20 @@ else ?not(~n`uname -r`))'\'' root' fi +# Completion ################################################################ + +# TODO: These definitions won't change between apt-get and uptitude automaticaly +compdef _apt aac="$apt_pref autoclean" +compdef _apt abd="$apt_pref build-dep" +compdef _apt ac="$apt_pref clean" +compdef _apt ad="$apt_pref update" +compdef _apt afu="$apt_pref update" +compdef _apt ag="$apt_pref upgrade" +compdef _apt ai="$apt_pref install" +compdef _apt ail="$apt_pref install" +compdef _apt ap="$apt_pref purge" +compdef _apt ar="$apt_pref remove" +compdef _apt ads="apt-get dselect-upgrade" # Misc. ##################################################################### # print all installed packages From 7d24f4cd407d61a17bd88157c594215ecc3b0bcd Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 30 Jun 2012 01:42:47 +0200 Subject: [PATCH 052/330] Use a static apt-get where only apt-get works --- plugins/debian/debian.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index 22803ee1b..55e2be06c 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -56,7 +56,7 @@ if [[ $use_sudo -eq 1 ]]; then alias ar='sudo $apt_pref remove' # apt-get only - alias ads='sudo $apt_pref dselect-upgrade' + alias ads='sudo apt-get dselect-upgrade' # Install all .deb files in the current directory. # Warning: you will need to put the glob in single quotes if you use: From e3c87611fc75ff5149b13fdd84ee8c87c7c1d129 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 30 Jun 2012 01:44:08 +0200 Subject: [PATCH 053/330] Add myself to the authors list --- plugins/debian/debian.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index 55e2be06c..c556cb0b5 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -1,6 +1,7 @@ # Authors: # https://github.com/AlexBio # https://github.com/dbb +# https://github.com/Mappleconfusers # # Debian-related zsh aliases and functions for zsh From 5f37649508f6b6323e78249671d7897af8076886 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 30 Jun 2012 04:44:26 +0200 Subject: [PATCH 054/330] Dynamicly generate completion functions to support changing apt_pref --- plugins/debian/debian.plugin.zsh | 45 +++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index c556cb0b5..b6f9fd2bf 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -110,18 +110,39 @@ fi # Completion ################################################################ -# TODO: These definitions won't change between apt-get and uptitude automaticaly -compdef _apt aac="$apt_pref autoclean" -compdef _apt abd="$apt_pref build-dep" -compdef _apt ac="$apt_pref clean" -compdef _apt ad="$apt_pref update" -compdef _apt afu="$apt_pref update" -compdef _apt ag="$apt_pref upgrade" -compdef _apt ai="$apt_pref install" -compdef _apt ail="$apt_pref install" -compdef _apt ap="$apt_pref purge" -compdef _apt ar="$apt_pref remove" -compdef _apt ads="apt-get dselect-upgrade" +# +# Registers a compdef for $1 that calls $apt_pref with the commands $2 +# To do that it creates a new completion function called _apt_pref_$2 +# +apt_pref_compdef() { + local f fb + f="_apt_pref_${2}" + + fb="function ${f}() { + shift words; + service=\"\$apt_pref\"; + words=(\"\$apt_pref\" '$2' \$words); + ((CURRENT++)) + test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt + }" + + eval "$fb" + echo "$fb" + + compdef "$f" "$1" +} + +apt_pref_compdef aac "autoclean" +apt_pref_compdef abd "build-dep" +apt_pref_compdef ac "clean" +apt_pref_compdef ad "update" +apt_pref_compdef afu "update" +apt_pref_compdef ag "upgrade" +apt_pref_compdef ai "install" +apt_pref_compdef ail "install" +apt_pref_compdef ap "purge" +apt_pref_compdef ar "remove" +apt_pref_compdef ads "dselect-upgrade" # Misc. ##################################################################### # print all installed packages From 1b36c1beae21dafead692f83a099bdd69a0c6e50 Mon Sep 17 00:00:00 2001 From: mapc Date: Sat, 30 Jun 2012 05:37:10 +0200 Subject: [PATCH 055/330] Remove debug info --- plugins/debian/debian.plugin.zsh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index b6f9fd2bf..722b83c30 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -118,16 +118,13 @@ apt_pref_compdef() { local f fb f="_apt_pref_${2}" - fb="function ${f}() { + eval "function ${f}() { shift words; service=\"\$apt_pref\"; words=(\"\$apt_pref\" '$2' \$words); ((CURRENT++)) test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt }" - - eval "$fb" - echo "$fb" compdef "$f" "$1" } From 0b2da8f11b2e84a73f3fbe019a086da28ae6d2a3 Mon Sep 17 00:00:00 2001 From: Justin Caratzas Date: Wed, 11 Jul 2012 23:40:12 -0400 Subject: [PATCH 056/330] Add very basic virtualenv plugin checks for $VIRTUAL_ENV and provides to basename in a function for the prompt. --- plugins/virtualenv/virtualenv.plugin.zsh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 plugins/virtualenv/virtualenv.plugin.zsh diff --git a/plugins/virtualenv/virtualenv.plugin.zsh b/plugins/virtualenv/virtualenv.plugin.zsh new file mode 100644 index 000000000..e8458389f --- /dev/null +++ b/plugins/virtualenv/virtualenv.plugin.zsh @@ -0,0 +1,9 @@ +function virtualenv_prompt_info(){ + local virtualenv_path="$VIRTUAL_ENV" + if [[ -n $virtualenv_path ]]; then + local virtualenv_name=`basename $virtualenv_path` + printf "%s[%s] " "%{${fg[yellow]}%}" $virtualenv_name + fi +} + +export VIRTUAL_ENV_DISABLE_PROMPT=1 From 5001412f6d127d8360ea8e0d775e7184aae2091d Mon Sep 17 00:00:00 2001 From: Bob Maerten Date: Thu, 12 Jul 2012 14:19:10 +0300 Subject: [PATCH 057/330] vagrant uses 'ssh-config' command, not 'ssh_config' --- plugins/vagrant/_vagrant | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant index 483b29c53..1eed7f988 100644 --- a/plugins/vagrant/_vagrant +++ b/plugins/vagrant/_vagrant @@ -15,7 +15,7 @@ _1st_arguments=( 'reload:Reload the vagrant environment' 'resume:Resumes a suspend vagrant environment' 'ssh:SSH into the currently running environment' - 'ssh_config:outputs .ssh/config valid syntax for connecting to this environment via ssh.' + 'ssh-config:outputs .ssh/config valid syntax for connecting to this environment via ssh.' 'status:Shows the status of the current Vagrant environment.' 'suspend:Suspends the currently running vagrant environment' 'up:Creates the vagrant environment' From 3fea7c3b278ccf73421cbdcc61a1c1dd6d4a0a70 Mon Sep 17 00:00:00 2001 From: Andrew Vit Date: Sun, 6 Nov 2011 04:07:16 -0800 Subject: [PATCH 058/330] Added avit theme --- themes/avit.zsh-theme | 120 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 themes/avit.zsh-theme diff --git a/themes/avit.zsh-theme b/themes/avit.zsh-theme new file mode 100644 index 000000000..51f5e375a --- /dev/null +++ b/themes/avit.zsh-theme @@ -0,0 +1,120 @@ +# +# Author:: Andrew Vit () +# +# AVIT ZSH Theme +# +# Copyright 2011, Andrew Vit +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +PROMPT=' +$(_user_host)${_current_dir} $(git_prompt_info) $(_ruby_version) +▶ ' + +PROMPT2='%{$fg[grey]%}◀%{$reset_color%} ' + +RPROMPT='$(_vi_status)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}' + +local _current_dir="%{$fg[blue]%}%3~%{$reset_color%} " +local _return_status="%{$fg[red]%}%(?..⍉)%{$reset_color%}" +local _hist_no="%{$fg[grey]%}%h%{$reset_color%}" + +function _user_host() { + if [[ -n $SSH_CONNECTION ]]; then + me="%n@%m" + elif [[ $LOGNAME != $USER ]]; then + me="%n" + fi + if [[ -n $me ]]; then + echo "%{$fg[cyan]%}$me%{$reset_color%}:" + fi +} + +function _vi_status() { + if {echo $fpath | grep -q "plugins/vi-mode"}; then + echo "$(vi_mode_prompt_info)" + fi +} + +function _ruby_version() { + if {echo $fpath | grep -q "plugins/rvm"}; then + echo "%{$fg[grey]%}$(rvm_prompt_info)%{$reset_color%}" + fi +} + +# Determine the time since last commit. If branch is clean, +# use a neutral color, otherwise colors will vary according to time. +function _git_time_since_commit() { + if git rev-parse --git-dir > /dev/null 2>&1; then + # Only proceed if there is actually a commit. + if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then + # Get the last commit. + last_commit=$(git log --pretty=format:'%at' -1 2> /dev/null) + now=$(date +%s) + seconds_since_last_commit=$((now-last_commit)) + + # Totals + minutes=$((seconds_since_last_commit / 60)) + hours=$((seconds_since_last_commit/3600)) + + # Sub-hours and sub-minutes + days=$((seconds_since_last_commit / 86400)) + sub_hours=$((hours % 24)) + sub_minutes=$((minutes % 60)) + + if [ $hours -gt 24 ]; then + commit_age="${days}d" + elif [ $minutes -gt 60 ]; then + commit_age="${sub_hours}h${sub_minutes}m" + else + commit_age="${minutes}m" + fi + + color=$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL + echo "$color$commit_age%{$reset_color%}" + fi + fi +} + +if [[ $USER == "root" ]]; then + CARETCOLOR="red" +else + CARETCOLOR="white" +fi + +MODE_INDICATOR="%{$fg_bold[yellow]%}❮%{$reset_color%}%{$fg[yellow]%}❮❮%{$reset_color%}" + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" + +ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}✗%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}✔%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%}✚ " +ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%}⚑ " +ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%}✖ " +ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%}▴ " +ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[cyan]%}§ " +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[grey]%}◒ " + +# Colors vary depending on time lapsed. +ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}" +ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}" +ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}" +ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[grey]%}" + +# LS colors, made with http://geoff.greer.fm/lscolors/ +export LSCOLORS="exfxcxdxbxegedabagacad" +export LS_COLORS='di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:' +export GREP_COLOR='1;33' + From 9ee4b9c8f7b21db2c20500cacd72471e8cdbf6a5 Mon Sep 17 00:00:00 2001 From: oemer Date: Thu, 26 Jul 2012 16:05:03 +0200 Subject: [PATCH 059/330] Added go completion script. Taken from /misc/zsh/go --- plugins/go/go.plugin.zsh | 151 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 plugins/go/go.plugin.zsh diff --git a/plugins/go/go.plugin.zsh b/plugins/go/go.plugin.zsh new file mode 100644 index 000000000..23afa9656 --- /dev/null +++ b/plugins/go/go.plugin.zsh @@ -0,0 +1,151 @@ +# install in /etc/zsh/zshrc or your personal .zshrc + +# gc +prefixes=(5 6 8) +for p in $prefixes; do + compctl -g "*.${p}" ${p}l + compctl -g "*.go" ${p}g +done + +# standard go tools +compctl -g "*.go" gofmt + +# gccgo +compctl -g "*.go" gccgo + +# go tool +__go_tool_complete() { + typeset -a commands build_flags + commands+=( + 'build[compile packages and dependencies]' + 'clean[remove object files]' + 'doc[run godoc on package sources]' + 'fix[run go tool fix on packages]' + 'fmt[run gofmt on package sources]' + 'get[download and install packages and dependencies]' + 'help[display help]' + 'install[compile and install packages and dependencies]' + 'list[list packages]' + 'run[compile and run Go program]' + 'test[test packages]' + 'tool[run specified go tool]' + 'version[print Go version]' + 'vet[run go tool vet on packages]' + ) + if (( CURRENT == 2 )); then + # explain go commands + _values 'go tool commands' ${commands[@]} + return + fi + build_flags=( + '-a[force reinstallation of packages that are already up-to-date]' + '-n[print the commands but do not run them]' + "-p[number of parallel builds]:number" + '-x[print the commands]' + "-work[print temporary directory name and keep it]" + "-gcflags[flags for 5g/6g/8g]:flags" + "-ldflags[flags for 5l/6l/8l]:flags" + "-gccgoflags[flags for gccgo]:flags" + ) + __go_list() { + local expl importpaths + declare -a importpaths + importpaths=($(go list ${words[$CURRENT]}... 2>/dev/null)) + _wanted importpaths expl 'import paths' compadd "$@" - "${importpaths[@]}" + } + case ${words[2]} in + clean|doc) + _arguments -s -w : '*:importpaths:__go_list' + ;; + fix|fmt|list|vet) + _alternative ':importpaths:__go_list' ':files:_path_files -g "*.go"' + ;; + install) + _arguments -s -w : ${build_flags[@]} \ + "-v[show package names]" \ + '*:importpaths:__go_list' + ;; + get) + _arguments -s -w : \ + ${build_flags[@]} + ;; + build) + _arguments -s -w : \ + ${build_flags[@]} \ + "-v[show package names]" \ + "-o[output file]:file:_files" \ + "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" + ;; + test) + _arguments -s -w : \ + ${build_flags[@]} \ + "-c[do not run, compile the test binary]" \ + "-i[do not run, install dependencies]" \ + "-v[print test output]" \ + "-x[print the commands]" \ + "-short[use short mode]" \ + "-parallel[number of parallel tests]:number" \ + "-cpu[values of GOMAXPROCS to use]:number list" \ + "-run[run tests and examples matching regexp]:regexp" \ + "-bench[run benchmarks matching regexp]:regexp" \ + "-benchtime[run each benchmark during n seconds]:duration" \ + "-timeout[kill test after that duration]:duration" \ + "-cpuprofile[write CPU profile to file]:file:_files" \ + "-memprofile[write heap profile to file]:file:_files" \ + "-memprofilerate[set heap profiling rate]:number" \ + "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" + ;; + help) + _values "${commands[@]}" \ + 'gopath[GOPATH environment variable]' \ + 'importpath[description of import paths]' \ + 'remote[remote import path syntax]' \ + 'testflag[description of testing flags]' \ + 'testfunc[description of testing functions]' + ;; + run) + _arguments -s -w : \ + ${build_flags[@]} \ + '*:file:_path_files -g "*.go"' + ;; + tool) + if (( CURRENT == 3 )); then + _values "go tool" $(go tool) + return + fi + case ${words[3]} in + [568]g) + _arguments -s -w : \ + '-I[search for packages in DIR]:includes:_path_files -/' \ + '-L[show full path in file:line prints]' \ + '-S[print the assembly language]' \ + '-V[print the compiler version]' \ + '-e[no limit on number of errors printed]' \ + '-h[panic on an error]' \ + '-l[disable inlining]' \ + '-m[print optimization decisions]' \ + '-o[file specify output file]:file' \ + '-p[assumed import path for this code]:importpath' \ + '-u[disable package unsafe]' \ + "*:file:_files -g '*.go'" + ;; + [568]l) + local O=${words[3]%l} + _arguments -s -w : \ + '-o[file specify output file]:file' \ + '-L[search for packages in DIR]:includes:_path_files -/' \ + "*:file:_files -g '*.[ao$O]'" + ;; + dist) + _values "dist tool" banner bootstrap clean env install version + ;; + *) + # use files by default + _files + ;; + esac + ;; + esac +} + +compdef __go_tool_complete go From 682961e9304c6bf7bd500d741b01640682d35ac9 Mon Sep 17 00:00:00 2001 From: Morgan Larosa Date: Sat, 28 Jul 2012 08:25:15 +1000 Subject: [PATCH 060/330] Add a configuration option to disable autocorrect --- lib/correction.zsh | 22 +++++++++++++--------- templates/zshrc.zsh-template | 3 +++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/correction.zsh b/lib/correction.zsh index fc60dcdbd..07fbcfd36 100644 --- a/lib/correction.zsh +++ b/lib/correction.zsh @@ -1,10 +1,14 @@ -setopt correct_all +if [[ "$DISABLE_CORRECTION" == "true" ]]; then + return +else + setopt correct_all -alias man='nocorrect man' -alias mv='nocorrect mv' -alias mysql='nocorrect mysql' -alias mkdir='nocorrect mkdir' -alias gist='nocorrect gist' -alias heroku='nocorrect heroku' -alias ebuild='nocorrect ebuild' -alias hpodder='nocorrect hpodder' + alias man='nocorrect man' + alias mv='nocorrect mv' + alias mysql='nocorrect mysql' + alias mkdir='nocorrect mkdir' + alias gist='nocorrect gist' + alias heroku='nocorrect heroku' + alias ebuild='nocorrect ebuild' + alias hpodder='nocorrect hpodder' +fi diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template index e52553241..cb9c5855e 100644 --- a/templates/zshrc.zsh-template +++ b/templates/zshrc.zsh-template @@ -23,6 +23,9 @@ ZSH_THEME="robbyrussell" # Uncomment following line if you want to disable autosetting terminal title. # DISABLE_AUTO_TITLE="true" +# Uncomment following line if you want to disable command autocorrection +# DISABLE_CORRECTION="true" + # Uncomment following line if you want red dots to be displayed while waiting for completion # COMPLETION_WAITING_DOTS="true" From 55f09f89c8602efa6545411448e377aa87f64e7b Mon Sep 17 00:00:00 2001 From: Artie Kh Date: Thu, 13 Dec 2012 19:09:28 +0200 Subject: [PATCH 061/330] Added `verisions` option for `homebrew` completion --- plugins/brew/_brew | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/brew/_brew b/plugins/brew/_brew index 1dcf0a4bf..e43ba2900 100644 --- a/plugins/brew/_brew +++ b/plugins/brew/_brew @@ -35,6 +35,7 @@ _1st_arguments=( 'update:freshen up links' 'upgrade:upgrade outdated formulae' 'uses:show formulas which depend on a formula' + 'versions:show all available formula versions' ) local expl @@ -71,7 +72,7 @@ case "$words[1]" in _brew_installed_formulae _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae fi ;; - install|home|homepage|log|info|abv|uses|cat|deps|edit|options) + install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions) _brew_all_formulae _wanted formulae expl 'all formulae' compadd -a formulae ;; remove|rm|uninstall|unlink|cleanup|link|ln) From e7f24a831990f7dc87b7931aac2a3c2cd6b6c7e8 Mon Sep 17 00:00:00 2001 From: Jack Henahan Date: Mon, 24 Dec 2012 13:43:45 -0500 Subject: [PATCH 062/330] add symbol in darcs repos to match git and mercurial --- themes/smt.zsh-theme | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/smt.zsh-theme b/themes/smt.zsh-theme index 7a287523e..bbd1031e1 100644 --- a/themes/smt.zsh-theme +++ b/themes/smt.zsh-theme @@ -29,6 +29,7 @@ ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}" function prompt_char() { git branch >/dev/null 2>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" && return hg root >/dev/null 2>/dev/null && echo "%{$fg_bold[red]%}☿%{$reset_color%}" && return + darcs show repo >/dev/null 2>/dev/null && echo "%{$fg_bold[green]%}❉%{$reset_color%}" && return echo "%{$fg[cyan]%}◯%{$reset_color%}" } From 1f4bb8deb7bf166a43ed690b0961ab5a0b84523d Mon Sep 17 00:00:00 2001 From: Anders Andersson Date: Sun, 30 Dec 2012 09:52:32 +0100 Subject: [PATCH 063/330] OpenBSD doesn't have -ef flags for ps. Both linux and OpenBSD have -x flags which works just as greate here --- plugins/ssh-agent/ssh-agent.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index c4e92a1fe..650eb3f3c 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -48,7 +48,7 @@ if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then elif [ -f "${_plugin__ssh_env}" ]; then # Source SSH settings, if applicable . ${_plugin__ssh_env} > /dev/null - ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { + ps -x | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || { _plugin__start_agent; } else From 6ce08acb27f14a2e73fdbd4c92f258a7e6899f64 Mon Sep 17 00:00:00 2001 From: Artie Kh Date: Sun, 30 Dec 2012 21:18:12 +0200 Subject: [PATCH 064/330] added support for subversion 1.7 for svn plugin --- plugins/svn/svn.plugin.zsh | 110 +++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 48 deletions(-) diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index e38e8920b..4f008ba4e 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -1,62 +1,76 @@ - -function svn_prompt_info { - if [ $(in_svn) ]; then - if [ "x$SVN_SHOW_BRANCH" = "xtrue" ]; then - unset SVN_SHOW_BRANCH - _DISPLAY=$(svn_get_branch_name) - else - _DISPLAY=$(svn_get_repo_name) - fi - echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ -$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR" - unset _DISPLAY +# vim:ft=zsh ts=2 sw=2 sts=2 +# +function svn_prompt_info() { + if in_svn; then + if [ "x$SVN_SHOW_BRANCH" = "xtrue" ]; then + unset SVN_SHOW_BRANCH + _DISPLAY=$(svn_get_branch_name) + else + _DISPLAY=$(svn_get_repo_name) fi + echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ +$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR" + unset _DISPLAY + fi } function in_svn() { - if [[ -d .svn ]]; then - echo 1 - fi + if $(svn info >/dev/null 2>&1); then + return 0 + fi + return 1 } -function svn_get_repo_name { - if [ $(in_svn) ]; then - svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT - - svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" - fi +function svn_get_repo_name() { + if in_svn; then + svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT + svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" + fi } -function svn_get_branch_name { - _DISPLAY=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }') - if [ "x$_DISPLAY" = "x" ]; then - svn_get_repo_name +function svn_get_branch_name() { + _DISPLAY=$( + svn info 2> /dev/null | \ + awk -F/ \ + '/^URL:/ { \ + for (i=0; i<=NF; i++) { \ + if ($i == "branches" || $i == "tags" ) { \ + print $(i+1); \ + break;\ + }; \ + if ($i == "trunk") { print $i; break; } \ + } \ + }' + ) + + if [ "x$_DISPLAY" = "x" ]; then + svn_get_repo_name + else + echo $_DISPLAY + fi + unset _DISPLAY +} + +function svn_get_rev_nr() { + if in_svn; then + svn info 2> /dev/null | sed -n 's/Revision:\ //p' + fi +} + +function svn_dirty_choose() { + if in_svn; then + root=`svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'` + if $(svn status $root 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'); then + # Grep exits with 0 when "One or more lines were selected", return "dirty". + echo $1 else - echo $_DISPLAY + # Otherwise, no lines were found, or an error occurred. Return clean. + echo $2 fi - unset _DISPLAY + fi } -function svn_get_rev_nr { - if [ $(in_svn) ]; then - svn info 2> /dev/null | sed -n s/Revision:\ //p - fi -} - -function svn_dirty_choose { - if [ $(in_svn) ]; then - svn status 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]' - if [ $pipestatus[-1] -eq 0 ]; then - # Grep exits with 0 when "One or more lines were selected", return "dirty". - echo $1 - else - # Otherwise, no lines were found, or an error occurred. Return clean. - echo $2 - fi - fi -} - -function svn_dirty { - svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN +function svn_dirty() { + svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN } From 4c91f6d13e32d7389cae299d96f6778451a45fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Serdar=20Dalg=C4=B1=C3=A7?= Date: Fri, 25 Jan 2013 12:58:55 +0200 Subject: [PATCH 065/330] Add autoenv plugin, which adopts using Kenneth Reitz's autoenv into oh-my-zsh. --- lib/directories.zsh | 3 +++ plugins/autoenv/autoenv.plugin.zsh | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 plugins/autoenv/autoenv.plugin.zsh diff --git a/lib/directories.zsh b/lib/directories.zsh index 6c743e40e..93c6c176f 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -29,6 +29,9 @@ cd () { cd ../../../.. elif [[ "x$*" == "x......" ]]; then cd ../../../../.. + elif [ -d ~/.autoenv ]; then + source ~/.autoenv/activate.sh + autoenv_cd "$@" else builtin cd "$@" fi diff --git a/plugins/autoenv/autoenv.plugin.zsh b/plugins/autoenv/autoenv.plugin.zsh new file mode 100644 index 000000000..ca5666979 --- /dev/null +++ b/plugins/autoenv/autoenv.plugin.zsh @@ -0,0 +1,18 @@ +# The use_env call below is a reusable command to activate/create a new Python +# virtualenv, requiring only a single declarative line of code in your .env files. +# It only performs an action if the requested virtualenv is not the current one. +use_env() { + typeset venv + venv="$1" + if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then + if workon | grep -q "$venv"; then + workon "$venv" + else + echo -n "Create virtualenv $venv now? (Yn) " + read answer + if [[ "$answer" == "Y" ]]; then + mkvirtualenv "$venv" + fi + fi + fi +} From 2e213b9b8f96722d4978a80ae53849fec437eb10 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Sun, 27 Jan 2013 14:50:33 +0100 Subject: [PATCH 066/330] Faster dirty git status check (using git diff) --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index 3e14695bd..d818c742d 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -13,7 +13,7 @@ parse_git_dirty() { 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 + if [[ -n $(git diff --ignore-submodules HEAD 2> /dev/null) ]]; then echo "$ZSH_THEME_GIT_PROMPT_DIRTY" else echo "$ZSH_THEME_GIT_PROMPT_CLEAN" From 8a463b6df7048c8507f95344c3dc5d7a1355c48d Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 30 Jan 2013 00:44:42 -0500 Subject: [PATCH 067/330] Better custom theme loading oh-my-zsh.sh now also checks for $ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme when attempting to load a theme. This way custom themes can be a bit more organized in the 'custom' dir --- oh-my-zsh.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 689a79fef..2e1d3b477 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -73,6 +73,9 @@ else if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ] then source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" + elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ] + then + source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" else source "$ZSH/themes/$ZSH_THEME.zsh-theme" fi From 171a76a3c45ac031262e4eb7eaa38cc020a59812 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 30 Jan 2013 09:32:01 +0100 Subject: [PATCH 068/330] Closer to original status command, using SUBMODULE SYNTAX --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index d818c742d..ccc5d3128 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -13,7 +13,7 @@ parse_git_dirty() { if [[ $POST_1_7_2_GIT -gt 0 ]]; then SUBMODULE_SYNTAX="--ignore-submodules=dirty" fi - if [[ -n $(git diff --ignore-submodules HEAD 2> /dev/null) ]]; then + if [[ -n $(git diff ${SUBMODULE_SYNTAX} 2> /dev/null) ]]; then echo "$ZSH_THEME_GIT_PROMPT_DIRTY" else echo "$ZSH_THEME_GIT_PROMPT_CLEAN" From 76e828691bedc345904716b04cfa746fd043e0e7 Mon Sep 17 00:00:00 2001 From: Adolfo Benedetti Date: Wed, 30 Jan 2013 18:58:58 +0100 Subject: [PATCH 069/330] updated adben theme: added offline content, subversion support, refactored prompt --- themes/adben.zsh-theme | 145 ++++++++++++++++++++++++++++++++++------- 1 file changed, 120 insertions(+), 25 deletions(-) diff --git a/themes/adben.zsh-theme b/themes/adben.zsh-theme index 9f777e847..b64714f32 100644 --- a/themes/adben.zsh-theme +++ b/themes/adben.zsh-theme @@ -1,26 +1,121 @@ #!/usr/bin/env zsh -local USER_HOST='%{$terminfo[bold]$fg[yellow]%}%n@%m%{$reset_color%}' -local RETURN_CODE="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" -local GIT_BRANCH='%{$terminfo[bold]$fg[red]%}$(git_prompt_info)%{$reset_color%}' -local CURRENT_DIR='%{$terminfo[bold]$fg[green]%} %~%{$reset_color%}' -local RUBY_RVM='%{$fg[gray]%}‹$(rvm-prompt i v g)›%{$reset_color%}' -local COMMAND_TIP='%{$terminfo[bold]$fg[blue]%}$(wget -qO - http://www.commandlinefu.com/commands/random/plaintext | sed 1d | sed '/^$/d' | sed 's/^/║/g')%{$reset_color%}' -######### PROMPT ######### -PROMPT="%{$terminfo[bold]$fg[blue]%}╔═ %{$reset_color%}${USER_HOST} ${CURRENT_DIR} ${RUBY_RVM} ${GIT_BRANCH} -${COMMAND_TIP} -%{$terminfo[bold]$fg[blue]%}╚═ %{$reset_color%}%B%{$terminfo[bold]$fg[white]%}$%b%{$reset_color%} " -RPS1='${RETURN_CODE}' -RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}' -######### PROMPT ######### -########## GIT ########### -ZSH_THEME_GIT_PROMPT_PREFIX="‹" -ZSH_THEME_GIT_PROMPT_SUFFIX="%{$GIT_PROMPT_INFO%}›" -ZSH_THEME_GIT_PROMPT_DIRTY=" %{$GIT_DIRTY_COLOR%}✘" -ZSH_THEME_GIT_PROMPT_CLEAN=" %{$GIT_CLEAN_COLOR%}✔" -ZSH_THEME_GIT_PROMPT_ADDED="%{$FG[082]%}✚%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_MODIFIED="%{$FG[166]%}✹%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[160]%}✖%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[220]%}➜%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[082]%}═%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[190]%}✭%{$reset_color%}" -########## GIT ########### +# # +# # #README +# # +# # This theme provides two customizable header functionalities : +# # a) displaying a pseudo-random message from a database of quotations +# # (https://en.wikipedia.org/wiki/Fortune_%28Unix%29) +# # b) displaying randomly command line tips from The command line fu +# # (http://www.commandlinefu.com) community: in order to make use of this functionality +# # you will need Internet connection. +# # This theme provides as well information for the current user's context, like; +# # branch and status for the current version control system (git and svn currently +# # supported) and time, presented to the user in a non invasive volatile way. +# # +# # #REQUIREMENTS +# # This theme requires wget:: +# # -Homebrew-osx- brew install wget +# # -Debian/Ubuntu- apt-get install wget +# # and fortune :: +# # -Homebrew-osx- brew install fortune +# # -Debian/Ubuntu- apt-get install fortune +# # +# # optionally: +# # -Oh-myzsh vcs plug-ins git and svn. +# # -Solarized theme (https://github.com/altercation/solarized/) +# # -OS X: iTerm 2 (http://www.iterm2.com/) +# # -font Source code pro (https://github.com/adobe/source-code-pro) +# # +# # Author: Adolfo Benedetti +# # email: adolfo.benedetti@gmail.com +# # License: Public Domain +# # This theme's look and feel is based on the Aaron Toponce's zsh theme , more info: +# # http://pthree.org/2008/11/23/727/ +# # enjoy! +########## COLOR ########### +for COLOR in CYAN WHITE YELLOW MAGENTA BLACK BLUE RED DEFAULT GREEN GREY; do + eval PR_$COLOR='%{$fg[${(L)COLOR}]%}' + eval PR_BRIGHT_$COLOR='%{$fg_bold[${(L)COLOR}]%}' +done +PR_RESET="%{$reset_color%}" +RED_START="${PR_RESET}${PR_GREY}<${PR_RESET}${PR_RED}<${PR_BRIGHT_RED}<${PR_RESET} " +RED_END="${PR_RESET}${PR_BRIGHT_RED}>${PR_RESET}${PR_RED}>${PR_GREY}>${PR_RESET} " +GREEN_END="${PR_RESET}${PR_BRIGHT_GREEN}>${PR_RESET}${PR_GREEN}>${PR_GREY}>${PR_RESET} " +GREEN_BASE_START="${PR_RESET}${PR_GREY}>${PR_RESET}${PR_GREEN}>${PR_BRIGHT_GREEN}>${PR_RESET}" +GREEN_START_P1="${PR_RESET}${GREEN_BASE_START}${PR_RESET} " +DIVISION="${PR_RESET}${PR_RED} < ${PR_RESET}" +VCS_DIRTY_COLOR="${PR_RESET}${PR_YELLOW}" +Vcs_CLEAN_COLOR="${PR_RESET}${PR_GREEN}" +VCS_SUFIX_COLOR="${PR_RESET}${PR_RED}› ${PR_RESET}" +# ########## COLOR ########### +# ########## SVN ########### +ZSH_THEME_SVN_PROMPT_PREFIX="${PR_RESET}${PR_RED}‹svn:" +ZSH_THEME_SVN_PROMPT_SUFFIX="" +ZSH_THEME_SVN_PROMPT_DIRTY="${VCS_DIRTY_COLOR} ✘${VCS_SUFIX_COLOR}" +ZSH_THEME_SVN_PROMPT_CLEAN="${VCS_CLEAN_COLOR} ✔${VCS_SUFIX_COLOR}" +# ########## SVN ########### +# ########## GIT ########### +ZSH_THEME_GIT_PROMPT_PREFIX="${PR_RESET}${PR_RED}‹git:" +ZSH_THEME_GIT_PROMPT_SUFFIX="" +ZSH_THEME_GIT_PROMPT_DIRTY="${VCS_DIRTY_COLOR} ✘${VCS_SUFIX_COLOR}" +ZSH_THEME_GIT_PROMPT_CLEAN="${VCS_CLEAN_COLOR} ✔${VCS_SUFIX_COLOR}" +ZSH_THEME_GIT_PROMPT_ADDED="${PR_RESET}${PR_YELLOW} ✚${PR_RESET}" +ZSH_THEME_GIT_PROMPT_MODIFIED="${PR_RESET}${PR_YELLOW} ✹${PR_RESET}" +ZSH_THEME_GIT_PROMPT_DELETED="${PR_RESET}${PR_YELLOW} ✖${PR_RESET}" +ZSH_THEME_GIT_PROMPT_RENAMED="${PR_RESET}${PR_YELLOW} ➜${PR_RESET}" +ZSH_THEME_GIT_PROMPT_UNMERGED="${PR_RESET}${PR_YELLOW} ═${PR_RESET}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="${PR_RESET}${PR_YELLOW} ✭${PR_RESET}" +# ########## GIT ########### +function precmd { + #gets the fortune + ps1_fortune () { + #Choose from all databases, regardless of whether they are considered "offensive" + fortune -a + } + #obtains the tip + ps1_command_tip () { + wget -qO - http://www.commandlinefu.com/commands/random/plaintext | sed 1d | sed '/^$/d' + } + prompt_header () { + if [[ "true" == "$ENABLE_COMMAND_TIP" ]]; then + ps1_command_tip + else + ps1_fortune + fi + } + PROMPT_HEAD="${RED_START}${PR_YELLOW}$(prompt_header)${PR_RESET}" + # set a simple variable to show when in screen + if [[ -n "${WINDOW}" ]]; then + SCREEN="" + fi +} + +# Context: user@directory or just directory +prompt_context () { + local user=`whoami` + if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then + echo -n "${PR_RESET}${PR_RED}$user@%m${PR_RESET}${PR_BRIGHT_YELLOW}%~%<<${PR_RESET}" + else + echo -n "${PR_RESET}${PR_BRIGHT_YELLOW}%~%<<${PR_RESET}" + fi +} + +set_prompt () { + # required for the prompt + setopt prompt_subst + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -gt 8 ]]; then + colors + fi + + # ######### PROMPT ######### + PROMPT='${PROMPT_HEAD} +${RED_START}$(prompt_context) +${GREEN_START_P1}' + RPROMPT='${PR_RESET}$(git_prompt_info)$(svn_prompt_info)${PR_YELLOW}%D{%R.%S %a %b %d %Y} ${GREEN_END}${PR_RESET}' + # Matching continuation prompt + PROMPT2='${GREEN_BASE_START}${PR_RESET} %_ ${GREEN_BASE_START}${PR_RESET} ' + # ######### PROMPT ######### +} + +set_prompt From ef8e3a67f293ab3d4dfc67da5af321de7c019ca4 Mon Sep 17 00:00:00 2001 From: Matt Guindin Date: Wed, 30 Jan 2013 20:46:08 -0500 Subject: [PATCH 070/330] [agnoster] modifying theme to show dot for dirty files and plus for staged files in git repos --- themes/agnoster.zsh-theme | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme index c3107c06c..3ca5385be 100644 --- a/themes/agnoster.zsh-theme +++ b/themes/agnoster.zsh-theme @@ -71,7 +71,6 @@ prompt_context() { prompt_git() { local ref dirty if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then - ZSH_THEME_GIT_PROMPT_DIRTY='±' dirty=$(parse_git_dirty) ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" if [[ -n $dirty ]]; then @@ -79,7 +78,19 @@ prompt_git() { else prompt_segment green black fi - echo -n "${ref/refs\/heads\//⭠ }$dirty" + + setopt promptsubst + autoload -Uz vcs_info + + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' get-revision true + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' stagedstr '✚' + zstyle ':vcs_info:git:*' unstagedstr '●' + zstyle ':vcs_info:*' formats ' %u%c' + zstyle ':vcs_info:*' actionformats '%u%c' + vcs_info + echo -n "${ref/refs\/heads\//⭠ }${vcs_info_msg_0_}" fi } From fe4c2379c4ce9f4140fd16d2ea77138061e4a109 Mon Sep 17 00:00:00 2001 From: Toon Claes Date: Mon, 4 Feb 2013 22:21:34 +0100 Subject: [PATCH 071/330] use pushdminus --- lib/directories.zsh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/directories.zsh b/lib/directories.zsh index a787db9eb..4addc08fa 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -2,6 +2,7 @@ setopt auto_name_dirs setopt auto_pushd setopt pushd_ignore_dups +setopt pushdminus alias ..='cd ..' alias cd..='cd ..' @@ -11,14 +12,14 @@ alias cd.....='cd ../../../..' alias cd/='cd /' alias 1='cd -' -alias 2='cd +2' -alias 3='cd +3' -alias 4='cd +4' -alias 5='cd +5' -alias 6='cd +6' -alias 7='cd +7' -alias 8='cd +8' -alias 9='cd +9' +alias 2='cd -2' +alias 3='cd -3' +alias 4='cd -4' +alias 5='cd -5' +alias 6='cd -6' +alias 7='cd -7' +alias 8='cd -8' +alias 9='cd -9' cd () { if [[ "x$*" == "x..." ]]; then From 11576dd40bfb78379724a9519081365bbd41d7a9 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 13 Feb 2013 11:28:13 +0100 Subject: [PATCH 072/330] Fixed dirty check to include files added to index --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index ccc5d3128..fde30e2b9 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -13,7 +13,7 @@ parse_git_dirty() { if [[ $POST_1_7_2_GIT -gt 0 ]]; then SUBMODULE_SYNTAX="--ignore-submodules=dirty" fi - if [[ -n $(git diff ${SUBMODULE_SYNTAX} 2> /dev/null) ]]; then + if [[ -n $(git diff ${SUBMODULE_SYNTAX} HEAD 2> /dev/null) ]]; then echo "$ZSH_THEME_GIT_PROMPT_DIRTY" else echo "$ZSH_THEME_GIT_PROMPT_CLEAN" From 9245a3086843c20ef1880f6d26720db73d5c724d Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 13 Feb 2013 17:14:43 +0100 Subject: [PATCH 073/330] Did a full circle and went back to # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: git.zsh #, ignoring untracked files, which seems to be the primary cause for slowness --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index fde30e2b9..ccd329665 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -13,7 +13,7 @@ parse_git_dirty() { if [[ $POST_1_7_2_GIT -gt 0 ]]; then SUBMODULE_SYNTAX="--ignore-submodules=dirty" fi - if [[ -n $(git diff ${SUBMODULE_SYNTAX} HEAD 2> /dev/null) ]]; then + if [[ -n $(git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null) ]]; then echo "$ZSH_THEME_GIT_PROMPT_DIRTY" else echo "$ZSH_THEME_GIT_PROMPT_CLEAN" From fb3dc24ff4aac55c5cb0cd4e448b26f223a68957 Mon Sep 17 00:00:00 2001 From: Swanand Pagnis Date: Thu, 14 Feb 2013 14:06:42 +0530 Subject: [PATCH 074/330] Support for opening tabs and windows in the same This fixed #1498 for me on Mountain Lion --- lib/termsupport.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index c056989eb..e3828da14 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -8,7 +8,7 @@ function title { fi 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 + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ $TERM == ansi ]] || [[ "$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 From 014ed1f0e5c85a10ab7538160e2d3421ab3dbf7e Mon Sep 17 00:00:00 2001 From: Heiko Reese Date: Thu, 21 Feb 2013 02:46:20 +0100 Subject: [PATCH 075/330] Disable ssh-agent support if another ssh-agent is already running. --- plugins/gpg-agent/gpg-agent.plugin.zsh | 35 +++++++++++++++----------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 8cc71fd57..63c433413 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,26 +1,31 @@ -# 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 +function start_agent_nossh { + eval $(/usr/bin/env gpg-agent --daemon --write-env-file ${GPG_ENV}) > /dev/null + export GPG_AGENT_INFO } -# Source GPG agent settings, if applicable +function start_agent_withssh { + eval $(/usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV}) > /dev/null + export GPG_AGENT_INFO + export SSH_AUTH_SOCK + export SSH_AGENT_PID +} + +# make sure all created files are u=rw only +umask 177 + +# source settings of old agent, 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 +# check for existing ssh-agent +if ssh-add -l > /dev/null 2> /dev/null; then + start_agent_nossh; +else + start_agent_withssh; +fi GPG_TTY=$(tty) export GPG_TTY From 174e09ca8dec0e2c393718505e9fc0cfc0996e21 Mon Sep 17 00:00:00 2001 From: Heiko Reese Date: Thu, 21 Feb 2013 03:40:32 +0100 Subject: [PATCH 076/330] Added --quiet to suppress message about gpg-agent already running. --- plugins/gpg-agent/gpg-agent.plugin.zsh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 63c433413..109af44c8 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,20 +1,19 @@ local GPG_ENV=$HOME/.gnupg/gpg-agent.env function start_agent_nossh { - eval $(/usr/bin/env gpg-agent --daemon --write-env-file ${GPG_ENV}) > /dev/null + eval $(/usr/bin/env gpg-agent --quiet --daemon --write-env-file ${GPG_ENV} 2> /dev/null) + chmod 600 ${GPG_ENV} export GPG_AGENT_INFO } function start_agent_withssh { - eval $(/usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV}) > /dev/null + eval $(/usr/bin/env gpg-agent --quiet --daemon --enable-ssh-support --write-env-file ${GPG_ENV} 2> /dev/null) + chmod 600 ${GPG_ENV} export GPG_AGENT_INFO export SSH_AUTH_SOCK export SSH_AGENT_PID } -# make sure all created files are u=rw only -umask 177 - # source settings of old agent, if applicable if [ -f "${GPG_ENV}" ]; then . ${GPG_ENV} > /dev/null From 8c74d80fd6cdc7e1b48e7eb321a3e3a22674c3be Mon Sep 17 00:00:00 2001 From: hacfi Date: Fri, 22 Feb 2013 17:07:15 +0100 Subject: [PATCH 077/330] Fix Symfony2 command completion 'permission denied' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit app/console by default (if you create a new Symfony project via composer create-project or by downloading it from symfony.com) is not executable. Therefore I get the following error: sf2 _symfony2_get_command_list:1: permission denied: app/console _symfony2_get_command_list:1: permission denied: app/console _symfony2_get_command_list:1: permission denied: app/console To make command completion work without changing app/console you just have to let php run it. --- plugins/symfony2/symfony2.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh index cc9ffebc0..f425c14f7 100644 --- a/plugins/symfony2/symfony2.plugin.zsh +++ b/plugins/symfony2/symfony2.plugin.zsh @@ -1,7 +1,7 @@ # Symfony2 basic command completion _symfony2_get_command_list () { - app/console --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }' + php app/console --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }' } _symfony2 () { From f4b12321a9e4d5e0fa208b48a4515156865a33bb Mon Sep 17 00:00:00 2001 From: Alexey Poimtsev Date: Thu, 28 Feb 2013 00:26:03 +0400 Subject: [PATCH 078/330] Added rails4 plugin --- plugins/rails4/rails4.plugin.zsh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 plugins/rails4/rails4.plugin.zsh diff --git a/plugins/rails4/rails4.plugin.zsh b/plugins/rails4/rails4.plugin.zsh new file mode 100644 index 000000000..b6765365e --- /dev/null +++ b/plugins/rails4/rails4.plugin.zsh @@ -0,0 +1,29 @@ +# Rails 4 aliases + +function _rails_command () { + if [ -e "script/server" ]; then + ruby script/$@ + elif [ -e "script/rails" ]; then + ruby script/rails $@ + else + ruby bin/rails $@ + fi +} + +alias rc='_rails_command console' +alias rd='_rails_command destroy' +alias rdb='_rails_command dbconsole' +alias rdbm='rake db:migrate db:test:clone' +alias rg='_rails_command generate' +alias rgm='_rails_command generate migration' +alias rp='_rails_command plugin' +alias ru='_rails_command runner' +alias rs='_rails_command server' +alias rsd='_rails_command server --debugger' +alias devlog='tail -f log/development.log' +alias rdm='rake db:migrate' +alias rdr='rake db:rollback' +alias rds='rake db:seed' +alias rlc='rake log:clear' +alias rn='rake notes' +alias rr='rake routes' \ No newline at end of file From 4bb7b698cabd33bd53f89688e83cf836e4c3f50c Mon Sep 17 00:00:00 2001 From: Maxime Fabre Date: Thu, 28 Feb 2013 11:50:39 +0100 Subject: [PATCH 079/330] Add alias for "composer dump-autoload" --- plugins/composer/composer.plugin.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh index c9b762d07..a08c4633f 100644 --- a/plugins/composer/composer.plugin.zsh +++ b/plugins/composer/composer.plugin.zsh @@ -24,6 +24,7 @@ alias csu='composer self-update' alias cu='composer update' alias ci='composer install' alias ccp='composer create-project' +alias cdu='composer dump-autoload' # install composer in the current directory -alias cget='curl -s https://getcomposer.org/installer | php' \ No newline at end of file +alias cget='curl -s https://getcomposer.org/installer | php' From fdd46d8815f9c3a314e13d2dbb57685fd78f4e7c Mon Sep 17 00:00:00 2001 From: Sean Jones Date: Sat, 2 Mar 2013 11:09:57 +0000 Subject: [PATCH 080/330] Updated battery plugin. Displays charging time. linux battery level now refreshes after every command --- plugins/battery/battery.plugin.zsh | 33 ++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index 95f890632..cc9342c77 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -42,17 +42,27 @@ if [[ $(uname) == "Darwin" ]] ; then fi echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" else - echo "" + echo "∞" fi } elif [[ $(uname) == "Linux" ]] ; then - if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then - function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" } - function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') } - function battery_pct_prompt() { - b=$(battery_pct_remaining) + function battery_pct_remaining() { + if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then + echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" + fi + } + + function battery_time_remaining() { + if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then + echo $(acpi | cut -f3 -d ',') + fi + } + + function battery_pct_prompt() { + b=$(battery_pct_remaining) + if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then if [ $b -gt 50 ] ; then color='green' elif [ $b -gt 20 ] ; then @@ -61,11 +71,8 @@ elif [[ $(uname) == "Linux" ]] ; then color='red' fi echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" - } - else - error_msg='no battery' - function battery_pct_remaining() { echo $error_msg } - function battery_time_remaining() { echo $error_msg } - function battery_pct_prompt() { echo '' } - fi + else + echo "∞" + fi + } fi From 2916ef719444040528ffd1a56d91bdd1fb1b5aa5 Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Mon, 25 Mar 2013 18:57:55 +0200 Subject: [PATCH 081/330] Use new style of rails command. --- plugins/rails3/rails3.plugin.zsh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/rails3/rails3.plugin.zsh b/plugins/rails3/rails3.plugin.zsh index 237d0594b..5ebaf32e3 100644 --- a/plugins/rails3/rails3.plugin.zsh +++ b/plugins/rails3/rails3.plugin.zsh @@ -4,7 +4,11 @@ function _rails_command () { if [ -e "script/server" ]; then ruby script/$@ else - ruby script/rails $@ + if [ -e "bin/rails" ]; then + bin/rails $@ + else + rails $@ + fi fi } From f358f614149e4f25b53abe140e0d0b8bc46928d6 Mon Sep 17 00:00:00 2001 From: Nicolas Jeker Date: Tue, 2 Apr 2013 12:33:06 +0300 Subject: [PATCH 082/330] use hostname instead of hostname -s hostname -s is not available on every implementation of hostname, e.g. Cygwin uses hostname from coreutils which doesn't work. --- themes/ys.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/ys.zsh-theme b/themes/ys.zsh-theme index 3d316390e..43c101c2a 100644 --- a/themes/ys.zsh-theme +++ b/themes/ys.zsh-theme @@ -8,7 +8,7 @@ # Machine name. function box_name { - [ -f ~/.box-name ] && cat ~/.box-name || hostname -s + [ -f ~/.box-name ] && cat ~/.box-name || hostname } # Directory info. From e4fb94306a91ea6b893ba0dad34ba8eb17c07f0a Mon Sep 17 00:00:00 2001 From: Marko Bauhardt Date: Wed, 3 Apr 2013 20:20:57 +0200 Subject: [PATCH 083/330] ohmyzsh plugin of the z project: https://github.com/rupa/z --- plugins/z/Makefile | 4 + plugins/z/README | 135 ++++++++++++++++++++++++ plugins/z/z.1 | 155 ++++++++++++++++++++++++++++ plugins/z/z.plugin.zsh | 6 ++ plugins/z/z.sh | 228 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 528 insertions(+) create mode 100644 plugins/z/Makefile create mode 100644 plugins/z/README create mode 100644 plugins/z/z.1 create mode 100644 plugins/z/z.plugin.zsh create mode 100644 plugins/z/z.sh diff --git a/plugins/z/Makefile b/plugins/z/Makefile new file mode 100644 index 000000000..dcf433d40 --- /dev/null +++ b/plugins/z/Makefile @@ -0,0 +1,4 @@ +readme: + @groff -man -Tascii z.1 | col -bx + +.PHONY: readme diff --git a/plugins/z/README b/plugins/z/README new file mode 100644 index 000000000..ec5abc6f5 --- /dev/null +++ b/plugins/z/README @@ -0,0 +1,135 @@ +Z(1) User Commands Z(1) + + + +NAME + z - jump around + +SYNOPSIS + z [-chlrt] [regex1 regex2 ... regexn] + +AVAILABILITY + bash, zsh + +DESCRIPTION + Tracks your most used directories, based on 'frecency'. + + After a short learning phase, z will take you to the most 'frecent' + directory that matches ALL of the regexes given on the command line. + +OPTIONS + -c restrict matches to subdirectories of the current directory. + + -h show a brief help message + + -l list only + + -r match by rank only + + -t match by recent access only + +EXAMPLES + z foo cd to most frecent dir matching foo + + z foo bar cd to most frecent dir matching foo and bar + + z -r foo cd to highest ranked dir matching foo + + z -t foo cd to most recently accessed dir matching foo + + z -l foo list all dirs matching foo (by frecency) + +NOTES + Installation: + Put something like this in your $HOME/.bashrc or $HOME/.zshrc: + + . /path/to/z.sh + + cd around for a while to build up the db. + + PROFIT!! + + Optionally: + Set $_Z_CMD to change the command name (default z). + Set $_Z_DATA to change the datafile (default $HOME/.z). + Set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution. + Set $_Z_NO_PROMPT_COMMAND to handle PROMPT_COMMAND/precmd your- + self. + Set $_Z_EXCLUDE_DIRS to an array of directories to exclude. + (These settings should go in .bashrc/.zshrc before the lines + added above.) + Install the provided man page z.1 somewhere like + /usr/local/man/man1. + + Aging: + The rank of directories maintained by z undergoes aging based on a sim- + ple formula. The rank of each entry is incremented every time it is + accessed. When the sum of ranks is greater than 6000, all ranks are + multiplied by 0.99. Entries with a rank lower than 1 are forgotten. + + Frecency: + Frecency is a portmantaeu of 'recent' and 'frequency'. It is a weighted + rank that depends on how often and how recently something occured. As + far as I know, Mozilla came up with the term. + + To z, a directory that has low ranking but has been accessed recently + will quickly have higher rank than a directory accessed frequently a + long time ago. + + Frecency is determined at runtime. + + Common: + When multiple directories match all queries, and they all have a common + prefix, z will cd to the shortest matching directory, without regard to + priority. This has been in effect, if undocumented, for quite some + time, but should probably be configurable or reconsidered. + + Tab Completion: + z supports tab completion. After any number of arguments, press TAB to + complete on directories that match each argument. Due to limitations of + the completion implementations, only the last argument will be com- + pleted in the shell. + + Internally, z decides you've requested a completion if the last argu- + ment passed is an absolute path to an existing directory. This may + cause unexpected behavior if the last argument to z begins with /. + +ENVIRONMENT + A function _z() is defined. + + The contents of the variable $_Z_CMD is aliased to _z 2>&1. If not set, + $_Z_CMD defaults to z. + + The environment variable $_Z_DATA can be used to control the datafile + location. If it is not defined, the location defaults to $HOME/.z. + + The environment variable $_Z_NO_RESOLVE_SYMLINKS can be set to prevent + resolving of symlinks. If it is not set, symbolic links will be + resolved when added to the datafile. + + In bash, z prepends a command to the PROMPT_COMMAND environment vari- + able to maintain its database. In zsh, z appends a function _z_precmd + to the precmd_functions array. + + The environment variable $_Z_NO_PROMPT_COMMAND can be set if you want + to handle PROMPT_COMMAND or precmd yourself. + + The environment variable $_Z_EXCLUDE_DIRS can be set to an array of + directories to exclude from tracking. $HOME is always excluded. Direc- + tories must be full paths without trailing slashes. + +FILES + Data is stored in $HOME/.z. This can be overridden by setting the + $_Z_DATA environment variable. When initialized, z will raise an error + if this path is a directory, and not function correctly. + + A man page (z.1) is provided. + +SEE ALSO + regex(7), pushd, popd, autojump, cdargs + + Please file bugs at https://github.com/rupa/z/ + + + +z January 2013 Z(1) diff --git a/plugins/z/z.1 b/plugins/z/z.1 new file mode 100644 index 000000000..022a4b35d --- /dev/null +++ b/plugins/z/z.1 @@ -0,0 +1,155 @@ +.TH "Z" "1" "January 2013" "z" "User Commands" +.SH +NAME +z \- jump around +.SH +SYNOPSIS +z [\-chlrt] [regex1 regex2 ... regexn] +.SH +AVAILABILITY +bash, zsh +.SH +DESCRIPTION +Tracks your most used directories, based on 'frecency'. +.P +After a short learning phase, \fBz\fR will take you to the most 'frecent' +directory that matches ALL of the regexes given on the command line. +.SH +OPTIONS +.TP +\fB\-c\fR +restrict matches to subdirectories of the current directory. +.TP +\fB\-h\fR +show a brief help message +.TP +\fB\-l\fR +list only +.TP +\fB\-r\fR +match by rank only +.TP +\fB\-t\fR +match by recent access only +.SH EXAMPLES +.TP 14 +\fBz foo\fR +cd to most frecent dir matching foo +.TP 14 +\fBz foo bar\fR +cd to most frecent dir matching foo and bar +.TP 14 +\fBz -r foo\fR +cd to highest ranked dir matching foo +.TP 14 +\fBz -t foo\fR +cd to most recently accessed dir matching foo +.TP 14 +\fBz -l foo\fR +list all dirs matching foo (by frecency) +.SH +NOTES +.SS +Installation: +.P +Put something like this in your \fB$HOME/.bashrc\fR or \fB$HOME/.zshrc\fR: +.RS +.P +\fB. /path/to/z.sh\fR +.RE +.P +\fBcd\fR around for a while to build up the db. +.P +PROFIT!! +.P +Optionally: +.RS +Set \fB$_Z_CMD\fR to change the command name (default \fBz\fR). +.RE +.RS +Set \fB$_Z_DATA\fR to change the datafile (default \fB$HOME/.z\fR). +.RE +.RS +Set \fB$_Z_NO_RESOLVE_SYMLINKS\fR to prevent symlink resolution. +.RE +.RS +Set \fB$_Z_NO_PROMPT_COMMAND\fR to handle \fBPROMPT_COMMAND/precmd\fR yourself. +.RE +.RS +Set \fB$_Z_EXCLUDE_DIRS\fR to an array of directories to exclude. +.RE +.RS +(These settings should go in .bashrc/.zshrc before the lines added above.) +.RE +.RS +Install the provided man page \fBz.1\fR somewhere like \fB/usr/local/man/man1\fR. +.RE +.SS +Aging: +The rank of directories maintained by \fBz\fR undergoes aging based on a simple +formula. The rank of each entry is incremented every time it is accessed. When +the sum of ranks is greater than 6000, all ranks are multiplied by 0.99. Entries +with a rank lower than 1 are forgotten. +.SS +Frecency: +Frecency is a portmantaeu of 'recent' and 'frequency'. It is a weighted rank +that depends on how often and how recently something occured. As far as I +know, Mozilla came up with the term. +.P +To \fBz\fR, a directory that has low ranking but has been accessed recently +will quickly have higher rank than a directory accessed frequently a long time +ago. +.P +Frecency is determined at runtime. +.SS +Common: +When multiple directories match all queries, and they all have a common prefix, +\fBz\fR will cd to the shortest matching directory, without regard to priority. +This has been in effect, if undocumented, for quite some time, but should +probably be configurable or reconsidered. +.SS +Tab Completion: +\fBz\fR supports tab completion. After any number of arguments, press TAB to +complete on directories that match each argument. Due to limitations of the +completion implementations, only the last argument will be completed in the +shell. +.P +Internally, \fBz\fR decides you've requested a completion if the last argument +passed is an absolute path to an existing directory. This may cause unexpected +behavior if the last argument to \fBz\fR begins with \fB/\fR. +.SH +ENVIRONMENT +A function \fB_z()\fR is defined. +.P +The contents of the variable \fB$_Z_CMD\fR is aliased to \fB_z 2>&1\fR. If not +set, \fB$_Z_CMD\fR defaults to \fBz\fR. +.P +The environment variable \fB$_Z_DATA\fR can be used to control the datafile +location. If it is not defined, the location defaults to \fB$HOME/.z\fR. +.P +The environment variable \fB$_Z_NO_RESOLVE_SYMLINKS\fR can be set to prevent +resolving of symlinks. If it is not set, symbolic links will be resolved when +added to the datafile. +.P +In bash, \fBz\fR prepends a command to the \fBPROMPT_COMMAND\fR environment +variable to maintain its database. In zsh, \fBz\fR appends a function +\fB_z_precmd\fR to the \fBprecmd_functions\fR array. +.P +The environment variable \fB$_Z_NO_PROMPT_COMMAND\fR can be set if you want to +handle \fBPROMPT_COMMAND\fR or \fBprecmd\fR yourself. +.P +The environment variable \fB$_Z_EXCLUDE_DIRS\fR can be set to an array of +directories to exclude from tracking. \fB$HOME\fR is always excluded. +Directories must be full paths without trailing slashes. +.SH +FILES +Data is stored in \fB$HOME/.z\fR. This can be overridden by setting the +\fB$_Z_DATA\fR environment variable. When initialized, \fBz\fR will raise an +error if this path is a directory, and not function correctly. +.P +A man page (\fBz.1\fR) is provided. +.SH +SEE ALSO +regex(7), pushd, popd, autojump, cdargs +.P +Please file bugs at https://github.com/rupa/z/ diff --git a/plugins/z/z.plugin.zsh b/plugins/z/z.plugin.zsh new file mode 100644 index 000000000..196b88b12 --- /dev/null +++ b/plugins/z/z.plugin.zsh @@ -0,0 +1,6 @@ +_load_z() { + source $1/z.sh +} + +[[ -f $ZSH_CUSTOM/plugins/z/z.plugin.zsh ]] && _load_z $ZSH_CUSTOM/plugins/z +[[ -f $ZSH/plugins/z/z.plugin.zsh ]] && _load_z $ZSH/plugins/z diff --git a/plugins/z/z.sh b/plugins/z/z.sh new file mode 100644 index 000000000..7e444ef46 --- /dev/null +++ b/plugins/z/z.sh @@ -0,0 +1,228 @@ +# Copyright (c) 2009 rupa deadwyler under the WTFPL license + +# maintains a jump-list of the directories you actually use +# +# INSTALL: +# * put something like this in your .bashrc/.zshrc: +# . /path/to/z.sh +# * cd around for a while to build up the db +# * PROFIT!! +# * optionally: +# set $_Z_CMD in .bashrc/.zshrc to change the command (default z). +# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z). +# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution. +# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself. +# set $_Z_EXCLUDE_DIRS to an array of directories to exclude. +# +# USE: +# * z foo # cd to most frecent dir matching foo +# * z foo bar # cd to most frecent dir matching foo and bar +# * z -r foo # cd to highest ranked dir matching foo +# * z -t foo # cd to most recently accessed dir matching foo +# * z -l foo # list matches instead of cd +# * z -c foo # restrict matches to subdirs of $PWD + +case $- in + *i*) ;; + *) echo 'ERROR: z.sh is meant to be sourced, not directly executed.' +esac + +[ -d "${_Z_DATA:-$HOME/.z}" ] && { + echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." +} + +_z() { + + local datafile="${_Z_DATA:-$HOME/.z}" + + # bail out if we don't own ~/.z (we're another user but our ENV is still set) + [ -f "$datafile" -a ! -O "$datafile" ] && return + + # add entries + if [ "$1" = "--add" ]; then + shift + + # $HOME isn't worth matching + [ "$*" = "$HOME" ] && return + + # don't track excluded dirs + local exclude + for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do + [ "$*" = "$exclude" ] && return + done + + # maintain the file + local tempfile + tempfile="$(mktemp "$datafile.XXXXXX")" || return + while read line; do + [ -d "${line%%\|*}" ] && echo $line + done < "$datafile" | awk -v path="$*" -v now="$(date +%s)" -F"|" ' + BEGIN { + rank[path] = 1 + time[path] = now + } + $2 >= 1 { + if( $1 == path ) { + rank[$1] = $2 + 1 + time[$1] = now + } else { + rank[$1] = $2 + time[$1] = $3 + } + count += $2 + } + END { + if( count > 6000 ) { + for( i in rank ) print i "|" 0.99*rank[i] "|" time[i] # aging + } else for( i in rank ) print i "|" rank[i] "|" time[i] + } + ' 2>/dev/null >| "$tempfile" + if [ $? -ne 0 -a -f "$datafile" ]; then + env rm -f "$tempfile" + else + env mv -f "$tempfile" "$datafile" + fi + + # tab completion + elif [ "$1" = "--complete" ]; then + while read line; do + [ -d "${line%%\|*}" ] && echo $line + done < "$datafile" | awk -v q="$2" -F"|" ' + BEGIN { + if( q == tolower(q) ) nocase = 1 + split(substr(q,3),fnd," ") + } + { + if( nocase ) { + for( i in fnd ) tolower($1) !~ tolower(fnd[i]) && $1 = "" + } else { + for( i in fnd ) $1 !~ fnd[i] && $1 = "" + } + if( $1 ) print $1 + } + ' 2>/dev/null + + else + # list/go + while [ "$1" ]; do case "$1" in + --) while [ "$1" ]; do shift; local fnd="$fnd $1";done;; + -*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in + c) local fnd="^$PWD $fnd";; + h) echo "${_Z_CMD:-z} [-chlrt] args" >&2; return;; + l) local list=1;; + r) local typ="rank";; + t) local typ="recent";; + esac; opt=${opt:1}; done;; + *) local fnd="$fnd $1";; + esac; local last=$1; shift; done + [ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1 + + # if we hit enter on a completion just go there + case "$last" in + # completions will always start with / + /*) [ -z "$list" -a -d "$last" ] && cd "$last" && return;; + esac + + # no file yet + [ -f "$datafile" ] || return + + local cd + cd="$(while read line; do + [ -d "${line%%\|*}" ] && echo $line + done < "$datafile" | awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' + function frecent(rank, time) { + dx = t-time + if( dx < 3600 ) return rank*4 + if( dx < 86400 ) return rank*2 + if( dx < 604800 ) return rank/2 + return rank/4 + } + function output(files, toopen, override) { + if( list ) { + cmd = "sort -n >&2" + for( i in files ) if( files[i] ) printf "%-10s %s\n", files[i], i | cmd + if( override ) printf "%-10s %s\n", "common:", override > "/dev/stderr" + } else { + if( override ) toopen = override + print toopen + } + } + function common(matches) { + # shortest match + for( i in matches ) { + if( matches[i] && (!short || length(i) < length(short)) ) short = i + } + if( short == "/" ) return + # shortest match must be common to each match. escape special characters in + # a copy when testing, so we can return the original. + clean_short = short + gsub(/[\(\)\[\]\|]/, "\\\\&", clean_short) + for( i in matches ) if( matches[i] && i !~ clean_short ) return + return short + } + BEGIN { split(q, a, " "); oldf = noldf = -9999999999 } + { + if( typ == "rank" ) { + f = $2 + } else if( typ == "recent" ) { + f = $3-t + } else f = frecent($2, $3) + wcase[$1] = nocase[$1] = f + for( i in a ) { + if( $1 !~ a[i] ) delete wcase[$1] + if( tolower($1) !~ tolower(a[i]) ) delete nocase[$1] + } + if( wcase[$1] && wcase[$1] > oldf ) { + cx = $1 + oldf = wcase[$1] + } else if( nocase[$1] && nocase[$1] > noldf ) { + ncx = $1 + noldf = nocase[$1] + } + } + END { + if( cx ) { + output(wcase, cx, common(wcase)) + } else if( ncx ) output(nocase, ncx, common(nocase)) + } + ')" + [ $? -gt 0 ] && return + [ "$cd" ] && cd "$cd" + fi +} + +alias ${_Z_CMD:-z}='_z 2>&1' + +[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P" + +if compctl &> /dev/null; then + [ "$_Z_NO_PROMPT_COMMAND" ] || { + # zsh populate directory list, avoid clobbering any other precmds + if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then + _z_precmd() { + _z --add "${PWD:a}" + } + else + _z_precmd() { + _z --add "${PWD:A}" + } + fi + precmd_functions+=(_z_precmd) + } + # zsh tab completion + _z_zsh_tab_completion() { + local compl + read -l compl + reply=(${(f)"$(_z --complete "$compl")"}) + } + compctl -U -K _z_zsh_tab_completion _z +elif complete &> /dev/null; then + # bash tab completion + complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z} + [ "$_Z_NO_PROMPT_COMMAND" ] || { + # bash populate directory list. avoid clobbering other PROMPT_COMMANDs. + echo $PROMPT_COMMAND | grep -q "_z --add" || { + PROMPT_COMMAND='_z --add "$(pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null;'"$PROMPT_COMMAND" + } + } +fi From 0854b18cdfa6b29b08848a23e79c3f214c5e0f8d Mon Sep 17 00:00:00 2001 From: Marko Bauhardt Date: Mon, 8 Apr 2013 22:32:00 +0200 Subject: [PATCH 084/330] a plugin (function) which copies the content of a file into the clipboard --- plugins/copyfile/copyfile.plugin.zsh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/copyfile/copyfile.plugin.zsh diff --git a/plugins/copyfile/copyfile.plugin.zsh b/plugins/copyfile/copyfile.plugin.zsh new file mode 100644 index 000000000..944a903c6 --- /dev/null +++ b/plugins/copyfile/copyfile.plugin.zsh @@ -0,0 +1,5 @@ +function copyfile { + [[ "$#" != 1 ]] && return 1 + local file_to_copy=$1 + cat $file_to_copy | pbcopy +} From 2bae7ef4f9972d4b3accf6bd614e38d9a2410a70 Mon Sep 17 00:00:00 2001 From: Marc Paradise Date: Mon, 8 Apr 2013 17:07:06 -0400 Subject: [PATCH 085/330] initial support for chef 11 integrated knife-essentials * added new commands 'diff' and 'upload' * Add basic file completion for file-centric commands 'diff' and 'upload' --- plugins/knife/_knife | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/knife/_knife b/plugins/knife/_knife index 9f5b406af..b44283f78 100644 --- a/plugins/knife/_knife +++ b/plugins/knife/_knife @@ -31,7 +31,7 @@ _knife() { case $state in knifecmd) - compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" exec environment index node recipe role search ssh status windows $cloudproviders + compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search ssh status upload windows $cloudproviders ;; knifesubcmd) case $words[2] in @@ -47,9 +47,12 @@ _knife() { cookbook) compadd -Q "$@" test list create download delete "metadata from" show "bulk delete" metadata upload ;; - environment) + diff) + _arguments '*:file or directory:_files -g "*"' + ;; + environment) compadd -Q "$@" list create delete edit show "from file" - ;; + ;; node) compadd -Q "$@" "from file" create show edit delete list run_list "bulk delete" ;; @@ -59,6 +62,9 @@ _knife() { role) compadd -Q "$@" "bulk delete" create delete edit "from file" list show ;; + upload) + _arguments '*:file or directory:_files -g "*"' + ;; windows) compadd "$@" bootstrap ;; From c8db4f81fa4716ff627b63e4f7022d01c4b712d7 Mon Sep 17 00:00:00 2001 From: Vladimir Zakharov Date: Tue, 9 Apr 2013 14:11:51 +0400 Subject: [PATCH 086/330] Add alias for 'hg bookmarks' --- plugins/mercurial/mercurial.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh index 30e4be5b5..9aa2d167a 100644 --- a/plugins/mercurial/mercurial.plugin.zsh +++ b/plugins/mercurial/mercurial.plugin.zsh @@ -3,6 +3,7 @@ alias hgc='hg commit' alias hgb='hg branch' alias hgba='hg branches' +alias hgbk='hg bookmarks' alias hgco='hg checkout' alias hgd='hg diff' alias hged='hg diffmerge' From 872ef081d30f32fd7b38360bb0264452ebfd96eb Mon Sep 17 00:00:00 2001 From: Brian Galey Date: Tue, 9 Apr 2013 19:52:49 -0700 Subject: [PATCH 087/330] Add collectstatic to django command completions --- plugins/django/django.plugin.zsh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/django/django.plugin.zsh b/plugins/django/django.plugin.zsh index 0bbd031fe..66e0d1539 100644 --- a/plugins/django/django.plugin.zsh +++ b/plugins/django/django.plugin.zsh @@ -20,6 +20,19 @@ _managepy-createcachetable(){ $nul_args && ret=0 } +_managepy-collectstatic(){ + _arguments -s : \ + '--link=-[Create a symbolic link to each file instead of copying.]:' \ + '--noinput=-[Do NOT prompt the user for input of any kind.]:' \ + '--no-post-process=-[Do NOT post process collected files.]:' \ + '--ignore=-[Ignore files or directories matching this glob-style pattern. Use multiple times to ignore more.]:' \ + '--dry-run=-[Do everything except modify the filesystem.]:' \ + '--clear=-[Clear the existing files using the storage before trying to copy or link the original file.]:' \ + '--link=-[Create a symbolic link to each file instead of copying.]:' \ + '--no-default-ignore=-[Do not ignore the common private glob-style patterns "CVS", ".*" and "*~".]:' \ + $nul_args && ret=0 +} + _managepy-dbshell(){ _arguments -s : \ $nul_args && ret=0 @@ -163,6 +176,7 @@ _managepy-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.' + 'collectstatic:Collect static files in a single location.' '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.' From c3b20a65415dacb87f8ea5c94144d8ed12f95341 Mon Sep 17 00:00:00 2001 From: Brian Galey Date: Tue, 9 Apr 2013 19:54:50 -0700 Subject: [PATCH 088/330] Use completions with django-admin.py --- plugins/django/django.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/django/django.plugin.zsh b/plugins/django/django.plugin.zsh index 66e0d1539..9d898edca 100644 --- a/plugins/django/django.plugin.zsh +++ b/plugins/django/django.plugin.zsh @@ -234,4 +234,5 @@ _managepy() { compdef _managepy manage.py compdef _managepy django +compdef _managepy django-admin.py compdef _managepy django-manage From 0c9b4329efd79d33dd2c21bd960d5bd9b7627b7f Mon Sep 17 00:00:00 2001 From: George Miroshnykov Date: Tue, 9 Apr 2013 17:41:48 +0300 Subject: [PATCH 089/330] Support for Sublime Text 3 --- plugins/sublime/sublime.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh index bfbc45a07..804410057 100755 --- a/plugins/sublime/sublime.plugin.zsh +++ b/plugins/sublime/sublime.plugin.zsh @@ -21,6 +21,7 @@ elif [[ $('uname') == 'Darwin' ]]; then for _sublime_path in $_sublime_darwin_paths; do if [[ -a $_sublime_path ]]; then alias st="'$_sublime_path'" + break fi done fi From 07738ea86330b7b77127fc6f18474b3da2c6ecec Mon Sep 17 00:00:00 2001 From: Oleg Kandaurov Date: Fri, 12 Apr 2013 18:19:42 +0400 Subject: [PATCH 090/330] Add colorize plugin --- plugins/colorize/colorize.plugin.zsh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 plugins/colorize/colorize.plugin.zsh diff --git a/plugins/colorize/colorize.plugin.zsh b/plugins/colorize/colorize.plugin.zsh new file mode 100644 index 000000000..0696607d9 --- /dev/null +++ b/plugins/colorize/colorize.plugin.zsh @@ -0,0 +1,28 @@ +# Plugin for highligthing file content +# Plugin highlights file content based on the filename extension. +# If no highlighting method supported for given extension then it tries +# guess it by looking for file content. + +alias colorize='colorize_via_pygmentize' + +colorize_via_pygmentize() { + if [ ! -x $(which pygmentize) ]; then + echo package \'pygmentize\' is not installed! + exit -1 + fi + + if [ $# -eq 0 ]; then + pygmentize -g $@ + fi + + for FNAME in $@ + do + filename=$(basename "$FNAME") + lexer=`pygmentize -N \"$filename\"` + if [ "Z$lexer" != "Ztext" ]; then + pygmentize -l $lexer "$FNAME" + else + pygmentize -g "$FNAME" + fi + done +} \ No newline at end of file From 2d2aa641678f6cb691b67e40897c3fa185efadf8 Mon Sep 17 00:00:00 2001 From: Danyil Bohdan Date: Fri, 12 Apr 2013 18:19:09 +0300 Subject: [PATCH 091/330] Implemented UTF-8 support in fishy.zsh-theme. --- themes/fishy.zsh-theme | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/themes/fishy.zsh-theme b/themes/fishy.zsh-theme index e9f78a54e..8b24172a2 100644 --- a/themes/fishy.zsh-theme +++ b/themes/fishy.zsh-theme @@ -1,8 +1,13 @@ # ZSH Theme emulating the Fish shell's default prompt. _fishy_collapsed_wd() { - echo $(pwd | perl -pe "s|^$HOME|~|g; s|/([^/])[^/]*(?=/)|/\$1|g") -} + echo $(pwd | perl -pe " + BEGIN { + binmode STDIN, ':encoding(UTF-8)'; + binmode STDOUT, ':encoding(UTF-8)'; + }; s|^$HOME|~|g; s|/([^/])[^/]*(?=/)|/\$1|g +") +} local user_color='green'; [ $UID -eq 0 ] && user_color='red' PROMPT='%n@%m %{$fg[$user_color]%}$(_fishy_collapsed_wd)%{$reset_color%}%(!.#.>) ' From 388ae92d4755dae0f2d205dbb40fb0bbd975c9b3 Mon Sep 17 00:00:00 2001 From: toctan Date: Sun, 14 Apr 2013 13:07:17 +0800 Subject: [PATCH 092/330] command-not-found support for Arch Linux --- plugins/command-not-found/command-not-found.plugin.zsh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh index 567da1b45..f3d7ec2df 100644 --- a/plugins/command-not-found/command-not-found.plugin.zsh +++ b/plugins/command-not-found/command-not-found.plugin.zsh @@ -3,3 +3,7 @@ # this is installed in Ubuntu [[ -e /etc/zsh_command_not_found ]] && source /etc/zsh_command_not_found + +# Arch Linux command-not-found support, you must have package pkgfile installed +# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook +[[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh From 460cb3d0e0eb79f909a46ae3c1b9d1c19c55e0dd Mon Sep 17 00:00:00 2001 From: MatthR3D Date: Sun, 14 Apr 2013 13:08:03 +0200 Subject: [PATCH 093/330] Edit some yaourt aliases and add some * yaupg now also updates AUR packages * Add yalst alias : it lists the installed packages, even from AUR * Add yaorph alias : it removes orphans using yaourt --- plugins/archlinux/archlinux.plugin.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh index ae92a0b4c..bffe9657a 100644 --- a/plugins/archlinux/archlinux.plugin.zsh +++ b/plugins/archlinux/archlinux.plugin.zsh @@ -8,7 +8,7 @@ if [[ -x `which yaourt` ]]; then } 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 yaupg='yaourt -Syua' # Synchronize with repositories before upgrading packages (AUR packages too) that are out of date on the local system. alias yasu='yaourt --sucre' # Same as yaupg, but without confirmation 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 @@ -18,6 +18,8 @@ if [[ -x `which yaourt` ]]; then 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 + alias yalst='yaourt -Qe' # List installed packages, even those installed from AUR (they're tagged as "local") + alias yaorph='yaourt -Qtd' # Remove orphans using yaourt # 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 From ad3f59252beaf1a28e188dfc431a267875ca50b9 Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Tue, 16 Apr 2013 10:22:28 +0300 Subject: [PATCH 094/330] Added global aliases to use RAILS_ENV. --- plugins/rails/rails.plugin.zsh | 3 +++ plugins/rails3/rails3.plugin.zsh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh index cd232a6ae..76522e18d 100644 --- a/plugins/rails/rails.plugin.zsh +++ b/plugins/rails/rails.plugin.zsh @@ -9,6 +9,9 @@ alias rdbtp='rake db:test:prepare' alias sc='ruby script/console' alias sd='ruby script/server --debugger' alias devlog='tail -f log/development.log' +alias -g RET='RAILS_ENV=test' +alias -g REP='RAILS_ENV=production' +alias -g RED='RAILS_ENV=development' function remote_console() { /usr/bin/env ssh $1 "( cd $2 && ruby script/console production )" diff --git a/plugins/rails3/rails3.plugin.zsh b/plugins/rails3/rails3.plugin.zsh index 237d0594b..a2697872a 100644 --- a/plugins/rails3/rails3.plugin.zsh +++ b/plugins/rails3/rails3.plugin.zsh @@ -21,3 +21,6 @@ alias rsd='_rails_command server --debugger' alias devlog='tail -f log/development.log' alias rdm='rake db:migrate' alias rdr='rake db:rollback' +alias -g RET='RAILS_ENV=test' +alias -g REP='RAILS_ENV=production' +alias -g RED='RAILS_ENV=development' From 5dae44ac5965b36da1dfc20772059561d4973cda Mon Sep 17 00:00:00 2001 From: Roman Kamyk Date: Tue, 16 Apr 2013 10:10:21 -0700 Subject: [PATCH 095/330] Return code instead of dollar sign --- themes/rkj-repos.zsh-theme | 2 +- themes/rkj.zsh-theme | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/rkj-repos.zsh-theme b/themes/rkj-repos.zsh-theme index 318c315bb..46b8e83a0 100644 --- a/themes/rkj-repos.zsh-theme +++ b/themes/rkj-repos.zsh-theme @@ -24,6 +24,6 @@ function mygit() { # alternate prompt with git & hg PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%} -%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <$(mygit)$(hg_prompt_info)>%{\e[0m%}%b ' +%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B] <$(mygit)$(hg_prompt_info)>%{\e[0m%}%b ' PS2=$' \e[0;34m%}%B>%{\e[0m%}%b ' diff --git a/themes/rkj.zsh-theme b/themes/rkj.zsh-theme index 81b701e07..80122d5c6 100644 --- a/themes/rkj.zsh-theme +++ b/themes/rkj.zsh-theme @@ -3,6 +3,6 @@ # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%} -%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]%{\e[0m%}%b ' +%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B]%{\e[0m%}%b ' From 0b3d5608668880fd1f50f8c6a2099b4a5dd7871a Mon Sep 17 00:00:00 2001 From: Zoltan Debre Date: Wed, 17 Apr 2013 15:07:11 +0200 Subject: [PATCH 096/330] Update rvm.plugin.zsh to the latest ruby versions Ruby version numbers update: 1.8.7-p371 1.9.3-p392 2.0.0-p0 --- plugins/rvm/rvm.plugin.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh index 5000a49b3..cdd0a7847 100644 --- a/plugins/rvm/rvm.plugin.zsh +++ b/plugins/rvm/rvm.plugin.zsh @@ -3,9 +3,9 @@ fpath=($rvm_path/scripts/zsh/Completion $fpath) alias rubies='rvm list rubies' alias gemsets='rvm gemset list' -local ruby18='ruby-1.8.7-p334' -local ruby19='ruby-1.9.3-p385' -local ruby20='ruby-2.0.0-rc2' +local ruby18='ruby-1.8.7-p371' +local ruby19='ruby-1.9.3-p392' +local ruby20='ruby-2.0.0-p0' function rb18 { if [ -z "$1" ]; then From 7db2b20fc4982d0b523d5ac5c59d0351229bbc32 Mon Sep 17 00:00:00 2001 From: Stefan Tatschner Date: Wed, 17 Apr 2013 15:07:53 +0200 Subject: [PATCH 097/330] Added git-flow-avh plugin. git-flow-avh is a fork of gitflow, see: https://github.com/petervanderdoes/gitflow --- plugins/git-flow-avh/git-flow-avh.plugin.zsh | 416 +++++++++++++++++++ 1 file changed, 416 insertions(+) create mode 100644 plugins/git-flow-avh/git-flow-avh.plugin.zsh diff --git a/plugins/git-flow-avh/git-flow-avh.plugin.zsh b/plugins/git-flow-avh/git-flow-avh.plugin.zsh new file mode 100644 index 000000000..d76f55ef6 --- /dev/null +++ b/plugins/git-flow-avh/git-flow-avh.plugin.zsh @@ -0,0 +1,416 @@ +#!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.' + 'config:Manage your configuration.' + '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 + ;; + (config) + __git-flow-config + ;; + + 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`)' + 'publish:Publish release branch to remote.' + 'track:Checkout remote release branch.' + 'delet:Delete a release branch.' + ) + _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' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':version:__git_flow_version_list' + ;; + + (publish) + _arguments \ + ':version:__git_flow_version_list' + ;; + + (track) + _arguments \ + ':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.' + 'delete:Delete 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' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':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.' + 'delete:Delete a feature branch.' + 'list:List all your feature branches. (Alias to `git flow feature`)' + 'publish:Publish feature branch to remote.' + 'track:Checkout remote feature branch.' + 'diff:Show all changes.' + 'rebase:Rebase from integration branch.' + 'checkout:Checkout local feature branch.' + 'pull:Pull changes from remote.' + ) + _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' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':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-config () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'list:List the configuration. (Alias to `git flow config`)' + 'set:Set the configuration option' + ) + _describe -t commands 'git flow config' subcommands + ;; + + (options) + case $line[1] in + + (set) + _arguments \ + --local'[Use repository config file]' \ + --global'[Use global config file]'\ + --system'[Use system config file]'\ + --file'[Use given config file]'\ + ':option:(master develop feature hotfix release support versiontagprefix)' + ;; + + *) + _arguments \ + --local'[Use repository config file]' \ + --global'[Use global config file]'\ + --system'[Use system config file]'\ + --file'[Use given config file]' + ;; + 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:'provide high-level repository operations' From f2b915c56741c846e845b037e9fdeb7c3f063bc3 Mon Sep 17 00:00:00 2001 From: jaseg Date: Wed, 17 Apr 2013 17:08:36 -0700 Subject: [PATCH 098/330] The safe-paste plugin now works with tmux, too --- plugins/safe-paste/safe-paste.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/safe-paste/safe-paste.plugin.zsh b/plugins/safe-paste/safe-paste.plugin.zsh index 0aa97965f..17c212c19 100644 --- a/plugins/safe-paste/safe-paste.plugin.zsh +++ b/plugins/safe-paste/safe-paste.plugin.zsh @@ -43,12 +43,12 @@ function _paste_insert() { function _zle_line_init() { # Tell terminal to send escape codes around pastes. - [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color ]] && printf '\e[?2004h' + [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004h' } function _zle_line_finish() { # Tell it to stop when we leave zle, so pasting in other programs # doesn't get the ^[[200~ codes around the pasted text. - [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color ]] && printf '\e[?2004l' + [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004l' } From 52dc3b99f9963576f50ba87a46953e92591e4d7d Mon Sep 17 00:00:00 2001 From: Chris Borgia Date: Thu, 18 Apr 2013 16:27:02 -0400 Subject: [PATCH 099/330] Edited Grammar in template file --- templates/zshrc.zsh-template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template index 2ea9934af..30399abf3 100644 --- a/templates/zshrc.zsh-template +++ b/templates/zshrc.zsh-template @@ -17,7 +17,7 @@ ZSH_THEME="robbyrussell" # Comment this out to disable bi-weekly auto-update checks # DISABLE_AUTO_UPDATE="true" -# Uncomment to change how many often would you like to wait before auto-updates occur? (in days) +# Uncomment to change how often before auto-updates occur? (in days) # export UPDATE_ZSH_DAYS=13 # Uncomment following line if you want to disable colors in ls From a08f626f1c37043cdf1e2632f283e537396a205b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Garami=20G=C3=A1bor?= Date: Sat, 20 Apr 2013 21:40:15 +0200 Subject: [PATCH 100/330] Adding undocumented clean command to completion Clean command is undocumented (not included in bundle help output), however that is very useful, especially in RVM environment you can clean up outdated gems in gemset. --- plugins/bundler/_bundler | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/bundler/_bundler b/plugins/bundler/_bundler index 5d22cac9a..2ec3a5f9c 100644 --- a/plugins/bundler/_bundler +++ b/plugins/bundler/_bundler @@ -23,6 +23,7 @@ case $state in "viz[Generate a visual representation of your dependencies]" \ "init[Generate a simple Gemfile, placed in the current directory]" \ "gem[Create a simple gem, suitable for development with bundler]" \ + "clean[Cleans up unused gems in your bundler directory]" \ "help[Describe available tasks or one specific task]" ret=0 ;; @@ -62,6 +63,14 @@ case $state in exec) _normal && ret=0 ;; + clean) + _arguments \ + '(--force)--force[forces clean even if --path is not set]' \ + '(--dry-run)--dry-run[only print out changes, do not actually clean gems]' \ + '(--no-color)--no-color[Disable colorization in output]' \ + '(--verbose)--verbose[Enable verbose output mode]' + ret=0 + ;; (open|show) _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) if [[ $_gems != "" ]]; then From bc385531b0e71b90b800502117bbdc8d1531e4c2 Mon Sep 17 00:00:00 2001 From: Ron Shapiro Date: Sat, 20 Apr 2013 22:37:36 -0400 Subject: [PATCH 101/330] Separate the battery_pct_remaining data into it's own function so that it can be obtained even if the battery is connected. --- plugins/battery/battery.plugin.zsh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index 95f890632..0c7c9421f 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -10,12 +10,16 @@ if [[ $(uname) == "Darwin" ]] ; then + function battery_pct() { + typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') + typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') + integer i=$(((currentcapacity/maxcapacity) * 100)) + echo $i + } + function battery_pct_remaining() { if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then - typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') - typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') - integer i=$(((currentcapacity/maxcapacity) * 100)) - echo $i + battery_pct else echo "External Power" fi From d615f6437408d66fa8aad031eb45942bf84fed86 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 21 Apr 2013 02:10:21 -0500 Subject: [PATCH 102/330] git: fix parse_git_dirty() If oh-my-zsh.hide-status is configured, the 'clean' code won't be generated, and some themes might end up distorted. Let's generate the 'clean' code even when we don't want the show the dirty status. Signed-off-by: Felipe Contreras --- lib/git.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/git.zsh b/lib/git.zsh index 76fe9b142..353c42f3c 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -21,6 +21,8 @@ parse_git_dirty() { else echo "$ZSH_THEME_GIT_PROMPT_CLEAN" fi + else + echo "$ZSH_THEME_GIT_PROMPT_CLEAN" fi } From 72a8c08cc897520ea74ae49e811cd9e34501c520 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 21 Apr 2013 01:34:44 -0500 Subject: [PATCH 103/330] gitfast: synchronize with upstream Up to version 1.8.2.1. Signed-off-by: Felipe Contreras --- plugins/gitfast/_git | 9 + plugins/gitfast/git-completion.bash | 447 +++++++++++++++++++++++----- plugins/gitfast/git-prompt.sh | 149 ++++++++-- 3 files changed, 503 insertions(+), 102 deletions(-) diff --git a/plugins/gitfast/_git b/plugins/gitfast/_git index 45775021f..cf8116d47 100644 --- a/plugins/gitfast/_git +++ b/plugins/gitfast/_git @@ -60,6 +60,15 @@ __gitcomp_nl () compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 } +__gitcomp_file () +{ + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 +} + _git () { local _ret=1 diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash index be800e09b..93eba4675 100644 --- a/plugins/gitfast/git-completion.bash +++ b/plugins/gitfast/git-completion.bash @@ -13,6 +13,7 @@ # *) .git/remotes file names # *) git 'subcommands' # *) tree paths within 'ref:path/to/file' expressions +# *) file paths within current working directory and index # *) common --long-options # # To use these routines: @@ -23,10 +24,6 @@ # 3) Consider changing your PS1 to also show the current branch, # see git-prompt.sh for details. -if [[ -n ${ZSH_VERSION-} ]]; then - autoload -U +X bashcompinit && bashcompinit -fi - case "$COMP_WORDBREAKS" in *:*) : great ;; *) COMP_WORDBREAKS="$COMP_WORDBREAKS:" @@ -169,7 +166,6 @@ __git_reassemble_comp_words_by_ref() } if ! type _get_comp_words_by_ref >/dev/null 2>&1; then -if [[ -z ${ZSH_VERSION:+set} ]]; then _get_comp_words_by_ref () { local exclude cur_ words_ cword_ @@ -197,32 +193,6 @@ _get_comp_words_by_ref () shift done } -else -_get_comp_words_by_ref () -{ - while [ $# -gt 0 ]; do - case "$1" in - cur) - cur=${COMP_WORDS[COMP_CWORD]} - ;; - prev) - prev=${COMP_WORDS[COMP_CWORD-1]} - ;; - words) - words=("${COMP_WORDS[@]}") - ;; - cword) - cword=$COMP_CWORD - ;; - -n) - # assume COMP_WORDBREAKS is already set sanely - shift - ;; - esac - shift - done -} -fi fi # Generates completion reply with compgen, appending a space to possible @@ -264,6 +234,124 @@ __gitcomp_nl () COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}")) } +# Generates completion reply with compgen from newline-separated possible +# completion filenames. +# It accepts 1 to 3 arguments: +# 1: List of possible completion filenames, separated by a single newline. +# 2: A directory prefix to be added to each possible completion filename +# (optional). +# 3: Generate possible completion matches for this word (optional). +__gitcomp_file () +{ + local IFS=$'\n' + + # XXX does not work when the directory prefix contains a tilde, + # since tilde expansion is not applied. + # This means that COMPREPLY will be empty and Bash default + # completion will be used. + COMPREPLY=($(compgen -P "${2-}" -W "$1" -- "${3-$cur}")) + + # Tell Bash that compspec generates filenames. + compopt -o filenames 2>/dev/null +} + +__git_index_file_list_filter_compat () +{ + local path + + while read -r path; do + case "$path" in + ?*/*) echo "${path%%/*}/" ;; + *) echo "$path" ;; + esac + done +} + +__git_index_file_list_filter_bash () +{ + local path + + while read -r path; do + case "$path" in + ?*/*) + # XXX if we append a slash to directory names when using + # `compopt -o filenames`, Bash will append another slash. + # This is pretty stupid, and this the reason why we have to + # define a compatible version for this function. + echo "${path%%/*}" ;; + *) + echo "$path" ;; + esac + done +} + +# Process path list returned by "ls-files" and "diff-index --name-only" +# commands, in order to list only file names relative to a specified +# directory, and append a slash to directory names. +__git_index_file_list_filter () +{ + # Default to Bash >= 4.x + __git_index_file_list_filter_bash +} + +# Execute git ls-files, returning paths relative to the directory +# specified in the first argument, and using the options specified in +# the second argument. +__git_ls_files_helper () +{ + ( + test -n "${CDPATH+set}" && unset CDPATH + # NOTE: $2 is not quoted in order to support multiple options + cd "$1" && git ls-files --exclude-standard $2 + ) 2>/dev/null +} + + +# Execute git diff-index, returning paths relative to the directory +# specified in the first argument, and using the tree object id +# specified in the second argument. +__git_diff_index_helper () +{ + ( + test -n "${CDPATH+set}" && unset CDPATH + cd "$1" && git diff-index --name-only --relative "$2" + ) 2>/dev/null +} + +# __git_index_files accepts 1 or 2 arguments: +# 1: Options to pass to ls-files (required). +# Supported options are --cached, --modified, --deleted, --others, +# and --directory. +# 2: A directory path (optional). +# If provided, only files within the specified directory are listed. +# Sub directories are never recursed. Path must have a trailing +# slash. +__git_index_files () +{ + local dir="$(__gitdir)" root="${2-.}" + + if [ -d "$dir" ]; then + __git_ls_files_helper "$root" "$1" | __git_index_file_list_filter | + sort | uniq + fi +} + +# __git_diff_index_files accepts 1 or 2 arguments: +# 1) The id of a tree object. +# 2) A directory path (optional). +# If provided, only files within the specified directory are listed. +# Sub directories are never recursed. Path must have a trailing +# slash. +__git_diff_index_files () +{ + local dir="$(__gitdir)" root="${2-.}" + + if [ -d "$dir" ]; then + __git_diff_index_helper "$root" "$1" | __git_index_file_list_filter | + sort | uniq + fi +} + __git_heads () { local dir="$(__gitdir)" @@ -321,7 +409,7 @@ __git_refs () if [[ "$ref" == "$cur"* ]]; then echo "$ref" fi - done | uniq -u + done | sort | uniq -u fi return fi @@ -428,7 +516,7 @@ __git_complete_revlist_file () *) pfx="$ref:$pfx" ;; esac - __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \ + __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \ | sed '/^100... blob /{ s,^.* ,, s,$, , @@ -461,6 +549,46 @@ __git_complete_revlist_file () } +# __git_complete_index_file requires 1 argument: the options to pass to +# ls-file +__git_complete_index_file () +{ + local pfx cur_="$cur" + + case "$cur_" in + ?*/*) + pfx="${cur_%/*}" + cur_="${cur_##*/}" + pfx="${pfx}/" + + __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" + ;; + *) + __gitcomp_file "$(__git_index_files "$1")" "" "$cur_" + ;; + esac +} + +# __git_complete_diff_index_file requires 1 argument: the id of a tree +# object +__git_complete_diff_index_file () +{ + local pfx cur_="$cur" + + case "$cur_" in + ?*/*) + pfx="${cur_%/*}" + cur_="${cur_##*/}" + pfx="${pfx}/" + + __gitcomp_file "$(__git_diff_index_files "$1" "$pfx")" "$pfx" "$cur_" + ;; + *) + __gitcomp_file "$(__git_diff_index_files "$1")" "" "$cur_" + ;; + esac +} + __git_complete_file () { __git_complete_revlist_file @@ -562,10 +690,19 @@ __git_complete_strategy () return 1 } +__git_commands () { + if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}" + then + printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}" + else + git help -a|egrep '^ [a-zA-Z0-9]' + fi +} + __git_list_all_commands () { local i IFS=" "$'\n' - for i in $(git help -a|egrep '^ [a-zA-Z0-9]') + for i in $(__git_commands) do case $i in *--*) : helper pattern;; @@ -585,7 +722,7 @@ __git_list_porcelain_commands () { local i IFS=" "$'\n' __git_compute_all_commands - for i in "help" $__git_all_commands + for i in $__git_all_commands do case $i in *--*) : helper pattern;; @@ -594,6 +731,7 @@ __git_list_porcelain_commands () archimport) : import;; cat-file) : plumbing;; check-attr) : plumbing;; + check-ignore) : plumbing;; check-ref-format) : plumbing;; checkout-index) : plumbing;; commit-tree) : plumbing;; @@ -753,6 +891,43 @@ __git_has_doubledash () return 1 } +# Try to count non option arguments passed on the command line for the +# specified git command. +# When options are used, it is necessary to use the special -- option to +# tell the implementation were non option arguments begin. +# XXX this can not be improved, since options can appear everywhere, as +# an example: +# git mv x -n y +# +# __git_count_arguments requires 1 argument: the git command executed. +__git_count_arguments () +{ + local word i c=0 + + # Skip "git" (first argument) + for ((i=1; i < ${#words[@]}; i++)); do + word="${words[i]}" + + case "$word" in + --) + # Good; we can assume that the following are only non + # option arguments. + ((c = 0)) + ;; + "$1") + # Skip the specified git command and discard git + # main options + ((c = 0)) + ;; + ?*) + ((c++)) + ;; + esac + done + + printf "%d" $c +} + __git_whitespacelist="nowarn warn error error-all fix" _git_am () @@ -801,8 +976,6 @@ _git_apply () _git_add () { - __git_has_doubledash && return - case "$cur" in --*) __gitcomp " @@ -811,7 +984,9 @@ _git_add () " return esac - COMPREPLY=() + + # XXX should we check for --update and --all options ? + __git_complete_index_file "--others --modified" } _git_archive () @@ -961,15 +1136,15 @@ _git_cherry_pick () _git_clean () { - __git_has_doubledash && return - case "$cur" in --*) __gitcomp "--dry-run --quiet" return ;; esac - COMPREPLY=() + + # XXX should we check for -x option ? + __git_complete_index_file "--others" } _git_clone () @@ -989,6 +1164,8 @@ _git_clone () --upload-pack --template= --depth + --single-branch + --branch " return ;; @@ -998,7 +1175,19 @@ _git_clone () _git_commit () { - __git_has_doubledash && return + case "$prev" in + -c|-C) + __gitcomp_nl "$(__git_refs)" "" "${cur}" + return + ;; + esac + + case "$prev" in + -c|-C) + __gitcomp_nl "$(__git_refs)" "" "${cur}" + return + ;; + esac case "$cur" in --cleanup=*) @@ -1027,7 +1216,13 @@ _git_commit () " return esac - COMPREPLY=() + + if git rev-parse --verify --quiet HEAD >/dev/null; then + __git_complete_diff_index_file "HEAD" + else + # This is the first commit + __git_complete_index_file "--cached" + fi } _git_describe () @@ -1043,6 +1238,8 @@ _git_describe () __gitcomp_nl "$(__git_refs)" } +__git_diff_algorithms="myers minimal patience histogram" + __git_diff_common_options="--stat --numstat --shortstat --summary --patch-with-stat --name-only --name-status --color --no-color --color-words --no-renames --check @@ -1053,10 +1250,11 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --no-ext-diff --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= - --patience + --patience --histogram --minimal --raw --dirstat --dirstat= --dirstat-by-file --dirstat-by-file= --cumulative + --diff-algorithm= " _git_diff () @@ -1064,6 +1262,10 @@ _git_diff () __git_has_doubledash && return case "$cur" in + --diff-algorithm=*) + __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" + return + ;; --*) __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs --no-index @@ -1116,6 +1318,14 @@ _git_fetch () __git_complete_remote_or_refspec } +__git_format_patch_options=" + --stdout --attach --no-attach --thread --thread= --output-directory + --numbered --start-number --numbered-files --keep-subject --signoff + --signature --no-signature --in-reply-to= --cc= --full-index --binary + --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix= + --inline --suffix= --ignore-if-in-upstream --subject-prefix= +" + _git_format_patch () { case "$cur" in @@ -1126,21 +1336,7 @@ _git_format_patch () return ;; --*) - __gitcomp " - --stdout --attach --no-attach --thread --thread= - --output-directory - --numbered --start-number - --numbered-files - --keep-subject - --signoff --signature --no-signature - --in-reply-to= --cc= - --full-index --binary - --not --all - --cover-letter - --no-prefix --src-prefix= --dst-prefix= - --inline --suffix= --ignore-if-in-upstream - --subject-prefix= - " + __gitcomp "$__git_format_patch_options" return ;; esac @@ -1251,8 +1447,6 @@ _git_init () _git_ls_files () { - __git_has_doubledash && return - case "$cur" in --*) __gitcomp "--cached --deleted --modified --others --ignored @@ -1265,7 +1459,10 @@ _git_ls_files () return ;; esac - COMPREPLY=() + + # XXX ignore options like --modified and always suggest all cached + # files. + __git_complete_index_file "--cached" } _git_ls_remote () @@ -1397,7 +1594,14 @@ _git_mv () return ;; esac - COMPREPLY=() + + if [ $(__git_count_arguments "mv") -gt 0 ]; then + # We need to show both cached and untracked files (including + # empty directories) since this may not be the last argument. + __git_complete_index_file "--cached --others --directory" + else + __git_complete_index_file "--cached" + fi } _git_name_rev () @@ -1554,6 +1758,12 @@ _git_send_email () __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}" return ;; + --thread=*) + __gitcomp " + deep shallow + " "" "${cur##--thread=}" + return + ;; --*) __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to --compose --confirm= --dry-run --envelope-sender @@ -1563,11 +1773,12 @@ _git_send_email () --signed-off-by-cc --smtp-pass --smtp-server --smtp-server-port --smtp-encryption= --smtp-user --subject --suppress-cc= --suppress-from --thread --to - --validate --no-validate" + --validate --no-validate + $__git_format_patch_options" return ;; esac - COMPREPLY=() + __git_complete_revlist } _git_stage () @@ -1581,7 +1792,7 @@ __git_config_get_set_variables () while [ $c -gt 1 ]; do word="${words[c]}" case "$word" in - --global|--system|--file=*) + --system|--global|--local|--file=*) config_file="$word" break ;; @@ -1687,7 +1898,7 @@ _git_config () case "$cur" in --*) __gitcomp " - --global --system --file= + --system --global --local --file= --list --replace-all --get --get-all --get-regexp --add --unset --unset-all @@ -1860,6 +2071,7 @@ _git_config () diff.suppressBlankEmpty diff.tool diff.wordRegex + diff.algorithm difftool. difftool.prompt fetch.recurseSubmodules @@ -2096,15 +2308,14 @@ _git_revert () _git_rm () { - __git_has_doubledash && return - case "$cur" in --*) __gitcomp "--cached --dry-run --ignore-unmatch --quiet" return ;; esac - COMPREPLY=() + + __git_complete_index_file "--cached" } _git_shortlog () @@ -2134,6 +2345,10 @@ _git_show () " "" "${cur#*=}" return ;; + --diff-algorithm=*) + __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" + return + ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --oneline $__git_diff_common_options @@ -2429,20 +2644,88 @@ __gitk_main () __git_complete_revlist } +if [[ -n ${ZSH_VERSION-} ]]; then + echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2 + + autoload -U +X compinit && compinit + + __gitcomp () + { + emulate -L zsh + + local cur_="${3-$cur}" + + case "$cur_" in + --*=) + ;; + *) + local c IFS=$' \t\n' + local -a array + for c in ${=1}; do + c="$c${4-}" + case $c in + --*=*|*.) ;; + *) c="$c " ;; + esac + array[$#array+1]="$c" + done + compset -P '*[=:]' + compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 + ;; + esac + } + + __gitcomp_nl () + { + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 + } + + __gitcomp_file () + { + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 + } + + __git_zsh_helper () + { + emulate -L ksh + local cur cword prev + cur=${words[CURRENT-1]} + prev=${words[CURRENT-2]} + let cword=CURRENT-1 + __${service}_main + } + + _git () + { + emulate -L zsh + local _ret=1 + __git_zsh_helper + let _ret && _default -S '' && _ret=0 + return _ret + } + + compdef _git git gitk + return +elif [[ -n ${BASH_VERSION-} ]]; then + if ((${BASH_VERSINFO[0]} < 4)); then + # compopt is not supported + __git_index_file_list_filter () + { + __git_index_file_list_filter_compat + } + fi +fi + __git_func_wrap () { - if [[ -n ${ZSH_VERSION-} ]]; then - emulate -L bash - setopt KSH_TYPESET - - # workaround zsh's bug that leaves 'words' as a special - # variable in versions < 4.3.12 - typeset -h words - - # workaround zsh's bug that quotes spaces in the COMPREPLY - # array if IFS doesn't contain spaces. - typeset -h IFS - fi local cur words cword prev _get_comp_words_by_ref -n =: cur words cword prev $1 diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index afd76e86e..65f8368f1 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -10,9 +10,22 @@ # 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). # 2) Add the following line to your .bashrc/.zshrc: # source ~/.git-prompt.sh -# 3) Change your PS1 to also show the current branch: -# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' -# ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' +# 3a) Change your PS1 to call __git_ps1 as +# command-substitution: +# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' +# ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' +# the optional argument will be used as format string. +# 3b) Alternatively, if you are using bash, __git_ps1 can be +# used for PROMPT_COMMAND with two parameters,
 and
+#        , which are strings you would put in $PS1 before
+#        and after the status string generated by the git-prompt
+#        machinery.  e.g.
+#           PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
+#        will show username, at-sign, host, colon, cwd, then
+#        various status string, followed by dollar and SP, as
+#        your prompt.
+#        Optionally, you can supply a third argument with a printf
+#        format string to finetune the output of the branch status
 #
 # The argument to __git_ps1 will be displayed only if you are currently
 # in a git repository.  The %s token will be the name of the current
@@ -30,7 +43,10 @@
 #
 # If you would like to see if there're untracked files, then you can set
 # GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
-# files, then a '%' will be shown next to the branch name.
+# files, then a '%' will be shown next to the branch name.  You can
+# configure this per-repository with the bash.showUntrackedFiles
+# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
+# enabled.
 #
 # If you would like to see the difference between HEAD and its upstream,
 # set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
@@ -49,6 +65,19 @@
 # find one, or @{upstream} otherwise.  Once you have set
 # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
 # setting the bash.showUpstream config variable.
+#
+# If you would like to see more information about the identity of
+# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
+# to one of these values:
+#
+#     contains      relative to newer annotated tag (v1.6.3.2~35)
+#     branch        relative to newer tag or branch (master~4)
+#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
+#     default       exactly matching tag
+#
+# If you would like a colored hint about the current dirty state, set
+# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
+# the colored output of "git status -sb".
 
 # __gitdir accepts 0 or 1 arguments (i.e., location)
 # returns location of .git repo
@@ -195,11 +224,43 @@ __git_ps1_show_upstream ()
 
 
 # __git_ps1 accepts 0 or 1 arguments (i.e., format string)
-# returns text to add to bash PS1 prompt (includes branch name)
+# when called from PS1 using command substitution
+# in this mode it prints text to add to bash PS1 prompt (includes branch name)
+#
+# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
+# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
+# when two arguments are given, the first is prepended and the second appended
+# to the state string when assigned to PS1.
+# The optional third parameter will be used as printf format string to further
+# customize the output of the git-status string.
+# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
 __git_ps1 ()
 {
+	local pcmode=no
+	local detached=no
+	local ps1pc_start='\u@\h:\w '
+	local ps1pc_end='\$ '
+	local printf_format=' (%s)'
+
+	case "$#" in
+		2|3)	pcmode=yes
+			ps1pc_start="$1"
+			ps1pc_end="$2"
+			printf_format="${3:-$printf_format}"
+		;;
+		0|1)	printf_format="${1:-$printf_format}"
+		;;
+		*)	return
+		;;
+	esac
+
 	local g="$(__gitdir)"
-	if [ -n "$g" ]; then
+	if [ -z "$g" ]; then
+		if [ $pcmode = yes ]; then
+			#In PC mode PS1 always needs to be set
+			PS1="$ps1pc_start$ps1pc_end"
+		fi
+	else
 		local r=""
 		local b=""
 		if [ -f "$g/rebase-merge/interactive" ]; then
@@ -226,7 +287,7 @@ __git_ps1 ()
 			fi
 
 			b="$(git symbolic-ref HEAD 2>/dev/null)" || {
-
+				detached=yes
 				b="$(
 				case "${GIT_PS1_DESCRIBE_STYLE-}" in
 				(contains)
@@ -259,24 +320,25 @@ __git_ps1 ()
 				b="GIT_DIR!"
 			fi
 		elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
-			if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
-				if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
-					git diff --no-ext-diff --quiet --exit-code || w="*"
-					if git rev-parse --quiet --verify HEAD >/dev/null; then
-						git diff-index --cached --quiet HEAD -- || i="+"
-					else
-						i="#"
-					fi
+			if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
+			   [ "$(git config --bool bash.showDirtyState)" != "false" ]
+			then
+				git diff --no-ext-diff --quiet --exit-code || w="*"
+				if git rev-parse --quiet --verify HEAD >/dev/null; then
+					git diff-index --cached --quiet HEAD -- || i="+"
+				else
+					i="#"
 				fi
 			fi
 			if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then
 				git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
 			fi
 
-			if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ]; then
-				if [ -n "$(git ls-files --others --exclude-standard)" ]; then
-					u="%%"
-				fi
+			if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
+			   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
+			   [ -n "$(git ls-files --others --exclude-standard)" ]
+			then
+				u="%%"
 			fi
 
 			if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
@@ -285,6 +347,53 @@ __git_ps1 ()
 		fi
 
 		local f="$w$i$s$u"
-		printf -- "${1:- (%s)}" "$c${b##refs/heads/}${f:+ $f}$r$p"
+		if [ $pcmode = yes ]; then
+			local gitstring=
+			if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
+				local c_red='\e[31m'
+				local c_green='\e[32m'
+				local c_lblue='\e[1;34m'
+				local c_clear='\e[0m'
+				local bad_color=$c_red
+				local ok_color=$c_green
+				local branch_color="$c_clear"
+				local flags_color="$c_lblue"
+				local branchstring="$c${b##refs/heads/}"
+
+				if [ $detached = no ]; then
+					branch_color="$ok_color"
+				else
+					branch_color="$bad_color"
+				fi
+
+				# Setting gitstring directly with \[ and \] around colors
+				# is necessary to prevent wrapping issues!
+				gitstring="\[$branch_color\]$branchstring\[$c_clear\]"
+
+				if [ -n "$w$i$s$u$r$p" ]; then
+					gitstring="$gitstring "
+				fi
+				if [ "$w" = "*" ]; then
+					gitstring="$gitstring\[$bad_color\]$w"
+				fi
+				if [ -n "$i" ]; then
+					gitstring="$gitstring\[$ok_color\]$i"
+				fi
+				if [ -n "$s" ]; then
+					gitstring="$gitstring\[$flags_color\]$s"
+				fi
+				if [ -n "$u" ]; then
+					gitstring="$gitstring\[$bad_color\]$u"
+				fi
+				gitstring="$gitstring\[$c_clear\]$r$p"
+			else
+				gitstring="$c${b##refs/heads/}${f:+ $f}$r$p"
+			fi
+			gitstring=$(printf -- "$printf_format" "$gitstring")
+			PS1="$ps1pc_start$gitstring$ps1pc_end"
+		else
+			# NO color option unless in PROMPT_COMMAND mode
+			printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
+		fi
 	fi
 }

From c944f8b465e6c28f9a42ac6d71c90ddf9a5b5742 Mon Sep 17 00:00:00 2001
From: Felipe Contreras 
Date: Thu, 29 Nov 2012 15:54:17 +0100
Subject: [PATCH 104/330] gitfast: fix prompt

Certain themes need the 'clean' mark, and some people like to have the
'dirty' one, just like the original git_promp_info().

We probably shouldn't be modifying that function, there's no other clean
way to achieve our own status information, so let's try to emulate the
original as much as possible.

Signed-off-by: Felipe Contreras 
---
 plugins/gitfast/gitfast.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/gitfast/gitfast.plugin.zsh b/plugins/gitfast/gitfast.plugin.zsh
index 7e50cf721..dba1b1315 100644
--- a/plugins/gitfast/gitfast.plugin.zsh
+++ b/plugins/gitfast/gitfast.plugin.zsh
@@ -3,5 +3,6 @@ source $dir/../git/git.plugin.zsh
 source $dir/git-prompt.sh
 
 function git_prompt_info() {
-  __git_ps1 "${ZSH_THEME_GIT_PROMPT_PREFIX//\%/%%}%s${ZSH_THEME_GIT_PROMPT_SUFFIX//\%/%%}"
+  dirty="$(parse_git_dirty)"
+  __git_ps1 "${ZSH_THEME_GIT_PROMPT_PREFIX//\%/%%}%s${dirty//\%/%%}${ZSH_THEME_GIT_PROMPT_SUFFIX//\%/%%}"
 }

From e41714d72c6c5629efe632b1052b590f5f8905c5 Mon Sep 17 00:00:00 2001
From: Jeremy Attali 
Date: Mon, 22 Apr 2013 10:59:08 +0200
Subject: [PATCH 105/330] Added option to allow untracked files as non dirty

In this commit, the option only works for git but it should not be to hard for
someone who knows svn to so the same.
This commit is largely inspired by @yoavweiss, I only added an option to use
it.
---
 lib/git.zsh                  | 6 +++++-
 templates/zshrc.zsh-template | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/git.zsh b/lib/git.zsh
index 76fe9b142..5f8453112 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -15,7 +15,11 @@ parse_git_dirty() {
     if [[ $POST_1_7_2_GIT -gt 0 ]]; then
           SUBMODULE_SYNTAX="--ignore-submodules=dirty"
     fi  
-    GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
+    if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" != "true" ]]; then
+        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
+    else
+        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
+    fi
     if [[ -n $GIT_STATUS && "$GIT_STATUS" != "$CLEAN_MESSAGE" ]]; then
       echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
     else
diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template
index 2ea9934af..58f193550 100644
--- a/templates/zshrc.zsh-template
+++ b/templates/zshrc.zsh-template
@@ -29,6 +29,11 @@ ZSH_THEME="robbyrussell"
 # Uncomment following line if you want red dots to be displayed while waiting for completion
 # COMPLETION_WAITING_DOTS="true"
 
+# Uncomment following line if you want to disable marking untracked files under
+# VCS as dirty. This makes repository status check for large repositories much,
+# much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="true"
+
 # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
 # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
 # Example format: plugins=(rails git textmate ruby lighthouse)

From 785b1c6337e1da6b2356e71b72ef6b4c93460e90 Mon Sep 17 00:00:00 2001
From: Dustin Hemmerling 
Date: Mon, 22 Apr 2013 16:01:09 -0700
Subject: [PATCH 106/330] mvn plugin was missing "redeploy" completion for
 tomcat.

---
 plugins/mvn/mvn.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh
index c2d8e7ed7..799f6fc8c 100644
--- a/plugins/mvn/mvn.plugin.zsh
+++ b/plugins/mvn/mvn.plugin.zsh
@@ -114,7 +114,7 @@ function listMavenCompletions {
         # jboss
         jboss:start jboss:stop jboss:deploy jboss:undeploy jboss:redeploy
         # tomcat
-        tomcat:start tomcat:stop tomcat:deploy tomcat:undeploy tomcat:undeploy
+        tomcat:start tomcat:stop tomcat:deploy tomcat:undeploy tomcat:redeploy
         # tomcat6
         tomcat6:run tomcat6:run-war tomcat6:run-war-only tomcat6:stop tomcat6:deploy tomcat6:undeploy
         # tomcat7

From 680302c9f6ce71f69afaf7d020ed400cec2e5d58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tobias=20Sj=C3=B6sten?= 
Date: Tue, 23 Apr 2013 09:35:27 +0300
Subject: [PATCH 107/330] Added 'jekyll' to list of bundled commands

---
 plugins/bundler/bundler.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index bc21da134..a288cffcd 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -6,7 +6,7 @@ alias bu="bundle update"
 
 # The following is based on https://github.com/gma/bundler-exec
 
-bundled_commands=(annotate cap capify cucumber foreman guard middleman nanoc rackup rainbows rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails puma)
+bundled_commands=(annotate cap capify cucumber foreman guard jekyll middleman nanoc rackup rainbows rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails puma)
 
 ## Functions
 

From d537193f262d277158f01bd319bfe76d154b751d Mon Sep 17 00:00:00 2001
From: Tobias Preuss 
Date: Tue, 23 Apr 2013 10:41:58 +0200
Subject: [PATCH 108/330] Add auto-completion for zeus.

---
 plugins/zeus/_zeus | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 plugins/zeus/_zeus

diff --git a/plugins/zeus/_zeus b/plugins/zeus/_zeus
new file mode 100644
index 000000000..5a13bd9ec
--- /dev/null
+++ b/plugins/zeus/_zeus
@@ -0,0 +1,34 @@
+#compdef zeus
+#autoload
+
+# in order to make this work, you will need to have the gem zeus installed
+
+# zeus zsh completion, based on adb completion
+
+local -a _1st_arguments
+_1st_arguments=(
+'console:Lets you interact with your Rails application from the command line. (alias = c)'
+'cucumber:Runs cucumber.'
+'dbconsole:Figures out which database you are using and drops you into whichever command line interface.'
+'destroy:Figures out what generate did, and undoes it. (alias = d)'
+'generate:Uses templates to create a whole lot of things. (alias = g)'
+'rake:Execute rake tasks.'
+'runner:Runs Ruby code in the context of Rails non-interactively. (alias = r)'
+'server:Launches a small web server named WEBrick which comes bundled with Ruby. (alias = s)'
+'start:Preloads the zeus environment'
+'test:Runs RSpec tests. (alias = rspec, testrb)'
+'version:Shows the version number.'
+)
+
+local expl
+local -a pkgs installed_pkgs
+
+_arguments \
+	'*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+	_describe -t commands "zeus subcommand" _1st_arguments
+	return
+fi
+
+_files

From 8cd1b21b931c0f7a310fc32c43dd3288203ecd40 Mon Sep 17 00:00:00 2001
From: Alexey Poimtsev 
Date: Wed, 24 Apr 2013 01:40:09 +0400
Subject: [PATCH 109/330] Update rails4.plugin.zsh

added alias for rake db:create
---
 plugins/rails4/rails4.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/rails4/rails4.plugin.zsh b/plugins/rails4/rails4.plugin.zsh
index b6765365e..fce827ee3 100644
--- a/plugins/rails4/rails4.plugin.zsh
+++ b/plugins/rails4/rails4.plugin.zsh
@@ -22,8 +22,9 @@ alias rs='_rails_command server'
 alias rsd='_rails_command server --debugger'
 alias devlog='tail -f log/development.log'
 alias rdm='rake db:migrate'
+alias rdc='rake db:create'
 alias rdr='rake db:rollback'
 alias rds='rake db:seed'
 alias rlc='rake log:clear'
 alias rn='rake notes'
-alias rr='rake routes'
\ No newline at end of file
+alias rr='rake routes'

From d4d8939410edf3b81e6cd6a63b39744262691185 Mon Sep 17 00:00:00 2001
From: JamesFerguson 
Date: Wed, 24 Apr 2013 09:11:52 +1000
Subject: [PATCH 110/330] Only trim remote names; be git-flow friendly

 - don't remove everything before the last /
 - do remove /
 - allows flow style feature/foobar branch names
---
 plugins/git-remote-branch/git-remote-branch.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/git-remote-branch/git-remote-branch.plugin.zsh b/plugins/git-remote-branch/git-remote-branch.plugin.zsh
index ff98cbf87..6c5ab8f70 100644
--- a/plugins/git-remote-branch/git-remote-branch.plugin.zsh
+++ b/plugins/git-remote-branch/git-remote-branch.plugin.zsh
@@ -6,7 +6,8 @@ _git_remote_branch() {
       compadd create publish rename delete track
     elif (( CURRENT == 3 )); then
       # second arg: remote branch name
-      compadd `git branch -r | grep -v HEAD | sed "s/.*\///" | sed "s/ //g"`
+      remotes=`git remote | tr '\n' '|' | sed "s/\|$//g"`
+      compadd `git branch -r | grep -v HEAD | sed "s/$remotes\///" | sed "s/ //g"`
     elif (( CURRENT == 4 )); then
       # third arg: remote name
       compadd `git remote`

From dd6247057ea9b8e238aea5e16446dee089f11f3e Mon Sep 17 00:00:00 2001
From: Robby Russell 
Date: Tue, 23 Apr 2013 20:52:18 -0700
Subject: [PATCH 111/330] Updating the README file

---
 README.textile | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/README.textile b/README.textile
index 0a4545bac..46e69691e 100644
--- a/README.textile
+++ b/README.textile
@@ -1,5 +1,4 @@
-A handful of functions, auto-complete helpers, and stuff that makes you shout...
-
+oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout...
 
 bq. "OH MY ZSHELL!"
 
@@ -76,9 +75,7 @@ h3. (Don't) Send us your theme! (for now)
 
 -I'm hoping to collect a bunch of themes for our command prompts. You can see existing ones in the @themes/@ directory.-
 
-We have enough themes for the time being. Please fork the project and add on in there, you can let people know how to grab it from there. 
-
-
+We have enough themes for the time being. Please fork the project and add on in there, you can let people know how to grab it from there.
 
 h2. Contributors
 

From bf9645224b529be0e03655b4cef9c32f66c76015 Mon Sep 17 00:00:00 2001
From: Philipp Tessenow 
Date: Wed, 24 Apr 2013 08:33:02 +0200
Subject: [PATCH 112/330] extend mercurial plugin to be more like git/svn

implement in_hg(), hg_get_branch_name(), hg_prompt_info(), and hg_dirty() for the mercurial plugin
named functions similar to subversion plugin, to give theme maintainers an easier life
---
 plugins/mercurial/mercurial.plugin.zsh | 38 ++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 3 deletions(-)

diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
index 9aa2d167a..83dd578b3 100644
--- a/plugins/mercurial/mercurial.plugin.zsh
+++ b/plugins/mercurial/mercurial.plugin.zsh
@@ -17,8 +17,40 @@ alias hgs='hg status'
 # this is the 'git commit --amend' equivalent
 alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
 
-function hg_current_branch() {
-  if [ -d .hg ]; then
-    echo hg:$(hg branch)
+function in_hg() {
+  if [[ -d .hg ]] || $(hg summary > /dev/null 2>&1); then
+    echo 1
   fi
 }
+
+function hg_get_branch_name() {
+  if [ $(in_hg) ]; then
+    echo $(hg branch)
+  fi
+}
+
+function hg_prompt_info {
+  if [ $(in_hg) ]; then
+    _DISPLAY=$(hg_get_branch_name)
+    echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_HG_PROMPT_PREFIX\
+$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_HG_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(hg_dirty)$ZSH_PROMPT_BASE_COLOR"
+    unset _DISPLAY
+  fi
+}
+
+function hg_dirty_choose {
+  if [ $(in_hg) ]; then
+    hg status 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'
+    if [ $pipestatus[-1] -eq 0 ]; then
+      # Grep exits with 0 when "One or more lines were selected", return "dirty".
+      echo $1
+    else
+      # Otherwise, no lines were found, or an error occurred. Return clean.
+      echo $2
+    fi
+  fi
+}
+
+function hg_dirty {
+  hg_dirty_choose $ZSH_THEME_HG_PROMPT_DIRTY $ZSH_THEME_HG_PROMPT_CLEAN
+}

From cf9b0119fa909f6e507759986b8e887ef771012f Mon Sep 17 00:00:00 2001
From: Roman Kamyk 
Date: Wed, 24 Apr 2013 06:50:48 -0700
Subject: [PATCH 113/330] Fixed missing retcode function

---
 themes/rkj-repos.zsh-theme | 2 ++
 themes/rkj.zsh-theme       | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/themes/rkj-repos.zsh-theme b/themes/rkj-repos.zsh-theme
index 46b8e83a0..4ab3bc757 100644
--- a/themes/rkj-repos.zsh-theme
+++ b/themes/rkj-repos.zsh-theme
@@ -22,6 +22,8 @@ function mygit() {
   echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$( git_prompt_status )%{$reset_color%}$ZSH_THEME_GIT_PROMPT_SUFFIX"
 }
 
+function retcode() {}
+
 # alternate prompt with git & hg
 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
 %{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B] <$(mygit)$(hg_prompt_info)>%{\e[0m%}%b '
diff --git a/themes/rkj.zsh-theme b/themes/rkj.zsh-theme
index 80122d5c6..fe06161c8 100644
--- a/themes/rkj.zsh-theme
+++ b/themes/rkj.zsh-theme
@@ -2,7 +2,8 @@
 # on two lines for easier vgrepping
 # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
 
+function retcode() {}
+
 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
 %{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B]%{\e[0m%}%b '
 
-

From 2f7479b5cb58ebd006f4a7a023a86cad0da2ce0d Mon Sep 17 00:00:00 2001
From: Joni Chandra 
Date: Fri, 26 Apr 2013 11:31:02 +0700
Subject: [PATCH 114/330] Update the wrong variable used in rb20 function.
 Fixes #1762

Signed-off-by: Joni Chandra 
---
 plugins/rvm/rvm.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
index cdd0a7847..68485a577 100644
--- a/plugins/rvm/rvm.plugin.zsh
+++ b/plugins/rvm/rvm.plugin.zsh
@@ -31,7 +31,7 @@ compdef _rb19 rb19
 
 function rb20 {
 	if [ -z "$1" ]; then
-		rvm use "$ruby"
+		rvm use "$ruby20"
 	else
 		rvm use "$ruby20@$1"
 	fi

From f77a545a4bfe07e0fd097a21ad8c1e80ff3d65f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20M-B?= 
Date: Sun, 28 Apr 2013 16:34:36 +0200
Subject: [PATCH 115/330] Uncomment l alias

---
 lib/aliases.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/aliases.zsh b/lib/aliases.zsh
index 2b58c4faa..9b3709172 100644
--- a/lib/aliases.zsh
+++ b/lib/aliases.zsh
@@ -17,7 +17,7 @@ alias history='fc -l 1'
 
 # List direcory contents
 alias lsa='ls -lah'
-#alias l='ls -la'
+alias l='ls -la'
 alias ll='ls -l'
 alias la='ls -lA'
 alias sl=ls # often screw this up

From 17a092b0ffa1ecf4ef9f727054a414e26f9e1edd Mon Sep 17 00:00:00 2001
From: Kaiwen Xu 
Date: Mon, 29 Apr 2013 03:19:31 -0400
Subject: [PATCH 116/330] Change sublime text path select priority on mac.

User changed symbolic link for sublime binary is now top priority,
since this allows users to actually specify which version of sublime
they want to use. Sublime text 2 binary has higher priority over
sublime text (3) binary, since sublime text 2 is considered more
stable.
---
 plugins/sublime/sublime.plugin.zsh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
index e74695de0..82faf87c9 100755
--- a/plugins/sublime/sublime.plugin.zsh
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -2,10 +2,11 @@
 
 local _sublime_darwin_paths > /dev/null 2>&1
 _sublime_darwin_paths=(
-	"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
+	"/usr/local/bin/subl"
 	"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
-	"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
+	"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
 	"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
+	"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
 )
 
 if [[ $('uname') == 'Linux' ]]; then

From 39b46f526c83a5d4704bd25eff03c7678230ec78 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20M=C3=BCller?= 
Date: Mon, 29 Apr 2013 09:51:21 +0200
Subject: [PATCH 117/330] eliminated unnecessary cd and failing substitution

Changing the working directory in a sub-subshell
does not change the working directory of the executing
shell.

The substitution was broken for me on _all_ my machines,
so I started looking into the business.
---
 tools/upgrade.sh | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/tools/upgrade.sh b/tools/upgrade.sh
index 0aeebdebf..3624a88e5 100644
--- a/tools/upgrade.sh
+++ b/tools/upgrade.sh
@@ -1,8 +1,5 @@
-current_path=`pwd`
-current_path=${current_path/ /\\ }
 printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"
 cd "$ZSH"
-
 if git pull origin master
 then
   printf '\033[0;32m%s\033[0m\n' '         __                                     __   '
@@ -17,4 +14,3 @@ else
   printf '\033[0;31m%s\033[0m\n' 'There was an error updating. Try again later?'
 fi
 
-cd "$current_path"

From f28e16a15856baf92163dba8ac6eec1e02cf6c1f Mon Sep 17 00:00:00 2001
From: Lindolfo 'Lorn' Rodrigues 
Date: Tue, 30 Apr 2013 01:51:09 -0300
Subject: [PATCH 118/330] Cache for fasd --init

Using cache technique for faster fasd --init as shown at:
 https://github.com/clvv/fasdi#install
---
 plugins/fasd/fasd.plugin.zsh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/plugins/fasd/fasd.plugin.zsh b/plugins/fasd/fasd.plugin.zsh
index d42584f1a..8ad43fc23 100644
--- a/plugins/fasd/fasd.plugin.zsh
+++ b/plugins/fasd/fasd.plugin.zsh
@@ -1,5 +1,10 @@
 if [ $commands[fasd] ]; then # check if fasd is installed
-  eval "$(fasd --init auto)"
+  fasd_cache="$HOME/.fasd-init-cache"
+  if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
+    fasd --init auto >| "$fasd_cache"
+  fi
+  source "$fasd_cache"
+  unset fasd_cache
   alias v='f -e vim'
   alias o='a -e open'
 fi

From cf3a03d45e6b4eb642238bbd7b6aeca1fd1bc868 Mon Sep 17 00:00:00 2001
From: simlegate 
Date: Sun, 5 May 2013 16:35:40 +0800
Subject: [PATCH 119/330] rm alias gcm='git checkout master' and add alias
 gcm='git commit -m'

---
 plugins/git/git.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6c016aa6b..5277abc99 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -22,9 +22,10 @@ alias gca='git commit -v -a'
 compdef _git gc=git-commit
 alias gca!='git commit -v -a --amend'
 compdef _git gca!=git-commit
+alias gcm='git commit -m'
+compdef _git gcm=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout
-alias gcm='git checkout master'
 alias gr='git remote'
 compdef _git gr=git-remote
 alias grv='git remote -v'

From b36c42b76d5bb06e1a19b534177ad4980bc3b025 Mon Sep 17 00:00:00 2001
From: simlegate 
Date: Wed, 8 May 2013 17:03:07 +0800
Subject: [PATCH 120/330] rename gcm to gcmsg and stand for 'git commit -m'

---
 plugins/git/git.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 5277abc99..bcbd0897c 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -22,7 +22,7 @@ alias gca='git commit -v -a'
 compdef _git gc=git-commit
 alias gca!='git commit -v -a --amend'
 compdef _git gca!=git-commit
-alias gcm='git commit -m'
+alias gcmsg='git commit -m'
 compdef _git gcm=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout

From 29e696d902b4cf665e237969aa333a5e176a59f5 Mon Sep 17 00:00:00 2001
From: simlegate 
Date: Wed, 8 May 2013 17:03:07 +0800
Subject: [PATCH 121/330] rename gcm to gcmsg and stand for 'git commit -m'
 #1790

---
 plugins/git/git.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 5277abc99..bcbd0897c 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -22,7 +22,7 @@ alias gca='git commit -v -a'
 compdef _git gc=git-commit
 alias gca!='git commit -v -a --amend'
 compdef _git gca!=git-commit
-alias gcm='git commit -m'
+alias gcmsg='git commit -m'
 compdef _git gcm=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout

From 22dce9e71594d1cf191cd41cef845a34621826f8 Mon Sep 17 00:00:00 2001
From: simlegate 
Date: Thu, 9 May 2013 12:57:32 +0800
Subject: [PATCH 122/330] add git alias 'gcmsg' and stand for 'git commit -m'

---
 plugins/git/git.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index bcbd0897c..b30c4b99a 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -23,9 +23,10 @@ compdef _git gc=git-commit
 alias gca!='git commit -v -a --amend'
 compdef _git gca!=git-commit
 alias gcmsg='git commit -m'
-compdef _git gcm=git-commit
+compdef _git gcmsg=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout
+alias gcm='git checkout master'
 alias gr='git remote'
 compdef _git gr=git-remote
 alias grv='git remote -v'

From 6de78ad2ba8688532b116de8322d7aaecbbcebbe Mon Sep 17 00:00:00 2001
From: bebugz 
Date: Thu, 9 May 2013 13:12:11 +0400
Subject: [PATCH 123/330] gentoo linux support

---
 plugins/autojump/autojump.plugin.zsh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh
index 3894ccd2f..f856f2f01 100644
--- a/plugins/autojump/autojump.plugin.zsh
+++ b/plugins/autojump/autojump.plugin.zsh
@@ -3,6 +3,8 @@ if [ $commands[autojump] ]; then # check if autojump is installed
     . /usr/share/autojump/autojump.zsh
   elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation
     . /etc/profile.d/autojump.zsh
+  elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation
+    . /etc/profile.d/autojump.sh
   elif [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation
     . $HOME/.autojump/etc/profile.d/autojump.zsh
   elif [ -f /opt/local/etc/profile.d/autojump.zsh ]; then # mac os x with ports

From a9111488e4945a29b8afa9a4eab12ee2e6fc9a0e Mon Sep 17 00:00:00 2001
From: yleo77 
Date: Fri, 17 May 2013 17:48:06 +0800
Subject: [PATCH 124/330] add search by filename and file content feature

---
 .gitignore                            |  5 ++---
 custom/plugins/sfffe/sfffe.plugin.zsh | 28 +++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100644 custom/plugins/sfffe/sfffe.plugin.zsh

diff --git a/.gitignore b/.gitignore
index 51a5ee6c3..5db11ce5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,8 @@
 locals.zsh
 log/.zsh_history
 projects.zsh
-custom/*
-!custom/example
-!custom/example.zsh
+custom/example
+custom/example.zsh
 *.swp
 !custom/example.zshcache
 cache/
diff --git a/custom/plugins/sfffe/sfffe.plugin.zsh b/custom/plugins/sfffe/sfffe.plugin.zsh
new file mode 100644
index 000000000..a0f034908
--- /dev/null
+++ b/custom/plugins/sfffe/sfffe.plugin.zsh
@@ -0,0 +1,28 @@
+# ------------------------------------------------------------------------------
+#          FILE:  sfffe.plugin.zsh
+#   DESCRIPTION:  search file for FE
+#        AUTHOR:  yleo77 (ylep77@gmail.com)
+#       VERSION:  0.1
+#       REQUIRE:  ack
+# ------------------------------------------------------------------------------
+
+if [ ! -x $(which ack) ]; then
+    echo  \'ack\' is not installed!
+    exit -1
+fi
+
+ajs() {
+    ack "$@" --type js
+}
+
+acss() {
+    ack "$@" --type css
+}
+
+fjs() {
+    find ./ -name "$@*" -type f | grep '\.js'
+}
+
+fcss() {
+    find ./ -name "$@*" -type f | grep '\.css'
+}

From d2fe03d7549558745f999865ea0e348cb44e818f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20Ho=CC=88ltje?= 
Date: Fri, 17 May 2013 11:17:33 -0400
Subject: [PATCH 125/330] Create the zcompdump based on version and host

This will prevent lots of subtle problems that happen when
people upgrade ZSH or use NFS mounted home directories.

The ZSH_COMPDUMP variable can also be used to implement `zcompile`
and other fun features in the future.
---
 oh-my-zsh.sh | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
index 93c10e3d2..15c1dce44 100644
--- a/oh-my-zsh.sh
+++ b/oh-my-zsh.sh
@@ -38,10 +38,20 @@ for plugin ($plugins); do
   fi
 done
 
+# Figure out the SHORT hostname
+if [ -n "$commands[scutil]" ]; then
+  # OS X
+  SHORT_HOST=$(scutil --get ComputerName)
+else
+  SHORT_HOST=${HOST/.*/}
+fi
+
+# Save the location of the current completion dump file.
+ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
+
 # Load and run compinit
 autoload -U compinit
-compinit -i
-
+compinit -i -d "${ZSH_COMPDUMP}"
 
 # Load all of the plugins that were defined in ~/.zshrc
 for plugin ($plugins); do

From 4ff861ee115fdba24033f945dcf3cacea3120074 Mon Sep 17 00:00:00 2001
From: Christopher Roach 
Date: Sun, 19 May 2013 12:55:10 -0700
Subject: [PATCH 126/330] Adding a fix for the DISABLE_UNTRACKED_FILES_DIRTY
 option.

---
 lib/git.zsh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/git.zsh b/lib/git.zsh
index 96598cf5f..c4b5b5d62 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -15,12 +15,12 @@ parse_git_dirty() {
     if [[ $POST_1_7_2_GIT -gt 0 ]]; then
           SUBMODULE_SYNTAX="--ignore-submodules=dirty"
     fi
-    if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" != "true" ]]; then
-        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
-    else
+    if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
         GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
+    else
+        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
     fi
-    if [[ -n $(git status -s ${SUBMODULE_SYNTAX} -uno  2> /dev/null) ]]; then
+    if [[ -n $GIT_STATUS ]]; then
       echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
     else
       echo "$ZSH_THEME_GIT_PROMPT_CLEAN"

From 25313814775c08c64dc541fbadceb38c669c541a Mon Sep 17 00:00:00 2001
From: Hong Xu 
Date: Mon, 20 May 2013 22:18:07 -0700
Subject: [PATCH 127/330] Add web-search plugin.

This plugin adds google, bing and yahoo commands to launch the default
web browser to do web search:

e.g.

    google oh-my-zsh
    bing what is zsh
---
 plugins/web-search/web-search.plugin.zsh | 43 ++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 plugins/web-search/web-search.plugin.zsh

diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
new file mode 100644
index 000000000..6b6de2b15
--- /dev/null
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -0,0 +1,43 @@
+# web_search from terminal
+
+function web_search() {
+
+  # get the open command
+  local open_cmd
+  if [[ $(uname -s) == 'Darwin' ]]; then
+    open_cmd='open'
+  else
+    open_cmd='xdg-open'
+  fi
+
+  # check whether the search engine is supported
+  if [[ ! $1 =~ '(google|bing|yahoo)' ]];
+  then
+    echo "Search engine $1 not supported."
+    return 1
+  fi
+
+  local url="http://www.$1.com"
+
+  # no keyword provided, simply open the search engine homepage
+  if [[ $# -le 1 ]]; then
+    $open_cmd "$url"
+    return
+  fi
+
+  url="${url}/search?q="
+  shift   # shift out $1
+
+  while [[ $# -gt 0 ]]; do
+    url="${url}$1+"
+    shift
+  done
+
+  url="${url%?}" # remove the last '+'
+
+  $open_cmd "$url"
+}
+
+alias bing='web_search bing'
+alias google='web_search google'
+alias yahoo='web_search yahoo'

From 69116fa806f5a7405d33cc1f7c66d4c26ad4253b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Germ=C3=A1n=20M=2E=20Bravo?= 
Date: Tue, 21 May 2013 14:20:28 -0400
Subject: [PATCH 128/330] Fixed recursion. Git not needed for it to work.

Avoid infinite `cd` loops under certain conditions. Try getting `.venv` from the current directory (not necessarily always using git)
---
 .../virtualenvwrapper.plugin.zsh              | 36 ++++++++++++-------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 0ed2565b4..35de50874 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -8,26 +8,36 @@ if [[ -f "$wrapsource" ]]; then
     # directory name of the project. Virtual environment name can be overridden
     # by placing a .venv file in the project root with a virtualenv name in it
     function workon_cwd {
-        # Check that this is a Git repo
-        PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
-        if (( $? == 0 )); then
+        if [ ! $WORKON_CWD ]; then
+            WORKON_CWD=1
+            # Check if this is a Git repo
+            PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
+            if (( $? != 0 )); then
+                PROJECT_ROOT="."
+            fi
             # Check for virtualenv name override
-            ENV_NAME=`basename "$PROJECT_ROOT"`
             if [[ -f "$PROJECT_ROOT/.venv" ]]; then
                 ENV_NAME=`cat "$PROJECT_ROOT/.venv"`
+            elif [[ "$PROJECT_ROOT" != "." ]]; then
+                ENV_NAME=`basename "$PROJECT_ROOT"`
+            else
+                ENV_NAME=""
             fi
-            # Activate the environment only if it is not already active
-            if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
-                if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
-                    workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
+            if [[ "$ENV_NAME" != "" ]]; then
+                # Activate the environment only if it is not already active
+                if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
+                    if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
+                        workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
+                    fi
                 fi
+            elif [ $CD_VIRTUAL_ENV ]; then
+                # We've just left the repo, deactivate the environment
+                # Note: this only happens if the virtualenv was activated automatically
+                deactivate && unset CD_VIRTUAL_ENV
             fi
-        elif [ $CD_VIRTUAL_ENV ]; then
-            # We've just left the repo, deactivate the environment
-            # Note: this only happens if the virtualenv was activated automatically
-            deactivate && unset CD_VIRTUAL_ENV
+            unset PROJECT_ROOT
+            unset WORKON_CWD
         fi
-        unset PROJECT_ROOT
     }
 
     # New cd function that does the virtualenv magic

From 00848cd8b7347e9b793a2ac6170498e6592dde56 Mon Sep 17 00:00:00 2001
From: yleo77 
Date: Wed, 22 May 2013 17:00:08 +0800
Subject: [PATCH 129/330] add gf alias for git flow

---
 plugins/git-flow/git-flow.plugin.zsh | 3 +++
 plugins/git/git.plugin.zsh           | 5 ++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index ab9c0c848..58c31d756 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -20,6 +20,9 @@
 #     c. Or, use this file as a oh-my-zsh plugin.
 #
 
+#Alias
+alias gf='git flow'
+
 _git-flow ()
 {
 	local curcontext="$curcontext" state line
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6c016aa6b..af0189fdc 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -63,7 +63,10 @@ compdef _git gm=git-merge
 alias grh='git reset HEAD'
 alias grhh='git reset HEAD --hard'
 alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
-alias gf='git ls-files | grep'
+
+#remove the gf alias
+#alias gf='git ls-files | grep'
+
 alias gpoat='git push origin --all && git push origin --tags'
 
 # Will cd into the top of the current repository

From bd38c50241647a1d0b0e2ca49fb1d6b9a2b88806 Mon Sep 17 00:00:00 2001
From: Marc-Antoine Lemieux 
Date: Mon, 27 May 2013 09:23:14 -0400
Subject: [PATCH 130/330] fix the open command in linux using xdg-open

---
 plugins/jira/jira.plugin.zsh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh
index b91f93c95..bea726a54 100644
--- a/plugins/jira/jira.plugin.zsh
+++ b/plugins/jira/jira.plugin.zsh
@@ -11,6 +11,13 @@
 # Usage: jira           # opens a new issue
 #        jira ABC-123   # Opens an existing issue
 open_jira_issue () {
+  local open_cmd
+  if [[ $(uname -s) == 'Darwin' ]]; then
+    open_cmd='open'
+  else
+    open_cmd='xdg-open'
+  fi
+
   if [ -f .jira-url ]; then
     jira_url=$(cat .jira-url)
   elif [ -f ~/.jira-url ]; then
@@ -28,9 +35,9 @@ open_jira_issue () {
   else
     echo "Opening issue #$1"
     if [[ "x$JIRA_RAPID_BOARD" = "yes" ]]; then
-      `open $jira_url/issues/$1`
+      $open_cmd  "$jira_url/issues/$1"
     else
-      `open $jira_url/browse/$1`
+      $open_cmd  "$jira_url/browse/$1"
     fi
   fi
 }

From 6f8e8c58a05a3ff9d48ade08544e3a4d5cc4185d Mon Sep 17 00:00:00 2001
From: Ayush Samantroy 
Date: Sat, 1 Jun 2013 18:02:38 +0530
Subject: [PATCH 131/330] Added alias for git clean

---
 plugins/git/git.plugin.zsh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6c016aa6b..c81a72ff4 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -62,6 +62,7 @@ alias gm='git merge'
 compdef _git gm=git-merge
 alias grh='git reset HEAD'
 alias grhh='git reset HEAD --hard'
+alias gclean='git reset --hard && git clean -dfx'
 alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
 alias gf='git ls-files | grep'
 alias gpoat='git push origin --all && git push origin --tags'

From 4b945a856c7d43891b645e99a91eb9d38b62b64a Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Wed, 5 Jun 2013 15:12:56 +0200
Subject: [PATCH 132/330] New plugin for git-repo
 (https://code.google.com/p/git-repo/)

Signed-off-by: Gaetan Semet 
---
 plugins/repo/README.md       |   7 +
 plugins/repo/_repo           | 272 +++++++++++++++++++++++++++++++++++
 plugins/repo/repo.plugin.zsh |   2 +
 3 files changed, 281 insertions(+)
 create mode 100644 plugins/repo/README.md
 create mode 100644 plugins/repo/_repo
 create mode 100644 plugins/repo/repo.plugin.zsh

diff --git a/plugins/repo/README.md b/plugins/repo/README.md
new file mode 100644
index 000000000..0b77e6d48
--- /dev/null
+++ b/plugins/repo/README.md
@@ -0,0 +1,7 @@
+## repo
+**Maintainer:** [Stibbons](https://github.com/Stibbons)
+
+This plugin mainly add support automatic completion for the repo command line tool:
+http://code.google.com/p/git-repo/
+
+* `r` aliases `repo`
diff --git a/plugins/repo/_repo b/plugins/repo/_repo
new file mode 100644
index 000000000..59e39c954
--- /dev/null
+++ b/plugins/repo/_repo
@@ -0,0 +1,272 @@
+#compdef repo
+
+
+__git_apply_whitespace_strategies ()
+{
+  declare -a strategies
+
+  strategies=(
+    'nowarn:turn off the trailing-whitespace warning'
+    'warn:output trailing-whitespace warning, but apply patch'
+    'fix:output trailing-whitespace warning and strip trailing whitespace'
+    'error:output trailing-whitespace warning and refuse to apply patch'
+    'error-all:same as "error", but output warnings for all files')
+
+  _describe -t strategies 'trailing-whitespace resolution strategy' strategies $*
+}
+
+
+_repo()
+{
+  local context state state_descr line curcontext="$curcontext"
+  typeset -A opt_args
+
+  local ret=1
+
+  _arguments -C \
+    '(- 1 *)--help[show usage]'\
+    '1:command:->command'\
+    '*::args:->args' && ret=0
+
+  case $state in
+    (command)
+      repo list  2> /dev/null > /dev/null
+      if [[ $? == 0 ]]; then
+        local commands;
+        commands=(
+          'abandon:Permanently abandon a development branch'
+          'branch:View current topic branches'
+          'branches:View current topic branches'
+          'checkout:Checkout a branch for development'
+          'cherry-pick:Cherry-pick a change.'
+          'diff:Show changes between commit and working tree'
+          'download:Download and checkout a change'
+          'forall:execute command on several project'
+          'grep:Print lines matching a pattern'
+          'help:Display detailed help on a command'
+          'init:Initialize repo in the current directory'
+          'list:List projects and their associated directories'
+          'manifest:Manifest inspection utility'
+          'overview:Display overview of unmerged project branches'
+          'prune:Prune (delete) already merged topics'
+          'rebase:Rebase local branches on upstream branch'
+          'selfupdate:Update repo to the latest version'
+          'smartsync:Update working tree to the latest known good revision'
+          'stage:Stage file(s) for commit'
+          'start:Start a new branch for development'
+          'status:Show the working tree status'
+          'sync:Update working tree to the latest revision'
+          'upload:Upload changes for code review'
+          'version:Display the version of repo'
+        )
+        _describe -t commands 'command' commands && ret=0
+      else
+        local commands;
+        commands=(
+          'init:Install repo in the current working directory'
+          'help:Display detailed help on a command'
+        )
+        _describe -t commands 'command' commands && ret=0
+      fi
+      ;;
+    (args)
+      case $words[1] in
+        (branch | branches)
+          # TODO : list available projects and add them in list to feed compadd with
+          _arguments  : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     ': :__repo_projects' \
+                      && ret=0
+         ;;
+        (abandon)
+          # TODO : list available projects and add them in list to feed compadd with
+          _arguments  : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     ':branch name:__repo_branch' \
+                     ': :__repo_projects'\
+                      && ret=0
+          ;;
+        (checkout)
+          # TODO : list available projects and add them in list to feed compadd with
+          _arguments  : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     ':branch name:__repo_branch' \
+                     ': :__repo_projects'\
+                     && ret=0
+          ;;
+        (init)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(-q --quiet)"{-q,--quiet}"[be quiet]" \
+                     "(-u --manifest-url)"{-u,--manifest-url=}"[manifest repository location]":url:__repo_url_prompt \
+                     "(-b --manifest-branch)"{-b,--manifest-branch=}"[manifest branch or revision]":branch:__repo_branch\
+                     "(-m --manifest-name)"{-m,--manifest-name=}"[initial manifest file]":manifest_name:__repo_manifest_name\
+                     "(--mirror)--mirror[mirror the forrest]"\
+                     "(--reference)--reference=[location of mirror directory]":dir:_dirs\
+                     "(--depth)--depth=[create a shallow clone with given depth; see git clone]":depth:__repo_depth_prompt\
+                     "(-g --group=)"{-g,--group=}"[restrict manifest projects to ones with a specified group]":group:_group\
+                     "(-p --platform=)"{-p,--platform=}"[restrict manifest projects to ones with a specified platform group(auto|all|none|linux|darwin|...)]":platform:"(auto all none linux darwin)"\
+                     "(--repo-url)--repo-url=[repo repository location]":url:__repo_url_prompt\
+                     "(--repo-branch)--repo-branch[repo branch or revision]":branch_or_rev:__repo__repo_branch_or_rev\
+                     "(--no-repo-verify)--no-repo-verify[do not verify repo source code]"\
+                     "(--config-name)--config-name[Always prompt for name/e-mail]"\
+                     && ret=0
+          ;;
+        (start)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(--all)--all=[begin branch in all projects]"\
+                    ':branch name:__repo_new__repo_branch_name' \
+                    ':projects:__repo_projects_or_all' \
+                    && ret=0
+          ;;
+        (rebase)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(-i --interactive)"{-i,--interactive}"[interactive rebase (single project only)]: :__repo_projects" \
+                     "(-f --force-rebase)"{-f,--force-rebase}"[Pass --force-rebase to git rebase]" \
+                     "(--no-ff)--no-ff=[Pass --no-ff to git rebase]"\
+                     "(-q --quiet)"{-q,--quiet}"[Pass --quiet to git rebase]" \
+                     "(--autosquash)--no-ff[Pass --autosquash to git rebase]"\
+                     "(--whitespace=)--whitespace=[Pass --whitespace to git rebase]: :__git_apply_whitespace_strategies"\
+                     "(--auto-stash)--auto-stash[Stash local modifications before starting]"\
+                     && ret=0
+          ;;
+        (checkout)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                    ':branch name:__git_branch_names' \
+                    ':projects:__repo_projects' \
+                    && ret=0
+          ;;
+        (list)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                    && ret=0
+          ;;
+        (status)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(-j --jobs)"{-j,--jobs}"[number of projects to check simultaneously]" \
+                    ':projects:__repo_projects' \
+                    && ret=0
+          ;;
+        (sync)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(--no-force-broken)--no-force-broken[stop sync if a project fails to sync (probably because of permissions)]" \
+                     "(-l --local-only)"{-l,--local-only}"[only update working tree, don't fetch]" \
+                     "(-n --network-only)"{-n,--network-branch}"[fetch only, don't update working tree]" \
+                     "(-d --detach)"{-d,--detach}"[detach projects back to manifest revision]" \
+                     "(-c --current-branch)"{-c,--current-branch}"[fetch only current branch from server]" \
+                     "(-q --quiet)"{-q,--quiet}"[be more quiet]" \
+                     "(-j --jobs=)"{-j,--jobs=}"[projects to fetch simultaneously (default 1) (limited to 5)]:projects to fetch simultaneously (default 1) (limited to 5)" \
+                     "(-m --manifest-name=)"{-m,--manifest-name=}"[temporary manifest to use for this sync]:manifest xml file:_files -g *.xml" \
+                     "(--no-clone-bundle)--no-clone-bundle[disable use of /clone.bundle on HTTP/HTTPS]" \
+                     "(-s --smart-sync)"{-s,--smart-sync=}"[smart sync using manifest from a known tag]:tag:" \
+                     '(--no-repo-verify)--no-repo-verify[do not verify repo source code]' \
+                     ': :__repo_projects' \
+                     && ret=0
+          ;;
+        (upload)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(-t)-t[Send local branch name to Gerrit Code Review]" \
+                     "(--re= --reviewers=)"{--re=,--reviewers=}"[Request reviews from these people]:Request reviews from these people:" \
+                     "(--cc=)--cc=[Also send email to these email addresses.]:email addresses:_email_addresses" \
+                     "(--br=)--br=[Branch to upload.]:branch:__repo_branch" \
+                     "(--cbr --current-branch)"{--cbr,--current-branch}"[Upload current git branch]" \
+                     "(-d --draft)"{-d,--draft}"[If specified, upload as a draft.]" \
+                     "(--verify --no-verify)--no-verify[Do not run the upload hook.]" \
+                     '(--verify --no-verify)--verify[Run the upload hook without prompting]' \
+                     ': :__repo_projects' \
+                     && ret=0
+          ;;
+        (forall)
+          _arguments : \
+                     "(-h --help)"{-h,--help}"[Show help]" \
+                     "(-v --verbose)"{-v,--verbose}"[Show command error messages]" \
+                     '(-p)-p[Show project headers before output]' \
+                     ': :__repo_projects_mandatory' \
+                     "(-c --command -h --help -v --verbose -p)"{-c,--command}"[Command (and arguments) to execute]" \
+                     && ret=0
+          ;;
+        *)
+          ret=0
+      esac
+      ;;
+  esac
+
+  return $ret
+}
+
+__repo_reviewers()
+{
+ # _message -e url 'reviewers'
+}
+
+__repo_url_prompt()
+{
+  _message -e url 'url'
+}
+
+__repo_manifest_name()
+{
+  _message -e manifest_name 'manifest name'
+}
+
+_group()
+{
+  _message -e group 'group'
+}
+
+__repo_branch()
+{
+  #_message -e branch 'Repo branch'
+  branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1))
+  _describe -t branches 'Select repo branch' branches
+}
+
+__repo__repo_branch_or_rev()
+{
+  _message -e branch_or_rev 'repo branch or revision'
+}
+
+__repo_depth_prompt()
+{
+  _message -e depth 'depth'
+}
+
+__repo_projects()
+{
+  _message -e depth 'Optional option : ...'
+  projects=($(repo list | cut -d' ' -f1))
+  _describe -t projects 'Select projects (keep empty for selecting all projects)' projects
+}
+
+__repo_projects_mandatory()
+{
+  projects=($(repo list | cut -d' ' -f1))
+  #_describe -t projects 'Select projects to apply commands' projects
+  _values -s ' ' "Select projects to apply commands" $projects
+}
+
+__repo_new__repo_branch_name()
+{
+  branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1))
+  _describe "" branches
+  _message -e "branch name" 'Enter new branch name or select an existing repo branch'
+}
+
+__repo_projects_or_all()
+{
+  #_message -e depth '[--all | ...]'
+
+  projects=(--all $(repo list | cut -d' ' -f1))
+  _describe -t projects 'Select projects or --all' projects
+  _describe -t --all 'All projects'
+}
+
+_repo "$@"
+return $?
+
diff --git a/plugins/repo/repo.plugin.zsh b/plugins/repo/repo.plugin.zsh
new file mode 100644
index 000000000..9cc336959
--- /dev/null
+++ b/plugins/repo/repo.plugin.zsh
@@ -0,0 +1,2 @@
+# Aliases
+alias r='repo'

From 46f0d8dba95aae400e4d9fc825691d0119cf7189 Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Wed, 5 Jun 2013 15:16:51 +0200
Subject: [PATCH 133/330] Improvement in the git plugin

Signed-off-by: Gaetan Semet 
---
 plugins/git/README.md      |  4 +++
 plugins/git/_git-branch    | 62 ++++++++++++++++++++++++++++++++
 plugins/git/_git-remote    | 74 ++++++++++++++++++++++++++++++++++++++
 plugins/git/git.plugin.zsh | 13 +++++++
 4 files changed, 153 insertions(+)
 create mode 100644 plugins/git/README.md
 create mode 100644 plugins/git/_git-branch
 create mode 100644 plugins/git/_git-remote

diff --git a/plugins/git/README.md b/plugins/git/README.md
new file mode 100644
index 000000000..8462dda1c
--- /dev/null
+++ b/plugins/git/README.md
@@ -0,0 +1,4 @@
+## git
+**Maintainer:** [Stibbons](https://github.com/Stibbons)
+
+This plugin adds several git aliases and increase the completion function provided by zsh
diff --git a/plugins/git/_git-branch b/plugins/git/_git-branch
new file mode 100644
index 000000000..86d03bc30
--- /dev/null
+++ b/plugins/git/_git-branch
@@ -0,0 +1,62 @@
+#compdef git-branch
+
+_git-branch () 
+{
+  declare l c m d
+
+  l='--color --no-color -r -a --all -v --verbose --abbrev --no-abbrev'
+  c='-l -f --force -t --track --no-track --set-upstream --contains --merged --no-merged'
+  m='-m -M'
+  d='-d -D'
+
+  declare -a dependent_creation_args
+  if (( words[(I)-r] == 0 )); then
+    dependent_creation_args=(
+      "($l $m $d): :__git_branch_names"
+      "::start-point:__git_revisions")
+  fi
+
+  declare -a dependent_deletion_args
+  if (( words[(I)-d] || words[(I)-D] )); then
+    dependent_creation_args=
+    dependent_deletion_args=(
+      '-r[delete only remote-tracking branches]')
+    if (( words[(I)-r] )); then
+      dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_remote_branch_names'
+    else
+      dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_branch_names'
+    fi
+  fi
+
+  declare -a dependent_modification_args
+  if (( words[(I)-m] || words[(I)-M] )); then
+    dependent_creation_args=
+    dependent_modification_args=(
+      ':old or new branch name:__git_branch_names'
+      '::new branch name:__git_branch_names')
+  fi
+
+  _arguments -w -S -s \
+    "($c $m $d --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \
+    "($c $m $d : --color)--no-color[turn off branch coloring]" \
+    "($c $m      -a --all)-r[list or delete only remote-tracking branches]" \
+    "($c $m $d : -r)"{-a,--all}"[list both remote-tracking branches and local branches]" \
+    "($c $m $d : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \
+    "($c $m $d :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \
+    "($c $m $d :)--no-abbrev[do not abbreviate sha1s]" \
+    "($l $m $d)-l[create the branch's reflog]" \
+    "($l $m $d -f --force)"{-f,--force}"[force the creation of a new branch]" \
+    "($l $m $d -t --track)"{-t,--track}"[set up configuration so that pull merges from the start point]" \
+    "($l $m $d)--no-track[override the branch.autosetupmerge configuration variable]" \
+    "($l $m $d)--set-upstream[set up configuration so that pull merges]" \
+    "($l $m $d)--contains=[only list branches which contain the specified commit]: :__git_committishs" \
+    "($l $m $d)--merged=[only list branches which are fully contained by HEAD]: :__git_committishs" \
+    "($l $m $d)--no-merged=[do not list branches which are fully contained by HEAD]: :__git_committishs" \
+    $dependent_creation_args \
+    "($l $c $d -M)-m[rename a branch and the corresponding reflog]" \
+    "($l $c $d -m)-M[rename a branch even if the new branch-name already exists]" \
+    $dependent_modification_args \
+    "($l $c $m -D)-d[delete a fully merged branch]" \
+    "($l $c $m -d)-D[delete a branch]" \
+    $dependent_deletion_args
+}
diff --git a/plugins/git/_git-remote b/plugins/git/_git-remote
new file mode 100644
index 000000000..4ba62a357
--- /dev/null
+++ b/plugins/git/_git-remote
@@ -0,0 +1,74 @@
+#compdef git-remote
+
+# NOTE: --track is undocumented.
+# TODO: --track, -t, --master, and -m should take remote branches, I guess.
+# NOTE: --master is undocumented.
+# NOTE: --fetch is undocumented.
+_git-remote () {
+  local curcontext=$curcontext state line
+  declare -A opt_args
+
+  _arguments -C \
+    ':command:->command' \
+    '*::options:->options' && ret=0
+
+  case $state in
+    (command)
+      declare -a commands
+
+      commands=(
+        'add:add a new remote'
+        'show:show information about a given remote'
+        'prune:delete all stale tracking branches for a given remote'
+        'update:fetch updates for a set of remotes'
+        'rm:remove a remote from .git/config and all associated tracking branches'
+        'rename:rename a remote from .git/config and update all associated tracking branches'
+        'set-head:sets or deletes the default branch'
+        'set-branches:changes the list of branches tracked by the named remote.'
+        'set-url:changes URL remote points to.'
+        )
+
+      _describe -t commands 'sub-command' commands && ret=0
+      ;;
+    (options)
+      case $line[1] in
+        (add)
+          _arguments \
+            '*'{--track,-t}'[track given branch instead of default glob refspec]:branch:__git_branch_names' \
+            '(--master -m)'{--master,-m}'[set the remote'\''s HEAD to point to given master branch]:branch:__git_branch_names' \
+            '(--fetch -f)'{--fetch,-f}'[run git-fetch on the new remote after it has been created]' \
+            ':branch name:__git_remotes' \
+            ':url:_urls' && ret=0
+          ;;
+        (show)
+          _arguments \
+            '-n[do not contact the remote for a list of branches]' \
+            ':remote:__git_remotes' && ret=0
+          ;;
+        (prune)
+          _arguments \
+            '(--dry-run -n)'{-n,--dry-run}'[do not actually prune, only list what would be done]' \
+            ':remote:__git_remotes' && ret=0
+          ;;
+        (update)
+          __git_remote-groups && ret=0
+          ;;
+        (rm)
+          __git_remotes && ret=0
+          ;;
+        (rename)
+          __git_remotes && ret=0
+          ;;
+        (set-url)
+          _arguments \
+            '*--push[manipulate push URLs]' \
+            '(--add)--add[add URL]' \
+            '(--delete)--delete[delete URLs]' \
+            ':branch name:__git_remotes' \
+            ':url:_urls' && ret=0
+          ;;
+          
+      esac
+      ;;
+  esac
+}
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6c016aa6b..cf897239c 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -37,6 +37,12 @@ alias grset='git remote set-url'
 compdef _git grset=git-remote
 alias grup='git remote update'
 compdef _git grset=git-remote
+alias grbi='git rebase -i'
+compdef _git grbi=git-rebase
+alias grbc='git rebase --continue'
+compdef _git grbc=git-rebase
+alias grba='git rebase --abort'
+compdef _git grba=git-rebase
 alias gb='git branch'
 compdef _git gb=git-branch
 alias gba='git branch -a'
@@ -65,6 +71,13 @@ alias grhh='git reset HEAD --hard'
 alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
 alias gf='git ls-files | grep'
 alias gpoat='git push origin --all && git push origin --tags'
+alias gmt='git mergetool --no-prompt'
+compdef _git gm=git-mergetool
+
+alias gg='git gui citool'
+alias gga='git gui citool --amend'
+alias gk='gitk --all --branches'
+alias gss='git stash show --text'
 
 # Will cd into the top of the current repository
 # or submodule.

From 82666e25e31451527520ab49a819e4135ed8a34c Mon Sep 17 00:00:00 2001
From: Trev 
Date: Wed, 5 Jun 2013 13:22:33 -0400
Subject: [PATCH 134/330] A cabal plugin based on the lein plugin

---
 plugins/cabal/cabal.plugin.zsh | 36 ++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 plugins/cabal/cabal.plugin.zsh

diff --git a/plugins/cabal/cabal.plugin.zsh b/plugins/cabal/cabal.plugin.zsh
new file mode 100644
index 000000000..8d3c64587
--- /dev/null
+++ b/plugins/cabal/cabal.plugin.zsh
@@ -0,0 +1,36 @@
+function _cabal_commands() {
+    local ret=1 state
+    _arguments ':subcommand:->subcommand' && ret=0
+
+    case $state in
+      subcommand)
+        subcommands=(
+          "bench:Run the benchmark, if any (configure with UserHooks)"
+          "build:Make this package ready for installation"
+          "check:Check the package for common mistakes"
+          "clean:Clean up after a build"
+          "copy:Copy teh files into the install locations"
+          "configure:Prepare to build the package"
+          "fetch:Downloads packages for later installation"
+          "haddock:Generate HAddock HTML documentation"
+          "help:Help about commands"
+          "hscolour:Generate HsColour colourised code, in HTML format"
+          "info:Display detailed information about a particular package"
+          "init:Interactively create a .cabal file"
+          "install:Installs a list of packages"
+          "list:List packages matching a search string"
+          "register:Register this package with the compiler"
+          "report:Upload build reports to a remote server"
+          "sdist:Generate a source distribution file (.tar.gz)"
+          "test:Run the test suite, if any (configure with UserHooks)"
+          "unpack:Unpacks packages for user inspection"
+          "update:Updates list of known packages"
+          "upload:Uploads source packages to Hackage"
+        )
+        _describe -t subcommands 'cabal subcommands' subcommands && ret=0
+    esac
+
+    return ret
+}
+
+compdef _cabal_commands cabal

From 0118e182894b1756ce292936b6a1ff64582879b4 Mon Sep 17 00:00:00 2001
From: Michael LaCorte 
Date: Wed, 5 Jun 2013 12:37:02 -0700
Subject: [PATCH 135/330] Fixed color on git prompt for superjarin theme

---
 themes/superjarin.zsh-theme | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/themes/superjarin.zsh-theme b/themes/superjarin.zsh-theme
index 86955a560..2920d17a2 100644
--- a/themes/superjarin.zsh-theme
+++ b/themes/superjarin.zsh-theme
@@ -11,13 +11,13 @@ fi
 # Append the current git branch, if in a git repository
 JARIN_CURRENT_LOCA_="%{$fg_bold[cyan]%}%~\$(git_prompt_info)%{$reset_color%}"
 ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%} <%{$fg[magenta]%}"
-ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[white]%}"
 
 # Do nothing if the branch is clean (no changes).
-ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}>"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[white]%}>"
 
 # Add a yellow ✗ if the branch is dirty
-ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%}> %{$fg[yellow]%}✗"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[white]%}> %{$fg[yellow]%}✗"
 
 # Put it all together!
 PROMPT="$JARIN_CURRENT_RUBY_ $JARIN_CURRENT_LOCA_ "

From 8300f62e92bd63a1b221889f98318e9c5b441e0b Mon Sep 17 00:00:00 2001
From: Lucas Uyezu 
Date: Thu, 6 Jun 2013 00:40:02 -0300
Subject: [PATCH 136/330] Adding testlog and prodlog.

---
 plugins/rails/rails.plugin.zsh   | 2 ++
 plugins/rails3/rails3.plugin.zsh | 2 ++
 plugins/rails4/rails4.plugin.zsh | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index 0139d22c3..dd8b174b2 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -10,6 +10,8 @@ alias migrate='rake db:migrate && rake db:test:prepare'
 alias sc='ruby script/console'
 alias sd='ruby script/server --debugger'
 alias devlog='tail -f log/development.log'
+alias testlog='tail -f log/test.log'
+alias prodlog='tail -f log/production.log'
 alias -g RET='RAILS_ENV=test'
 alias -g REP='RAILS_ENV=production'
 alias -g RED='RAILS_ENV=development'
diff --git a/plugins/rails3/rails3.plugin.zsh b/plugins/rails3/rails3.plugin.zsh
index a2697872a..2555fab67 100644
--- a/plugins/rails3/rails3.plugin.zsh
+++ b/plugins/rails3/rails3.plugin.zsh
@@ -19,6 +19,8 @@ alias ru='_rails_command runner'
 alias rs='_rails_command server'
 alias rsd='_rails_command server --debugger'
 alias devlog='tail -f log/development.log'
+alias testlog='tail -f log/test.log'
+alias prodlog='tail -f log/production.log'
 alias rdm='rake db:migrate'
 alias rdr='rake db:rollback'
 alias -g RET='RAILS_ENV=test'
diff --git a/plugins/rails4/rails4.plugin.zsh b/plugins/rails4/rails4.plugin.zsh
index fce827ee3..cb6cf816d 100644
--- a/plugins/rails4/rails4.plugin.zsh
+++ b/plugins/rails4/rails4.plugin.zsh
@@ -21,6 +21,8 @@ alias ru='_rails_command runner'
 alias rs='_rails_command server'
 alias rsd='_rails_command server --debugger'
 alias devlog='tail -f log/development.log'
+alias testlog='tail -f log/test.log'
+alias prodlog='tail -f log/production.log'
 alias rdm='rake db:migrate'
 alias rdc='rake db:create'
 alias rdr='rake db:rollback'

From 6b832b93588567cb00b9a9e8170a5ebf539dea51 Mon Sep 17 00:00:00 2001
From: yleo77 
Date: Thu, 6 Jun 2013 12:39:14 +0800
Subject: [PATCH 137/330] add some alias for git flow

---
 plugins/git-flow/git-flow.plugin.zsh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index 58c31d756..b9ea06844 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -22,6 +22,9 @@
 
 #Alias
 alias gf='git flow'
+alias gcd='git checkout develop'
+alias gch='git checkout hotfix'
+alias gcr='git checkout release'
 
 _git-flow ()
 {

From b1f41f6fa5fbfb9317704fa1416a8d081b4e2310 Mon Sep 17 00:00:00 2001
From: Matthew Robben 
Date: Thu, 6 Jun 2013 02:18:25 -0300
Subject: [PATCH 138/330] Update README.textile

Add upgrade command to docs. I canceled the prompt once and went hunting for this so I could upgrade.
---
 README.textile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.textile b/README.textile
index 5f8067499..1916d9f4e 100644
--- a/README.textile
+++ b/README.textile
@@ -72,6 +72,8 @@ To disable updates entirely, put this in your ~/.zshrc
 
 @DISABLE_AUTO_UPDATE=true@
 
+To upgrade directly from the command line, just run @upgrade_oh_my_zsh@
+
 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).

From 97849bd9b65300a839f3c340e9dbb30b494d9898 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20D=C3=A9trez?= 
Date: Thu, 6 Jun 2013 13:06:29 +0200
Subject: [PATCH 139/330] Update the character used in powerline

The code points have been updated in 53fbfe1, see
- https://github.com/Lokaltog/powerline/commit/53fbfe15fead8cc7598bcb4ee9714a221ab7e446
- https://github.com/Lokaltog/powerline/issues/4
---
 themes/agnoster.zsh-theme | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index a9de8c84e..e65293858 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -26,7 +26,7 @@
 # A few utility functions to make it easy and re-usable to draw segmented prompts
 
 CURRENT_BG='NONE'
-SEGMENT_SEPARATOR='⮀'
+SEGMENT_SEPARATOR=''
 
 # Begin a segment
 # Takes two arguments, background and foreground. Both can be omitted,
@@ -90,7 +90,7 @@ prompt_git() {
     zstyle ':vcs_info:*' formats ' %u%c'
     zstyle ':vcs_info:*' actionformats '%u%c'
     vcs_info
-    echo -n "${ref/refs\/heads\//⭠ }${vcs_info_msg_0_}"
+    echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_}"
   fi
 }
 
@@ -110,7 +110,7 @@ prompt_hg() {
 				# if working copy is clean
 				prompt_segment green black
 			fi
-			echo -n $(hg prompt "⭠ {rev}@{branch}") $st
+			echo -n $(hg prompt " {rev}@{branch}") $st
 		else
 			st=""
 			rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
@@ -124,7 +124,7 @@ prompt_hg() {
 			else
 				prompt_segment green black
 			fi
-			echo -n "⭠ $rev@$branch" $st
+			echo -n " $rev@$branch" $st
 		fi
 	fi
 }

From 1e86e65e3a424145bda6096f7770c448f0286dce Mon Sep 17 00:00:00 2001
From: Charles Johnson 
Date: Thu, 6 Jun 2013 13:34:36 -0600
Subject: [PATCH 140/330] Update bundler.plugin.zsh

Added berks, foodcritic, kitchen, and knife commands to bundler plugin.
---
 plugins/bundler/bundler.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index 9446aafab..58476206c 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -7,7 +7,7 @@ alias bu="bundle update"
 
 # The following is based on https://github.com/gma/bundler-exec
 
-bundled_commands=(annotate cap capify cucumber foreman guard jekyll middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork thin thor unicorn unicorn_rails puma)
+bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork thin thor unicorn unicorn_rails puma)
 
 ## Functions
 

From ec177659df38865c77c930c3f6223069e0cdab78 Mon Sep 17 00:00:00 2001
From: Charles Johnson 
Date: Thu, 6 Jun 2013 14:37:39 -0600
Subject: [PATCH 141/330] Update bundler.plugin.zsh

Added strainer & tailor to commands in bundler plugin.
---
 plugins/bundler/bundler.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index 58476206c..c01241409 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -7,7 +7,7 @@ alias bu="bundle update"
 
 # The following is based on https://github.com/gma/bundler-exec
 
-bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork thin thor unicorn unicorn_rails puma)
+bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor thin thor unicorn unicorn_rails puma)
 
 ## Functions
 

From c5aaa11ceee00142e0f385f157b90910d692705f Mon Sep 17 00:00:00 2001
From: Chris Krycho 
Date: Fri, 7 Jun 2013 18:36:07 -0300
Subject: [PATCH 142/330] Add count for incoming and outgoing changesets.

---
 plugins/mercurial/mercurial.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
index 9aa2d167a..2d1a0ac0d 100644
--- a/plugins/mercurial/mercurial.plugin.zsh
+++ b/plugins/mercurial/mercurial.plugin.zsh
@@ -1,4 +1,3 @@
-
 # Mercurial
 alias hgc='hg commit'
 alias hgb='hg branch'
@@ -9,9 +8,11 @@ alias hgd='hg diff'
 alias hged='hg diffmerge'
 # pull and update
 alias hgi='hg incoming'
+alias hgic='hg incoming | grep "changeset" | wc -l'
 alias hgl='hg pull -u'
 alias hglr='hg pull --rebase'
 alias hgo='hg outgoing'
+alias hgoc='hg outgoing | grep 'changeset' | wc -l'
 alias hgp='hg push'
 alias hgs='hg status'
 # this is the 'git commit --amend' equivalent

From e73dd2cdf895879a3584eca3a475f33f72f48da8 Mon Sep 17 00:00:00 2001
From: Andrew Grangaard 
Date: Sat, 8 Jun 2013 11:25:52 -0700
Subject: [PATCH 143/330] virtualenvwrapper plugin cleanup

* removes cd override by using chpwd_functions
* removes subshell call to which by using $+commands array and
  c param expansion to find in PATH
* zsh love!
---
 .../virtualenvwrapper.plugin.zsh              | 25 +++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 35de50874..670c287bd 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -1,10 +1,9 @@
-wrapsource=`which virtualenvwrapper_lazy.sh`
-
-if [[ -f "$wrapsource" ]]; then
-  source $wrapsource
+virtualenvwrapper='virtualenvwrapper_lazy.sh'
+if (( $+commands[$virtualenvwrapper] )); then
+  source ${${virtualenvwrapper}:c}
 
   if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
-    # Automatically activate Git projects' virtual environments based on the
+    # Automatically activate Git projects's virtual environments based on the
     # directory name of the project. Virtual environment name can be overridden
     # by placing a .venv file in the project root with a virtualenv name in it
     function workon_cwd {
@@ -40,11 +39,17 @@ if [[ -f "$wrapsource" ]]; then
         fi
     }
 
-    # New cd function that does the virtualenv magic
-    function cd {
-        builtin cd "$@" && workon_cwd
-    }
+    # Append workon_cwd to the chpwd_functions array, so it will be called on cd
+    # http://zsh.sourceforge.net/Doc/Release/Functions.html
+    # TODO: replace with 'add-zsh-hook chpwd workon_cwd' when oh-my-zsh min version is raised above 4.3.4
+    if (( ${+chpwd_functions} )); then
+        if (( $chpwd_functions[(I)workon_cwd] == 0 )); then
+            set -A chpwd_functions $chpwd_functions workon_cwd
+        fi
+    else
+        set -A chpwd_functions workon_cwd
+    fi
   fi
 else
-  print "zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper_lazy.sh. Please install with \`pip install virtualenvwrapper\`."
+  print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}. Please install with \`pip install virtualenvwrapper\`."
 fi

From 894e1caa0a7fb2e02aa139d23d0b05d62c6d8932 Mon Sep 17 00:00:00 2001
From: Andrew Grangaard 
Date: Sat, 8 Jun 2013 10:02:32 -0700
Subject: [PATCH 144/330] virtualenv cleanup: replaces subshell with prompt
 expansion.

* :t parameter expansion returns the last portion of the path,
  equivalent to basename. I <3 zsh.
* adds comments for the VIRTUAL_ENV_DISABLE_PROMPT,
  used by virtual_env activate

See also:
  http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion
---
 plugins/virtualenv/virtualenv.plugin.zsh | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/plugins/virtualenv/virtualenv.plugin.zsh b/plugins/virtualenv/virtualenv.plugin.zsh
index e8458389f..8e06450b1 100644
--- a/plugins/virtualenv/virtualenv.plugin.zsh
+++ b/plugins/virtualenv/virtualenv.plugin.zsh
@@ -1,9 +1,8 @@
 function virtualenv_prompt_info(){
-  local virtualenv_path="$VIRTUAL_ENV"
-  if [[ -n $virtualenv_path ]]; then
-    local virtualenv_name=`basename $virtualenv_path`
-    printf "%s[%s] " "%{${fg[yellow]}%}" $virtualenv_name
+  if [[ -n $VIRTUAL_ENV ]]; then
+    printf "%s[%s] " "%{${fg[yellow]}%}" ${${VIRTUAL_ENV}:t}
   fi
 }
 
+# disables prompt mangling in virtual_env/bin/activate
 export VIRTUAL_ENV_DISABLE_PROMPT=1

From e4884da5a09b121a43121c79449e4cfae7a5c9d0 Mon Sep 17 00:00:00 2001
From: San Martin Morote Eduardo 
Date: Sun, 9 Jun 2013 11:01:20 +0200
Subject: [PATCH 145/330] Random quotes from the internet

---
 plugins/rand-quote/rand-quote.plugin.zsh | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 plugins/rand-quote/rand-quote.plugin.zsh

diff --git a/plugins/rand-quote/rand-quote.plugin.zsh b/plugins/rand-quote/rand-quote.plugin.zsh
new file mode 100644
index 000000000..b85abc81c
--- /dev/null
+++ b/plugins/rand-quote/rand-quote.plugin.zsh
@@ -0,0 +1,17 @@
+Get a random quote fron the sitehttp://www.quotationspage.com/random.php3
+# Created by Eduardo San Martin Morote aka Posva
+# http://posva.github.io
+# Sun Jun 09 10:59:36 CEST 2013 
+# Don't remove this header, thank you
+# Usage: quote
+
+if [[ -x `which curl` ]]; then
+    function quote()
+    {
+        Q=$(curl -s --connect-timeout 2 "http://www.quotationspage.com/random.php3" | grep -m 1 "dt ")
+        TXT=$(echo "$Q" | sed -e 's/<\/dt>.*//g' -e 's/.*html//g' -e 's/^[^a-zA-Z]*//' -e 's/<\/a..*$//g')
+        W=$(echo "$Q" | sed -e 's/.*\/quotes\///g' -e 's/<.*//g' -e 's/.*">//g')
+        echo "\e[0;33m${W}\e[0;30m: \e[0;35m“${TXT}”\e[m"
+    }
+    #quote
+fi

From 60aa92bae3a589af93d8a52443f01609b81cd4ab Mon Sep 17 00:00:00 2001
From: San Martin Morote Eduardo 
Date: Sun, 9 Jun 2013 11:04:39 +0200
Subject: [PATCH 146/330] Messed up the comment somehow...

---
 plugins/rand-quote/rand-quote.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/rand-quote/rand-quote.plugin.zsh b/plugins/rand-quote/rand-quote.plugin.zsh
index b85abc81c..5544ca565 100644
--- a/plugins/rand-quote/rand-quote.plugin.zsh
+++ b/plugins/rand-quote/rand-quote.plugin.zsh
@@ -1,4 +1,4 @@
-Get a random quote fron the sitehttp://www.quotationspage.com/random.php3
+# Get a random quote fron the site http://www.quotationspage.com/random.php3
 # Created by Eduardo San Martin Morote aka Posva
 # http://posva.github.io
 # Sun Jun 09 10:59:36 CEST 2013 

From d6945e2daad2b980da8cd6af9b1d1ea4f874ec95 Mon Sep 17 00:00:00 2001
From: Michiel Missotten 
Date: Tue, 11 Jun 2013 11:23:02 +0200
Subject: [PATCH 147/330] Adding a rebase option to git alias.

---
 plugins/git/git.plugin.zsh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6c016aa6b..6f2f59df3 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -95,6 +95,8 @@ function current_repository() {
 # these aliases take advantage of the previous function
 alias ggpull='git pull origin $(current_branch)'
 compdef ggpull=git
+alias ggpur='git pull --rebase origin $(current_branch)'
+compdef ggpur=git
 alias ggpush='git push origin $(current_branch)'
 compdef ggpush=git
 alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)'

From 3f44f51e9ca1b196e4c3caa439558996abdac273 Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Tue, 11 Jun 2013 14:50:32 +0200
Subject: [PATCH 148/330] source ~/.profile for upgrading (to source the proxy
 configuration)

Signed-off-by: Gaetan Semet 
---
 tools/check_for_upgrade.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
index 581f03a07..14d294328 100644
--- a/tools/check_for_upgrade.sh
+++ b/tools/check_for_upgrade.sh
@@ -20,6 +20,8 @@ if [[ -z "$epoch_target" ]]; then
   epoch_target=13
 fi
 
+[ ~/.profile ] && source ~/.profile
+
 if [ -f ~/.zsh-update ]
 then
   . ~/.zsh-update

From b832ec92086df4648e270b3d44a10fe058ffd8f4 Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Tue, 11 Jun 2013 14:58:25 +0200
Subject: [PATCH 149/330] New plugin 'common-aliases' for optional cutting edge
 zsh aliases

Signed-off-by: Gaetan Semet 
---
 .../common-aliases/common-aliases.plugin.zsh  | 94 +++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 plugins/common-aliases/common-aliases.plugin.zsh

diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh
new file mode 100644
index 000000000..4ac8178b6
--- /dev/null
+++ b/plugins/common-aliases/common-aliases.plugin.zsh
@@ -0,0 +1,94 @@
+# Advanced Aliases.
+# Use with caution
+#
+
+# ls, the common ones I use a lot shortened for rapid fire usage
+alias ls='ls --color' #I like color
+alias l='ls -lFh'     #size,show type,human readable
+alias la='ls -lAFh'   #long list,show almost all,show type,human readable
+alias lr='ls -tRFh'   #sorted by date,recursive,show type,human readable
+alias lt='ls -ltFh'   #long list,sorted by date,show type,human readable
+alias ll='ls -l'      #long list
+alias ldot='ls -ld .*'
+alias lS='ls -1FSsh'
+alias lart='ls -1Fcart'
+alias lrt='ls -1Fcrt'
+
+alias zshrc='vim ~/.zshrc' # Quick access to the ~/.zshrc file
+
+alias grep='grep --color'
+alias sgrep='grep -R -n -H -C 5'
+
+alias t='tail -f'
+
+# because typing 'cd' is A LOT of work!!
+alias ..='cd ../'
+alias ...='cd ../../'
+alias ....='cd ../../../'
+alias .....='cd ../../../../'
+
+# Command line head / tail shortcuts
+alias -g H='| head'
+alias -g T='| tail'
+alias -g G='| grep'
+alias -g L="| less"
+alias -g M="| most"
+alias -g LL="2>&1 | less"
+alias -g CA="2>&1 | cat -A"
+alias -g NE="2> /dev/null"
+alias -g NUL="> /dev/null 2>&1"
+alias -g P="2>&1| pygmentize -l pytb"
+
+alias dud='du --max-depth=1 -h'
+alias duf='du -sh *'
+alias fd='find . -type d -name'
+alias ff='find . -type f -name'
+
+alias h='history'
+alias hgrep="fc -El 0 | grep"
+alias help='man'
+alias j='jobs'
+alias p='ps -f'
+alias sortnr='sort -n -r'
+alias unexport='unset'
+
+alias whereami=display_info
+
+alias rm='rm -i'
+alias cp='cp -i'
+alias mv='mv -i'
+
+# zsh is able to auto-do some kungfoo
+# depends on the SUFFIX :)
+if [ ${ZSH_VERSION//\./} -ge 420 ]; then
+  # open browser on urls
+  _browser_fts=(htm html de org net com at cx nl se dk dk php)
+  for ft in $_browser_fts ; do alias -s $ft=$BROWSER ; done
+
+  _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex)
+  for ft in $_editor_fts ; do alias -s $ft=$EDITOR ; done
+
+  _image_fts=(jpg jpeg png gif mng tiff tif xpm)
+  for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done
+
+  _media_fts=(avi mpg mpeg ogm mp3 wav ogg ape rm mov mkv)
+  for ft in $_media_fts ; do alias -s $ft=mplayer ; done
+
+  #read documents
+  alias -s pdf=acroread
+  alias -s ps=gv
+  alias -s dvi=xdvi
+  alias -s chm=xchm
+  alias -s djvu=djview
+
+  #list whats inside packed file
+  alias -s zip="unzip -l"
+  alias -s rar="unrar l"
+  alias -s tar="tar tf"
+  alias -s tar.gz="echo "
+  alias -s ace="unace l"
+fi
+
+# Make zsh know about hosts already accessed by SSH
+zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })'
+

From ab7604e5c2a4e07e656b3e4edf0d3e45407665e5 Mon Sep 17 00:00:00 2001
From: Ehren Kret 
Date: Tue, 11 Jun 2013 11:37:35 -0700
Subject: [PATCH 150/330] Escape both % and $ in the command line

Fixes issue #1884
---
 lib/termsupport.zsh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index e3828da14..80319e1a8 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -27,7 +27,9 @@ function omz_termsupport_preexec {
   emulate -L zsh
   setopt extended_glob
   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/%/%%}%<<"
+  local LINE="${2:gs/$/\\$}"
+  LINE="${LINE:gs/%/%%}"
+  title "$CMD" "%100>...>$LINE%<<"
 }
 
 autoload -U add-zsh-hook

From dbcaafd03b084b94ebef9b04e91b3f04ad05d374 Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Wed, 12 Jun 2013 11:54:08 +0200
Subject: [PATCH 151/330] Better super-grep

Signed-off-by: Gaetan Semet 
---
 plugins/common-aliases/common-aliases.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh
index 4ac8178b6..75899ca2c 100644
--- a/plugins/common-aliases/common-aliases.plugin.zsh
+++ b/plugins/common-aliases/common-aliases.plugin.zsh
@@ -17,7 +17,7 @@ alias lrt='ls -1Fcrt'
 alias zshrc='vim ~/.zshrc' # Quick access to the ~/.zshrc file
 
 alias grep='grep --color'
-alias sgrep='grep -R -n -H -C 5'
+alias sgrep='grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} '
 
 alias t='tail -f'
 

From 9703eba66e2a45ee28cd895a852853fd34ea4ff0 Mon Sep 17 00:00:00 2001
From: Theodore Kokkoris 
Date: Wed, 12 Jun 2013 20:04:08 +0300
Subject: [PATCH 152/330] Fixed slow behavior when using GitHub wrappers

---
 lib/git.zsh | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/lib/git.zsh b/lib/git.zsh
index c4b5b5d62..df0fcedbb 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -1,7 +1,7 @@
 # get the name of the branch we are on
 function git_prompt_info() {
-  ref=$(git symbolic-ref HEAD 2> /dev/null) || \
-  ref=$(git rev-parse --short HEAD 2> /dev/null) || return
+  ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
+  ref=$(command 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"
 }
 
@@ -11,14 +11,14 @@ parse_git_dirty() {
   local SUBMODULE_SYNTAX=''
   local GIT_STATUS=''
   local CLEAN_MESSAGE='nothing to commit (working directory clean)'
-  if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then
+  if [[ "$(command git config --get oh-my-zsh.hide-status)" != "1" ]]; then
     if [[ $POST_1_7_2_GIT -gt 0 ]]; then
           SUBMODULE_SYNTAX="--ignore-submodules=dirty"
     fi
     if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
-        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
+        GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
     else
-        GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
+        GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
     fi
     if [[ -n $GIT_STATUS ]]; then
       echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
@@ -32,10 +32,10 @@ parse_git_dirty() {
 
 # 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\/}
+    remote=${$(command 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)
+        ahead=$(command git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
+        behind=$(command git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
 
         if [ $ahead -eq 0 ] && [ $behind -gt 0 ]
         then
@@ -52,24 +52,24 @@ git_remote_status() {
 
 # 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
+  if $(echo "$(command 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"
+  SHA=$(command 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"
+  SHA=$(command 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 -b 2> /dev/null)
+  INDEX=$(command git status --porcelain -b 2> /dev/null)
   STATUS=""
   if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
     STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
@@ -96,7 +96,7 @@ git_prompt_status() {
   elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
     STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
   fi
-  if $(git rev-parse --verify refs/stash >/dev/null 2>&1); then
+  if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
     STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS"
   fi
   if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
@@ -121,7 +121,7 @@ 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 2>/dev/null));
+  INSTALLED_GIT_VERSION=($(command git --version 2>/dev/null));
   INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});
 
   for i in {1..3}; do

From bab1800ded30331b289550b1de8d60bb64f5512f Mon Sep 17 00:00:00 2001
From: Brian Hartvigsen 
Date: Wed, 12 Jun 2013 12:22:47 -0500
Subject: [PATCH 153/330] Correctly detect Rapid Board

* Add "x" in front of the value we check against...
* Use true instead of yes (more consistent with the rest of ohmyzsh)

The fact that no one seems to have raised this as an issue leads me to believe it's not used that much...
---
 plugins/jira/jira.plugin.zsh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh
index bea726a54..9aa192c1e 100644
--- a/plugins/jira/jira.plugin.zsh
+++ b/plugins/jira/jira.plugin.zsh
@@ -3,7 +3,7 @@
 #         .jira-url in the current directory takes precedence
 #
 # If you use Rapid Board, set:
-#JIRA_RAPID_BOARD="yes"
+#JIRA_RAPID_BOARD="true"
 # in you .zshrc
 #
 # Setup: cd to/my/project
@@ -34,7 +34,7 @@ open_jira_issue () {
     `open $jira_url/secure/CreateIssue!default.jspa`
   else
     echo "Opening issue #$1"
-    if [[ "x$JIRA_RAPID_BOARD" = "yes" ]]; then
+    if [[ "x$JIRA_RAPID_BOARD" = "xtrue" ]]; then
       $open_cmd  "$jira_url/issues/$1"
     else
       $open_cmd  "$jira_url/browse/$1"

From b074886ae66ed73957858608b21401767e3c66c0 Mon Sep 17 00:00:00 2001
From: Christoph Jerolimov 
Date: Fri, 14 Jun 2013 01:36:37 +0300
Subject: [PATCH 154/330] Do not clear tab when calling it with an argument.

---
 plugins/osx/osx.plugin.zsh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 51cd7c143..dd785f911 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -6,7 +6,7 @@
 # ------------------------------------------------------------------------------
 
 function tab() {
-  local command="cd \\\"$PWD\\\""
+  local command="cd \\\"$PWD\\\"; clear; "
   (( $# > 0 )) && command="${command}; $*"
 
   the_app=$(
@@ -34,7 +34,7 @@ EOF
           launch session "Default Session"
           set current_session to current session
           tell current_session
-            write text "${command}; clear;"
+            write text "${command}"
           end tell
         end tell
       end tell

From f8e3f293e0ae4e5890f83d9233e2829e64a04df9 Mon Sep 17 00:00:00 2001
From: Jeremy Tennant 
Date: Sun, 16 Jun 2013 14:04:02 +1000
Subject: [PATCH 155/330] Add new plugin for homebrew installed version of
 postgres

---
 plugins/postgres/postgres.plugin.zsh | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 plugins/postgres/postgres.plugin.zsh

diff --git a/plugins/postgres/postgres.plugin.zsh b/plugins/postgres/postgres.plugin.zsh
new file mode 100644
index 000000000..cdd142e92
--- /dev/null
+++ b/plugins/postgres/postgres.plugin.zsh
@@ -0,0 +1,6 @@
+# Aliases to stop, start and restart Postgres
+# Paths noted below are for Postgress installed via Homebrew on OSX
+
+alias startpost='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
+alias stoppost='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
+alias restartpost='stoppost && sleep 1 && startpost'
\ No newline at end of file

From 4eace8753be4793f109c997bede7f0985692bb0a Mon Sep 17 00:00:00 2001
From: Code Whale 
Date: Sun, 16 Jun 2013 13:25:29 +0800
Subject: [PATCH 156/330] debian plugin: ignore alias in sudo/aptitude check

---
 plugins/debian/debian.plugin.zsh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh
index 55b90e379..b51d0cd37 100644
--- a/plugins/debian/debian.plugin.zsh
+++ b/plugins/debian/debian.plugin.zsh
@@ -6,14 +6,14 @@
 
 # Use aptitude if installed, or apt-get if not.
 # You can just set apt_pref='apt-get' to override it.
-if [[ -e $( which aptitude 2>&1 ) ]]; then
+if [[ -e $( which -p aptitude 2>&1 ) ]]; then
     apt_pref='aptitude'
 else
     apt_pref='apt-get'
 fi
 
 # Use sudo by default if it's installed
-if [[ -e $( which sudo 2>&1 ) ]]; then
+if [[ -e $( which -p sudo 2>&1 ) ]]; then
     use_sudo=1
 fi
 

From decf9cdb3143fde3d2e608c008e61ba9838c0deb Mon Sep 17 00:00:00 2001
From: Gunther Konig 
Date: Fri, 21 Jun 2013 12:21:25 +0300
Subject: [PATCH 157/330] autocomplete required packages as second argumet

---
 plugins/composer/composer.plugin.zsh | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index 2d1557541..37dd282e4 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -10,14 +10,36 @@ _composer_get_command_list () {
 	composer --no-ansi | sed "1,/Available commands/d" | awk '/^  [a-z]+/ { print $1 }'
 }
 
+_composer_get_required_list () {
+    composer show -s --no-ansi | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
+}
+
 _composer () {
+  local curcontext="$curcontext" state line
+  typeset -A opt_args
+  _arguments \
+    '1: :->command'\
+    '*: :->args'
   if [ -f composer.json ]; then
-    compadd `_composer_get_command_list`
+    case $state in
+      command)
+        compadd `_composer_get_command_list`
+        ;;
+      *)
+        compadd `_composer_get_required_list`
+        ;;
+    esac
   else
     compadd create-project init search selfupdate show
   fi
 }
 
+_composer_required () {
+  if [ -f composer.json ]; then
+    compadd `_composer_get_required_list`
+  fi
+}
+
 compdef _composer composer
 
 # Aliases

From 85c43f8a894b7aa521a68d096e39587855d2d35f Mon Sep 17 00:00:00 2001
From: Gunther Konig 
Date: Fri, 21 Jun 2013 12:38:17 +0300
Subject: [PATCH 158/330] remove unused function

---
 plugins/composer/composer.plugin.zsh | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index 37dd282e4..9975aaca4 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -34,12 +34,6 @@ _composer () {
   fi
 }
 
-_composer_required () {
-  if [ -f composer.json ]; then
-    compadd `_composer_get_required_list`
-  fi
-}
-
 compdef _composer composer
 
 # Aliases

From bc65443734ec96ddc8da61c022d630fa8303765a Mon Sep 17 00:00:00 2001
From: Andrew Schwartzmeyer 
Date: Sat, 22 Jun 2013 15:58:45 -0700
Subject: [PATCH 159/330] Adding support for iTerm2 tmux integration via option
 '-CC'

---
 plugins/tmux/tmux.plugin.zsh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 465f5b053..5bd946f08 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -14,6 +14,8 @@ if which tmux &> /dev/null
 	[[ -n "$ZSH_TMUX_AUTOQUIT" ]] || ZSH_TMUX_AUTOQUIT=$ZSH_TMUX_AUTOSTART
 	# Set term to screen or screen-256color based on current terminal support
 	[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true
+	# Set '-CC' option for iTerm2 tmux integration
+	[[ -n "$$ZSH_TMUX_ITERM2" ]] || ZSH_TMUX_ITERM2=false
 	# The TERM to use for non-256 color terminals.
 	# Tmux states this should be screen, but you may need to change it on
 	# systems without the proper terminfo
@@ -55,11 +57,11 @@ if which tmux &> /dev/null
 		# Try to connect to an existing session.
 		elif [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]]
 		then
-			\tmux attach || \tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`  new-session
+			\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` attach || \tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG` new-session
 			[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
 		# Just run tmux, fixing the TERM variable if requested.
 		else
-			\tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`
+			\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`
 			[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
 		fi
 	}

From 55f7990607ae413ae9f1edacf94f9c6369456983 Mon Sep 17 00:00:00 2001
From: Andrew Schwartzmeyer 
Date: Sat, 22 Jun 2013 17:43:42 -0700
Subject: [PATCH 160/330] Not loading home tmux confs when iTerm2 tmux
 integration is enabled

---
 plugins/tmux/tmux.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 5bd946f08..049ceb30f 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -38,7 +38,7 @@ if which tmux &> /dev/null
 	fi
 
 	# Set the correct local config file to use.
-	if [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]]
+    if [[ "$ZSH_TMUX_ITERM2" == "false" ]] && (( [[ -f $HOME/.tmux.conf ]] || -h $HOME/.tmux.conf ]] ))
 	then
 		#use this when they have a ~/.tmux.conf
 		export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf"

From 711e96b1a277b1d5b9771c2eec19fa34f796839b Mon Sep 17 00:00:00 2001
From: Olaf Conradi 
Date: Sun, 23 Jun 2013 11:34:03 +0200
Subject: [PATCH 161/330] Prevent starting multiple gpg-agents

Don't just overwrite the environment. First check for a running agent (an
x-session might have one running). If no agent is found, source the
environment and check again using those settings. If again no agent is
found, start a new instance.
---
 plugins/gpg-agent/gpg-agent.plugin.zsh | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index 109af44c8..b82711872 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -14,16 +14,24 @@ function start_agent_withssh {
     export SSH_AGENT_PID
 }
 
-# source settings of old agent, if applicable
-if [ -f "${GPG_ENV}" ]; then
-  . ${GPG_ENV} > /dev/null
-fi
+# check if another agent is running
+if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
+    # source settings of old agent, if applicable
+    if [ -f "${GPG_ENV}" ]; then
+        . ${GPG_ENV} > /dev/null
+    fi
 
-# check for existing ssh-agent
-if ssh-add -l > /dev/null 2> /dev/null; then
-    start_agent_nossh;
-else
-    start_agent_withssh;
+    # check again if another agent is running using the newly sources settings
+    if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
+        # check for existing ssh-agent
+        if ssh-add -l > /dev/null 2> /dev/null; then
+            # ssh-agent running, start gpg-agent without ssh support
+            start_agent_nossh;
+        else
+            # otherwise start gpg-agent with ssh support
+            start_agent_withssh;
+        fi
+    fi
 fi
 
 GPG_TTY=$(tty)

From 64fc125eba09f48f17184cde4403267c1cb16999 Mon Sep 17 00:00:00 2001
From: Olaf Conradi 
Date: Sun, 23 Jun 2013 12:25:35 +0200
Subject: [PATCH 162/330] Typo

---
 plugins/gpg-agent/gpg-agent.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index b82711872..4071334cb 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -21,7 +21,7 @@ if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
         . ${GPG_ENV} > /dev/null
     fi
 
-    # check again if another agent is running using the newly sources settings
+    # check again if another agent is running using the newly sourced settings
     if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
         # check for existing ssh-agent
         if ssh-add -l > /dev/null 2> /dev/null; then

From 87a1d8a02df5413b4e718eb0fb486535f0aae8e3 Mon Sep 17 00:00:00 2001
From: UncleBill 
Date: Tue, 25 Jun 2013 12:08:02 +0800
Subject: [PATCH 163/330] git-pull add --rebase option

---
 tools/upgrade.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/upgrade.sh b/tools/upgrade.sh
index 3624a88e5..e04fc672f 100644
--- a/tools/upgrade.sh
+++ b/tools/upgrade.sh
@@ -1,6 +1,6 @@
 printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"
 cd "$ZSH"
-if git pull origin master
+if git pull --rebase origin master
 then
   printf '\033[0;32m%s\033[0m\n' '         __                                     __   '
   printf '\033[0;32m%s\033[0m\n' '  ____  / /_     ____ ___  __  __   ____  _____/ /_  '

From ebfc9042ed2121c1d330a6767736fbf7bff2e369 Mon Sep 17 00:00:00 2001
From: Gong Hao 
Date: Tue, 25 Jun 2013 12:26:42 +0800
Subject: [PATCH 164/330] add virtualenv prompt support for agnoster theme

---
 themes/agnoster.zsh-theme | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index e65293858..c7a59ad0d 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -134,6 +134,14 @@ prompt_dir() {
   prompt_segment blue black '%~'
 }
 
+# Virtualenv: current working virtualenv
+prompt_virtualenv() {
+  local virtualenv_path="$VIRTUAL_ENV"
+  if [[ -n $virtualenv_path ]]; then
+    prompt_segment blue black "(`basename $virtualenv_path`)"
+  fi
+}
+
 # Status:
 # - was there an error
 # - am I root
@@ -152,6 +160,7 @@ prompt_status() {
 build_prompt() {
   RETVAL=$?
   prompt_status
+  prompt_virtualenv
   prompt_context
   prompt_dir
   prompt_git

From a18fa835503acb44ac656c5bb592873e66bd40f1 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Tue, 25 Jun 2013 21:12:01 +0800
Subject: [PATCH 165/330] Add celery completion

---
 plugins/celery/_celery | 129 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)
 create mode 100644 plugins/celery/_celery

diff --git a/plugins/celery/_celery b/plugins/celery/_celery
new file mode 100644
index 000000000..63af9fad5
--- /dev/null
+++ b/plugins/celery/_celery
@@ -0,0 +1,129 @@
+#compdef celery
+#autoload
+
+#celery zsh  completion
+
+_celery () {
+local -a _1st_arguments ifargs dopts controlargs
+
+typeset -A opt_args
+
+_1st_arguments=('worker' 'events' 'beat' 'shell' 'multi' 'amqp' 'status' 'inspect' \
+                'control' 'purge' 'list' 'migrate' 'call' 'result' 'report')
+ifargs=('--app=' '--broker=' '--loader=' '--config=' '--version')
+dopts=('--detach' '--umask=' '--gid=' '--uid=' '--pidfile=' '--logfile=' '--loglevel=')
+controlargs=('--timeout' '--destination')
+_arguments \
+        '(-A --app=)'{-A,--app}'[app instance to use (e.g. module.attr_name):APP]' \
+        '(-b --broker=)'{-b,--broker}'[url to broker.  default is "amqp://guest@localhost//":BROKER]' \
+        '(--loader)--loader[name of custom loader class to use.:LOADER]' \
+        '(--config)--config[Name of the configuration module:CONFIG]' \
+        '(--workdir)--workdir[Optional directory to change to after detaching.:WORKING_DIRECTORY]' \
+        '(-q --quiet)'{-q,--quiet}'[Don"t show as much output.]' \
+        '(-C --no-color)'{-C,--no-color}'[Don"t display colors.]' \
+        '(--version)--version[show program"s version number and exit]' \
+        '(- : *)'{-h,--help}'[show this help message and exit]' \
+        '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+    _describe -t commands "celery subcommand" _1st_arguments
+    return
+fi
+
+case "$words[1]" in
+    worker)
+    _arguments \
+    '(-C --concurrency=)'{-C,--concurrency=}'[Number of child processes processing the queue. The default is the number of CPUs.]' \
+    '(--pool)--pool=:::(processes eventlet gevent threads solo)' \
+    '(--purge --discard)'{--discard,--purge}'[Purges all waiting tasks before the daemon is started.]' \
+    '(-f --logfile=)'{-f,--logfile=}'[Path to log file. If no logfile is specified, stderr is used.]' \
+    '(--loglevel=)--loglevel=:::(critical error warning info debug)' \
+    '(-N --hostname=)'{-N,--hostname=}'[Set custom hostname, e.g. "foo.example.com".]' \
+    '(-B --beat)'{-B,--beat}'[Also run the celerybeat periodic task scheduler.]' \
+    '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database if running with the -B option. Defaults to celerybeat-schedule.]' \
+    '(-S --statedb=)'{-S,--statedb=}'[Path to the state database.Default: None]' \
+    '(-E --events)'{-E,--events}'[Send events that can be captured by monitors like celeryev, celerymon, and others.]' \
+    '(--time-limit=)--time-limit=[nables a hard time limit (in seconds int/float) for tasks]' \
+    '(--soft-time-limit=)--soft-time-limit=[Enables a soft time limit (in seconds int/float) for tasks]' \
+    '(--maxtasksperchild=)--maxtasksperchild=[Maximum number of tasks a pool worker can execute before it"s terminated and replaced by a new worker.]' \
+    '(-Q --queues=)'{-Q,--queues=}'[List of queues to enable for this worker, separated by comma. By default all configured queues are enabled.]' \
+    '(-I --include=)'{-I,--include=}'[Comma separated list of additional modules to import.]' \
+    '(--pidfile=)--pidfile=[Optional file used to store the process pid.]' \
+    '(--autoscale=)--autoscale=[Enable autoscaling by providing max_concurrency, min_concurrency.]' \
+    '(--autoreload)--autoreload[Enable autoreloading.]' \
+    '(--no-execv)--no-execv[Don"t do execv after multiprocessing child fork.]'
+    compadd -a ifargs
+    ;;
+    inspect)
+    _values -s \
+    'active[dump active tasks (being processed)]' \
+    'active_queues[dump queues being consumed from]' \
+    'ping[ping worker(s)]' \
+    'registered[dump of registered tasks]' \
+    'report[get bugreport info]' \
+    'reserved[dump reserved tasks (waiting to be processed)]' \
+    'revoked[dump of revoked task ids]' \
+    'scheduled[dump scheduled tasks (eta/countdown/retry)]' \
+    'stats[dump worker statistics]'
+    compadd -a controlargs ifargs
+    ;;
+    control)
+    _values -s \
+    'add_consumer[tell worker(s) to start consuming a queue]' \
+    'autoscale[change autoscale settings]' \
+    'cancel_consumer[tell worker(s) to stop consuming a queue]' \
+    'disable_events[tell worker(s) to disable events]' \
+    'enable_events[tell worker(s) to enable events]' \
+    'pool_grow[start more pool processes]' \
+    'pool_shrink[use less pool processes]' \
+    'rate_limit[tell worker(s) to modify the rate limit for a task type]' \
+    'time_limit[tell worker(s) to modify the time limit for a task type.]'
+    compadd -a controlargs ifargs
+    ;;
+    multi)
+    _values -s \
+    '--nosplash[Don"t display program info.]' \
+    '--verbose[Show more output.]' \
+    '--no-color[Don"t display colors.]' \
+    '--quiet[Don"t show as much output.]' \
+    'start' 'restart' 'stopwait' 'stop' 'show' \
+    'names' 'expand' 'get' 'kill'
+    compadd -a ifargs
+    ;;
+    amqp)
+    _values -s \
+    'queue.declare' 'queue.purge' 'exchange.delete' 'basic.publish' \
+    'exchange.declare' 'queue.delete' 'queue.bind' 'basic.get'
+    ;;
+    list)
+    _values -s, 'bindings'
+    ;;
+    shell)
+    _values -s \
+    '--ipython[force iPython.]' \
+    '--bpython[force bpython.]' \
+    '--python[force default Python shell.]' \
+    '--without-tasks[don"t add tasks to locals.]' \
+    '--eventlet[use eventlet.]' \
+    '--gevent[use gevent.]'
+    compadd -a ifargs
+    ;;
+    beat)
+    _arguments \
+    '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database. Defaults to celerybeat-schedule.]' \
+    '(-S --scheduler=)'{-S,--scheduler=}'[Scheduler class to use. Default is celery.beat.PersistentScheduler.]' \
+    '(--max-interval)--max-interval[]'
+    compadd -a dopts fargs
+    ;;
+    events)
+    _arguments \
+    '(-d --dump)'{-d,--dump}'[Dump events to stdout.]' \
+    '(-c --camera=)'{-c,--camera=}'[Take snapshots of events using this camera.]' \
+    '(-F --frequency=)'{-F,--frequency=}'[Camera: Shutter frequency.  Default is every 1.0 seconds.]' \
+    '(-r --maxrate=)'{-r,--maxrate=}'[Camera: Optional shutter rate limit (e.g. 10/m).]'
+    compadd -a dopts fargs
+    ;;
+    *)
+        ;;
+    esac
+}

From f25e2d2856281698914f21f7d22f84ae7e421f39 Mon Sep 17 00:00:00 2001
From: Chris Krycho 
Date: Tue, 25 Jun 2013 15:52:26 -0300
Subject: [PATCH 166/330] Add more capable hg incoming and outgoing count
 handling

The original hgic and hgoc aliases worked well for the default path, but attempting to call them with a different path failed. I created functions to handle them instead.
---
 plugins/mercurial/mercurial.plugin.zsh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
index de036e44d..c18aa726c 100644
--- a/plugins/mercurial/mercurial.plugin.zsh
+++ b/plugins/mercurial/mercurial.plugin.zsh
@@ -8,11 +8,9 @@ alias hgd='hg diff'
 alias hged='hg diffmerge'
 # pull and update
 alias hgi='hg incoming'
-alias hgic='hg incoming | grep "changeset" | wc -l'
 alias hgl='hg pull -u'
 alias hglr='hg pull --rebase'
 alias hgo='hg outgoing'
-alias hgoc='hg outgoing | grep 'changeset' | wc -l'
 alias hgp='hg push'
 alias hgs='hg status'
 # this is the 'git commit --amend' equivalent
@@ -55,3 +53,11 @@ function hg_dirty_choose {
 function hg_dirty {
   hg_dirty_choose $ZSH_THEME_HG_PROMPT_DIRTY $ZSH_THEME_HG_PROMPT_CLEAN
 }
+
+function hgic() {
+    hg incoming "$@" | grep "changeset" | wc -l
+}
+
+function hgoc() {
+    hg outgoing "$@" | grep "changeset" | wc -l
+}

From 10bd036dfe466d82f90f10edaa83dc67a90b8571 Mon Sep 17 00:00:00 2001
From: Tobias Preuss 
Date: Fri, 26 Apr 2013 11:02:18 +0200
Subject: [PATCH 167/330] Add autocompletion for Rails3.

+ Originally published by Christopher Chow.
+ Source:
https://github.com/robbyrussell/oh-my-zsh/blob/30620d463850c17f86e7a56fbf6a8b5e793a4e07/plugins/rails3/_rails3
  Commit: 30620d463850c17f86e7a56fbf6a8b5e793a4e07
---
 plugins/rails3/_rails3 | 56 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 plugins/rails3/_rails3

diff --git a/plugins/rails3/_rails3 b/plugins/rails3/_rails3
new file mode 100644
index 000000000..97915e68b
--- /dev/null
+++ b/plugins/rails3/_rails3
@@ -0,0 +1,56 @@
+#compdef rails
+#autoload
+
+# rails 3 zsh completion, based on homebrew completion
+# Extracted from https://github.com/robbyrussell/oh-my-zsh/blob/30620d463850c17f86e7a56fbf6a8b5e793a4e07/plugins/rails3/_rails3
+# Published by Christopher Chow
+
+local -a _1st_arguments
+_1st_arguments=(
+    'generate:Generate new code (short-cut alias: "g")'
+    'console:Start the Rails console (short-cut alias: "c")'
+    'server:Start the Rails server (short-cut alias: "s")'
+    'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")'
+    'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"'
+    'application:Generate the Rails application code'
+    'destroy:Undo code generated with "generate"'
+    'benchmarker:See how fast a piece of code runs'
+    'profiler:Get profile information from a piece of code'
+    'plugin:Install a plugin'
+)
+
+_rails_generate_arguments() {
+    generate_arguments=(
+        controller
+        generator
+        helper
+        integration_test
+        mailer
+        migration
+        model
+        observer
+        performance_test
+        plugin
+        resource
+        scaffold
+        scaffold_controller
+        session_migration
+        stylesheets
+    )
+}
+
+_arguments \
+    '(--version)--version[show version]' \
+    '(--help)--help[show help]' \
+    '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+  _describe -t commands "rails subcommand" _1st_arguments
+  return
+fi
+
+case "$words[1]" in
+  generate)
+    _rails_generate_arguments
+    _wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;;
+esac

From c51ef9dce6a600976aa3d0a3d733bb99c477959b Mon Sep 17 00:00:00 2001
From: Okura Masafumi 
Date: Thu, 27 Jun 2013 22:28:14 +0900
Subject: [PATCH 168/330] Change duplicated alias name

---
 plugins/git/git.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 851fdf24b..2ecc74eb6 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -78,7 +78,7 @@ compdef _git gm=git-mergetool
 alias gg='git gui citool'
 alias gga='git gui citool --amend'
 alias gk='gitk --all --branches'
-alias gss='git stash show --text'
+alias gsts='git stash show --text'
 
 # Will cd into the top of the current repository
 # or submodule.

From 644728bd225c70068e32501c81a95713d04b8ff1 Mon Sep 17 00:00:00 2001
From: Brandon Black 
Date: Thu, 27 Jun 2013 11:38:04 -0700
Subject: [PATCH 169/330] rvm plugin: update to ruby version helpers and
 rvm-update

* the current patch levels hard-coded here are pretty dated. I updated the ruby version helpers to use loose ruby version matchers so they don't continually need to be updated with every new patch level release.

* `rvm get head` actually performs an `rvm reload` in the post install. there's no need to do again here in rvm-update so I've removed that.
---
 plugins/rvm/rvm.plugin.zsh | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
index cdd0a7847..e6ad6450d 100644
--- a/plugins/rvm/rvm.plugin.zsh
+++ b/plugins/rvm/rvm.plugin.zsh
@@ -3,9 +3,9 @@ fpath=($rvm_path/scripts/zsh/Completion $fpath)
 alias rubies='rvm list rubies'
 alias gemsets='rvm gemset list'
 
-local ruby18='ruby-1.8.7-p371'
-local ruby19='ruby-1.9.3-p392'
-local ruby20='ruby-2.0.0-p0'
+local ruby18='ruby-1.8.7'
+local ruby19='ruby-1.9.3'
+local ruby20='ruby-2.0.0'
 
 function rb18 {
 	if [ -z "$1" ]; then
@@ -42,7 +42,6 @@ compdef _rb20 rb20
 
 function rvm-update {
 	rvm get head
-	rvm reload # TODO: Reload rvm completion?
 }
 
 # TODO: Make this usable w/o rvm.

From 012afe238159d87701fde176309d8a1a5cf8ea41 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Fri, 28 Jun 2013 11:47:03 +0800
Subject: [PATCH 170/330] The current version of bower is completely
 unavailable, plugin depth modification

---
 plugins/bower/bower.plugin.zsh | 91 +++++++++++++++++++++++++---------
 1 file changed, 67 insertions(+), 24 deletions(-)

diff --git a/plugins/bower/bower.plugin.zsh b/plugins/bower/bower.plugin.zsh
index ed9c04840..68a67a3cc 100644
--- a/plugins/bower/bower.plugin.zsh
+++ b/plugins/bower/bower.plugin.zsh
@@ -2,37 +2,80 @@ alias bi="bower install"
 alias bl="bower list"
 alias bs="bower search"
 
-bower_package_list=''
-
+_bower_installed_packages () {
+    bower_package_list=$(bower ls --no-color 2>/dev/null| awk 'NR>3{print p}{p=$0}'| cut -d ' ' -f 2|sed 's/#.*//')
+}
 _bower ()
 {
-	local curcontext="$curcontext" state line
-	typeset -A opt_args
+    local -a _1st_arguments _no_color _dopts _save_dev _force_lastest _production
+    local expl
+    typeset -A opt_args
 
-	_arguments -C \
-		':command:->command' \
-		'*::options:->options'
+    _no_color=('--no-color[Do not print colors (available in all commands)]')
 
-	case $state in
-		(command)
+    _dopts=(
+        '(--save)--save[Save installed packages into the project"s bower.json dependencies]'
+        '(--force)--force[Force fetching remote resources even if a local copy exists on disk]'
+    )
 
-			local -a subcommands
-			subcommands=(${=$(bower help | grep help | sed -e 's/,//g')})
-			_describe -t commands 'bower' subcommands
-		;;
+    _save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]')
 
-		(options)
-			case $line[1] in
+    _force_lastest=('(--force-latest)--force-latest[Force latest version on conflict]')
+
+    _production=('(--production)--production[Do not install project devDependencies]')
+
+    _1st_arguments=(
+    'cache-clean:Clean the Bower cache, or the specified package caches' \
+    'help:Display help information about Bower' \
+    'info:Version info and description of a particular package' \
+    'init:Interactively create a bower.json file' \
+    'install:Install a package locally' \
+    'link:Symlink a package folder' \
+    'lookup:Look up a package URL by name' \
+    'register:Register a package' \
+    'search:Search for a package by name' \
+    'uninstall:Remove a package' \
+    'update:Update a package' \
+    {ls,list}:'[List all installed packages]'
+    )
+    _arguments \
+    $_no_color \
+    '*:: :->subcmds' && return 0
+
+    if (( CURRENT == 1 )); then
+        _describe -t commands "bower subcommand" _1st_arguments
+        return
+    fi
+
+    case "$words[1]" in
+        install)
+        _arguments \
+        $_dopts \
+        $_save_dev \
+        $_force_lastest \
+        $_no_color \
+        $_production
+        ;;
+        update)
+        _arguments \
+        $_dopts \
+        $_no_color \
+        $_force_lastest
+        _bower_installed_packages
+        compadd "$@" $(echo $bower_package_list)
+        ;;
+        uninstall)
+        _arguments \
+        $_no_color \
+        $_dopts
+        _bower_installed_packages
+        compadd "$@" $(echo $bower_package_list)
+        ;;
+        *)
+        $_no_color \
+        ;;
+    esac
 
-				(install)
-				    if [ -z "$bower_package_list" ];then
-                    bower_package_list=$(bower search | awk 'NR > 2' | cut -d '-' -f 2 | cut -d ' ' -f 2 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")
-                fi
-				    compadd "$@" $(echo $bower_package_list)
-                ;;
-			esac
-		;;
-	esac
 }
 
 compdef _bower bower

From 4fe4db51285af30f1195a817dadcf5d8b3b93e79 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Fri, 28 Jun 2013 15:08:26 +0800
Subject: [PATCH 171/330] Update coffee completion

---
 plugins/coffee/_coffee | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/plugins/coffee/_coffee b/plugins/coffee/_coffee
index 5c8eb9a08..10b6b8164 100644
--- a/plugins/coffee/_coffee
+++ b/plugins/coffee/_coffee
@@ -35,27 +35,37 @@
 # -------
 #
 #  * Mario Fernandez (https://github.com/sirech)
+#  * Dong Weiming (https://github.com/dongweiming)
 #
 # ------------------------------------------------------------------------------
 
-local curcontext="$curcontext" state line ret=1
+local curcontext="$curcontext" state line ret=1 version opts first second third
 typeset -A opt_args
+version=(${(f)"$(_call_program version $words[1] --version)"})
+version=${${(z)${version[1]}}[3]}
+first=$(echo $version|cut -d '.' -f 1)
+second=$(echo $version|cut -d '.' -f 2)
+third=$(echo $version|cut -d '.' -f 3)
+if (( $first < 2 )) &&  (( $second < 7 )) && (( $third < 3 ));then
+  opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]'
+         '(-r --require)'{-r,--require}'[require a library before executing your script]:library')
+fi
+
 
 _arguments -C \
   '(- *)'{-h,--help}'[display this help message]' \
   '(- *)'{-v,--version}'[display the version number]' \
+  $opts \
   '(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \
   '(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \
   '(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \
   '(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \
-  '(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' \
   '(--nodejs)--nodejs[pass options directly to the "node" binary]' \
   '(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \
   '(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \
   '(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \
   '(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \
   '(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \
-  '(-r --require)'{-r,--require}'[require a library before executing your script]:library' \
   '(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \
   '(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \
   '*:script or directory:_files' && ret=0

From 15509ce0472a431867cc2ff21ca5ef0a1c1e855f Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Sun, 30 Jun 2013 17:29:02 +0800
Subject: [PATCH 172/330] Update gem completion

---
 plugins/gem/_gem | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/plugins/gem/_gem b/plugins/gem/_gem
index 83cba40d1..279181e70 100644
--- a/plugins/gem/_gem
+++ b/plugins/gem/_gem
@@ -4,11 +4,13 @@
 # gem zsh completion, based on homebrew completion
 
 _gem_installed() {
-  installed_gems=(`gem list --local --no-versions`)
+  installed_gems=(${(f)"$(gem list --local --no-versions)"})
 }
 
 local -a _1st_arguments
+
 _1st_arguments=(
+  'build:Build a gem from a gemspec'
   'cert:Manage RubyGems certificates and signing settings'
   'check:Check installed gems'
   'cleanup:Clean up old versions of installed gems in the local repository'
@@ -37,6 +39,7 @@ _1st_arguments=(
   'unpack:Unpack an installed gem to the current directory'
   'update:Update the named gems (or all installed gems) in the local repository'
   'which:Find the location of a library file you can require'
+  'yank:Remove a specific gem version release from RubyGems.org'
 )
 
 local expl

From d4a9467f89115c1e60b51d8c068ec4e5e1c5b195 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Sun, 30 Jun 2013 18:08:48 +0800
Subject: [PATCH 173/330] Modify determine the oh-my-zsh installed in
 non-default path of the installed

---
 tools/install.sh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/install.sh b/tools/install.sh
index a2bd5665a..5af038fd9 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -1,6 +1,11 @@
-if [ -d ~/.oh-my-zsh ]
+ZSH=`/usr/bin/env|grep 'ZSH='|cut -d '=' -f 2`
+if [ -d "$ZSH" ]
 then
-  echo "\033[0;33mYou already have Oh My Zsh installed.\033[0m You'll need to remove ~/.oh-my-zsh if you want to install"
+  echo "\033[0;33mYou already have Oh My Zsh installed.\033[0m You'll need to remove $ZSH if you want to install"
+  exit
+elif [ -d ~/.oh-my-zsh ]
+then
+  echo "\033[0;33mYou already have One Oh My Zsh Directory.\033[0m You'll need to remove  ~/.oh-my-zsh if you want to clone"
   exit
 fi
 

From 77cf8696053d5256b4deb7cddc79c31d26158451 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Sun, 30 Jun 2013 20:46:10 +0800
Subject: [PATCH 174/330] Add option for show in the command execution time
 stamp in the history

---
 lib/aliases.zsh              | 14 ++++++++++++--
 templates/zshrc.zsh-template |  5 +++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/lib/aliases.zsh b/lib/aliases.zsh
index 9b3709172..b279bf855 100644
--- a/lib/aliases.zsh
+++ b/lib/aliases.zsh
@@ -13,8 +13,18 @@ alias please='sudo'
 #alias g='grep -in'
 
 # Show history
-alias history='fc -l 1'
-
+if [ "$HIST_STAMPS" = "mm/dd/yyyy" ]
+then
+    alias history='fc -fl 1'
+elif [ "$HIST_STAMPS" = "dd.mm.yyyy" ]
+then
+    alias history='fc -El 1'
+elif [ "$HIST_STAMPS" = "yyyy-mm-dd" ]
+then
+    alias history='fc -il 1'
+else
+    alias history='fc -l 1'
+fi
 # List direcory contents
 alias lsa='ls -lah'
 alias l='ls -la'
diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template
index d4dded73a..3135df882 100644
--- a/templates/zshrc.zsh-template
+++ b/templates/zshrc.zsh-template
@@ -37,6 +37,11 @@ ZSH_THEME="robbyrussell"
 # much faster.
 # DISABLE_UNTRACKED_FILES_DIRTY="true"
 
+# Uncomment following line if you want to  shown in the command execution time stamp 
+# in the history command output. The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|
+# yyyy-mm-dd
+# HIST_STAMPS="mm/dd/yyyy"
+
 # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
 # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
 # Example format: plugins=(rails git textmate ruby lighthouse)

From c164f2aab693f4b32c209cb34784818fba434b2d Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Tue, 2 Jul 2013 00:22:25 +0800
Subject: [PATCH 175/330] Add shell built method

---
 plugins/urltools/urltools.plugin.zsh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/plugins/urltools/urltools.plugin.zsh b/plugins/urltools/urltools.plugin.zsh
index 4ddfff8ce..22327334d 100644
--- a/plugins/urltools/urltools.plugin.zsh
+++ b/plugins/urltools/urltools.plugin.zsh
@@ -14,6 +14,9 @@ if [[ $(whence node) != "" && ( "x$URLTOOLS_METHOD" = "x"  || "x$URLTOOLS_METHOD
 elif [[ $(whence python) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xpython" ) ]]; then
     alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
     alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
+elif [[ $(whence xxd) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xshell" ) ]]; then
+    function urlencode() {echo $@ | tr -d "\n" | xxd -plain | sed "s/\(..\)/%\1/g"}
+    function urldecode() {printf $(echo -n $@ | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')"\n"}
 elif [[ $(whence ruby) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xruby" ) ]]; then
     alias urlencode='ruby -r cgi -e "puts CGI.escape(ARGV[0])"'
     alias urldecode='ruby -r cgi -e "puts CGI.unescape(ARGV[0])"'
@@ -33,4 +36,4 @@ elif [[ $(whence perl) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHO
     fi
 fi
 
-unset URLTOOLS_METHOD
\ No newline at end of file
+unset URLTOOLS_METHOD

From 9cec52c4495cc3e439b637ffd9dcdf7cea54a288 Mon Sep 17 00:00:00 2001
From: Matei Trusca 
Date: Tue, 2 Jul 2013 11:29:25 +0300
Subject: [PATCH 176/330] fixed typo in tmux plugin

---
 plugins/tmux/tmux.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 049ceb30f..3ecc2ac69 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -15,7 +15,7 @@ if which tmux &> /dev/null
 	# Set term to screen or screen-256color based on current terminal support
 	[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true
 	# Set '-CC' option for iTerm2 tmux integration
-	[[ -n "$$ZSH_TMUX_ITERM2" ]] || ZSH_TMUX_ITERM2=false
+	[[ -n "$ZSH_TMUX_ITERM2" ]] || ZSH_TMUX_ITERM2=false
 	# The TERM to use for non-256 color terminals.
 	# Tmux states this should be screen, but you may need to change it on
 	# systems without the proper terminfo

From 44a26df8fdd85c3eeb774a6913b9102106228ebb Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Wed, 3 Jul 2013 11:57:31 +0800
Subject: [PATCH 177/330] Add version option

---
 plugins/supervisor/_supervisord | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/supervisor/_supervisord b/plugins/supervisor/_supervisord
index 34d27805d..e0cb670e1 100644
--- a/plugins/supervisor/_supervisord
+++ b/plugins/supervisor/_supervisord
@@ -7,6 +7,7 @@ _arguments \
     {--configuration,-c}"[configuration file]:FILENAME:_files" \
     {--nodaemon,-n}"[run in the foreground (same as 'nodaemon true' in config file)]" \
     {--help,-h}"[print this usage message and exit]:" \
+    {--version,-v}"[print supervisord version number and exit]:" \
     {--user,-u}"[run supervisord as this user]:USER:_users" \
     {--umask,-m}"[use this umask for daemon subprocess (default is 022)]" \
     {--directory,-d}"[directory to chdir to when daemonized]" \

From 426f5f483925f5bd9d3f78fa03d6f7d9818bb288 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Wed, 3 Jul 2013 22:29:42 +0800
Subject: [PATCH 178/330] Update powify for displayed parameter is not enough,
 and when there is no directory error

---
 plugins/powify/_powify | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plugins/powify/_powify b/plugins/powify/_powify
index d23c46513..9507f400e 100644
--- a/plugins/powify/_powify
+++ b/plugins/powify/_powify
@@ -1,7 +1,7 @@
 #compdef powify
 
 _powify_all_servers() {
-  all_servers=(`ls $HOME/.pow/`)
+  all_servers=(`ls $HOME/.pow/ 2>/dev/null`)
 }
 
 local -a all_servers
@@ -30,7 +30,7 @@ fi
 
 case "$words[1]" in
   server)
-    _values \
+    _values , \
       'install[install pow server]' \
       'reinstall[reinstall pow server]' \
       'update[update pow server]' \
@@ -45,7 +45,7 @@ case "$words[1]" in
       'config[print the current server configuration]' \
       'logs[tails the pow server logs]' ;;
   utils)
-    _values \
+    _values , \
       'install[install powify.dev server management tool]' \
       'reinstall[reinstall powify.dev server management tool]' \
       'uninstall[uninstall powify.dev server management tool]' ;;

From 744f3654e2bfb4806381ca4f0a5dfcfa5b1c3b83 Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Thu, 4 Jul 2013 19:18:52 +0800
Subject: [PATCH 179/330] Add sudo plugin

---
 plugins/sudo/sudo.zsh | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 plugins/sudo/sudo.zsh

diff --git a/plugins/sudo/sudo.zsh b/plugins/sudo/sudo.zsh
new file mode 100644
index 000000000..d12e06853
--- /dev/null
+++ b/plugins/sudo/sudo.zsh
@@ -0,0 +1,22 @@
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# sudo will be inserted before the command
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Dongweiming 
+#
+# ------------------------------------------------------------------------------
+
+sudo-command-line() {
+[[ -z $BUFFER ]] && zle up-history
+[[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
+zle end-of-line 
+}
+zle -N sudo-command-line
+# Defined shortcut keys: [Esc] [Esc]
+bindkey "\e\e" sudo-command-line

From c26facb582eed3b63642665864258862aa49392b Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Fri, 5 Jul 2013 00:58:05 +0200
Subject: [PATCH 180/330] first few lines for the autocompletion of cocoapods

---
 plugins/pod/_pod | 82 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 plugins/pod/_pod

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
new file mode 100644
index 000000000..2c183635d
--- /dev/null
+++ b/plugins/pod/_pod
@@ -0,0 +1,82 @@
+#compdef pod
+
+# -----------------------------------------------------------------------------
+#          FILE:  pod.plugin.zsh
+#   DESCRIPTION:  Cocoapods autocomplete plugin for Oh-My-Zsh
+#        AUTHOR:  Alexandre Joly (alexandre.joly@mekanics.ch)
+#        GITHUB:  https://github.com/mekanics
+#       VERSION:  0.0.1
+# -----------------------------------------------------------------------------
+
+_pod_all_repos() {
+    repos=(`ls ~/.cocoapods`)
+}
+
+local -a _1st_arguments
+_1st_arguments=(
+    'help:Show help for the given command.'
+    'install:Install project dependencies'
+    'ipc:Inter-process communication'
+    'lib:Develop pods'
+    'list:List pods'
+    'outdated:Show outdated project dependencies'
+    'podfile-info:Shows information on installed Pods'
+    'push:Push new specifications to a spec-repo'
+    'repo:Manage spec-repositories'
+    'search:Searches for pods'
+    'setup:Setup the CocoaPods environment'
+    'spec:Manage pod specs'
+    'update:Update outdated project dependencies'
+)
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+  _describe -t commands "pod command" _1st_arguments
+  return
+fi
+
+local -a _command_args
+case "$words[1]" in
+    install)
+    _command_args=(
+        '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
+        '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
+    )
+    ;;
+    update)
+    _command_args=(
+        '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
+        '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
+    )
+    ;;
+    outdated)
+    _command_args=(
+        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
+    )
+    ;;
+    search)
+    _command_args=(
+        '(--full)--full[Search by name, summary, and description]' \
+        '(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
+        '(--ios)--ios[Restricts the search to Pods supported on iOS]' \
+        '(--osx)--osx[Restricts the search to Pods supported on OS X]'
+    )
+    ;;
+    update)
+    _command_args=(
+        '(--update)--update[Run `pod repo update before listing]'
+    )
+    ;;
+esac
+
+_arguments \
+    $_command_args \
+    '(--silent)--silent[Show nothing]' \
+    '(--version)--version[Show the version of CocoaPods]' \
+    '(--no-color)--no-color[Show output without color]' \
+    '(--verbose)--verbose[Show more debugging information]' \
+    '(--help)--help[Show help banner of specified command]' \
+    &&  return 0
\ No newline at end of file

From cf5ca2f4f3e6d98a4d4d4938be0e421645722fb2 Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Fri, 5 Jul 2013 11:07:29 +0200
Subject: [PATCH 181/330] commands and subcommands

---
 plugins/pod/_pod | 219 ++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 168 insertions(+), 51 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 2c183635d..ce8882d42 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -1,16 +1,29 @@
 #compdef pod
+#autoload
 
 # -----------------------------------------------------------------------------
 #          FILE:  pod.plugin.zsh
 #   DESCRIPTION:  Cocoapods autocomplete plugin for Oh-My-Zsh
+#                 http://cocoapods.org
 #        AUTHOR:  Alexandre Joly (alexandre.joly@mekanics.ch)
 #        GITHUB:  https://github.com/mekanics
+#       TWITTER:  @jolyAlexandre
 #       VERSION:  0.0.1
+#       LICENSE:  MIT
 # -----------------------------------------------------------------------------
 
-_pod_all_repos() {
-    repos=(`ls ~/.cocoapods`)
-}
+#------------------
+# TODO:
+#   - Parameters for
+#       - install
+#       - update
+#       - outdated
+#       - search
+#       - list
+#       - push
+#       - podfile-info
+#       - setup
+#------------------
 
 local -a _1st_arguments
 _1st_arguments=(
@@ -29,54 +42,158 @@ _1st_arguments=(
     'update:Update outdated project dependencies'
 )
 
-_arguments '*:: :->command'
+local -a _repo_arguments
+_repo_arguments=(
+    'add:Add a spec repo'
+    'lint:Validates all specs in a repo'
+    'update:Update a spec repo'
+)
 
-if (( CURRENT == 1 )); then
-  _describe -t commands "pod command" _1st_arguments
-  return
-fi
+local -a _spec_arguments
+_spec_arguments=(
+    'cat:Prints a spec file'
+    'create:Create spec file stub'
+    'edit:Edit a spec file'
+    'lint:Validates a spec file'
+    'which:Prints the path of the given spec'
+)
 
-local -a _command_args
-case "$words[1]" in
-    install)
-    _command_args=(
-        '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
-        '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
-        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
-    )
-    ;;
-    update)
-    _command_args=(
-        '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
-        '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
-        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
-    )
-    ;;
-    outdated)
-    _command_args=(
-        '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
-    )
-    ;;
-    search)
-    _command_args=(
-        '(--full)--full[Search by name, summary, and description]' \
-        '(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
-        '(--ios)--ios[Restricts the search to Pods supported on iOS]' \
-        '(--osx)--osx[Restricts the search to Pods supported on OS X]'
-    )
-    ;;
-    update)
-    _command_args=(
-        '(--update)--update[Run `pod repo update before listing]'
-    )
-    ;;
+local -a _ipc_arguments
+_ipc_arguments=(
+    'list:Lists the specifications know to CocoaPods'
+    'podfile:Converts a Podfile to YAML'
+    'repl:The repl listens to commands on standard input'
+    'spec:Converts a podspec to YAML'
+    'update-search-index:Updates the search index'
+)
+
+local -a _list_arguments
+_list_arguments=(
+    'new:Lists pods introduced in the master spec-repo since the last check'
+)
+
+__first_command_list ()
+{
+    local expl
+    declare -a tasks
+
+    tasks=(install ipc lib list outdated podfile-info push repo search setup spec update)
+
+    _wanted tasks expl 'help' compadd $tasks
+}
+
+__repo_list() {
+    _wanted application expl 'command' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
+}
+
+__pod-repo() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+       (command)
+           _describe -t commands "gem subcommand" _repo_arguments
+           return
+       ;;
+
+       (options)
+           case $line[1] in
+               (update|lint)
+                   _arguments ':feature:__repo_list'
+               ;;
+           esac
+       ;;
+    esac
+}
+
+__pod-spec() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "gem subcommand" _spec_arguments
+            return
+        ;;
+
+        (options)
+            #todo
+            return
+        ;;
+    esac
+}
+
+__pod-ipc() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "gem subcommand" _ipc_arguments
+            return
+        ;;
+
+        (options)
+            #todo
+            return
+        ;;
+    esac
+}
+
+
+
+local expl
+#local -a boxes installed_boxes
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+    ':command:->command' \
+    '*::options:->options'
+
+case $state in
+  (command)
+      _describe -t commands "gem subcommand" _1st_arguments
+      return
+  ;;
+
+  (options)
+    case $line[1] in
+        (help)
+            _arguments ':feature:__first_command_list'
+        ;;
+
+        (repo)
+            __pod-repo
+        ;;
+
+        (spec)
+            __pod-spec
+        ;;
+
+        (ipc)
+            __pod-ipc
+        ;;
+
+        (list)
+            __pod-list
+        ;;
+
+        (install|lib|outdated|podfile-info|push|search|setup|update)
+            #_arguments ':feature:__repo_list'
+    esac
+  ;;
 esac
-
-_arguments \
-    $_command_args \
-    '(--silent)--silent[Show nothing]' \
-    '(--version)--version[Show the version of CocoaPods]' \
-    '(--no-color)--no-color[Show output without color]' \
-    '(--verbose)--verbose[Show more debugging information]' \
-    '(--help)--help[Show help banner of specified command]' \
-    &&  return 0
\ No newline at end of file

From 1d636fe8ab4a7258eddbe120d462cdda3d8adbaf Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Fri, 5 Jul 2013 11:17:33 +0200
Subject: [PATCH 182/330] pod-list

pod-lib removed. whyever I described it...
---
 plugins/pod/_pod | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index ce8882d42..1decb8872 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -30,7 +30,6 @@ _1st_arguments=(
     'help:Show help for the given command.'
     'install:Install project dependencies'
     'ipc:Inter-process communication'
-    'lib:Develop pods'
     'list:List pods'
     'outdated:Show outdated project dependencies'
     'podfile-info:Shows information on installed Pods'
@@ -77,7 +76,7 @@ __first_command_list ()
     local expl
     declare -a tasks
 
-    tasks=(install ipc lib list outdated podfile-info push repo search setup spec update)
+    tasks=(install ipc list outdated podfile-info push repo search setup spec update)
 
     _wanted tasks expl 'help' compadd $tasks
 }
@@ -152,6 +151,27 @@ __pod-ipc() {
     esac
 }
 
+__pod-list() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "gem subcommand" _list_arguments
+            return
+        ;;
+
+        (options)
+            #todo
+            return
+        ;;
+    esac
+}
+
 
 
 local expl
@@ -192,7 +212,7 @@ case $state in
             __pod-list
         ;;
 
-        (install|lib|outdated|podfile-info|push|search|setup|update)
+        (install|outdated|podfile-info|push|search|setup|update)
             #_arguments ':feature:__repo_list'
     esac
   ;;

From c48822b3a3a3f25922c184d1804fc11aea2b6432 Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Fri, 5 Jul 2013 11:28:00 +0200
Subject: [PATCH 183/330] show repos on pod push

---
 plugins/pod/_pod | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 1decb8872..78644745b 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -196,6 +196,10 @@ case $state in
             _arguments ':feature:__first_command_list'
         ;;
 
+        (push)
+            _arguments ':feature:__repo_list'
+        ;;
+
         (repo)
             __pod-repo
         ;;
@@ -212,7 +216,7 @@ case $state in
             __pod-list
         ;;
 
-        (install|outdated|podfile-info|push|search|setup|update)
+        (install|outdated|podfile-info|search|setup|update)
             #_arguments ':feature:__repo_list'
     esac
   ;;

From 4d6b59f041f2d5eb9b61608a0ff33160faf48afa Mon Sep 17 00:00:00 2001
From: dongweiming 
Date: Fri, 5 Jul 2013 19:27:43 +0800
Subject: [PATCH 184/330] Add a plugin for systemadmin ops and developer

---
 plugins/systemadmin/systemadmin.zsh | 159 ++++++++++++++++++++++++++++
 1 file changed, 159 insertions(+)
 create mode 100644 plugins/systemadmin/systemadmin.zsh

diff --git a/plugins/systemadmin/systemadmin.zsh b/plugins/systemadmin/systemadmin.zsh
new file mode 100644
index 000000000..f5e44c66f
--- /dev/null
+++ b/plugins/systemadmin/systemadmin.zsh
@@ -0,0 +1,159 @@
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# This is one for the system administrator, operation and maintenance.
+# Some of which come from http://justinlilly.com/dotfiles/zsh.html
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Dongweiming 
+#
+# ------------------------------------------------------------------------------
+
+function retval() {
+    if [[ -z $1 ]];then
+        echo '.'
+    else
+        echo $1
+    fi
+}
+
+function retlog() {
+    if [[ -z $1 ]];then
+        echo '/var/log/nginx/access.log'
+    else
+        echo $1
+    fi
+}
+
+alias ping='ping -c 5'
+alias clr='clear;echo "Currently logged in on $(tty), as $(whoami) in directory $(pwd)."'
+alias path='echo -e ${PATH//:/\\n}'
+alias mkdir='mkdir -pv'
+# get top process eating memory
+alias psmem='ps -e -orss=,args= | sort -b -k1,1n'
+alias psmem10='ps -e -orss=,args= | sort -b -k1,1n| head -10'
+# get top process eating cpu if not work try excute : export LC_ALL='C'
+alias pscpu='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1 -nr'
+alias pscpu10='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1 -nr | head -10'
+# top10 of the history
+alias hist10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
+
+# directory LS
+dls () {
+    ls -l | grep "^d" | awk '{ print $9 }' | tr -d "/"
+}
+psgrep() {
+    ps aux | grep "$(retval $1)" | grep -v grep
+}
+# Kills any process that matches a regexp passed to it
+killit() {
+    ps aux | grep -v "grep" | grep "$@" | awk '{print $2}' | xargs sudo kill
+}
+
+# list contents of directories in a tree-like format
+if [ -z "\${which tree}" ]; then
+  tree () {
+      find $@ -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
+  }
+fi
+
+# Sort connection state
+sortcons() {
+    netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
+}
+
+# View all 80 Port Connections
+con80() {
+    netstat -nat|grep -i ":80"|wc -l
+}
+
+# On the connected IP sorted by the number of connections
+sortconip() {
+    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
+}
+
+# top20 of Find the number of requests on 80 port
+req20() {
+    netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
+}
+
+# top20 of Using tcpdump port 80 access to view
+http20() {
+    sudo tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
+}
+
+# top20 of Find time_wait connection
+timewait20() {
+    netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
+}
+
+# top20 of Find SYN connection
+syn20() {
+    netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr|head -n20
+}
+
+# Printing process according to the port number
+port_pro() {
+    netstat -ntlp | grep "$(retval $1)" | awk '{print $7}' | cut -d/ -f1
+}
+
+# top10 of gain access to the ip address
+accessip10() {
+    awk '{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}' "$(retlog)"
+}
+
+# top20 of Most Visited file or page
+visitpage20() {
+    awk '{print $11}' "$(retlog)"|sort|uniq -c|sort -nr|head -20
+}
+
+# top100 of Page lists the most time-consuming (more than 60 seconds) as well as the corresponding page number of occurrences
+consume100() {
+    awk '($NF > 60 && $7~/\.php/){print $7}' "$(retlog)" |sort -n|uniq -c|sort -nr|head -100
+    # if django website or other webiste make by no suffix language
+    # awk '{print $7}' "$(retlog)" |sort -n|uniq -c|sort -nr|head -100
+}
+
+# Website traffic statistics (G)
+webtraffic() {
+    awk "{sum+=$10} END {print sum/1024/1024/1024}" "$(retlog)"
+}
+
+# Statistical connections 404
+c404() {
+    awk '($9 ~/404/)' "$(retlog)" | awk '{print $9,$7}' | sort
+}
+
+# Statistical http status.
+httpstatus() {
+    awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}' "$(retlog)"
+}
+
+# Delete 0 byte file
+d0() {
+    find "$(retval $1)" -type f -size 0 -exec rm -rf {} \;
+}
+
+# gather external ip address
+geteip() {
+    curl http://ifconfig.me
+}
+
+# determine local IP address
+getip() {
+    ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
+}
+
+# Clear zombie processes
+clrz() {
+    ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
+}
+
+# Second concurrent
+conssec() {
+    awk '{if($9~/200|30|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}' "$(retlog)"|sort -k 2 -nr|head -n10
+}

From 2defe0b5c54b08fc599005197761edf162600c78 Mon Sep 17 00:00:00 2001
From: Vincent 
Date: Mon, 8 Jul 2013 01:17:33 +0200
Subject: [PATCH 185/330] Update jonathan.zsh-theme

Made it work with UTF-8 Console.
Thanks goes to http://blog.ganneff.de/blog/2013/03/zsh-config---and-prompt.html
---
 themes/jonathan.zsh-theme | 59 ++++++++++++++++++++++++---------------
 1 file changed, 36 insertions(+), 23 deletions(-)

diff --git a/themes/jonathan.zsh-theme b/themes/jonathan.zsh-theme
index 9f0f30271..bca92970c 100644
--- a/themes/jonathan.zsh-theme
+++ b/themes/jonathan.zsh-theme
@@ -71,17 +71,30 @@ setprompt () {
 
     ###
     # See if we can use extended characters to look nicer.
+    # UTF-8 Fixed
 
-    typeset -A altchar
-    set -A altchar ${(s..)terminfo[acsc]}
-    PR_SET_CHARSET="%{$terminfo[enacs]%}"
-    PR_SHIFT_IN="%{$terminfo[smacs]%}"
-    PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
-    PR_HBAR=${altchar[q]:--}
-    PR_ULCORNER=${altchar[l]:--}
-    PR_LLCORNER=${altchar[m]:--}
-    PR_LRCORNER=${altchar[j]:--}
-    PR_URCORNER=${altchar[k]:--}
+    if [[ $(locale charmap) == "UTF-8" ]]; then
+	PR_SET_CHARSET=""
+	PR_SHIFT_IN=""
+	PR_SHIFT_OUT=""
+	PR_HBAR="─"
+        PR_ULCORNER="┌"
+        PR_LLCORNER="└"
+        PR_LRCORNER="┘"
+        PR_URCORNER="┐"
+    else
+        typeset -A altchar
+        set -A altchar ${(s..)terminfo[acsc]}
+        # Some stuff to help us draw nice lines
+        PR_SET_CHARSET="%{$terminfo[enacs]%}"
+        PR_SHIFT_IN="%{$terminfo[smacs]%}"
+        PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
+        PR_HBAR='$PR_SHIFT_IN${altchar[q]:--}$PR_SHIFT_OUT'
+        PR_ULCORNER='$PR_SHIFT_IN${altchar[l]:--}$PR_SHIFT_OUT'
+        PR_LLCORNER='$PR_SHIFT_IN${altchar[m]:--}$PR_SHIFT_OUT'
+        PR_LRCORNER='$PR_SHIFT_IN${altchar[j]:--}$PR_SHIFT_OUT'
+        PR_URCORNER='$PR_SHIFT_IN${altchar[k]:--}$PR_SHIFT_OUT'
+     fi
 
 
     ###
@@ -113,31 +126,31 @@ setprompt () {
     # Finally, the prompt.
 
     PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
-$PR_CYAN$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\
+$PR_CYAN$PR_ULCORNER$PR_HBAR$PR_GREY(\
 $PR_GREEN%$PR_PWDLEN<...<%~%<<\
-$PR_GREY)`rvm_prompt_info || rbenv_prompt_info`$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\
+$PR_GREY)`rvm_prompt_info || rbenv_prompt_info`$PR_CYAN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR$PR_GREY(\
 $PR_CYAN%(!.%SROOT%s.%n)$PR_GREY@$PR_GREEN%m:%l\
-$PR_GREY)$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_URCORNER$PR_SHIFT_OUT\
+$PR_GREY)$PR_CYAN$PR_HBAR$PR_URCORNER\
 
-$PR_CYAN$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
+$PR_CYAN$PR_LLCORNER$PR_BLUE$PR_HBAR(\
 $PR_YELLOW%D{%H:%M:%S}\
-$PR_LIGHT_BLUE%{$reset_color%}`git_prompt_info``git_prompt_status`$PR_BLUE)$PR_CYAN$PR_SHIFT_IN$PR_HBAR\
-$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
+$PR_LIGHT_BLUE%{$reset_color%}`git_prompt_info``git_prompt_status`$PR_BLUE)$PR_CYAN$PR_HBAR\
+$PR_HBAR\
 >$PR_NO_COLOUR '
 
     # display exitcode on the right when >0
     return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})"
-    RPROMPT=' $return_code$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
-($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR'
+    RPROMPT=' $return_code$PR_CYAN$PR_HBAR$PR_BLUE$PR_HBAR\
+($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_NO_COLOUR'
 
-    PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
-$PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
-$PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
-$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
+    PS2='$PR_CYAN$PR_HBAR\
+$PR_BLUE$PR_HBAR(\
+$PR_LIGHT_GREEN%_$PR_BLUE)$PR_HBAR\
+$PR_CYAN$PR_HBAR$PR_NO_COLOUR '
 }
 
 setprompt
 
 autoload -U add-zsh-hook
 add-zsh-hook precmd  theme_precmd
-add-zsh-hook preexec theme_preexec
\ No newline at end of file
+add-zsh-hook preexec theme_preexec

From 0892bce00b73fdf75d70e554b1fd64ae0fd5e61a Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Tue, 9 Jul 2013 14:41:41 +0200
Subject: [PATCH 186/330] supplemented with options

---
 plugins/pod/_pod | 239 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 197 insertions(+), 42 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 78644745b..bb4f782b3 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -12,19 +12,6 @@
 #       LICENSE:  MIT
 # -----------------------------------------------------------------------------
 
-#------------------
-# TODO:
-#   - Parameters for
-#       - install
-#       - update
-#       - outdated
-#       - search
-#       - list
-#       - push
-#       - podfile-info
-#       - setup
-#------------------
-
 local -a _1st_arguments
 _1st_arguments=(
     'help:Show help for the given command.'
@@ -71,6 +58,92 @@ _list_arguments=(
     'new:Lists pods introduced in the master spec-repo since the last check'
 )
 
+local -a _inherited_options
+_inherited_options=(
+    '(--silent)--silent[Show nothing]' \
+    '(--version)--version[Show the version of CocoaPods]' \
+    '(--no-color)--no-color[Show output without color]' \
+    '(--verbose)--verbose[Show more debugging information]' \
+    '(--help)--help[Show help banner of specified command]'
+)
+
+local -a _install_options
+_install_options=(
+    '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
+    '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
+)
+
+local -a _update_options
+_update_options=(
+    '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
+    '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
+)
+
+local -a _outdated_options
+_outdated_options=(
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
+)
+
+local -a _search_options
+_search_options=(
+    '(--full)--full[Search by name, summary, and description]' \
+    '(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
+    '(--ios)--ios[Restricts the search to Pods supported on iOS]' \
+    '(--osx)--osx[Restricts the search to Pods supported on OS X]'
+)
+
+local -a _list_options
+_list_options=(
+    '(--update)--update[Run `pod repo update` before listing]'
+)
+
+local -a _podfile_info_options
+_podfile_info_options=(
+    '(--all)--all[Show information about all Pods with dependencies that are used in a project]' \
+    '(--md)--md[Output information in Markdown format]'
+)
+
+local -a _push_options
+_push_options=(
+    '(--allow-warnings)--allow-warnings[Allows pushing even if there are warnings]' \
+    '(--local-only)--local-only[Does not perform the step of pushing REPO to its remote]'
+)
+
+local -a _repo_lint_options
+_repo_lint_options=(
+    '(--only-errors)--only-errors[Lint presents only the errors]'
+)
+
+local -a _setup_options
+_setup_options=(
+    '(--push)--push[Use this option to enable push access once granted]'
+)
+
+local -a _spec_lint_options
+_spec_lint_options=(
+    '(--quick)--quick[Lint skips checks that would require to download and build the spec]' \
+    '(--only-errors)--only-errors[Lint validates even if warnings are present]' \
+    '(--no-clean)--no-clean[Lint leaves the build directory intact for inspection]'
+)
+
+local -a _spec_cat_options
+_spec_cat_options=(
+    '(--show-all)--show-all[Pick from all versions of the given podspec]'
+)
+
+local -a _spec_which_options
+_spec_which_options=(
+    '(--show-all)--show-all[Print all versions of the given podspec]'
+)
+
+local -a _spec_edit_options
+_spec_edit_options=(
+    '(--show-all)--show-all[Pick which spec to edit from all available versions of the given podspec]'
+)
+
+
 __first_command_list ()
 {
     local expl
@@ -82,7 +155,7 @@ __first_command_list ()
 }
 
 __repo_list() {
-    _wanted application expl 'command' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
+    _wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
 }
 
 __pod-repo() {
@@ -93,19 +166,32 @@ __pod-repo() {
         ':command:->command' \
         '*::options:->options'
 
-   case $state in
-       (command)
-           _describe -t commands "gem subcommand" _repo_arguments
-           return
-       ;;
+    case $state in
+        (command)
+            _describe -t commands "pod repo" _repo_arguments
+            return
+        ;;
 
-       (options)
-           case $line[1] in
-               (update|lint)
-                   _arguments ':feature:__repo_list'
-               ;;
-           esac
-       ;;
+        (options)
+            case $line[1] in
+                (lint)
+                    _arguments \
+                        $_inherited_options \
+                        $_repo_lint_options \
+                        ':feature:__repo_list'
+                ;;
+
+                (update)
+                    _arguments \
+                        $_inherited_options \
+                        ':feature:__repo_list'
+                ;;
+
+                (add)
+                    _arguments \
+                        $_inherited_options
+            esac
+        ;;
     esac
 }
 
@@ -119,12 +205,41 @@ __pod-spec() {
 
    case $state in
         (command)
-            _describe -t commands "gem subcommand" _spec_arguments
+            _describe -t commands "pod spec" _spec_arguments
             return
         ;;
 
         (options)
-            #todo
+            case $line[1] in
+                (create)
+                    _arguments \
+                        $_inherited_options
+                ;;
+
+                (lint)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_lint_options
+                ;;
+
+                (cat)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_cat_options
+                ;;
+
+                (which)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_which_options
+                ;;
+
+                (edit)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_edit_options
+                ;;
+            esac
             return
         ;;
     esac
@@ -140,12 +255,13 @@ __pod-ipc() {
 
    case $state in
         (command)
-            _describe -t commands "gem subcommand" _ipc_arguments
+            _describe -t commands "pod ipc" _ipc_arguments
             return
         ;;
 
         (options)
-            #todo
+            _arguments -C \
+                $_inherited_options
             return
         ;;
     esac
@@ -156,48 +272,53 @@ __pod-list() {
     typeset -A opt_args
 
     _arguments -C \
+        $_inherited_options \
+        $_list_options \
         ':command:->command' \
         '*::options:->options'
 
    case $state in
         (command)
-            _describe -t commands "gem subcommand" _list_arguments
+            _describe -t commands "pod list" _list_arguments
             return
         ;;
 
         (options)
-            #todo
+            _arguments -C \
+                $_inherited_options \
+                $_list_options
             return
         ;;
     esac
 }
 
-
-
-local expl
-#local -a boxes installed_boxes
-
 local curcontext="$curcontext" state line
 typeset -A opt_args
 
 _arguments -C \
+    $_inherited_options \
     ':command:->command' \
     '*::options:->options'
 
 case $state in
   (command)
-      _describe -t commands "gem subcommand" _1st_arguments
+      _describe -t commands "pod" _1st_arguments
       return
   ;;
 
   (options)
     case $line[1] in
         (help)
-            _arguments ':feature:__first_command_list'
+            _arguments \
+                $_inherited_options \
+                ':help:__first_command_list'
         ;;
 
         (push)
-            _arguments ':feature:__repo_list'
+            _arguments \
+                $_inherited_options \
+                $_push_options \
+                ':repo:__repo_list'
         ;;
 
         (repo)
@@ -216,8 +337,42 @@ case $state in
             __pod-list
         ;;
 
-        (install|outdated|podfile-info|search|setup|update)
-            #_arguments ':feature:__repo_list'
+        (install)
+            _arguments \
+                $_inherited_options \
+                $_install_options
+        ;;
+
+        (update)
+            _arguments \
+                $_inherited_options \
+                $_update_options
+        ;;
+
+        (outdated)
+            _arguments \
+                $_inherited_options \
+                $_outdated_options
+        ;;
+
+        (search)
+            _arguments \
+                $_inherited_options \
+                $_search_options
+        ;;
+
+        (podfile-info)
+            _arguments \
+                $_inherited_options \
+                $_podfile_info_options
+        ;;
+
+        (setup)
+            _arguments \
+                $_inherited_options \
+                $_setup_options
+        ;;
+
     esac
   ;;
 esac

From 45314ee5b7ad2d7daafe940b801ddacd151d7017 Mon Sep 17 00:00:00 2001
From: mekanics 
Date: Wed, 10 Jul 2013 00:14:08 +0200
Subject: [PATCH 187/330] correct filename in the comments

---
 plugins/pod/_pod | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index bb4f782b3..c1eb86b5e 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -2,7 +2,7 @@
 #autoload
 
 # -----------------------------------------------------------------------------
-#          FILE:  pod.plugin.zsh
+#          FILE:  _pod
 #   DESCRIPTION:  Cocoapods autocomplete plugin for Oh-My-Zsh
 #                 http://cocoapods.org
 #        AUTHOR:  Alexandre Joly (alexandre.joly@mekanics.ch)

From 05d8fdf3d54af3243e5891d13969a766bd9570a1 Mon Sep 17 00:00:00 2001
From: Brent Theisen 
Date: Tue, 9 Jul 2013 23:15:43 -0500
Subject: [PATCH 188/330] Copy and paste of two functions from Ubuntu 13.04's
 version of /usr/share/zsh/functions/Completion/Unix/_git that were referenced
 in 46f0d8d. Fixes #1952.

---
 plugins/git/_git-branch | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/plugins/git/_git-branch b/plugins/git/_git-branch
index 86d03bc30..6b9c1a483 100644
--- a/plugins/git/_git-branch
+++ b/plugins/git/_git-branch
@@ -60,3 +60,24 @@ _git-branch ()
     "($l $c $m -d)-D[delete a branch]" \
     $dependent_deletion_args
 }
+
+(( $+functions[__git_ignore_line] )) ||
+__git_ignore_line () {
+  declare -a ignored
+  ignored=()
+  ((CURRENT > 1)) &&
+    ignored+=(${line[1,CURRENT-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
+  ((CURRENT < $#line)) &&
+    ignored+=(${line[CURRENT+1,-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
+  $* -F ignored
+}
+
+(( $+functions[__git_ignore_line_inside_arguments] )) ||
+__git_ignore_line_inside_arguments () {
+  declare -a compadd_opts
+
+  zparseopts -D -E -a compadd_opts V: J: 1 2 n f X: M: P: S: r: R: q F:
+
+  __git_ignore_line $* $compadd_opts
+}
+

From 3d204883a69355b95248b72e8c2078718fb07802 Mon Sep 17 00:00:00 2001
From: Sukant Hajra 
Date: Thu, 11 Jul 2013 01:36:50 -0500
Subject: [PATCH 189/330] fix gpg-agent "running already" check

The GPG_ENV file is sourced before doing the gpg-connect-agent check,
but this file (unlike the SSH_ENV file) doesn't export GPG_AGENT_INFO,
so the check always fails.  This results in new gpg-agents continuously
being spawned.

All this commit does is put in the single export to fix the problem.
---
 plugins/gpg-agent/gpg-agent.plugin.zsh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index 4071334cb..b6992479d 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -19,6 +19,7 @@ if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
     # source settings of old agent, if applicable
     if [ -f "${GPG_ENV}" ]; then
         . ${GPG_ENV} > /dev/null
+        export GPG_AGENT_INFO
     fi
 
     # check again if another agent is running using the newly sourced settings

From 57a2327ddff8ed88492dd32cc57ccd5fd5c6e9ac Mon Sep 17 00:00:00 2001
From: Tehmasp Chaudhri 
Date: Fri, 12 Jul 2013 12:03:44 -0600
Subject: [PATCH 190/330] Added a 'git diff --cached' alias -> 'gdc'

---
 plugins/git/git.plugin.zsh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 2ecc74eb6..3522703ef 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -5,6 +5,8 @@ alias gst='git status'
 compdef _git gst=git-status
 alias gd='git diff'
 compdef _git gd=git-diff
+alias gdc='git diff --cached'
+compdef _git gdc=git-diff
 alias gl='git pull'
 compdef _git gl=git-pull
 alias gup='git pull --rebase'

From 849c80b02ddb52a3f28edaca875e154a9daacd01 Mon Sep 17 00:00:00 2001
From: fff 
Date: Mon, 15 Jul 2013 09:25:18 +0800
Subject: [PATCH 191/330] fixed typo in tmux plugin

---
 plugins/tmux/tmux.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 3ecc2ac69..96fab80a6 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -38,7 +38,7 @@ if which tmux &> /dev/null
 	fi
 
 	# Set the correct local config file to use.
-    if [[ "$ZSH_TMUX_ITERM2" == "false" ]] && (( [[ -f $HOME/.tmux.conf ]] || -h $HOME/.tmux.conf ]] ))
+    if [[ "$ZSH_TMUX_ITERM2" == "false" ]] && [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]]
 	then
 		#use this when they have a ~/.tmux.conf
 		export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf"

From ba7fe6df62236dfa03a360a8707ebd0c0b1a645a Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Mon, 15 Jul 2013 14:37:31 +0200
Subject: [PATCH 192/330] show file liste on 'pod push [REPO]' and tab, 'pod
 spec lint' and 'pod podfile-info'

---
 plugins/pod/_pod | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index c1eb86b5e..563fa5e66 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -102,13 +102,15 @@ _list_options=(
 local -a _podfile_info_options
 _podfile_info_options=(
     '(--all)--all[Show information about all Pods with dependencies that are used in a project]' \
-    '(--md)--md[Output information in Markdown format]'
+    '(--md)--md[Output information in Markdown format]' \
+    '*:script or directory:_files'
 )
 
 local -a _push_options
 _push_options=(
     '(--allow-warnings)--allow-warnings[Allows pushing even if there are warnings]' \
-    '(--local-only)--local-only[Does not perform the step of pushing REPO to its remote]'
+    '(--local-only)--local-only[Does not perform the step of pushing REPO to its remote]' \
+    '*:script or directory:_files'
 )
 
 local -a _repo_lint_options
@@ -125,7 +127,8 @@ local -a _spec_lint_options
 _spec_lint_options=(
     '(--quick)--quick[Lint skips checks that would require to download and build the spec]' \
     '(--only-errors)--only-errors[Lint validates even if warnings are present]' \
-    '(--no-clean)--no-clean[Lint leaves the build directory intact for inspection]'
+    '(--no-clean)--no-clean[Lint leaves the build directory intact for inspection]' \
+    '*:script or directory:_files'
 )
 
 local -a _spec_cat_options

From cf8d76094c2e0032ebe5cc1d579e393521ed3b86 Mon Sep 17 00:00:00 2001
From: Sukant Hajra 
Date: Mon, 15 Jul 2013 08:51:08 -0500
Subject: [PATCH 193/330] PLUGIN: gpg-agent: export SSH_* environment variables
 too

If using the gpg-agent with --enable-ssh-support, the SSH_AUTH_SOCK and
SSH_AGENT_PID environment variables need to be exported once sourced
from GPG_ENV.  Otherwise, we get no benefit from the persisting these
values to GPG_ENV; subsequent openned terminals don't see the existent
gpg-agent as a process for an SSH daemon.
---
 plugins/gpg-agent/gpg-agent.plugin.zsh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index b6992479d..3e6a34f42 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -20,6 +20,8 @@ if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
     if [ -f "${GPG_ENV}" ]; then
         . ${GPG_ENV} > /dev/null
         export GPG_AGENT_INFO
+        export SSH_AUTH_SOCK
+        export SSH_AGENT_PID
     fi
 
     # check again if another agent is running using the newly sourced settings

From 6041e4938cc559b908d83b5664166cc1fd02f31e Mon Sep 17 00:00:00 2001
From: yleo77 
Date: Tue, 16 Jul 2013 16:54:54 +0800
Subject: [PATCH 194/330] set default value `--max-count=10`

---
 plugins/git/git.plugin.zsh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 3bdf0c30f..9087a14ea 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -52,9 +52,9 @@ compdef gcount=git
 alias gcl='git config --list'
 alias gcp='git cherry-pick'
 compdef _git gcp=git-cherry-pick
-alias glg='git log --stat --max-count=5'
+alias glg='git log --stat --max-count=10'
 compdef _git glg=git-log
-alias glgg='git log --graph --max-count=5'
+alias glgg='git log --graph --max-count=10'
 compdef _git glgg=git-log
 alias glgga='git log --graph --decorate --all'
 compdef _git glgga=git-log

From 5c529b5daac6e22cb8a267dcd7796c8400c63679 Mon Sep 17 00:00:00 2001
From: Armin Widegreen 
Date: Tue, 16 Jul 2013 17:10:47 +0200
Subject: [PATCH 195/330] Fix ssh-agent plugin identities comment for using
 multiple identities.

---
 plugins/ssh-agent/ssh-agent.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index 7468749f8..3b0042a7d 100644
--- a/plugins/ssh-agent/ssh-agent.plugin.zsh
+++ b/plugins/ssh-agent/ssh-agent.plugin.zsh
@@ -9,7 +9,7 @@
 #   To load multiple identities use the identities style, For
 #   example:
 #
-#     zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github
+#     zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
 #
 #   To set the maximum lifetime of the identities, use the
 #   lifetime style. The lifetime may be specified in seconds

From 00ccee1f33c90c8900e8c2efe4dca9bf5db040f9 Mon Sep 17 00:00:00 2001
From: Trae Robrock 
Date: Tue, 16 Jul 2013 16:57:08 -0700
Subject: [PATCH 196/330] Add knife_ssh command to make connecting to servers
 managed with chef easier

---
 plugins/knife_ssh/knife_ssh.plugin.zsh | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 plugins/knife_ssh/knife_ssh.plugin.zsh

diff --git a/plugins/knife_ssh/knife_ssh.plugin.zsh b/plugins/knife_ssh/knife_ssh.plugin.zsh
new file mode 100644
index 000000000..ea3361c49
--- /dev/null
+++ b/plugins/knife_ssh/knife_ssh.plugin.zsh
@@ -0,0 +1,18 @@
+function knife_ssh() {
+  grep -q $1 ~/.knife_comp~ || rm -f ~/.knife_comp~;
+  ssh $(knife node show $1 | awk '/IP:/{print $2}')
+}
+
+_knife_ssh() {
+  if hash knife 2>/dev/null; then
+    if [[ ! -f ~/.knife_comp~ ]]; then
+      echo "\nGenerating ~/.knife_comp~..." >/dev/stderr
+      knife node list > ~/.knife_comp~
+    fi
+    compadd `cat ~/.knife_comp~`
+  else
+    echo "Could not find knife" > /dev/stderr;
+  fi
+}
+
+compdef _knife_ssh knife_ssh

From 9a9e6e929964cbb25c5ce656a995e31ab9636762 Mon Sep 17 00:00:00 2001
From: Trae Robrock 
Date: Tue, 16 Jul 2013 17:01:58 -0700
Subject: [PATCH 197/330] No cat, and hide errors for missing cache file

---
 plugins/knife_ssh/knife_ssh.plugin.zsh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/knife_ssh/knife_ssh.plugin.zsh b/plugins/knife_ssh/knife_ssh.plugin.zsh
index ea3361c49..7fdd42a1e 100644
--- a/plugins/knife_ssh/knife_ssh.plugin.zsh
+++ b/plugins/knife_ssh/knife_ssh.plugin.zsh
@@ -1,5 +1,5 @@
 function knife_ssh() {
-  grep -q $1 ~/.knife_comp~ || rm -f ~/.knife_comp~;
+  grep -q $1 ~/.knife_comp~ 2> /dev/null || rm -f ~/.knife_comp~;
   ssh $(knife node show $1 | awk '/IP:/{print $2}')
 }
 
@@ -9,7 +9,7 @@ _knife_ssh() {
       echo "\nGenerating ~/.knife_comp~..." >/dev/stderr
       knife node list > ~/.knife_comp~
     fi
-    compadd `cat ~/.knife_comp~`
+    compadd $(<~/.knife_comp~)
   else
     echo "Could not find knife" > /dev/stderr;
   fi

From cbbdc0dfeb579474e320a6acf46077bac8c78c28 Mon Sep 17 00:00:00 2001
From: Andrey Janzen 
Date: Sat, 20 Jul 2013 10:12:06 +0700
Subject: [PATCH 198/330] Added 'reinstall' command to brew completion

---
 plugins/brew/_brew | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/brew/_brew b/plugins/brew/_brew
index e43ba2900..3ead022dc 100644
--- a/plugins/brew/_brew
+++ b/plugins/brew/_brew
@@ -28,6 +28,7 @@ _1st_arguments=(
   'missing:check all installed formuale for missing dependencies.'
   'outdated:list formulas for which a newer version is available'
   'prune:remove dead links'
+  'reinstall:reinstall a formula'
   '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)'

From 4b8e10958467899765e0e4fedb80d31f8e0adb8d Mon Sep 17 00:00:00 2001
From: John Warwick 
Date: Fri, 19 Jul 2013 23:19:11 -0400
Subject: [PATCH 199/330] Added autocompletion support for Elixir mix command

---
 plugins/mix/_mix | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 plugins/mix/_mix

diff --git a/plugins/mix/_mix b/plugins/mix/_mix
new file mode 100644
index 000000000..602f5ffa0
--- /dev/null
+++ b/plugins/mix/_mix
@@ -0,0 +1,63 @@
+#compdef mix 
+#autoload
+
+# Elixir mix zsh completion
+
+local -a _1st_arguments
+_1st_arguments=(
+    'archive:Archive this project into a .ez file'
+    'clean:Clean generated application files'
+    'compile:Compile source files'
+    'deps:List dependencies and their status'
+    "deps.clean:Remove dependencies' files"
+    'deps.compile:Compile dependencies'
+    'deps.get:Get all out of date dependencies'
+    'deps.unlock:Unlock the given dependencies'
+    'deps.update:Update dependencies'
+    'do:Executes the commands separated by comma'
+    'escriptize:Generates an escript for the project'
+    'help:Print help information for tasks'
+    'local:List local tasks'
+    'local.install:Install a task or an archive locally'
+    'local.rebar:Install rebar locally'
+    'local.uninstall:Uninstall local tasks or archives'
+    'new:Creates a new Elixir project'
+    'run:Run the given file or expression'
+    "test:Run a project's tests"
+    '--help:Describe available tasks'
+    '--version:Prints the Elixir version information'
+)
+
+__task_list ()
+{
+    local expl
+    declare -a tasks
+
+    tasks=(archive clean compile deps deps.clean deps.compile deps.get deps.unlock deps.update do escriptize help local local.install local.rebar local.uninstall new run test)
+
+    _wanted tasks expl 'help' compadd $tasks
+}
+
+local expl
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+    ':command:->command' \
+    '*::options:->options'
+
+case $state in
+  (command)
+      _describe -t commands "mix subcommand" _1st_arguments
+      return
+  ;;
+
+  (options)
+    case $line[1] in
+      (help)
+         _arguments ':feature:__task_list' 
+    esac
+  ;;
+esac
+

From d0e312fc13d8f2a1a6bb9a02ca4acf1bcdc0bbfe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Macias?= 
Date: Mon, 22 Jul 2013 15:51:16 +0200
Subject: [PATCH 200/330] Fix symfony command completion 'permission denied'

---
 plugins/symfony/symfony.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/symfony/symfony.plugin.zsh b/plugins/symfony/symfony.plugin.zsh
index 9de767548..f070e9e47 100644
--- a/plugins/symfony/symfony.plugin.zsh
+++ b/plugins/symfony/symfony.plugin.zsh
@@ -1,7 +1,7 @@
 # symfony basic command completion
 
 _symfony_get_command_list () {
-    ./symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^  :[a-z]+/ { print cat $1; }'
+    php symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^  :[a-z]+/ { print cat $1; }'
 }
 
 _symfony () {

From b456541cc392e79ce7b8b30f0cba98f2796ed9a4 Mon Sep 17 00:00:00 2001
From: Andrey Janzen 
Date: Tue, 23 Jul 2013 15:52:44 +0700
Subject: [PATCH 201/330] In capistrano completion show also tasks without
 description

---
 plugins/capistrano/_capistrano | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/capistrano/_capistrano b/plugins/capistrano/_capistrano
index 1002dad96..3cadf3d54 100644
--- a/plugins/capistrano/_capistrano
+++ b/plugins/capistrano/_capistrano
@@ -4,7 +4,7 @@
 if [[ -f config/deploy.rb || -f Capfile ]]; then
   if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then
     echo "\nGenerating .cap_tasks~..." > /dev/stderr
-    cap --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
+    cap -v --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
   fi
   compadd `cat .cap_tasks~`
 fi

From 107d196f94ee800907abcb3c2de8df1f73b2b31e Mon Sep 17 00:00:00 2001
From: Kenneth Geerts 
Date: Tue, 23 Jul 2013 15:51:35 +0200
Subject: [PATCH 202/330] Updated gem plugin zsh completion (gem 2.0.3).

---
 plugins/gem/_gem | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/plugins/gem/_gem b/plugins/gem/_gem
index 83cba40d1..975cec602 100644
--- a/plugins/gem/_gem
+++ b/plugins/gem/_gem
@@ -9,8 +9,9 @@ _gem_installed() {
 
 local -a _1st_arguments
 _1st_arguments=(
+  'build:Build a gem from a gemspec'
   'cert:Manage RubyGems certificates and signing settings'
-  'check:Check installed gems'
+  'check:Check a gem repository for added or missing files'
   'cleanup:Clean up old versions of installed gems in the local repository'
   'contents:Display the contents of the installed gems'
   'dependency:Show the dependencies of an installed gem'
@@ -21,7 +22,7 @@ _1st_arguments=(
   'install:Install a gem into the local repository'
   'list:Display gems whose name starts with STRING'
   'lock:Generate a lockdown list of gems'
-  'mirror:Mirror a gem repository'
+  'mirror:Mirror all gem files (requires rubygems-mirror)'
   'outdated:Display all gems that need updates'
   'owner:Manage gem owners on RubyGems.org.'
   'pristine:Restores installed gems to pristine condition from files located in the gem cache'
@@ -35,8 +36,9 @@ _1st_arguments=(
   'stale:List gems along with access times'
   'uninstall:Uninstall gems from the local repository'
   'unpack:Unpack an installed gem to the current directory'
-  'update:Update the named gems (or all installed gems) in the local repository'
+  'update:Update installed gems to the latest version'
   'which:Find the location of a library file you can require'
+  'yank:Remove a specific gem version release from RubyGems.org'
 )
 
 local expl

From c8dbadd3da204bbe3c15c870818aeb34800e26a2 Mon Sep 17 00:00:00 2001
From: Andrey Janzen 
Date: Tue, 23 Jul 2013 21:32:55 +0700
Subject: [PATCH 203/330] Added completion for second argument for 'brew
 reinstall'

---
 plugins/brew/_brew | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/brew/_brew b/plugins/brew/_brew
index 3ead022dc..bf0a286c1 100644
--- a/plugins/brew/_brew
+++ b/plugins/brew/_brew
@@ -76,7 +76,7 @@ case "$words[1]" in
   install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions)
     _brew_all_formulae
     _wanted formulae expl 'all formulae' compadd -a formulae ;;
-  remove|rm|uninstall|unlink|cleanup|link|ln)
+  reinstall|remove|rm|uninstall|unlink|cleanup|link|ln)
     _brew_installed_formulae
     _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
 esac

From 25913cf14402dbf71a95c56cae69008bcec71b69 Mon Sep 17 00:00:00 2001
From: stibinator 
Date: Fri, 26 Jul 2013 11:49:40 +1000
Subject: [PATCH 204/330] added duckduckgo to web-search

---
 plugins/web-search/web-search.plugin.zsh | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index 6b6de2b15..ebd133a0a 100644
--- a/plugins/web-search/web-search.plugin.zsh
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -11,7 +11,7 @@ function web_search() {
   fi
 
   # check whether the search engine is supported
-  if [[ ! $1 =~ '(google|bing|yahoo)' ]];
+  if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]];
   then
     echo "Search engine $1 not supported."
     return 1
@@ -24,8 +24,12 @@ function web_search() {
     $open_cmd "$url"
     return
   fi
-
-  url="${url}/search?q="
+  if [[ $1 == 'duckduckgo' ]]; then
+  #slightly different search syntax for DDG
+    url="${url}/?q="
+  else
+    url="${url}/search?q="
+  fi
   shift   # shift out $1
 
   while [[ $# -gt 0 ]]; do
@@ -34,10 +38,19 @@ function web_search() {
   done
 
   url="${url%?}" # remove the last '+'
-
+  
   $open_cmd "$url"
 }
 
+
 alias bing='web_search bing'
 alias google='web_search google'
 alias yahoo='web_search yahoo'
+alias duck='web_search duckduckgo'
+#add your own !bang searches here
+alias wiki='web_search duckduckgo \!w'
+alias news='web_search duckduckgo \!n'
+alias youtube='web_search duckduckgo \!yt'
+alias map='web_search duckduckgo \!m'
+alias image='web_search duckduckgo \!i'
+alias ducky='web_search duckduckgo \!'
\ No newline at end of file

From 0456664463374f4872200ffc057c741433eba4f6 Mon Sep 17 00:00:00 2001
From: stibinator 
Date: Fri, 26 Jul 2013 11:53:53 +1000
Subject: [PATCH 205/330] added duckduckgo to web-search

---
 plugins/web-search/web-search.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index ebd133a0a..d06585ae5 100644
--- a/plugins/web-search/web-search.plugin.zsh
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -53,4 +53,4 @@ alias news='web_search duckduckgo \!n'
 alias youtube='web_search duckduckgo \!yt'
 alias map='web_search duckduckgo \!m'
 alias image='web_search duckduckgo \!i'
-alias ducky='web_search duckduckgo \!'
\ No newline at end of file
+alias ducky='web_search duckduckgo \!'

From 5bad3f890de691194b77cfc33846e2102e21ea93 Mon Sep 17 00:00:00 2001
From: Steven De Coeyer 
Date: Mon, 5 Aug 2013 21:15:28 +0200
Subject: [PATCH 206/330] Updates Zhann theme

---
 themes/zhann.zsh-theme | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/themes/zhann.zsh-theme b/themes/zhann.zsh-theme
index 5c49fe79b..5c0854730 100644
--- a/themes/zhann.zsh-theme
+++ b/themes/zhann.zsh-theme
@@ -1,15 +1,25 @@
-PROMPT='%{$fg_bold[green]%}%p %{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
+autoload -U colors && colors
 
-if [ -e ~/.rvm/bin/rvm-prompt ]; then
-  RPROMPT='%{$reset_color%} %{$fg[red]%}$(~/.rvm/bin/rvm-prompt i v g) %{$reset_color%}'
-else
-  if which rbenv &> /dev/null; then
-    RPROMPT='%{$reset_color%} %{$fg[red]%}$(rbenv version | sed -e "s/ (set.*$//") %{$reset_color%}'
-  fi
-fi
+autoload -Uz vcs_info
 
+zstyle ':vcs_info:*' stagedstr '%F{green}●'
+zstyle ':vcs_info:*' unstagedstr '%F{yellow}●'
+zstyle ':vcs_info:*' check-for-changes true
+zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r'
+zstyle ':vcs_info:*' enable git svn
+theme_precmd () {
+    if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
+        zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'
+    } else {
+        zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
+    }
+
+    vcs_info
+}
+
+setopt prompt_subst
+PROMPT='%B%F{blue}%c%B%F{green}${vcs_info_msg_0_}%B%F{magenta} %{$reset_color%}% '
+
+autoload -U add-zsh-hook
+add-zsh-hook precmd  theme_precmd
 
-ZSH_THEME_GIT_PROMPT_PREFIX=" (%{$fg[red]%}"
-ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
-ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}"
-ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

From 619ecb5f4fcec9ceb3769f4697fcbb2cbe3f2a7a Mon Sep 17 00:00:00 2001
From: Ahmed Azaan 
Date: Wed, 7 Aug 2013 21:19:21 +0530
Subject: [PATCH 207/330] add docker autocomplete plugin

---
 plugins/docker/README.md |   0
 plugins/docker/_docker   | 290 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 290 insertions(+)
 create mode 100644 plugins/docker/README.md
 create mode 100644 plugins/docker/_docker

diff --git a/plugins/docker/README.md b/plugins/docker/README.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/plugins/docker/_docker b/plugins/docker/_docker
new file mode 100644
index 000000000..e8d2885c9
--- /dev/null
+++ b/plugins/docker/_docker
@@ -0,0 +1,290 @@
+#compdef docker
+
+# Docker autocompletion for oh-my-zsh
+# Requires: Docker installed
+# Author : Azaan (@aeonazaan)
+
+
+# ----- Helper functions
+# Output a selectable list of all running docker containers
+__docker_containers() {
+    declare -a cont_cmd
+    cont_cmd=($(docker ps | awk 'NR>1{print $1":[CON("$1")"$2"("$3")]"}'))
+    _describe 'containers' cont_cmd
+}
+
+# output a selectable list of all docker images
+__docker_images() {
+    declare -a img_cmd
+    img_cmd=($(docker images | awk 'NR>1{print $1}'))
+    _describe 'images' img_cmd
+}
+
+# ----- Commands
+# Seperate function for each command, makes extension easier later
+# ---------------------------
+__attach() {
+    __docker_containers
+}
+
+__build() {
+    _arguments \
+        '-q=false[Suppress verbose build output]' \
+        '-t="[fuck to be applied to the resulting image in case of success]' \
+        ' *:files:_files'
+}
+
+__commit() {
+    _arguments \
+        '-author="[Author]' \
+        '-m="[Commit message]' \
+        '-run="[Config automatically applied when the image is run.\n]'
+    __docker_containers
+}
+
+__diff() {
+    __docker_containers
+}
+
+__export() {
+   __docker_containers
+}
+
+
+__history() {
+    __docker_images
+}
+
+__images() {
+    _arguments \
+        '-a[show all images]' \
+        '-notrunc[dont truncate output]' \
+        '-q[only show numeric IDs]' \
+        '-viz[output graph in graphviz format'
+    __docker_images
+}
+
+__import() {
+    _arguments '*:files:_files'
+}
+
+__info() {
+    # no arguments
+}
+
+__insert() {
+    __docker_images
+    _arguments '*:files:_files'
+}
+
+__inspect() {
+    __docker_images
+    __docker_containers
+}
+
+__kill() {
+    __docker_containers
+}
+
+__login() {
+    _arguments \
+        '-e="[email]' \
+        '-p="[password]' \
+        '-u="[username]' \
+}
+
+__logs() {
+    __docker_containers
+}
+
+__port() {
+    __docker_containers
+}
+
+__top() {
+    __docker_containers
+}
+
+__ps() {
+    _arguments \
+        '-a[Show all containers. Only running containers are shown by default.]' \
+        '-beforeId="[Show only container created before Id, include non-running ones.]' \
+        '-l[Show only the latest created container, include non-running ones.]' \
+        '-n=[Show n last created containers, include non-running ones.]' \
+        '-notrurrrrnc[Dont truncate output]' \
+        '-q[Only display numeric IDs]' \
+        '-s[Display sizes]' \
+        '-sinceId="[Show only containers created since Id, include non-running ones.]'
+}
+
+__pull() {
+    _arguments '-t="[Download tagged image in repository]'
+}
+
+__push() {
+
+}
+
+__restart() {
+    _arguments '-t=[number of seconds to try to stop before killing]'
+    __docker_containers
+}
+
+__rm() {
+    _arguments '-v[Remove the volumes associated to the container]'
+    __docker_containers
+}
+
+__rmi() {
+    __docker_images
+}
+
+__run() {
+    _arguments \
+        '-a=[Attach to stdin, stdout or stderr.]' \
+        '-c=[CPU shares (relative weight)]' \
+        '-d[Detached mode: leave the container running in the background]' \
+        '-dns=[Set custom dns servers]' \
+        '-e=[Set environment variables]' \
+        '-entrypoint="[Overwrite the default entrypoint of the image]' \
+        '-h="[Container host name]' \
+        '-i[Keep stdin open even if not attached]' \
+        '-m=[Memory limit (in bytes)]' \
+        '-p=[Expose a containers port to the host (use docker port to see the actual mapping)]' \
+        '-t[Allocate a pseudo-tty]' \
+        '-u="[Username or UID]' \
+        '-v=[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
+        '-volumes-from="[Mount volumes from the specified container]'
+    __docker_images
+}
+
+__search() {
+    arguments '-notrunc[Dont truncate output]'
+}
+
+__start() {
+    __docker_container
+}
+
+__stop() {
+    __arguments '-t=[number of seconds to try to stop before killing]'
+    __docker_containers
+}
+
+__tag() {
+    __arguments '-f[Force]'
+    __docker_images
+}
+
+__version() {
+
+}
+
+__wait() {
+    __docker_container
+}
+
+# end commands ---------
+# ----------------------
+
+local -a _1st_arguments
+_1st_arguments=(
+    "attach":"Attach to a running container"
+    "build":"Build a container from a Dockerfile"
+    "commit":"Create a new image from a container's changes"
+    "diff":"Inspect changes on a container's filesystem"
+    "export":"Stream the contents of a container as a tar archive"
+    "history":"Show the history of an image"
+    "images":"List images"
+    "import":"Create a new filesystem image from the contents of a tarball"
+    "info":"Display system-wide information"
+    "insert":"Insert a file in an image"
+    "inspect":"Return low-level information on a container"
+    "kill":"Kill a running container"
+    "login":"Register or Login to the docker registry server"
+    "logs":"Fetch the logs of a container"
+    "port":"Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"
+    "top":"Lookup the running processes of a container"
+    "ps":"List containers"
+    "pull":"Pull an image or a repository from the docker registry server"
+    "push":"Push an image or a repository to the docker registry server"
+    "restart":"Restart a running container"
+    "rm":"Remove one or more containers"
+    "rmi":"Remove one or more images"
+    "run":"Run a command in a new container"
+    "search":"Search for an image in the docker index"
+    "start":"Start a stopped container"
+    "stop":"Stop a running container"
+    "tag":"Tag an image into a repository"
+    "version":"Show the docker version information"
+    "wait":"Block until a container stops, then print its exit code"
+)
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+    _describe -t commands "docker command" _1st_arguments
+    return
+fi
+
+local -a _command_args
+case "$words[1]" in
+    attach)
+       __docker_containers ;;
+    build)
+        __build ;;
+    commit)
+        __commit ;;
+    diff)
+        __diff ;;
+    export)
+        __export ;;
+    history)
+        __history ;;
+    images)
+        __images ;;
+    import)
+        __import ;;
+    info)
+        __info ;;
+    insert)
+        __insert ;;
+    inspect)
+        __inspect ;;
+    kill)
+        __kill ;;
+    login)
+        __login ;;
+    logs)
+        __logs ;;
+    port)
+        __port ;;
+    top)
+        __top ;;
+    ps)
+        __ps ;;
+    pull)
+        __pull ;;
+    push)
+        __push ;;
+    restart)
+        __restart ;;
+    rm)
+        __rm ;;
+    rmi)
+        __rmi ;;
+    run)
+        __run ;;
+    search)
+        __search ;;
+    start)
+        __start ;;
+    stop)
+        __stop ;;
+    tag)
+        __tag ;;
+    version)
+        __version ;;
+    wait)
+        __wait ;;
+esac

From 0a62f6636d6fc749b13a45b3d032f3616f2c828d Mon Sep 17 00:00:00 2001
From: Ahmed Aeon Axan 
Date: Wed, 7 Aug 2013 21:29:53 +0530
Subject: [PATCH 208/330] Update README.md

---
 plugins/docker/README.md | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/plugins/docker/README.md b/plugins/docker/README.md
index e69de29bb..231a6dcf5 100644
--- a/plugins/docker/README.md
+++ b/plugins/docker/README.md
@@ -0,0 +1,19 @@
+## Docker autocomplete plugin
+
+- Adds autocomplete options for all docker commands.
+- Will also show containerIDs and Image names where applicable
+
+####Shows help for all commands
+![General Help](http://i.imgur.com/tUBO9jh.png "Help for all commands")
+
+
+####Shows your downloaded images where applicable
+![Images](http://i.imgur.com/R8ZsWO1.png "Images")
+
+
+####Shows your running containers where applicable
+![Containers](http://i.imgur.com/WQtbheg.png "Containers")
+
+
+
+Maintainer : Ahmed Azaan ([@aeonazaan](https://twitter.com/aeonazaan))

From 2d1a07a3f72353a59ed9ecda88969093406699f7 Mon Sep 17 00:00:00 2001
From: Ahmed Azaan 
Date: Wed, 7 Aug 2013 22:11:49 +0530
Subject: [PATCH 209/330] fixed minor errors

---
 plugins/docker/_docker | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/plugins/docker/_docker b/plugins/docker/_docker
index e8d2885c9..f13f876cf 100644
--- a/plugins/docker/_docker
+++ b/plugins/docker/_docker
@@ -31,7 +31,7 @@ __build() {
     _arguments \
         '-q=false[Suppress verbose build output]' \
         '-t="[fuck to be applied to the resulting image in case of success]' \
-        ' *:files:_files'
+        '*:files:_files'
 }
 
 __commit() {
@@ -60,7 +60,7 @@ __images() {
         '-a[show all images]' \
         '-notrunc[dont truncate output]' \
         '-q[only show numeric IDs]' \
-        '-viz[output graph in graphviz format'
+        '-viz[output graph in graphviz format]'
     __docker_images
 }
 
@@ -159,20 +159,20 @@ __run() {
 }
 
 __search() {
-    arguments '-notrunc[Dont truncate output]'
+    _arguments '-notrunc[Dont truncate output]'
 }
 
 __start() {
-    __docker_container
+    __docker_containers
 }
 
 __stop() {
-    __arguments '-t=[number of seconds to try to stop before killing]'
+    _arguments '-t=[number of seconds to try to stop before killing]'
     __docker_containers
 }
 
 __tag() {
-    __arguments '-f[Force]'
+    _arguments '-f[Force]'
     __docker_images
 }
 
@@ -181,7 +181,7 @@ __version() {
 }
 
 __wait() {
-    __docker_container
+    __docker_containers
 }
 
 # end commands ---------

From 2c56345917624bd94bfc05fe7bdbb2051421d5e7 Mon Sep 17 00:00:00 2001
From: Kasper Kronborg Isager 
Date: Sat, 10 Aug 2013 19:19:30 -0400
Subject: [PATCH 210/330] Add Pure theme

---
 themes/pure.zsh-theme | 128 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 128 insertions(+)
 create mode 100644 themes/pure.zsh-theme

diff --git a/themes/pure.zsh-theme b/themes/pure.zsh-theme
new file mode 100644
index 000000000..d7ed624e4
--- /dev/null
+++ b/themes/pure.zsh-theme
@@ -0,0 +1,128 @@
+#!/usr/bin/env zsh
+
+# ------------------------------------------------------------------------------
+#
+# Pure - A minimal and beautiful theme for oh-my-zsh
+#
+# Based on the custom Zsh-prompt of the same name by Sindre Sorhus. A huge
+# thanks goes out to him for designing the fantastic Pure prompt in the first
+# place! I'd also like to thank Julien Nicoulaud for his "nicoulaj" theme from
+# which I've borrowed both some ideas and some actual code. You can find out
+# more about both of these fantastic two people here:
+#
+# Sindre Sorhus
+#   Github:   https://github.com/sindresorhus
+#   Twitter:  https://twitter.com/sindresorhus
+#
+# Julien Nicoulaud
+#   Github:   https://github.com/nicoulaj
+#   Twitter:  https://twitter.com/nicoulaj
+#
+# License
+#
+# Copyright (c) 2013 Kasper Kronborg Isager
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ------------------------------------------------------------------------------
+
+# Set required options
+#
+setopt prompt_subst
+
+# Load required modules
+#
+autoload -Uz vcs_info
+
+# Set vcs_info parameters
+#
+zstyle ':vcs_info:*' enable hg bzr git
+zstyle ':vcs_info:*:*' unstagedstr '!'
+zstyle ':vcs_info:*:*' stagedstr '+'
+zstyle ':vcs_info:*:*' formats "$FX[bold]%r$FX[no-bold]/%S" "%s/%b" "%%u%c"
+zstyle ':vcs_info:*:*' actionformats "$FX[bold]%r$FX[no-bold]/%S" "%s/%b" "%u%c (%a)"
+zstyle ':vcs_info:*:*' nvcsformats "%~" "" ""
+
+# Fastest possible way to check if repo is dirty
+#
+git_dirty() {
+    # Check if we're in a git repo
+    command git rev-parse --is-inside-work-tree &>/dev/null || return
+    # Check if it's dirty
+    command git diff --quiet --ignore-submodules HEAD &>/dev/null; [ $? -eq 1 ] && echo "*"
+}
+
+# Display information about the current repository
+#
+repo_information() {
+    echo "%F{blue}${vcs_info_msg_0_%%/.} %F{8}$vcs_info_msg_1_`git_dirty` $vcs_info_msg_2_%f"
+}
+
+# Displays the exec time of the last command if set threshold was exceeded
+#
+cmd_exec_time() {
+    local stop=`date +%s`
+    local start=${cmd_timestamp:-$stop}
+    let local elapsed=$stop-$start
+    [ $elapsed -gt 5 ] && echo ${elapsed}s
+}
+
+# Get the intial timestamp for cmd_exec_time
+#
+preexec() {
+    cmd_timestamp=`date +%s`
+}
+
+# Output additional information about paths, repos and exec time
+#
+precmd() {
+    vcs_info # Get version control info before we start outputting stuff
+    print -P "\n$(repo_information) %F{yellow}$(cmd_exec_time)%f"
+}
+
+# Define prompts
+#
+PROMPT="%(?.%F{magenta}.%F{red})❯%f " # Display a red prompt char on failure
+RPROMPT="%F{8}${SSH_TTY:+%n@%m}%f"    # Display username if connected via SSH
+
+# ------------------------------------------------------------------------------
+#
+# List of vcs_info format strings:
+#
+# %b => current branch
+# %a => current action (rebase/merge)
+# %s => current version control system
+# %r => name of the root directory of the repository
+# %S => current path relative to the repository root directory
+# %m => in case of Git, show information about stashes
+# %u => show unstaged changes in the repository
+# %c => show staged changes in the repository
+#
+# List of prompt format strings:
+#
+# prompt:
+# %F => color dict
+# %f => reset color
+# %~ => current path
+# %* => time
+# %n => username
+# %m => shortname host
+# %(?..) => prompt conditional - %(condition.true.false)
+#
+# ------------------------------------------------------------------------------

From b9474c411b84c3a7985143060393619b459b0162 Mon Sep 17 00:00:00 2001
From: stibinator 
Date: Wed, 14 Aug 2013 14:04:06 +1000
Subject: [PATCH 211/330] changed duck to ddg for alias

---
 plugins/web-search/web-search.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index d06585ae5..8eedb90ee 100644
--- a/plugins/web-search/web-search.plugin.zsh
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -46,7 +46,7 @@ function web_search() {
 alias bing='web_search bing'
 alias google='web_search google'
 alias yahoo='web_search yahoo'
-alias duck='web_search duckduckgo'
+alias ddg='web_search duckduckgo'
 #add your own !bang searches here
 alias wiki='web_search duckduckgo \!w'
 alias news='web_search duckduckgo \!n'

From e4d0b2b385113aa7fb89efe14c5d022fb646f261 Mon Sep 17 00:00:00 2001
From: Brandon W Maister 
Date: Wed, 14 Aug 2013 23:19:16 -0400
Subject: [PATCH 212/330] Improve pip plugin options support

* -r, --record now looks for a local file instead of trying to cache
  the entire package index
* add --editable because it's useful
* add --single-version-externally-managed because it is too long
* add --record and --root because they're required by
  --single-version-externally-managed
---
 plugins/pip/_pip | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/plugins/pip/_pip b/plugins/pip/_pip
index df53ba5ce..fb8765c7e 100644
--- a/plugins/pip/_pip
+++ b/plugins/pip/_pip
@@ -6,8 +6,8 @@
 _pip_all() {
   # we cache the list of packages (originally from the macports plugin)
   if (( ! $+piplist )); then
-    echo -n " (caching package index...)"
-	piplist=($(pip search * | cut -d ' ' -f 1 | tr '[A-Z]' '[a-z]'))
+      echo -n " (caching package index...)"
+      piplist=($(pip search * | cut -d ' ' -f 1 | tr '[A-Z]' '[a-z]'))
   fi
 }
 
@@ -62,8 +62,13 @@ case "$words[1]" in
       '(--no-install)--no-install[only download packages]' \
       '(--no-download)--no-download[only install downloaded packages]' \
       '(--install-option)--install-option[extra arguments to be supplied to the setup.py]' \
+      '(--single-version-externally-managed)--single-version-externally-managed[do not download/install dependencies. requires --record or --root]'\
+      '(--root)--root[treat this path as a fake chroot, installing into it. implies --single-version-externally-managed]'\
+      '(--record)--record[file to record all installed files to.]'\
+      '(-r --requirement)'{-r,--requirement}'[requirements file]: :_files'\
+      '(-e --editable)'{-e,--editable}'[path of or url to source to link to instead of installing.]: :_files -/'\
       '1: :->packages' &&  return 0
-     
+
       if [[ "$state" == packages ]]; then
         _pip_all
         _wanted piplist expl 'packages' compadd -a piplist

From e368bf1d4aea6ac08ae46d60308e0492e9ab3b85 Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Thu, 15 Aug 2013 10:32:01 -0400
Subject: [PATCH 213/330] Add jump plugin, which allows you to easily jump
 around the file system

---
 plugins/jump/jump.plugin.zsh | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 plugins/jump/jump.plugin.zsh

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
new file mode 100644
index 000000000..b792f544c
--- /dev/null
+++ b/plugins/jump/jump.plugin.zsh
@@ -0,0 +1,21 @@
+# Easily jump around the file system by manually adding marks
+# marks are stored as symbolic links in the directory $MARKPATH (default $HOME/.marks)
+#
+# jump FOO: jump to a mark named FOO
+# mark FOO: create a mark named FOO
+# unmark FOO: delete a mark
+# marks: lists all marks
+#
+export MARKPATH=$HOME/.marks
+function jump { 
+	cd -P $MARKPATH/$1 2>/dev/null || echo "No such mark: $1"
+}
+function mark { 
+	mkdir -p $MARKPATH; ln -s $(pwd) $MARKPATH/$1
+}
+function unmark { 
+	rm -i $MARKPATH/$1 
+}
+function marks {
+	ls -l $MARKPATH | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
+}

From 73c22c146c57afe5c9ce341cff876abf00571463 Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Sun, 18 Aug 2013 14:16:26 -0400
Subject: [PATCH 214/330] Add tab completion for jump plugin

---
 plugins/jump/jump.plugin.zsh | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index b792f544c..349d3e01f 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -8,14 +8,21 @@
 #
 export MARKPATH=$HOME/.marks
 function jump { 
-	cd -P $MARKPATH/$1 2>/dev/null || echo "No such mark: $1"
+	cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
 }
 function mark { 
-	mkdir -p $MARKPATH; ln -s $(pwd) $MARKPATH/$1
+	mkdir -p "$MARKPATH"; ln -s "$(pwd)" $MARKPATH/$1
 }
 function unmark { 
-	rm -i $MARKPATH/$1 
+	rm -i "$MARKPATH/$1"
 }
 function marks {
-	ls -l $MARKPATH | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
+	ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
 }
+
+function _completemarks {
+  reply=($(ls $MARKPATH))
+}
+
+compctl -K _completemarks jump
+compctl -K _completemarks unmark

From f11934e00c711a09876e1cf776d04c231339ff18 Mon Sep 17 00:00:00 2001
From: Aaron Mills 
Date: Mon, 19 Aug 2013 16:28:09 -0600
Subject: [PATCH 215/330] Add support for mosh (remote-shell) tab completion.

---
 plugins/mosh/mosh.plugin.zsh | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 plugins/mosh/mosh.plugin.zsh

diff --git a/plugins/mosh/mosh.plugin.zsh b/plugins/mosh/mosh.plugin.zsh
new file mode 100644
index 000000000..ea36b7ee9
--- /dev/null
+++ b/plugins/mosh/mosh.plugin.zsh
@@ -0,0 +1,2 @@
+# Allow SSH tab completion for mosh hostnames
+compdef mosh=ssh

From 300118ec05e6a88d8331c007d076ec1fbf9c5e9c Mon Sep 17 00:00:00 2001
From: dchusovitin 
Date: Sat, 24 Aug 2013 13:12:03 +0400
Subject: [PATCH 216/330] Fixed opening documentation on Linux (node)

---
 plugins/node/node.plugin.zsh | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/plugins/node/node.plugin.zsh b/plugins/node/node.plugin.zsh
index 3bbed6f04..2d78f2b4c 100644
--- a/plugins/node/node.plugin.zsh
+++ b/plugins/node/node.plugin.zsh
@@ -1,5 +1,13 @@
 # Open the node api for your current version to the optional section.
 # TODO: Make the section part easier to use.
 function node-docs {
-	open "http://nodejs.org/docs/$(node --version)/api/all.html#all_$1"
+  # get the open command
+  local open_cmd
+  if [[ $(uname -s) == 'Darwin' ]]; then
+    open_cmd='open'
+  else
+    open_cmd='xdg-open'
+  fi
+
+  $open_cmd "http://nodejs.org/docs/$(node --version)/api/all.html#all_$1"
 }

From baffc3b0bd2594b789316cb135ba84fb54f50dd9 Mon Sep 17 00:00:00 2001
From: Mr Prud 
Date: Thu, 29 Aug 2013 14:07:09 +0200
Subject: [PATCH 217/330] Replace no unicode glyph on hexa string

---
 themes/agnoster.zsh-theme | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index c7a59ad0d..8b5f4ef7a 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -26,7 +26,7 @@
 # A few utility functions to make it easy and re-usable to draw segmented prompts
 
 CURRENT_BG='NONE'
-SEGMENT_SEPARATOR=''
+SEGMENT_SEPARATOR='\u2b80'
 
 # Begin a segment
 # Takes two arguments, background and foreground. Both can be omitted,
@@ -90,7 +90,7 @@ prompt_git() {
     zstyle ':vcs_info:*' formats ' %u%c'
     zstyle ':vcs_info:*' actionformats '%u%c'
     vcs_info
-    echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_}"
+    echo -n "${ref/refs\/heads\//\u2b60 }${vcs_info_msg_0_}"
   fi
 }
 
@@ -110,7 +110,7 @@ prompt_hg() {
 				# if working copy is clean
 				prompt_segment green black
 			fi
-			echo -n $(hg prompt " {rev}@{branch}") $st
+			echo -n $(hg prompt "\u2b60 {rev}@{branch}") $st
 		else
 			st=""
 			rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
@@ -124,7 +124,7 @@ prompt_hg() {
 			else
 				prompt_segment green black
 			fi
-			echo -n " $rev@$branch" $st
+			echo -n "\u2b60 $rev@$branch" $st
 		fi
 	fi
 }

From 958c847f54a0c9101b4e0bc8c29b539a42c263ad Mon Sep 17 00:00:00 2001
From: Alexander Gronemann 
Date: Thu, 29 Aug 2013 16:20:40 +0200
Subject: [PATCH 218/330] Update bundler.plugin.zsh

Added taps to bundled_commands
---
 plugins/bundler/bundler.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index c01241409..d76639f30 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -7,7 +7,7 @@ alias bu="bundle update"
 
 # The following is based on https://github.com/gma/bundler-exec
 
-bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor thin thor unicorn unicorn_rails puma)
+bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma)
 
 ## Functions
 

From e3c02bfeba64b655ca506d0d46eca724f2889a87 Mon Sep 17 00:00:00 2001
From: Paul Melnikow 
Date: Wed, 4 Sep 2013 18:07:58 -0400
Subject: [PATCH 219/330] Plugin for Node Version Manager

---
 plugins/nvm/_nvm           | 24 ++++++++++++++++++++++++
 plugins/nvm/nvm.plugin.zsh |  3 +++
 2 files changed, 27 insertions(+)
 create mode 100644 plugins/nvm/_nvm
 create mode 100644 plugins/nvm/nvm.plugin.zsh

diff --git a/plugins/nvm/_nvm b/plugins/nvm/_nvm
new file mode 100644
index 000000000..038196a6e
--- /dev/null
+++ b/plugins/nvm/_nvm
@@ -0,0 +1,24 @@
+#compdef nvm
+#autoload
+
+local -a _1st_arguments
+_1st_arguments=(
+  'help:show help'
+  'install:download and install a version'
+  'uninstall:uninstall a version'
+  'use:modify PATH to use version'
+  'run:run version with given arguments'
+  'ls:list installed versions or versions matching a given description'
+  'ls-remote:list remote versions available for install'
+  'deactivate:undo effects of NVM on current shell'
+  'alias:show or set aliases'
+  'unalias:deletes an alias'
+  'copy-packages:install global NPM packages to current version'
+)
+
+_arguments -C '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+  _describe -t commands "nvm subcommand" _1st_arguments
+  return
+fi
\ No newline at end of file
diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh
new file mode 100644
index 000000000..9709719fe
--- /dev/null
+++ b/plugins/nvm/nvm.plugin.zsh
@@ -0,0 +1,3 @@
+# The addition 'nvm install' attempts in ~/.profile
+
+[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh

From 5bf20572cc303cd02a915c91ffa91f96a26bba39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Torsten=20B=C3=BChl?= 
Date: Thu, 5 Sep 2013 14:37:37 +0200
Subject: [PATCH 220/330] Add commonly used git stash aliases

---
 plugins/git/git.plugin.zsh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6b91b4a72..9596931eb 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -80,7 +80,11 @@ compdef _git gm=git-mergetool
 alias gg='git gui citool'
 alias gga='git gui citool --amend'
 alias gk='gitk --all --branches'
+
 alias gsts='git stash show --text'
+alias gsta='git stash'
+alias gstp='git stash pop'
+alias gstd='git stash drop'
 
 # Will cd into the top of the current repository
 # or submodule.

From 3007f96090e0f5a9e6430575afc7dfa92b235bc9 Mon Sep 17 00:00:00 2001
From: Paul Melnikow 
Date: Thu, 5 Sep 2013 10:09:19 -0400
Subject: [PATCH 221/330] NVM: Avoid providing completions when nvm is not
 installed

---
 plugins/nvm/_nvm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plugins/nvm/_nvm b/plugins/nvm/_nvm
index 038196a6e..a95c9e375 100644
--- a/plugins/nvm/_nvm
+++ b/plugins/nvm/_nvm
@@ -1,6 +1,8 @@
 #compdef nvm
 #autoload
 
+[[ -s ~/.nvm/nvm.sh ]] || return 0
+
 local -a _1st_arguments
 _1st_arguments=(
   'help:show help'

From 4da4d12d33eb7d36552fa1ffb0797380793970d1 Mon Sep 17 00:00:00 2001
From: Paul Melnikow 
Date: Thu, 5 Sep 2013 10:12:12 -0400
Subject: [PATCH 222/330] Sublime Text: Harmonize alias with the Sublime Text
 install instructions

The typical command is `subl`, not `st`. Leaving both for backward compatibility.

See http://www.sublimetext.com/docs/2/osx_command_line.html
---
 plugins/sublime/sublime.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
index 82faf87c9..72f56754c 100755
--- a/plugins/sublime/sublime.plugin.zsh
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -21,7 +21,8 @@ elif  [[ $('uname') == 'Darwin' ]]; then
 
 	for _sublime_path in $_sublime_darwin_paths; do
 		if [[ -a $_sublime_path ]]; then
-			alias st="'$_sublime_path'"
+			alias subl="'$_sublime_path'"
+			alias st=subl
 			break
 		fi
 	done

From 128cd3f5661d42f10ef3bae742ae3416f401c7ad Mon Sep 17 00:00:00 2001
From: Justin Aiken <60tonangel@gmail.com>
Date: Thu, 5 Sep 2013 09:39:22 -0600
Subject: [PATCH 223/330] Filter out missing links with jump autocomplete

---
 plugins/jump/jump.plugin.zsh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index 349d3e01f..8f1468206 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -7,13 +7,13 @@
 # marks: lists all marks
 #
 export MARKPATH=$HOME/.marks
-function jump { 
+function jump {
 	cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
 }
-function mark { 
+function mark {
 	mkdir -p "$MARKPATH"; ln -s "$(pwd)" $MARKPATH/$1
 }
-function unmark { 
+function unmark {
 	rm -i "$MARKPATH/$1"
 }
 function marks {
@@ -21,7 +21,7 @@ function marks {
 }
 
 function _completemarks {
-  reply=($(ls $MARKPATH))
+  reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([a-z]*):$/\2/g'))
 }
 
 compctl -K _completemarks jump

From a265acee4f991dfd96fb3a9057309e9c1a345a2c Mon Sep 17 00:00:00 2001
From: Justin Aiken <60tonangel@gmail.com>
Date: Thu, 5 Sep 2013 10:00:14 -0600
Subject: [PATCH 224/330] Better filename matching

---
 plugins/jump/jump.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index 8f1468206..60eae85ad 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -21,7 +21,7 @@ function marks {
 }
 
 function _completemarks {
-  reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([a-z]*):$/\2/g'))
+  reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
 }
 
 compctl -K _completemarks jump

From 69ce2362d6b4c46450a07d9ffdb3deabc48b5ffd Mon Sep 17 00:00:00 2001
From: Stanislav Mekhonoshin 
Date: Thu, 5 Sep 2013 20:22:46 +0400
Subject: [PATCH 225/330] Support of parallel bundle install

---
 plugins/bundler/bundler.plugin.zsh | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index c01241409..1e70db6af 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -1,10 +1,17 @@
 alias be="bundle exec"
-alias bi="bundle install"
 alias bl="bundle list"
 alias bp="bundle package"
 alias bo="bundle open"
 alias bu="bundle update"
 
+if [[ "$(uname)" == 'Darwin' ]]
+then
+  local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
+else
+  local cores_num="$(nproc)"
+fi
+eval "alias bi='bundle install --jobs=$cores_num'"
+
 # The following is based on https://github.com/gma/bundler-exec
 
 bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor thin thor unicorn unicorn_rails puma)
@@ -42,3 +49,4 @@ for cmd in $bundled_commands; do
         compdef _$cmd bundled_$cmd=$cmd
   fi
 done
+

From 4517db6acc6e4217a25aa353da37fb8de617bfc4 Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Fri, 6 Sep 2013 09:34:27 -0400
Subject: [PATCH 226/330] Add _completemarks function as suggested by pielgrzym
 in https://github.com/robbyrussell/oh-my-zsh/pull/2045#issuecomment-22826540

---
 plugins/jump/jump.plugin.zsh | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index 60eae85ad..1035191ac 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -7,15 +7,19 @@
 # marks: lists all marks
 #
 export MARKPATH=$HOME/.marks
+
 function jump {
 	cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
 }
+
 function mark {
 	mkdir -p "$MARKPATH"; ln -s "$(pwd)" $MARKPATH/$1
 }
+
 function unmark {
 	rm -i "$MARKPATH/$1"
 }
+
 function marks {
 	ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
 }
@@ -23,6 +27,13 @@ function marks {
 function _completemarks {
   reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
 }
-
 compctl -K _completemarks jump
 compctl -K _completemarks unmark
+
+_mark_expansion() {
+	setopt extendedglob
+	autoload -U modify-current-argument
+	modify-current-argument '$(readlink "$MARKPATH/$ARG")'
+}
+zle -N _mark_expansion
+bindkey "^g" _mark_expansion

From 55d4873f91b8cebbb2e6df5f3a405022e76e0c2c Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Fri, 6 Sep 2013 09:40:44 -0400
Subject: [PATCH 227/330] Change marks function and remove 'function' keyword
 as suggested by pielgrzym in
 https://github.com/robbyrussell/oh-my-zsh/pull/2045#issuecomment-22820224

---
 plugins/jump/jump.plugin.zsh | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index 1035191ac..c6f266ae5 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -8,24 +8,30 @@
 #
 export MARKPATH=$HOME/.marks
 
-function jump {
+jump() {
 	cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
 }
 
-function mark {
+mark() {
 	mkdir -p "$MARKPATH"; ln -s "$(pwd)" $MARKPATH/$1
 }
 
-function unmark {
+unmark() {
 	rm -i "$MARKPATH/$1"
 }
 
-function marks {
-	ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
+autoload colors
+marks() {
+	for link in $MARKPATH/*(@); do
+		local markname="$fg[cyan]${link:t}$reset_color"
+		local markpath="$fg[blue]$(readlink $link)$reset_color"
+		printf "%s\t" $markname
+		printf "-> %s \t\n" $markpath
+	done
 }
 
-function _completemarks {
-  reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
+_completemarks() {
+	reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
 }
 compctl -K _completemarks jump
 compctl -K _completemarks unmark

From 255b0c4f5e16465ace326ddf1884ea2e7c1f3df1 Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Fri, 6 Sep 2013 09:55:43 -0400
Subject: [PATCH 228/330] Mark function asks for confirmation and uses basename
 of directory when no argument is given

---
 plugins/jump/jump.plugin.zsh | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index c6f266ae5..e32a5a0b4 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -13,7 +13,15 @@ jump() {
 }
 
 mark() {
-	mkdir -p "$MARKPATH"; ln -s "$(pwd)" $MARKPATH/$1
+	DIR="$(pwd)"
+	if (( $# == 0 )); then
+		MARK=$(basename $DIR)
+	else
+		MARK=$1
+	fi
+	if read -q \?"Mark ${DIR} as ${MARK}? (y/n) "; then
+		mkdir -p "$MARKPATH"; ln -s "${DIR}" "$MARKPATH/$MARK"
+	fi
 }
 
 unmark() {

From d3e005d6b42995021ad6f1009734a55cb65be6ce Mon Sep 17 00:00:00 2001
From: Jeroen Janssens 
Date: Fri, 6 Sep 2013 15:29:14 -0400
Subject: [PATCH 229/330] Fix aliasing pwd

---
 plugins/jump/jump.plugin.zsh | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index e32a5a0b4..a3c5cf8c3 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -13,14 +13,13 @@ jump() {
 }
 
 mark() {
-	DIR="$(pwd)"
 	if (( $# == 0 )); then
-		MARK=$(basename $DIR)
+		MARK=$(basename "$(pwd)")
 	else
-		MARK=$1
+		MARK="$1"
 	fi
-	if read -q \?"Mark ${DIR} as ${MARK}? (y/n) "; then
-		mkdir -p "$MARKPATH"; ln -s "${DIR}" "$MARKPATH/$MARK"
+	if read -q \?"Mark $(pwd) as ${MARK}? (y/n) "; then
+		mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$MARK"
 	fi
 }
 

From dff966afad231f66f6e7345383412682992f9e84 Mon Sep 17 00:00:00 2001
From: Robby Russell 
Date: Fri, 6 Sep 2013 16:00:24 -0700
Subject: [PATCH 230/330] Logo draft 1...

---
 README.textile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.textile b/README.textile
index 1916d9f4e..86dd5da22 100644
--- a/README.textile
+++ b/README.textile
@@ -1,3 +1,5 @@
+!https://s3.amazonaws.com/ohmyzsh/oh-my-zsh-logo.png!
+
 oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout...
 
 bq. "OH MY ZSHELL!"

From f6fb34845d31a840c73416f138dae1761ea4adb9 Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Tue, 10 Sep 2013 09:14:24 +0200
Subject: [PATCH 231/330] updated the arguments list to the newest version
 (0.24.0) of cocoapods

---
 plugins/pod/_pod | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 563fa5e66..6dd8b6371 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -3,18 +3,19 @@
 
 # -----------------------------------------------------------------------------
 #          FILE:  _pod
-#   DESCRIPTION:  Cocoapods autocomplete plugin for Oh-My-Zsh
+#   DESCRIPTION:  Cocoapods (0.24.0) autocomplete plugin for Oh-My-Zsh
 #                 http://cocoapods.org
 #        AUTHOR:  Alexandre Joly (alexandre.joly@mekanics.ch)
 #        GITHUB:  https://github.com/mekanics
 #       TWITTER:  @jolyAlexandre
-#       VERSION:  0.0.1
+#       VERSION:  0.0.2
 #       LICENSE:  MIT
 # -----------------------------------------------------------------------------
 
 local -a _1st_arguments
 _1st_arguments=(
     'help:Show help for the given command.'
+    'init:Generate a Podfile for the current directory.'
     'install:Install project dependencies'
     'ipc:Inter-process communication'
     'list:List pods'

From bdb2cabaa68a8c3af72df5a10bb3925fe1eda45e Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Tue, 10 Sep 2013 09:17:09 +0200
Subject: [PATCH 232/330] typo

---
 plugins/pod/_pod | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 6dd8b6371..745e9b15d 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -14,8 +14,8 @@
 
 local -a _1st_arguments
 _1st_arguments=(
-    'help:Show help for the given command.'
-    'init:Generate a Podfile for the current directory.'
+    'help:Show help for the given command'
+    'init:Generate a Podfile for the current directory'
     'install:Install project dependencies'
     'ipc:Inter-process communication'
     'list:List pods'

From 8735dfd87e98d79aa3a809117630cec907c1a86d Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Tue, 10 Sep 2013 11:19:00 +0200
Subject: [PATCH 233/330] New aliases for repo plugin

This helps a lot in day to day android development:
- rs: repo sync (git fetch on all projects)
- rra: auto rebase for all projet without loosing uncommited changes
- rsrra: do both steps at once

Signed-off-by: Gaetan Semet 
---
 plugins/repo/repo.plugin.zsh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/plugins/repo/repo.plugin.zsh b/plugins/repo/repo.plugin.zsh
index 9cc336959..d690a9d22 100644
--- a/plugins/repo/repo.plugin.zsh
+++ b/plugins/repo/repo.plugin.zsh
@@ -1,2 +1,12 @@
 # Aliases
 alias r='repo'
+compdef _repo r=repo
+
+alias rra='repo rebase --auto-stash'
+compdef _repo rra='repo rebase --auto-stash'
+
+alias rs='repo sync'
+compdef _repo rs='repo sync'
+
+alias rsrra='repo sync ; repo rebase --auto-stash'
+compdef _repo rsrra='repo sync ; repo rebase --auto-stash'

From 0fcb7dd55e02871f2280db5cabecc803e522ec0a Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Tue, 10 Sep 2013 11:28:31 +0200
Subject: [PATCH 234/330] Display right prompt in theme chooser

I didn't found the way to right-align the right prompt
properly.

Signed-off-by: Gaetan Semet 
---
 tools/theme_chooser.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/theme_chooser.sh b/tools/theme_chooser.sh
index 4d7047444..2c2a379ba 100755
--- a/tools/theme_chooser.sh
+++ b/tools/theme_chooser.sh
@@ -24,7 +24,8 @@ function theme_preview() {
     THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
     print "$fg[blue]${(l.((${COLUMNS}-${#THEME_NAME}-5))..─.)}$reset_color $THEME_NAME $fg[blue]───$reset_color"
     source "$THEMES_DIR/$THEME"
-    print -P $PROMPT
+    cols=$(tput cols)
+    print -P "$PROMPT                                                                                      $RPROMPT"
 }
 
 function banner() {

From 45438528761b0bbc143f8f2f013ee01917eb48cc Mon Sep 17 00:00:00 2001
From: Gaetan Semet 
Date: Tue, 10 Sep 2013 11:33:58 +0200
Subject: [PATCH 235/330] Completion for python, pep8, autopep8 and pylint

Signed-off-by: Gaetan Semet 
---
 plugins/autopep8/_autopep8           | 32 +++++++++++++++++
 plugins/autopep8/autopep8.plugin.zsh |  0
 plugins/pep8/_pep8                   | 34 ++++++++++++++++++
 plugins/pylint/_pylint               | 31 ++++++++++++++++
 plugins/pylint/pylint.plugin.zsh     |  3 ++
 plugins/python/_python               | 54 ++++++++++++++++++++++++++++
 plugins/python/python.plugin.zsh     |  1 +
 7 files changed, 155 insertions(+)
 create mode 100644 plugins/autopep8/_autopep8
 create mode 100644 plugins/autopep8/autopep8.plugin.zsh
 create mode 100644 plugins/pep8/_pep8
 create mode 100644 plugins/pylint/_pylint
 create mode 100644 plugins/pylint/pylint.plugin.zsh
 create mode 100644 plugins/python/_python

diff --git a/plugins/autopep8/_autopep8 b/plugins/autopep8/_autopep8
new file mode 100644
index 000000000..c14d06d66
--- /dev/null
+++ b/plugins/autopep8/_autopep8
@@ -0,0 +1,32 @@
+#compdef autopep8
+#
+# this is zsh completion function file.
+# generated by genzshcomp(ver: 0.5.1)
+#
+
+typeset -A opt_args
+local context state line
+
+_arguments -s -S \
+  "--help[show this help message and exit]:" \
+  "-h[show this help message and exit]:" \
+  "--version[show program's version number and exit]:" \
+  "--verbose[print verbose messages; multiple -v result in more verbose messages]" \
+  "-v[print verbose messages; multiple -v result in more verbose messages]" \
+  "--diff[print the diff for the fixed source]" \
+  "-d[print the diff for the fixed source]" \
+  "--in-place[make changes to files in place]" \
+  "-i[make changes to files in place]" \
+  "--recursive[run recursively; must be used with --in-place or --diff]" \
+  "-r[run recursively; must be used with --in-place or --diff]" \
+  "--jobs[number of parallel jobs; match CPU count if value is less than 1]::n        number of parallel jobs; match CPU count if value is:_files" \
+  "-j[number of parallel jobs; match CPU count if value is less than 1]::n        number of parallel jobs; match CPU count if value is:_files" \
+  "--pep8-passes[maximum number of additional pep8 passes (default: 100)]::n:_files" \
+  "-p[maximum number of additional pep8 passes (default: 100)]::n:_files" \
+  "-a[-a result in more aggressive changes]::result:_files" \
+  "--exclude[exclude files/directories that match these comma- separated globs]::globs:_files" \
+  "--list-fixes[list codes for fixes; used by --ignore and --select]" \
+  "--ignore[do not fix these errors/warnings (default E226,E24)]::errors:_files" \
+  "--select[fix only these errors/warnings (e.g. E4,W)]::errors:_files" \
+  "--max-line-length[set maximum allowed line length (default: 79)]::n:_files" \
+  "*::args:_files"
diff --git a/plugins/autopep8/autopep8.plugin.zsh b/plugins/autopep8/autopep8.plugin.zsh
new file mode 100644
index 000000000..e69de29bb
diff --git a/plugins/pep8/_pep8 b/plugins/pep8/_pep8
new file mode 100644
index 000000000..ce19951dc
--- /dev/null
+++ b/plugins/pep8/_pep8
@@ -0,0 +1,34 @@
+#compdef pep8
+#
+# this is zsh completion function file.
+# generated by genzshcomp(ver: 0.5.1)
+#
+
+typeset -A opt_args
+local context state line
+
+_arguments -s -S \
+  "--help[show this help message and exit]:" \
+  "-h[show this help message and exit]:" \
+  "--version[show program's version number and exit]:" \
+  "--verbose[print status messages, or debug with -vv]" \
+  "-v[print status messages, or debug with -vv]" \
+  "--quiet[report only file names, or nothing with -qq]" \
+  "-q[report only file names, or nothing with -qq]" \
+  "--repeat[(obsolete) show all occurrences of the same error]" \
+  "-r[(obsolete) show all occurrences of the same error]" \
+  "--first[show first occurrence of each error]" \
+  "--exclude[exclude files or directories which match these comma separated patterns (default: .svn,CVS,.bzr,.hg,.git,__pycache__)]::patterns:_files" \
+  "--filename[when parsing directories, only check filenames matching these comma separated patterns (default: *.py)]::patterns:_files" \
+  "--select[select errors and warnings (e.g. E,W6)]::errors:_files" \
+  "--ignore[skip errors and warnings (e.g. E4,W)]::errors:_files" \
+  "--show-source[show source code for each error]" \
+  "--show-pep8[show text of PEP 8 for each error (implies --first)]" \
+  "--statistics[count errors and warnings]" \
+  "--count[print total number of errors and warnings to standard error and set exit code to 1 if total is not null]" \
+  "--max-line-length[set maximum allowed line length (default: 79)]::n:_files" \
+  "--format[set the error format \[default|pylint|\]]::format:_files" \
+  "--diff[report only lines changed according to the unified diff received on STDIN]" \
+  "--benchmark[measure processing speed   are read from the \[pep8\] section of the tox.ini fg file located in any parent folder of the path(s) llowed options are: exclude, filename, select, ngth, count, format, quiet, show-pep8, show-source, .]" \
+  "--config[user config file location (default: /home/gsemet/.config/pep8)]::path:_files" \
+  "*::args:_files"
diff --git a/plugins/pylint/_pylint b/plugins/pylint/_pylint
new file mode 100644
index 000000000..e466d051b
--- /dev/null
+++ b/plugins/pylint/_pylint
@@ -0,0 +1,31 @@
+#compdef pylint
+#
+# this is zsh completion function file.
+# generated by genzshcomp(ver: 0.5.1)
+#
+
+typeset -A opt_args
+local context state line
+
+_arguments -s -S \
+  "--help[show this help message and exit]:" \
+  "-h[show this help message and exit]:" \
+  "--version[show program's version number and exit]:" \
+  "--long-help[more verbose help.]" \
+  "--rcfile[Specify a configuration file.]:::_files" \
+  "--errors-only[In error mode, checkers without error messages are disabled and for others, only the ERROR messages are displayed, and no reports are done by default]" \
+  "-E[In error mode, checkers without error messages are disabled and for others, only the ERROR messages are displayed, and no reports are done by default]" \
+  "--ignore[Add files or directories to the blacklist. They should be base names, not paths. \[current: CVS\]]::[,...]:_files" \
+  "--help-msg[Display a help message for the given message id and exit. The value may be a comma separated list of message ids.]:::_files" \
+  "--generate-rcfile[Generate a sample configuration file according to the current configuration. You can put other options before this one to get them in the generated configuration.]" \
+  "--enable[Enable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time.]:::_files" \
+  "-e[Enable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time.]:::_files" \
+  "--disable[Disable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time (only on the command line, not in the configuration file where it should appear only once).]:::_files" \
+  "-d[Disable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time (only on the command line, not in the configuration file where it should appear only once).]:::_files" \
+  "--output-format[Set the output format. Available formats are text, parseable, colorized, msvs (visual studio) and html \[current: text\]]:::_files" \
+  "-f[Set the output format. Available formats are text, parseable, colorized, msvs (visual studio) and html \[current: text\]]:::_files" \
+  "--include-ids[Include message's id in output \[current: no\]]:::_files" \
+  "-i[Include message's id in output \[current: no\]]:::_files" \
+  "--reports[Tells whether to display a full report or only the messages \[current: yes\]]:::_files" \
+  "-r[Tells whether to display a full report or only the messages \[current: yes\]]:::_files" \
+  "*::args:_files"
diff --git a/plugins/pylint/pylint.plugin.zsh b/plugins/pylint/pylint.plugin.zsh
new file mode 100644
index 000000000..6760c67b0
--- /dev/null
+++ b/plugins/pylint/pylint.plugin.zsh
@@ -0,0 +1,3 @@
+# Aliases
+alias pylint-quick='pylint --reports=n --include-ids=y'
+compdef _pylint-quick pylint-quick='pylint --reports=n --include-ids=y'
\ No newline at end of file
diff --git a/plugins/python/_python b/plugins/python/_python
new file mode 100644
index 000000000..f517d4806
--- /dev/null
+++ b/plugins/python/_python
@@ -0,0 +1,54 @@
+#compdef python
+
+# Python 2.6
+# Python 3.0
+
+local curcontext="$curcontext" state line expl
+typeset -A opt_args
+
+local -a args
+
+if _pick_variant python3=Python\ 3 python2 --version; then
+  args=(
+    '(-bb)-b[issue warnings about str(bytes_instance), str(bytearray_instance) and comparing bytes/bytearray with str]'
+    '(-b)-bb[issue errors about str(bytes_instance), str(bytearray_instance) and comparing bytes/bytearray with str]'
+  )
+else
+  args=(
+    '-Q+[division options]:division option:(old warn warnall new)'
+    '(-tt)-t[issue warnings about inconsistent tab usage]'
+    '(-t)-tt[issue errors about inconsistent tab usage]'
+    '-3[warn about Python 3.x incompatibilities]'
+  )
+fi
+
+_arguments -C -s -S "$args[@]" \
+  "-B[don't write .py\[co\] files on import]" \
+  '(1 -)-c+[program passed in as string (terminates option list)]:python command:' \
+  '-d[debug output from parser]' \
+  '-E[ignore PYTHON* environment variables (such as PYTHONPATH)]' \
+  '(1 * -)-h[display help information]' \
+  '-i[inspect interactively after running script]' \
+  '(1 * -)-m[run library module as a script (terminates option list)]:module:->modules' \
+  '-O[optimize generated bytecode slightly]' \
+  '-OO[remove doc-strings in addition to the -O optimizations]' \
+  "-s[don't add user site directory to sys.path]" \
+  "-S[don't imply 'import site' on initialization]" \
+  '-u[unbuffered binary stdout and stderr]' \
+  '-v[verbose (trace import statements)]' \
+  '(1 * -)'{-V,--version}'[display version information]' \
+  '-W+[warning control]:warning filter (action\:message\:category\:module\:lineno):(default always ignore module once error)' \
+  '-x[skip first line of source, allowing use of non-Unix forms of #!cmd]' \
+  '(-)1:script file:_files -g "*.py(|c|o)(-.)"' \
+  '*::script argument: _normal' && return
+
+if [[ "$state" = modules ]]; then
+  local -a modules
+  modules=(
+    ${${=${(f)"$(_call_program modules $words[1] -c \
+      'from\ pydoc\ import\ help\;\ help\(\"modules\"\)')"}[2,-3]}:#\(package\)}
+  )
+  _wanted modules expl module compadd -a modules && return
+fi
+
+return 1
diff --git a/plugins/python/python.plugin.zsh b/plugins/python/python.plugin.zsh
index 852c8b919..319bf0bf0 100644
--- a/plugins/python/python.plugin.zsh
+++ b/plugins/python/python.plugin.zsh
@@ -10,3 +10,4 @@ function pyclean() {
 
 # Grep among .py files
 alias pygrep='grep --include="*.py"'
+

From 40b1cf01035a3d74395b5d9def4f79af17fca4c8 Mon Sep 17 00:00:00 2001
From: Alexandre Joly 
Date: Tue, 10 Sep 2013 15:20:57 +0200
Subject: [PATCH 236/330] repo list search one level deeper

the folder structure changed '.cocoapods/' -> '.cocoapods/repos'
---
 plugins/pod/_pod | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 745e9b15d..ba0c9ab30 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -159,7 +159,7 @@ __first_command_list ()
 }
 
 __repo_list() {
-    _wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
+    _wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods/repos 2>/dev/null | sed -e 's/ /\\ /g')
 }
 
 __pod-repo() {

From 9d2b5c841e251840d7965163f4eb9797bc0db49f Mon Sep 17 00:00:00 2001
From: David Strawn 
Date: Sat, 14 Sep 2013 12:26:33 -0600
Subject: [PATCH 237/330] Fixed comments in zshrc.zsh-template about disabling
 auto updates.

Previously they did not make sense nor were they accurate.
---
 templates/zshrc.zsh-template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template
index d4dded73a..1dfb6998c 100644
--- a/templates/zshrc.zsh-template
+++ b/templates/zshrc.zsh-template
@@ -14,7 +14,7 @@ ZSH_THEME="robbyrussell"
 # Set to this to use case-sensitive completion
 # CASE_SENSITIVE="true"
 
-# Comment this out to disable bi-weekly auto-update checks
+# Uncomment this to disable bi-weekly auto-update checks
 # DISABLE_AUTO_UPDATE="true"
 
 # Uncomment to change how often before auto-updates occur? (in days)

From dfe36d7b7b6d70e5179f57afadfd923a36b3ff5a Mon Sep 17 00:00:00 2001
From: Nathan Cox 
Date: Wed, 18 Sep 2013 08:09:15 -0700
Subject: [PATCH 238/330] Added virtualenv plugin data to af-magic theme.

---
 themes/af-magic.zsh-theme | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/themes/af-magic.zsh-theme b/themes/af-magic.zsh-theme
index c1b00c62b..4cf282590 100644
--- a/themes/af-magic.zsh-theme
+++ b/themes/af-magic.zsh-theme
@@ -27,7 +27,7 @@ eval my_gray='$FG[237]'
 eval my_orange='$FG[214]'
 
 # right prompt
-RPROMPT='$my_gray%n@%m%{$reset_color%}%'
+PROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%'
 
 # git settings
 ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:"

From 91b6a6b5a496d7e7f3702040401cd99fd609514d Mon Sep 17 00:00:00 2001
From: Thomas Hipp 
Date: Wed, 18 Sep 2013 13:37:36 +0200
Subject: [PATCH 239/330] jump plugin: fix autocompletion with single mark

Autocompletion fails if there's only one mark, since the ls command
will not display the parent directory with the trailing colon.
Handling the single mark case separately and validating the symlink
explicitly, resolves the issue.
---
 plugins/jump/jump.plugin.zsh | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index a3c5cf8c3..5096879d8 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -38,7 +38,13 @@ marks() {
 }
 
 _completemarks() {
-	reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
+	if [[ $(ls "${MARKPATH}" | wc -l) -gt 1 ]]; then
+		reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
+	else
+		if readlink -e "${MARKPATH}"/* &>/dev/null; then
+			reply=($(ls "${MARKPATH}"))
+		fi
+	fi
 }
 compctl -K _completemarks jump
 compctl -K _completemarks unmark

From 095a01d92adf6af6d33647b61718e4ad0a4cce2b Mon Sep 17 00:00:00 2001
From: Maxime Chaisse-Leal 
Date: Wed, 18 Sep 2013 21:54:23 +0200
Subject: [PATCH 240/330] Added WIP (work in progress) feature to git.plugin

---
 plugins/git/git.plugin.zsh | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 6b91b4a72..bd11d796f 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -126,3 +126,17 @@ function _git_log_prettily(){
 }
 alias glp="_git_log_prettily"
 compdef _git glp=git-log
+
+# Work In Progress (wip)
+# These features allow to pause a branch development and switch to another one (wip)
+# When you want to go back to work, just unwip it
+#
+# This function return a warning if the current branch is a wip
+function work_in_progress() {
+  if $(git log -n 1 | grep -q -c wip); then
+    echo "WIP!!"
+  fi
+}
+# these alias commit and uncomit wip branches
+alias gwip='git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip"'
+alias gunwip='git log -n 1 | grep -q -c wip && git reset HEAD~1'
\ No newline at end of file

From 4dbe4378db658d29c10841791a95b8c57e7c77e5 Mon Sep 17 00:00:00 2001
From: Maxime Chaisse-Leal 
Date: Wed, 18 Sep 2013 21:56:10 +0200
Subject: [PATCH 241/330] Added WIP alert to the gallois' theme

---
 themes/gallois.zsh-theme | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/themes/gallois.zsh-theme b/themes/gallois.zsh-theme
index 3eac14867..d624e3afc 100644
--- a/themes/gallois.zsh-theme
+++ b/themes/gallois.zsh-theme
@@ -7,12 +7,12 @@ ZSH_THEME_GIT_PROMPT_CLEAN=""
 git_custom_status() {
   local cb=$(current_branch)
   if [ -n "$cb" ]; then
-    echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
+    echo "$(parse_git_dirty)%{$fg_bold[yellow]%}$(work_in_progress)%{$reset_color%}$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
   fi
 }
 
 #RVM and git settings
-if [[ -s ~/.rvm/scripts/rvm ]] ; then 
+if [[ -s ~/.rvm/scripts/rvm ]] ; then
   RPS1='$(git_custom_status)%{$fg[red]%}[`~/.rvm/bin/rvm-prompt`]%{$reset_color%} $EPS1'
 else
   if which rbenv &> /dev/null; then

From 61e3951e4be2f496d8ce8022afc58817c06e5dee Mon Sep 17 00:00:00 2001
From: Robby Russell 
Date: Thu, 19 Sep 2013 13:18:16 -0700
Subject: [PATCH 242/330] Revert "Replace no unicode glyph on hexa string"

This reverts commit baffc3b0bd2594b789316cb135ba84fb54f50dd9.
---
 themes/agnoster.zsh-theme | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index 8b5f4ef7a..c7a59ad0d 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -26,7 +26,7 @@
 # A few utility functions to make it easy and re-usable to draw segmented prompts
 
 CURRENT_BG='NONE'
-SEGMENT_SEPARATOR='\u2b80'
+SEGMENT_SEPARATOR=''
 
 # Begin a segment
 # Takes two arguments, background and foreground. Both can be omitted,
@@ -90,7 +90,7 @@ prompt_git() {
     zstyle ':vcs_info:*' formats ' %u%c'
     zstyle ':vcs_info:*' actionformats '%u%c'
     vcs_info
-    echo -n "${ref/refs\/heads\//\u2b60 }${vcs_info_msg_0_}"
+    echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_}"
   fi
 }
 
@@ -110,7 +110,7 @@ prompt_hg() {
 				# if working copy is clean
 				prompt_segment green black
 			fi
-			echo -n $(hg prompt "\u2b60 {rev}@{branch}") $st
+			echo -n $(hg prompt " {rev}@{branch}") $st
 		else
 			st=""
 			rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
@@ -124,7 +124,7 @@ prompt_hg() {
 			else
 				prompt_segment green black
 			fi
-			echo -n "\u2b60 $rev@$branch" $st
+			echo -n " $rev@$branch" $st
 		fi
 	fi
 }

From e8c3619486289fc21158ecd63d7fd91e3576c75c Mon Sep 17 00:00:00 2001
From: Maxim Dobryakov 
Date: Tue, 24 Sep 2013 13:58:48 +0400
Subject: [PATCH 243/330] Check bundler version to avoid error with unsupported
 command line arguments

---
 plugins/bundler/bundler.plugin.zsh | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index 5bd28cbdc..2e657e5a8 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -4,13 +4,18 @@ alias bp="bundle package"
 alias bo="bundle open"
 alias bu="bundle update"
 
-if [[ "$(uname)" == 'Darwin' ]]
-then
-  local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
+bundler_version=`bundle version | cut -d' ' -f3`
+if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
+  if [[ "$(uname)" == 'Darwin' ]]
+  then
+    local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
+  else
+    local cores_num="$(nproc)"
+  fi
+  eval "alias bi='bundle install --jobs=$cores_num'"
 else
-  local cores_num="$(nproc)"
+  alias bi='bundle install' 
 fi
-eval "alias bi='bundle install --jobs=$cores_num'"
 
 # The following is based on https://github.com/gma/bundler-exec
 

From 05b3ea342ad581d02ed652a4bbe29786026a5b50 Mon Sep 17 00:00:00 2001
From: Steven Schmid 
Date: Tue, 1 Oct 2013 18:08:15 +0200
Subject: [PATCH 244/330] Fix work_in_progress in empty git repos

I noticed that the function ``work_in_progress``, which is used in the "gallois"-theme, would print ``fatal: bad default revision 'HEAD'`` in a new folder after ``git init``.

This is the fix.
---
 plugins/git/git.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index d8ea3ae0c..14172b881 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -138,7 +138,7 @@ compdef _git glp=git-log
 #
 # This function return a warning if the current branch is a wip
 function work_in_progress() {
-  if $(git log -n 1 | grep -q -c wip); then
+  if $(git log -n 1 2>/dev/null | grep -q -c wip); then
     echo "WIP!!"
   fi
 }

From 2be4158d8fc5f8e4999ddcbcd100c129ab7e9147 Mon Sep 17 00:00:00 2001
From: kaving 
Date: Wed, 2 Oct 2013 10:51:21 +0200
Subject: [PATCH 245/330] Add support for ForkLift 2 to the ForkLift plugin

The ForkLift plugin now supports ForkLift 2 as well as ForkLift 1.
If ForkLift is not running it also waits for it to be running before
trying to switch to the specified directory
---
 plugins/forklift/forklift.plugin.zsh | 35 ++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/plugins/forklift/forklift.plugin.zsh b/plugins/forklift/forklift.plugin.zsh
index 056069d36..b0e60a434 100644
--- a/plugins/forklift/forklift.plugin.zsh
+++ b/plugins/forklift/forklift.plugin.zsh
@@ -1,5 +1,6 @@
-# Open folder in ForkLift.app from console
+# Open folder in ForkLift.app of ForkLift2.app from console
 # Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de
+#         Updated to support ForkLift2 by Johan Kaving
 #
 # Usage:
 #   fl []
@@ -22,9 +23,33 @@ function fl {
     fi
   fi
   osascript 2>&1 1>/dev/null <
Date: Wed, 2 Oct 2013 23:24:21 +0200
Subject: [PATCH 246/330] More expressive symbols for git and mercurial.

---
 themes/agnoster.zsh-theme | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index c7a59ad0d..7df4ec1e8 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -90,7 +90,7 @@ prompt_git() {
     zstyle ':vcs_info:*' formats ' %u%c'
     zstyle ':vcs_info:*' actionformats '%u%c'
     vcs_info
-    echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_}"
+    echo -n "${ref/refs\/heads\//± }${vcs_info_msg_0_}"
   fi
 }
 
@@ -110,7 +110,7 @@ prompt_hg() {
 				# if working copy is clean
 				prompt_segment green black
 			fi
-			echo -n $(hg prompt " {rev}@{branch}") $st
+			echo -n $(hg prompt "☿ {rev}@{branch}") $st
 		else
 			st=""
 			rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')

From 387de3a57e1927b1db210419b87e2404f8f809de Mon Sep 17 00:00:00 2001
From: Timo Sand 
Date: Thu, 3 Oct 2013 09:48:49 +0300
Subject: [PATCH 247/330] Added '.war' extension to unzip

---
 plugins/extract/extract.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 23e86c593..6e26b54c0 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -52,7 +52,7 @@ function extract() {
       (*.xz) unxz "$1" ;;
       (*.lzma) unlzma "$1" ;;
       (*.Z) uncompress "$1" ;;
-      (*.zip) unzip "$1" -d $extract_dir ;;
+      (*.zip|*.war) unzip "$1" -d $extract_dir ;;
       (*.rar) unrar x -ad "$1" ;;
       (*.7z) 7za x "$1" ;;
       (*.deb)

From 671db71d211e5596cb64c6185ac183c3d6930274 Mon Sep 17 00:00:00 2001
From: Timo Sand 
Date: Thu, 3 Oct 2013 13:00:12 +0300
Subject: [PATCH 248/330] Added '.jar'

---
 plugins/extract/extract.plugin.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 6e26b54c0..7352e5bad 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -52,7 +52,7 @@ function extract() {
       (*.xz) unxz "$1" ;;
       (*.lzma) unlzma "$1" ;;
       (*.Z) uncompress "$1" ;;
-      (*.zip|*.war) unzip "$1" -d $extract_dir ;;
+      (*.zip|*.war|*.jar) unzip "$1" -d $extract_dir ;;
       (*.rar) unrar x -ad "$1" ;;
       (*.7z) 7za x "$1" ;;
       (*.deb)

From 33b1a3bcfed1d52d48a3a467f81da1599d2fa883 Mon Sep 17 00:00:00 2001
From: futjikato 
Date: Fri, 4 Oct 2013 22:29:33 +0200
Subject: [PATCH 249/330] Added gitignore plugin ( for gitignore.io )

---
 custom/plugins/gitignore/gitignore.plugin.zsh | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 custom/plugins/gitignore/gitignore.plugin.zsh

diff --git a/custom/plugins/gitignore/gitignore.plugin.zsh b/custom/plugins/gitignore/gitignore.plugin.zsh
new file mode 100644
index 000000000..1b866c0d0
--- /dev/null
+++ b/custom/plugins/gitignore/gitignore.plugin.zsh
@@ -0,0 +1,11 @@
+function gi() { curl http://gitignore.io/api/$@ ;}
+
+_gitignireio_get_command_list() {
+  curl -s http://gitignore.io/api/list | tr "," "\n"
+}
+
+_gitignireio () {
+  compadd `_gitignireio_get_command_list`
+}
+
+compdef _gitignireio gi
\ No newline at end of file

From 9afb139d20f12f93c086140db3e9bfd4913f15a0 Mon Sep 17 00:00:00 2001
From: futjikato 
Date: Sat, 5 Oct 2013 00:56:17 +0200
Subject: [PATCH 250/330] Updated completion to work with comma seperated list

---
 custom/plugins/gitignore/gitignore.plugin.zsh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/custom/plugins/gitignore/gitignore.plugin.zsh b/custom/plugins/gitignore/gitignore.plugin.zsh
index 1b866c0d0..332497cec 100644
--- a/custom/plugins/gitignore/gitignore.plugin.zsh
+++ b/custom/plugins/gitignore/gitignore.plugin.zsh
@@ -5,7 +5,8 @@ _gitignireio_get_command_list() {
 }
 
 _gitignireio () {
-  compadd `_gitignireio_get_command_list`
+  compset -P '*,'
+  compadd -S '' `_gitignireio_get_command_list`
 }
 
 compdef _gitignireio gi
\ No newline at end of file

From 1dddec6f0f947ed80eed128033e4ebc4d4448138 Mon Sep 17 00:00:00 2001
From: Puneet Goyal 
Date: Sat, 12 Oct 2013 07:30:16 +0530
Subject: [PATCH 251/330] removing a github redirect during install

---
 README.textile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.textile b/README.textile
index 86dd5da22..810569486 100644
--- a/README.textile
+++ b/README.textile
@@ -14,11 +14,11 @@ You can install this via the command line with either `curl` or `wget`.
 
 h4. via `curl`
 
-@curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh@
+@curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh@
 
 h4. via `wget`
 
-@wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh@
+@wget --no-check-certificate https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh@
 
 h3. The manual way
 

From a7693b096f2573dfcf47f47a8f99c2ccd2690cbf Mon Sep 17 00:00:00 2001
From: Kaiwen Xu 
Date: Sun, 13 Oct 2013 15:49:24 -0400
Subject: [PATCH 252/330] gitignore fix for custom folder.

---
 .gitignore | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5db11ce5c..c2b47bba7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,9 @@
 locals.zsh
 log/.zsh_history
 projects.zsh
-custom/example
-custom/example.zsh
+-custom/*
+-!custom/example
+-!custom/example.zsh
 *.swp
 !custom/example.zshcache
 cache/

From c5902d3f3498f9cd7553f358f2bf741b0784dbd0 Mon Sep 17 00:00:00 2001
From: Kaiwen Xu 
Date: Mon, 14 Oct 2013 07:39:59 -0400
Subject: [PATCH 253/330] Moved misplaced plugins.

---
 {custom/plugins => plugins}/gitignore/gitignore.plugin.zsh | 0
 {custom/plugins => plugins}/sfffe/sfffe.plugin.zsh         | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename {custom/plugins => plugins}/gitignore/gitignore.plugin.zsh (100%)
 rename {custom/plugins => plugins}/sfffe/sfffe.plugin.zsh (100%)

diff --git a/custom/plugins/gitignore/gitignore.plugin.zsh b/plugins/gitignore/gitignore.plugin.zsh
similarity index 100%
rename from custom/plugins/gitignore/gitignore.plugin.zsh
rename to plugins/gitignore/gitignore.plugin.zsh
diff --git a/custom/plugins/sfffe/sfffe.plugin.zsh b/plugins/sfffe/sfffe.plugin.zsh
similarity index 100%
rename from custom/plugins/sfffe/sfffe.plugin.zsh
rename to plugins/sfffe/sfffe.plugin.zsh

From c0c9fc02543eb14de49b0416e3df1100845633d8 Mon Sep 17 00:00:00 2001
From: Lei Zhang 
Date: Wed, 16 Oct 2013 15:44:49 +0800
Subject: [PATCH 254/330] Add support .venv folder as virtual env

---
 plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 670c287bd..16f32da6e 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -17,6 +17,8 @@ if (( $+commands[$virtualenvwrapper] )); then
             # Check for virtualenv name override
             if [[ -f "$PROJECT_ROOT/.venv" ]]; then
                 ENV_NAME=`cat "$PROJECT_ROOT/.venv"`
+            elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then 
+                ENV_NAME="$PROJECT_ROOT/.venv"
             elif [[ "$PROJECT_ROOT" != "." ]]; then
                 ENV_NAME=`basename "$PROJECT_ROOT"`
             else
@@ -27,6 +29,8 @@ if (( $+commands[$virtualenvwrapper] )); then
                 if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
                     if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
                         workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
+                    elif [[ -e "$ENV_NAME/bin/activate" ]]; then
+                        source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME"
                     fi
                 fi
             elif [ $CD_VIRTUAL_ENV ]; then

From 500e5a73b61b063f83e1eecbf424e4b3733e59b7 Mon Sep 17 00:00:00 2001
From: oxnz 
Date: Wed, 16 Oct 2013 16:43:03 +0800
Subject: [PATCH 255/330] add itunes function to control itnues from the
 terminal

---
 plugins/osx/osx.plugin.zsh | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index dd785f911..608ec3789 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -157,3 +157,37 @@ function trash() {
 function vncviewer() {
   open vnc://$@
 }
+
+# iTunes control function
+function itunes() {
+	local opt=$1
+	shift
+	case "$opt" in
+		launch|play|pause|stop|rewind|resume|quit)
+			;;
+		mute)
+			opt="set mute to true"
+			;;
+		unmute)
+			opt="set mute to false"
+			;;
+		next|previous)
+			opt="$opt track"
+			;;
+		""|-h|--help)
+			echo "Usage: itunes