summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--README.textile2
-rw-r--r--lib/aliases.zsh16
-rw-r--r--lib/bzr.zsh10
-rw-r--r--lib/edit-command-line.zsh3
-rw-r--r--lib/git.zsh32
-rw-r--r--lib/key-bindings.zsh5
-rw-r--r--lib/nvm.zsh9
-rw-r--r--lib/theme-and-appearance.zsh4
-rw-r--r--oh-my-zsh.sh29
-rw-r--r--plugins/autojump/autojump.plugin.zsh2
-rw-r--r--plugins/battery/battery.plugin.zsh10
-rw-r--r--plugins/bower/bower.plugin.zsh101
-rw-r--r--plugins/brew/_brew4
-rw-r--r--plugins/bundler/bundler.plugin.zsh23
-rw-r--r--plugins/cabal/cabal.plugin.zsh36
-rw-r--r--plugins/capistrano/_capistrano2
-rw-r--r--plugins/celery/_celery129
-rw-r--r--plugins/chruby/chruby.plugin.zsh99
-rw-r--r--plugins/coffee/_coffee16
-rw-r--r--plugins/composer/composer.plugin.zsh18
-rw-r--r--plugins/docker/README.md19
-rw-r--r--plugins/docker/_docker290
-rw-r--r--plugins/extract/extract.plugin.zsh2
-rw-r--r--plugins/forklift/forklift.plugin.zsh35
-rw-r--r--plugins/gem/_gem8
-rw-r--r--plugins/git-flow/git-flow.plugin.zsh6
-rw-r--r--plugins/git-prompt/git-prompt.plugin.zsh60
-rw-r--r--plugins/git-prompt/gitstatus.py68
-rw-r--r--plugins/git/README.md4
-rw-r--r--plugins/git/_git-branch83
-rw-r--r--plugins/git/_git-remote74
-rw-r--r--plugins/git/git.plugin.zsh47
-rw-r--r--plugins/gitignore/gitignore.plugin.zsh12
-rw-r--r--plugins/gpg-agent/gpg-agent.plugin.zsh29
-rw-r--r--plugins/heroku/_heroku6
-rw-r--r--plugins/jira/jira.plugin.zsh6
-rw-r--r--plugins/jump/jump.plugin.zsh58
-rw-r--r--plugins/knife_ssh/knife_ssh.plugin.zsh18
-rw-r--r--plugins/mercurial/mercurial.plugin.zsh48
-rw-r--r--plugins/mix/_mix63
-rw-r--r--plugins/mosh/mosh.plugin.zsh2
-rw-r--r--plugins/mvn/mvn.plugin.zsh12
-rw-r--r--plugins/node/node.plugin.zsh10
-rw-r--r--plugins/nvm/_nvm26
-rw-r--r--plugins/nvm/nvm.plugin.zsh3
-rw-r--r--plugins/osx/osx.plugin.zsh38
-rw-r--r--plugins/pass/_pass2
-rw-r--r--plugins/pip/_pip11
-rw-r--r--plugins/pip/pip.plugin.zsh78
-rw-r--r--plugins/pod/_pod389
-rw-r--r--plugins/pyenv/pyenv.plugin.zsh31
-rw-r--r--plugins/python/python.plugin.zsh1
-rw-r--r--plugins/rails/_rails63
-rw-r--r--plugins/rails/rails.plugin.zsh66
-rw-r--r--plugins/rails3/rails3.plugin.zsh30
-rw-r--r--plugins/rails4/rails4.plugin.zsh34
-rw-r--r--plugins/rand-quote/rand-quote.plugin.zsh17
-rw-r--r--plugins/repo/README.md7
-rw-r--r--plugins/repo/_repo272
-rw-r--r--plugins/repo/repo.plugin.zsh2
-rw-r--r--plugins/rvm/rvm.plugin.zsh9
-rw-r--r--plugins/sfffe/sfffe.plugin.zsh28
-rw-r--r--plugins/ssh-agent/ssh-agent.plugin.zsh4
-rwxr-xr-xplugins/sublime/sublime.plugin.zsh37
-rw-r--r--plugins/supervisor/_supervisord1
-rw-r--r--plugins/suse/suse.plugin.zsh68
-rw-r--r--plugins/symfony/symfony.plugin.zsh2
-rw-r--r--plugins/terminalapp/terminalapp.plugin.zsh2
-rw-r--r--plugins/themes/themes.plugin.zsh2
-rw-r--r--plugins/tmux/tmux.plugin.zsh16
-rwxr-xr-xplugins/wd2/wd2/wd.plugin.zsh9
-rwxr-xr-xplugins/wd2/wd2/wd.sh201
-rw-r--r--plugins/web-search/web-search.plugin.zsh21
-rw-r--r--plugins/z/Makefile4
-rw-r--r--plugins/z/README135
-rw-r--r--plugins/z/z.1155
-rw-r--r--plugins/z/z.plugin.zsh6
-rw-r--r--plugins/z/z.sh228
-rw-r--r--plugins/zeus/README.md10
-rw-r--r--plugins/zeus/zeus.plugin.zsh14
-rw-r--r--templates/zshrc.zsh-template7
-rw-r--r--themes/af-magic.zsh-theme2
-rw-r--r--themes/agnoster.zsh-theme77
-rw-r--r--themes/amuse.zsh-theme21
-rw-r--r--themes/bureau.zsh-theme113
-rw-r--r--themes/fino.zsh-theme22
-rw-r--r--themes/frisk.zsh-theme10
-rw-r--r--themes/gallois.zsh-theme4
-rw-r--r--themes/jonathan.zsh-theme61
-rw-r--r--themes/josh.zsh-theme2
-rw-r--r--themes/linuxonly.zsh-theme (renamed from themes/linuxonly)0
-rw-r--r--themes/peepcode.zsh-theme44
-rw-r--r--themes/pure.zsh-theme128
-rw-r--r--themes/pygmalion.zsh-theme35
-rw-r--r--themes/robbyrussell.zsh-theme3
-rw-r--r--themes/sonicradish.zsh-theme37
-rw-r--r--themes/sunrise.zsh-theme22
-rw-r--r--themes/superjarin.zsh-theme6
-rw-r--r--themes/wedisagree.zsh-theme5
-rw-r--r--themes/zhann.zsh-theme34
-rwxr-xr-xtools/install.sh9
-rwxr-xr-xtools/theme_chooser.sh3
-rw-r--r--tools/upgrade.sh2
104 files changed, 3843 insertions, 342 deletions
diff --git a/.gitignore b/.gitignore
index 51a5ee6c3..c2b47bba7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,9 @@
locals.zsh
log/.zsh_history
projects.zsh
-custom/*
-!custom/example
-!custom/example.zsh
+-custom/*
+-!custom/example
+-!custom/example.zsh
*.swp
!custom/example.zshcache
cache/
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!"
diff --git a/lib/aliases.zsh b/lib/aliases.zsh
index 2b58c4faa..b279bf855 100644
--- a/lib/aliases.zsh
+++ b/lib/aliases.zsh
@@ -13,11 +13,21 @@ 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'
+alias l='ls -la'
alias ll='ls -l'
alias la='ls -lA'
alias sl=ls # often screw this up
diff --git a/lib/bzr.zsh b/lib/bzr.zsh
new file mode 100644
index 000000000..005a16500
--- /dev/null
+++ b/lib/bzr.zsh
@@ -0,0 +1,10 @@
+## Bazaar integration
+## Just works with the GIT integration just add $(bzr_prompt_info) to the PROMPT
+function bzr_prompt_info() {
+ BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'`
+ if [ -n "$BZR_CB" ]; then
+ BZR_DIRTY=""
+ [[ -n `bzr status` ]] && BZR_DIRTY=" %{$fg[red]%} * %{$fg[green]%}"
+ echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX"
+ fi
+} \ No newline at end of file
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/git.zsh b/lib/git.zsh
index c4b5b5d62..305a77aff 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -1,8 +1,10 @@
# 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
- echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
+ if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then
+ 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"
+ fi
}
@@ -11,14 +13,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 +34,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 +54,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 +98,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 +123,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
diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh
index 5f499f3e8..49f80c8f3 100644
--- a/lib/key-bindings.zsh
+++ b/lib/key-bindings.zsh
@@ -30,6 +30,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
diff --git a/lib/nvm.zsh b/lib/nvm.zsh
new file mode 100644
index 000000000..5cadf7061
--- /dev/null
+++ b/lib/nvm.zsh
@@ -0,0 +1,9 @@
+# get the node.js version
+function nvm_prompt_info() {
+ [ -f $HOME/.nvm/nvm.sh ] || return
+ local nvm_prompt
+ nvm_prompt=$(node -v 2>/dev/null)
+ [[ "${nvm_prompt}x" == "x" ]] && return
+ nvm_prompt=${nvm_prompt:1}
+ echo "${ZSH_THEME_NVM_PROMPT_PREFIX}${nvm_prompt}${ZSH_THEME_NVM_PROMPT_SUFFIX}"
+}
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 2677615c0..0353f9db4 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -11,6 +11,10 @@ then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty'
+ elif [[ "$(uname -s)" == "OpenBSD" ]]; then
+ # On OpenBSD, test if "colorls" is installed (this one supports colors);
+ # otherwise, leave ls as is, because OpenBSD's ls doesn't support -G
+ colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G'
else
ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
fi
diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
index 93c10e3d2..2ae07668c 100644
--- a/oh-my-zsh.sh
+++ b/oh-my-zsh.sh
@@ -1,6 +1,5 @@
# Check for updates on initial load...
-if [ "$DISABLE_AUTO_UPDATE" != "true" ]
-then
+if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then
/usr/bin/env ZSH=$ZSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh $ZSH/tools/check_for_upgrade.sh
fi
@@ -38,10 +37,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
@@ -59,8 +68,7 @@ done
unset config_file
# Load the theme
-if [ "$ZSH_THEME" = "random" ]
-then
+if [ "$ZSH_THEME" = "random" ]; then
themes=($ZSH/themes/*zsh-theme)
N=${#themes[@]}
((N=(RANDOM%N)+1))
@@ -68,13 +76,10 @@ then
source "$RANDOM_THEME"
echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
else
- if [ ! "$ZSH_THEME" = "" ]
- then
- if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]
- then
+ if [ ! "$ZSH_THEME" = "" ]; then
+ 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
+ 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"
diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh
index f856f2f01..0aa14959d 100644
--- a/plugins/autojump/autojump.plugin.zsh
+++ b/plugins/autojump/autojump.plugin.zsh
@@ -5,6 +5,8 @@ if [ $commands[autojump] ]; then # check if autojump is installed
. /etc/profile.d/autojump.zsh
elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation
. /etc/profile.d/autojump.sh
+ elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation
+ . /usr/local/share/autojump/autojump.zsh
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
diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh
index 66bf46d13..9f053383a 100644
--- a/plugins/battery/battery.plugin.zsh
+++ b/plugins/battery/battery.plugin.zsh
@@ -79,4 +79,14 @@ elif [[ $(uname) == "Linux" ]] ; then
echo "∞"
fi
}
+else
+ # Empty functions so we don't cause errors in prompts
+ function battery_pct_remaining() {
+ }
+
+ function battery_time_remaining() {
+ }
+
+ function battery_pct_prompt() {
+ }
fi
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
-
- _arguments -C \
- ':command:->command' \
- '*::options:->options'
-
- case $state in
- (command)
-
- local -a subcommands
- subcommands=(${=$(bower help | grep help | sed -e 's/,//g')})
- _describe -t commands 'bower' subcommands
- ;;
-
- (options)
- case $line[1] in
-
- (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
+ local -a _1st_arguments _no_color _dopts _save_dev _force_lastest _production
+ local expl
+ typeset -A opt_args
+
+ _no_color=('--no-color[Do not print colors (available in all commands)]')
+
+ _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]'
+ )
+
+ _save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]')
+
+ _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
+
}
compdef _bower bower
diff --git a/plugins/brew/_brew b/plugins/brew/_brew
index e43ba2900..a25caf40c 100644
--- a/plugins/brew/_brew
+++ b/plugins/brew/_brew
@@ -26,8 +26,10 @@ _1st_arguments=(
'list:list files in a formula or not-installed formulae'
'log:git commit log for a formula'
'missing:check all installed formuale for missing dependencies.'
+ 'options:display install options specific to formula.'
'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)'
@@ -75,7 +77,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
diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index 9446aafab..4c3580cac 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -1,5 +1,4 @@
alias be="bundle exec"
-alias bi="bundle install"
alias bl="bundle list"
alias bp="bundle package"
alias bo="bundle open"
@@ -7,10 +6,29 @@ 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 strainer tailor taps thin thor unicorn unicorn_rails puma)
## Functions
+bi() {
+ if _bundler-installed && _within-bundled-project; then
+ local 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
+ bundle install --jobs=$cores_num $@
+ else
+ bundle install $@
+ fi
+ else
+ echo "Can't 'bundle install' outside a bundled project"
+ fi
+}
+
_bundler-installed() {
which bundle > /dev/null 2>&1
}
@@ -42,3 +60,4 @@ for cmd in $bundled_commands; do
compdef _$cmd bundled_$cmd=$cmd
fi
done
+
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
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
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
+}
diff --git a/plugins/chruby/chruby.plugin.zsh b/plugins/chruby/chruby.plugin.zsh
new file mode 100644
index 000000000..2a2c80cf6
--- /dev/null
+++ b/plugins/chruby/chruby.plugin.zsh
@@ -0,0 +1,99 @@
+#
+# INSTRUCTIONS
+#
+# With either a manual or brew installed chruby things should just work.
+#
+# If you'd prefer to specify an explicit path to load chruby from
+# you can set variables like so:
+#
+# zstyle :omz:plugins:chruby path /local/path/to/chruby.sh
+# zstyle :omz:plugins:chruby auto /local/path/to/auto.sh
+#
+# TODO
+# - autodetermine correct source path on non OS X systems
+# - completion if ruby-install exists
+
+# rvm and rbenv plugins also provide this alias
+alias rubies='chruby'
+
+local _chruby_path
+local _chruby_auto
+
+_homebrew-installed() {
+ whence brew &> /dev/null
+}
+
+_chruby-from-homebrew-installed() {
+ brew --prefix chruby &> /dev/null
+}
+
+_ruby-build_installed() {
+ whence ruby-build &> /dev/null
+}
+
+_ruby-install-installed() {
+ whence ruby-install &> /dev/null
+}
+
+# Simple definition completer for ruby-build
+if _ruby-build_installed; then
+ _ruby-build() { compadd $(ruby-build --definitions) }
+ compdef _ruby-build ruby-build
+fi
+
+_source_from_omz_settings() {
+ zstyle -s :omz:plugins:chruby path _chruby_path
+ zstyle -s :omz:plugins:chruby auto _chruby_auto
+
+ if _chruby_path && [[ -r _chruby_path ]]; then
+ source ${_chruby_path}
+ fi
+
+ if _chruby_auto && [[ -r _chruby_auto ]]; then
+ source ${_chruby_auto}
+ fi
+}
+
+_chruby_dirs() {
+ chrubydirs=($HOME/.rubies/ $PREFIX/opt/rubies)
+ for dir in chrubydirs; do
+ if [[ -d $dir ]]; then
+ RUBIES+=$dir
+ fi
+ done
+}
+
+if _homebrew-installed && _chruby-from-homebrew-installed ; then
+ source $(brew --prefix chruby)/share/chruby/chruby.sh
+ source $(brew --prefix chruby)/share/chruby/auto.sh
+ _chruby_dirs
+elif [[ -r "/usr/local/share/chruby/chruby.sh" ]] ; then
+ source /usr/local/share/chruby/chruby.sh
+ source /usr/local/share/chruby/auto.sh
+ _chruby_dirs
+else
+ _source_from_omz_settings
+ _chruby_dirs
+fi
+
+function ensure_chruby() {
+ $(whence chruby)
+}
+
+function current_ruby() {
+ local _ruby
+ _ruby="$(chruby |grep \* |tr -d '* ')"
+ if [[ $(chruby |grep -c \*) -eq 1 ]]; then
+ echo ${_ruby}
+ else
+ echo "system"
+ fi
+}
+
+function chruby_prompt_info() {
+ echo "$(current_ruby)"
+}
+
+# complete on installed rubies
+_chruby() { compadd $(chruby | tr -d '* ') }
+compdef _chruby chruby
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
diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index 2d1557541..9975aaca4 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -10,9 +10,25 @@ _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
diff --git a/plugins/docker/README.md b/plugins/docker/README.md
new file mode 100644
index 000000000..231a6dcf5
--- /dev/null
+++ 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))
diff --git a/plugins/docker/_docker b/plugins/docker/_docker
new file mode 100644
index 000000000..f13f876cf
--- /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_containers
+}
+
+__stop() {
+ _arguments '-t=[number of seconds to try to stop before killing]'
+ __docker_containers
+}
+
+__tag() {
+ _arguments '-f[Force]'
+ __docker_images
+}
+
+__version() {
+
+}
+
+__wait() {
+ __docker_containers
+}
+
+# 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
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 23e86c593..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) unzip "$1" -d $extract_dir ;;
+ (*.zip|*.war|*.jar) unzip "$1" -d $extract_dir ;;
(*.rar) unrar x -ad "$1" ;;
(*.7z) 7za x "$1" ;;
(*.deb)
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 [<folder>]
@@ -22,9 +23,33 @@ function fl {
fi
fi
osascript 2>&1 1>/dev/null <<END
- tell application "ForkLift"
- activate
- end tell
+
+ try
+ tell application "Finder"
+ set appName to name of application file id "com.binarynights.ForkLift2"
+ end tell
+ on error err_msg number err_num
+ tell application "Finder"
+ set appName to name of application file id "com.binarynights.ForkLift"
+ end tell
+ end try
+
+ if application appName is running
+ tell application appName
+ activate
+ end tell
+ else
+ tell application appName
+ activate
+ end tell
+ repeat until application appName is running
+ delay 1
+ end repeat
+ tell application appName
+ activate
+ end tell
+ end if
+
tell application "System Events"
tell application process "ForkLift"
try
@@ -36,7 +61,7 @@ function fl {
keystroke "g" using {command down, shift down}
tell sheet 1 of topWindow
set value of text field 1 to "$PWD"
- keystroke return
+ keystroke return
end tell
end tell
end tell
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
diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index ab9c0c848..b9ea06844 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -20,6 +20,12 @@
# c. Or, use this file as a oh-my-zsh plugin.
#
+#Alias
+alias gf='git flow'
+alias gcd='git checkout develop'
+alias gch='git checkout hotfix'
+alias gcr='git checkout release'
+
_git-flow ()
{
local curcontext="$curcontext" state line
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])
+
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..6b9c1a483
--- /dev/null
+++ b/plugins/git/_git-branch
@@ -0,0 +1,83 @@
+#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
+}
+
+(( $+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
+}
+
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..7b3cec27d 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'
@@ -22,6 +24,8 @@ alias gca='git commit -v -a'
compdef _git gc=git-commit
alias gca!='git commit -v -a --amend'
compdef _git gca!=git-commit
+alias gcmsg='git commit -m'
+compdef _git gcmsg=git-commit
alias gco='git checkout'
compdef _git gco=git-checkout
alias gcm='git checkout master'
@@ -37,6 +41,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'
@@ -46,9 +56,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
@@ -62,9 +72,24 @@ 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'
+
+#remove the gf alias
+#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 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.
@@ -95,6 +120,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)'
@@ -108,3 +135,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 2>/dev/null | 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'
diff --git a/plugins/gitignore/gitignore.plugin.zsh b/plugins/gitignore/gitignore.plugin.zsh
new file mode 100644
index 000000000..332497cec
--- /dev/null
+++ b/plugins/gitignore/gitignore.plugin.zsh
@@ -0,0 +1,12 @@
+function gi() { curl http://gitignore.io/api/$@ ;}
+
+_gitignireio_get_command_list() {
+ curl -s http://gitignore.io/api/list | tr "," "\n"
+}
+
+_gitignireio () {
+ compset -P '*,'
+ compadd -S '' `_gitignireio_get_command_list`
+}
+
+compdef _gitignireio gi \ No newline at end of file
diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index 109af44c8..3e6a34f42 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -14,16 +14,27 @@ 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
+ export GPG_AGENT_INFO
+ export SSH_AUTH_SOCK
+ export SSH_AGENT_PID
+ 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 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
+ # 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)
diff --git a/plugins/heroku/_heroku b/plugins/heroku/_heroku
index a95c38647..46663303a 100644
--- a/plugins/heroku/_heroku
+++ b/plugins/heroku/_heroku
@@ -23,8 +23,10 @@ _1st_arguments=(
"auth\:login":"log in with your heroku credentials"
"auth\:logout":"clear local authentication credentials"
"config":"display the config vars for an app"
- "config\:add":"add one or more config vars"
- "config\:remove":"remove a config var"
+ "config\:pull":"pull heroku config vars down to the local environment"
+ "config\:push":"push local config vars to heroku"
+ "config\:set":"set one or more config vars"
+ "config\:unset":"unset one or more config vars"
"db\:push":"push local data up to your app"
"db\:pull":"pull heroku data down into your local database"
"domains":"list custom domains for an app"
diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh
index bea726a54..739ee7142 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
@@ -31,10 +31,10 @@ open_jira_issue () {
if [ -z "$1" ]; then
echo "Opening new issue"
- `open $jira_url/secure/CreateIssue!default.jspa`
+ $open_cmd "$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"
diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
new file mode 100644
index 000000000..5096879d8
--- /dev/null
+++ b/plugins/jump/jump.plugin.zsh
@@ -0,0 +1,58 @@
+# 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
+
+jump() {
+ cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
+}
+
+mark() {
+ if (( $# == 0 )); then
+ MARK=$(basename "$(pwd)")
+ else
+ MARK="$1"
+ fi
+ if read -q \?"Mark $(pwd) as ${MARK}? (y/n) "; then
+ mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$MARK"
+ fi
+}
+
+unmark() {
+ rm -i "$MARKPATH/$1"
+}
+
+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
+}
+
+_completemarks() {
+ 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
+
+_mark_expansion() {
+ setopt extendedglob
+ autoload -U modify-current-argument
+ modify-current-argument '$(readlink "$MARKPATH/$ARG")'
+}
+zle -N _mark_expansion
+bindkey "^g" _mark_expansion
diff --git a/plugins/knife_ssh/knife_ssh.plugin.zsh b/plugins/knife_ssh/knife_ssh.plugin.zsh
new file mode 100644
index 000000000..7fdd42a1e
--- /dev/null
+++ b/plugins/knife_ssh/knife_ssh.plugin.zsh
@@ -0,0 +1,18 @@
+function knife_ssh() {
+ grep -q $1 ~/.knife_comp~ 2> /dev/null || 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 $(<~/.knife_comp~)
+ else
+ echo "Could not find knife" > /dev/stderr;
+ fi
+}
+
+compdef _knife_ssh knife_ssh
diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
index 9aa2d167a..d2db89d04 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'
@@ -14,11 +13,52 @@ alias hglr='hg pull --rebase'
alias hgo='hg outgoing'
alias hgp='hg push'
alias hgs='hg status'
+alias hgsl='log --limit 20 --template "{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n" '
# 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
+}
+
+function hgic() {
+ hg incoming "$@" | grep "changeset" | wc -l
+}
+
+function hgoc() {
+ hg outgoing "$@" | grep "changeset" | wc -l
+}
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
+
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
diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh
index 799f6fc8c..0c9141907 100644
--- a/plugins/mvn/mvn.plugin.zsh
+++ b/plugins/mvn/mvn.plugin.zsh
@@ -24,16 +24,18 @@ export RESET_FORMATTING=`tput sgr0`
# Wrapper function for Maven's mvn command.
mvn-color()
{
- # Filter mvn output using sed
- mvn $@ | sed -e "s/\(\[INFO\]\ \-.*\)/${TEXT_BLUE}${BOLD}\1/g" \
- -e "s/\(\[INFO\]\ \[.*\)/${RESET_FORMATTING}${BOLD}\1${RESET_FORMATTING}/g" \
+ (
+ # Filter mvn output using sed. Before filtering set the locale to C, so invalid characters won't break some sed implementations
+ unset LANG
+ LC_CTYPE=C mvn $@ | sed -e "s/\(\[INFO\]\)\(.*\)/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}\2/g" \
-e "s/\(\[INFO\]\ BUILD SUCCESSFUL\)/${BOLD}${TEXT_GREEN}\1${RESET_FORMATTING}/g" \
- -e "s/\(\[WARNING\].*\)/${BOLD}${TEXT_YELLOW}\1${RESET_FORMATTING}/g" \
- -e "s/\(\[ERROR\].*\)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" \
+ -e "s/\(\[WARNING\]\)\(.*\)/${BOLD}${TEXT_YELLOW}\1${RESET_FORMATTING}\2/g" \
+ -e "s/\(\[ERROR\]\)\(.*\)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}\2/g" \
-e "s/Tests run: \([^,]*\), Failures: \([^,]*\), Errors: \([^,]*\), Skipped: \([^,]*\)/${BOLD}${TEXT_GREEN}Tests run: \1${RESET_FORMATTING}, Failures: ${BOLD}${TEXT_RED}\2${RESET_FORMATTING}, Errors: ${BOLD}${TEXT_RED}\3${RESET_FORMATTING}, Skipped: ${BOLD}${TEXT_YELLOW}\4${RESET_FORMATTING}/g"
# Make sure formatting is reset
echo -ne ${RESET_FORMATTING}
+ )
}
# Override the mvn command with the colorized one.
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"
}
diff --git a/plugins/nvm/_nvm b/plugins/nvm/_nvm
new file mode 100644
index 000000000..a95c9e375
--- /dev/null
+++ b/plugins/nvm/_nvm
@@ -0,0 +1,26 @@
+#compdef nvm
+#autoload
+
+[[ -s ~/.nvm/nvm.sh ]] || return 0
+
+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
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 51cd7c143..608ec3789 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
@@ -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 <option>"
+ echo "option:"
+ echo "\tlaunch|play|pause|stop|rewind|resume|quit"
+ echo "\tmute|unmute\tcontrol volume set"
+ echo "\tnext|previous\tplay next or previous track"
+ echo "\thelp\tshow this message and exit"
+ return 0
+ ;;
+ *)
+ print "Unkonwn option: $opt"
+ return 1
+ ;;
+ esac
+ osascript -e "tell application \"iTunes\" to $opt"
+}
+
diff --git a/plugins/pass/_pass b/plugins/pass/_pass
index f6c1a6c4b..d8ec38828 100644
--- a/plugins/pass/_pass
+++ b/plugins/pass/_pass
@@ -101,7 +101,7 @@ _pass_cmd_show () {
_pass_complete_entries_helper () {
local IFS=$'\n'
local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
- _values -C 'passwords' $(find "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort)
+ _values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort)
}
_pass_complete_entries_with_subdirs () {
diff --git a/plugins/pip/_pip b/plugins/pip/_pip
index df53ba5ce..967da48ca 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]'))
+ zsh-pip-cache-packages
+ piplist=($(cat $ZSH_PIP_CACHE_FILE))
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
diff --git a/plugins/pip/pip.plugin.zsh b/plugins/pip/pip.plugin.zsh
new file mode 100644
index 000000000..b5433ae9d
--- /dev/null
+++ b/plugins/pip/pip.plugin.zsh
@@ -0,0 +1,78 @@
+# Usage:
+# Just add pip to your installed plugins.
+
+# If you would like to change the cheeseshops used for autocomplete set
+# ZSH_PIP_INDEXES in your zshrc. If one of your indexes are bogus you won't get
+# any kind of error message, pip will just not autocomplete from them. Double
+# check!
+#
+# If you would like to clear your cache, go ahead and do a
+# "zsh-pip-clear-cache".
+
+ZSH_PIP_CACHE_FILE=~/.pip/zsh-cache
+ZSH_PIP_INDEXES=(https://pypi.python.org/simple/)
+
+zsh-pip-clear-cache() {
+ rm $ZSH_PIP_CACHE_FILE
+ unset piplist
+}
+
+zsh-pip-clean-packages() {
+ sed -n '/<a href/ s/.*>\([^<]\{1,\}\).*/\1/p'
+}
+
+zsh-pip-cache-packages() {
+ if [[ ! -d ${ZSH_PIP_CACHE_FILE:h} ]]; then
+ mkdir -p ${ZSH_PIP_CACHE_FILE:h}
+ fi
+
+ if [[ ! -f $ZSH_PIP_CACHE_FILE ]]; then
+ echo -n "(...caching package index...)"
+ tmp_cache=/tmp/zsh_tmp_cache
+ for index in $ZSH_PIP_INDEXES ; do
+ # well... I've already got two problems
+ curl $index 2>/dev/null | \
+ zsh-pip-clean-packages \
+ >> $tmp_cache
+ done
+ sort $tmp_cache | uniq | tr '\n' ' ' > $ZSH_PIP_CACHE_FILE
+ rm $tmp_cache
+ fi
+}
+
+# A test function that validates the regex against known forms of the simple
+# index. If you modify the regex to make it work for you, you should add a test
+# case in here and make sure that your changes don't break things for someone
+# else.
+zsh-pip-test-clean-packages() {
+ local expected
+ local actual
+ expected="0x10c-asm
+1009558_nester"
+
+ actual=$(echo -n "<html><head><title>Simple Index</title><meta name=\"api-version\" value=\"2\" /></head><body>
+<a href='0x10c-asm'>0x10c-asm</a><br/>
+<a href='1009558_nester'>1009558_nester</a><br/>
+</body></html>" | zsh-pip-clean-packages)
+
+ if [[ $actual != $expected ]] ; then
+ echo -e "python's simple index is broken:\n$actual\n !=\n$expected"
+ else
+ echo "python's simple index is fine"
+ fi
+
+ actual=$(echo -n '<html>
+ <head>
+ <title>Simple Package Index</title>
+ </head>
+ <body>
+ <a href="0x10c-asm">0x10c-asm</a><br/>
+ <a href="1009558_nester">1009558_nester</a><br/>
+</body></html>' | zsh-pip-clean-packages)
+
+ if [[ $actual != $expected ]] ; then
+ echo -e "the djangopypi2 index is broken:\n$actual\n !=\n$expected"
+ else
+ echo "the djangopypi2 index is fine"
+ fi
+}
diff --git a/plugins/pod/_pod b/plugins/pod/_pod
new file mode 100644
index 000000000..8c0f4460f
--- /dev/null
+++ b/plugins/pod/_pod
@@ -0,0 +1,389 @@
+#compdef pod
+#autoload
+
+# -----------------------------------------------------------------------------
+# FILE: _pod
+# DESCRIPTION: Cocoapods (0.27.1) 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.3
+# 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'
+ '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'
+)
+
+local -a _repo_arguments
+_repo_arguments=(
+ 'add:Add a spec repo'
+ 'lint:Validates all specs in a repo'
+ 'remove:Remove a spec repo.'
+ 'update:Update a spec repo'
+)
+
+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 _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'
+)
+
+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]' \
+ '*: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]' \
+ '*:script or directory:_files'
+)
+
+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]' \
+ '*:script or directory:_files'
+)
+
+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
+ declare -a tasks
+
+ tasks=(install ipc list outdated podfile-info push repo search setup spec update)
+
+ _wanted tasks expl 'help' compadd $tasks
+}
+
+__repo_list() {
+ _wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods/repos 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 "pod repo" _repo_arguments
+ return
+ ;;
+
+ (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
+
+ (remove)
+ _arguments \
+ $_inherited_options \
+ ':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 "pod spec" _spec_arguments
+ return
+ ;;
+
+ (options)
+ 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
+}
+
+__pod-ipc() {
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ _describe -t commands "pod ipc" _ipc_arguments
+ return
+ ;;
+
+ (options)
+ _arguments -C \
+ $_inherited_options
+ return
+ ;;
+ esac
+}
+
+__pod-list() {
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ $_inherited_options \
+ $_list_options \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ _describe -t commands "pod list" _list_arguments
+ return
+ ;;
+
+ (options)
+ _arguments -C \
+ $_inherited_options \
+ $_list_options
+ return
+ ;;
+ esac
+}
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+ $_inherited_options \
+ ':command:->command' \
+ '*::options:->options'
+
+case $state in
+ (command)
+ _describe -t commands "pod" _1st_arguments
+ return
+ ;;
+
+ (options)
+ case $line[1] in
+ (help)
+ _arguments \
+ $_inherited_options \
+ ':help:__first_command_list'
+ ;;
+
+ (push)
+ _arguments \
+ $_inherited_options \
+ $_push_options \
+ ':repo:__repo_list'
+ ;;
+
+ (repo)
+ __pod-repo
+ ;;
+
+ (spec)
+ __pod-spec
+ ;;
+
+ (ipc)
+ __pod-ipc
+ ;;
+
+ (list)
+ __pod-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
diff --git a/plugins/pyenv/pyenv.plugin.zsh b/plugins/pyenv/pyenv.plugin.zsh
new file mode 100644
index 000000000..b3dc7aa17
--- /dev/null
+++ b/plugins/pyenv/pyenv.plugin.zsh
@@ -0,0 +1,31 @@
+_homebrew-installed() {
+ type brew &> /dev/null
+}
+
+_pyenv-from-homebrew-installed() {
+ brew --prefix pyenv &> /dev/null
+}
+
+FOUND_PYENV=0
+pyenvdirs=("$HOME/.pyenv" "/usr/local/pyenv" "/opt/pyenv")
+if _homebrew-installed && _pyenv-from-homebrew-installed ; then
+ pyenvdirs=($(brew --prefix pyenv) "${pyenvdirs[@]}")
+fi
+
+for pyenvdir in "${pyenvdirs[@]}" ; do
+ if [ -d $pyenvdir/bin -a $FOUND_PYENV -eq 0 ] ; then
+ FOUND_PYENV=1
+ export PYENV_ROOT=$pyenvdir
+ export PATH=${pyenvdir}/bin:$PATH
+ eval "$(pyenv init --no-rehash - zsh)"
+
+ function pyenv_prompt_info() {
+ echo "$(pyenv version-name)"
+ }
+ fi
+done
+unset pyenvdir
+
+if [ $FOUND_PYENV -eq 0 ] ; then
+ function pyenv_prompt_info() { echo "system: $(python -V 2>&1 | cut -f 2 -d ' ')" }
+fi
diff --git a/plugins/python/python.plugin.zsh b/plugins/python/python.plugin.zsh
index 852c8b919..a8f9760ad 100644
--- a/plugins/python/python.plugin.zsh
+++ b/plugins/python/python.plugin.zsh
@@ -6,6 +6,7 @@ alias pyfind='find . -name "*.py"'
function pyclean() {
ZSH_PYCLEAN_PLACES=${*:-'.'}
find ${ZSH_PYCLEAN_PLACES} -type f -name "*.py[co]" -delete
+ find ${ZSH_PYCLEAN_PLACES} -type d -name "__pycache__" -delete
}
# Grep among .py files
diff --git a/plugins/rails/_rails b/plugins/rails/_rails
new file mode 100644
index 000000000..96f57ce64
--- /dev/null
+++ b/plugins/rails/_rails
@@ -0,0 +1,63 @@
+#compdef rails
+#autoload
+
+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'
+
+ 'plugin new:Generates skeleton for developing a Rails plugin'
+ 'runner:Run a piece of code in the application environment (short-cut alias: "r")'
+)
+
+_rails_generate_arguments() {
+ generate_arguments=(
+ assets
+ controller
+ decorator
+ generator
+ helper
+ integration_test
+ mailer
+ migration
+ model
+ observer
+ performance_test
+ plugin
+ resource
+ scaffold
+ scaffold_controller
+ session_migration
+ stylesheets
+ task
+ )
+}
+
+
+_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
+ g|generate)
+ _rails_generate_arguments
+ _wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;;
+ d|destroy)
+ _rails_generate_arguments
+ _wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;;
+esac
diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index 0139d22c3..23d15a9a1 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -1,18 +1,70 @@
+function _rails_command () {
+ if [ -e "script/server" ]; then
+ ruby script/$@
+ elif [ -e "script/rails" ]; then
+ ruby script/rails $@
+ elif [ -e "bin/rails" ]; then
+ bin/rails $@
+ else
+ rails $@
+ fi
+}
+
+function _rake_command () {
+ if [ -e "bin/rake" ]; then
+ bin/rake $@
+ else
+ rake $@
+ fi
+}
+
+alias rails='_rails_command'
+compdef _rails_command=rails
+
+alias rake='_rake_command'
+compdef _rake_command=rake
+
+alias devlog='tail -f log/development.log'
+alias prodlog='tail -f log/production.log'
+alias testlog='tail -f log/test.log'
+
+alias -g RED='RAILS_ENV=development'
+alias -g REP='RAILS_ENV=production'
+alias -g RET='RAILS_ENV=test'
+
+# Rails aliases
+alias rc='rails console'
+alias rd='rails destroy'
+alias rdb='rails dbconsole'
+alias rg='rails generate'
+alias rgm='rails generate migration'
+alias rp='rails plugin'
+alias ru='rails runner'
+alias rs='rails server'
+alias rsd='rails server --debugger'
+
+# Rake aliases
+alias rdm='rake db:migrate'
+alias rdr='rake db:rollback'
+alias rdc='rake db:create'
+alias rds='rake db:seed'
+alias rdd='rake db:drop'
+alias rdtc='rake db:test:clone'
+alias rdtp='rake db:test:prepare'
+
+alias rlc='rake log:clear'
+alias rn='rake notes'
+alias rr='rake routes'
+
+# legacy stuff
alias ss='thin --stats "/thin/stats" start'
alias sg='ruby script/generate'
alias sd='ruby script/destroy'
alias sp='ruby script/plugin'
alias sr='ruby script/runner'
alias ssp='ruby script/spec'
-alias rdbm='rake db:migrate'
-alias rdbtp='rake db:test:prepare'
-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 -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 a2697872a..261b92108 100644
--- a/plugins/rails3/rails3.plugin.zsh
+++ b/plugins/rails3/rails3.plugin.zsh
@@ -1,26 +1,4 @@
-# Rails 3 aliases, backwards-compatible with Rails 2.
-
-function _rails_command () {
- if [ -e "script/server" ]; then
- ruby script/$@
- else
- ruby script/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 -g RET='RAILS_ENV=test'
-alias -g REP='RAILS_ENV=production'
-alias -g RED='RAILS_ENV=development'
+echo "It looks like you have been using the 'rails3' plugin,"
+echo "which has been deprecated in favor of a newly consolidated 'rails' plugin."
+echo "You will want to modify your ~/.zshrc configuration to begin using it."
+echo "Learn more at https://github.com/robbyrussell/oh-my-zsh/pull/2240"
diff --git a/plugins/rails4/rails4.plugin.zsh b/plugins/rails4/rails4.plugin.zsh
index fce827ee3..5452c242c 100644
--- a/plugins/rails4/rails4.plugin.zsh
+++ b/plugins/rails4/rails4.plugin.zsh
@@ -1,30 +1,4 @@
-# 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 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'
+echo "It looks like you have been using the 'rails4' plugin,"
+echo "which has been deprecated in favor of a newly consolidated 'rails' plugin."
+echo "You will want to modify your ~/.zshrc configuration to begin using it."
+echo "Learn more at https://github.com/robbyrussell/oh-my-zsh/pull/2240"
diff --git a/plugins/rand-quote/rand-quote.plugin.zsh b/plugins/rand-quote/rand-quote.plugin.zsh
new file mode 100644
index 000000000..5544ca565
--- /dev/null
+++ b/plugins/rand-quote/rand-quote.plugin.zsh
@@ -0,0 +1,17 @@
+# 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
+# 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
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>...'
+ 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 | <project>...]'
+
+ 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'
diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
index cdd0a7847..3bde154df 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
@@ -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
@@ -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.
diff --git a/plugins/sfffe/sfffe.plugin.zsh b/plugins/sfffe/sfffe.plugin.zsh
new file mode 100644
index 000000000..a0f034908
--- /dev/null
+++ b/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'
+}
diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index 7468749f8..a1e64ad0f 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
@@ -57,7 +57,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
diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
index 82faf87c9..566279183 100755
--- a/plugins/sublime/sublime.plugin.zsh
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -2,29 +2,32 @@
local _sublime_darwin_paths > /dev/null 2>&1
_sublime_darwin_paths=(
- "/usr/local/bin/subl"
- "$HOME/Applications/Sublime Text 2.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"
+ "/usr/local/bin/subl"
+ "$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
+ "$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
+ "$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
+ "/Applications/Sublime Text 3.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
- if [ -f '/usr/bin/sublime_text' ]; then
- st_run() { nohup /usr/bin/sublime_text $@ > /dev/null & }
- else
- st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & }
- fi
- alias st=st_run
+ if [ -f '/usr/bin/sublime_text' ]; then
+ st_run() { nohup /usr/bin/sublime_text $@ > /dev/null & }
+ else
+ st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & }
+ fi
+ alias st=st_run
elif [[ $('uname') == 'Darwin' ]]; then
- for _sublime_path in $_sublime_darwin_paths; do
- if [[ -a $_sublime_path ]]; then
- alias st="'$_sublime_path'"
- break
- fi
- done
+ for _sublime_path in $_sublime_darwin_paths; do
+ if [[ -a $_sublime_path ]]; then
+ alias subl="'$_sublime_path'"
+ alias st=subl
+ break
+ fi
+ done
fi
alias stt='st .'
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]" \
diff --git a/plugins/suse/suse.plugin.zsh b/plugins/suse/suse.plugin.zsh
index d46286948..afd8ecabd 100644
--- a/plugins/suse/suse.plugin.zsh
+++ b/plugins/suse/suse.plugin.zsh
@@ -1,7 +1,61 @@
-alias zi='sudo zypper install'
-alias zrf='sudo zypper refresh'
-alias zs='zypper search'
-alias zup='sudo zypper dist-upgrade'
-alias zrm='sudo zypper remove'
-alias zp='sudo zypper patch'
-alias zps='sudo zypper ps'
+#Alias for Zypper according to the offical Zypper's alias
+
+#Main commands
+alias z='sudo zypper' #call zypper
+alias zh='sudo zypper -h' #print help
+alias zhse='sudo zypper -h se' #print help for the search command
+alias zlicenses='sudo zypper licenses' #prints a report about licenses and EULAs of installed packages
+alias zps='sudo zypper ps' #list process using deleted files
+alias zshell='sudo zypper shell' #open a zypper shell session
+alias zsource-download='sudo zypper source-download' #download source rpms for all installed packages
+alias ztos='sudo zypper tos' #shows the ID string of the target operating system
+alias zvcmp='sudo zypper vcmp' #tell whether version1 is older or newer than version2
+
+#Packages commands
+alias zin='sudo zypper in' #install packages
+alias zinr='sudo zypper inr' #install newly added packages recommended by already installed ones
+alias zrm='sudo zypper rm' #remove packages
+alias zsi='sudo zypper si' #install source of a package
+alias zve='sudo zypper ve' #verify dependencies of installed packages
+
+#Updates commands
+alias zdup='sudo zypper dup' #upgrade packages
+alias zlp='sudo zypper lp' #list necessary patchs
+alias zlu='sudo zypper lu' #list updates
+alias zpchk='sudo zypper pchk' #check for patches
+alias zup='sudo zypper up' #update packages
+alias zpatch='sudo zypper patch' #install patches
+
+#Request commands
+alias zif='sudo zypper if' #display info about packages
+alias zpa='sudo zypper pa' #list packages
+alias zpatch-info='sudo zypper patch-info' #display info about patches
+alias zpattern-info='sudo zypper patch-info' #display info about patterns
+alias zproduct-info='sudo zypper patch-info' #display info about products
+alias zpch='sudo zypper pch' #list all patches
+alias zpd='sudo zypper pd' #list products
+alias zpt='sudo zypper pt' #list patterns
+alias zse='sudo zypper se' #search for packages
+alias zwp='sudo zypper wp' #list all packages providing the specified capability
+
+#Repositories commands
+alias zar='sudo zypper ar' #add a repository
+alias zcl='sudo zypper clean' #clean cache
+alias zlr='sudo zypper lr' #list repositories
+alias zmr='sudo zypper mr' #modify repositories
+alias znr='sudo zypper nr' #rename repositories (for the alias only)
+alias zref='sudo zypper ref' #refresh repositories
+alias zrr='sudo zypper rr' #remove repositories
+
+#Services commands
+alias zas='sudo zypper as' #adds a service specified by URI to the system
+alias zms='sudo zypper ms' #modify properties of specified services
+alias zrefs='sudo zypper refs' #refreshing a service mean executing the service's special task
+alias zrs='sudo zypper rs' #remove specified repository index service from the sytem
+alias zls='sudo zypper ls' #list services defined on the system
+
+#Package Locks Management commands
+alias zal='sudo zypper al' #add a package lock
+alias zcl='sudo zypper cl' #Remove unused locks
+alias zll='sudo zypper ll' #list currently active package locks
+alias zrl='sudo zypper rl' #remove specified package lock
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 () {
diff --git a/plugins/terminalapp/terminalapp.plugin.zsh b/plugins/terminalapp/terminalapp.plugin.zsh
index 2249b1e2f..6e47ee188 100644
--- a/plugins/terminalapp/terminalapp.plugin.zsh
+++ b/plugins/terminalapp/terminalapp.plugin.zsh
@@ -32,7 +32,7 @@ if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
# Register the function so it is called whenever the working
# directory changes.
autoload add-zsh-hook
- add-zsh-hook chpwd update_terminal_cwd
+ add-zsh-hook precmd update_terminal_cwd
# Tell the terminal about the initial directory.
update_terminal_cwd
diff --git a/plugins/themes/themes.plugin.zsh b/plugins/themes/themes.plugin.zsh
index 8bab257ea..7519b0253 100644
--- a/plugins/themes/themes.plugin.zsh
+++ b/plugins/themes/themes.plugin.zsh
@@ -1,6 +1,6 @@
function theme
{
- if [ "$1" = "random" ]; then
+ if [ -z "$1" ] || [ "$1" = "random" ]; then
themes=($ZSH/themes/*zsh-theme)
N=${#themes[@]}
((N=(RANDOM%N)+1))
diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 465f5b053..626c41f3d 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -1,3 +1,11 @@
+#
+# Aliases
+#
+
+alias ta='tmux attach -t'
+alias ts='tmux new-session -s'
+alias tl='tmux list-sessions'
+
# Only run if tmux is actually installed
if which tmux &> /dev/null
then
@@ -14,6 +22,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
@@ -36,7 +46,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"
@@ -55,11 +65,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
}
diff --git a/plugins/wd2/wd2/wd.plugin.zsh b/plugins/wd2/wd2/wd.plugin.zsh
new file mode 100755
index 000000000..e0846ffd9
--- /dev/null
+++ b/plugins/wd2/wd2/wd.plugin.zsh
@@ -0,0 +1,9 @@
+#!/bin/zsh
+
+# WARP
+# ====
+# oh-my-zsh plugin
+#
+# @github.com/mfaerevaag/wd
+
+alias wd='. ~/.oh-my-zsh/plugins/wd/wd.sh'
diff --git a/plugins/wd2/wd2/wd.sh b/plugins/wd2/wd2/wd.sh
new file mode 100755
index 000000000..7852028c0
--- /dev/null
+++ b/plugins/wd2/wd2/wd.sh
@@ -0,0 +1,201 @@
+#!/bin/zsh
+
+# WARP
+# ====
+# Jump to custom directories in terminal
+# because `cd` takes too long...
+#
+# @github.com/mfaerevaag/wd
+
+
+## variables
+CONFIG=$HOME/.warprc
+
+## colors
+BLUE="\033[96m"
+GREEN="\033[92m"
+YELLOW="\033[93m"
+RED="\033[91m"
+NOC="\033[m"
+
+
+## load warp points
+typeset -A points
+while read line
+do
+ arr=(${(s,:,)line})
+ key=${arr[1]}
+ val=${arr[2]}
+
+ points[$key]=$val
+done < $CONFIG
+
+
+## functions
+# prepended wd_ to not conflict with your environment (no sub shell)
+
+wd_warp()
+{
+ if [[ $1 =~ "^\.+$" ]]
+ then
+ if [[ $#1 < 2 ]]
+ then
+ wd_print_msg $YELLOW "Warping to current directory?"
+ else
+ (( n = $#1 - 1 ))
+ wd_print_msg $BLUE "Warping..."
+ cd -$n > /dev/null
+ fi
+ elif [[ ${points[$1]} != "" ]]
+ then
+ wd_print_msg $BLUE "Warping..."
+ cd ${points[$1]}
+ else
+ wd_print_msg $RED "Unkown warp point '$1'"
+ fi
+}
+
+wd_add()
+{
+ if [[ $1 =~ "^\.+$" ]]
+ then
+ wd_print_msg $RED "Illeagal warp point (see README)."
+ elif [[ ${points[$1]} == "" ]] || $2
+ then
+ wd_remove $1 > /dev/null
+ print "$1:$PWD" >> $CONFIG
+ wd_print_msg $GREEN "Warp point added"
+ else
+ wd_print_msg $YELLOW "Warp point '$1' alredy exists. Use 'add!' to overwrite."
+ fi
+}
+
+wd_remove()
+{
+ if [[ ${points[$1]} != "" ]]
+ then
+ if wd_tmp=`sed "/^$1:/d" $CONFIG`
+ then
+ echo $wd_tmp > $CONFIG
+ wd_print_msg $GREEN "Warp point removed"
+ else
+ wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!"
+ fi
+ else
+ wd_print_msg $RED "Warp point was not found"
+ fi
+}
+
+wd_show()
+{
+ wd_print_msg $BLUE "Warp points to current directory:"
+ wd_list_all | grep $PWD$
+}
+
+wd_list_all()
+{
+ wd_print_msg $BLUE "All warp points:"
+ while read line
+ do
+ if [[ $line != "" ]]
+ then
+ arr=(${(s,:,)line})
+ key=${arr[1]}
+ val=${arr[2]}
+
+ print "\t" $key "\t -> \t" $val
+ fi
+ done < $CONFIG
+}
+
+wd_print_msg()
+{
+ if [[ $1 == "" || $2 == "" ]]
+ then
+ print " $RED*$NOC Could not print message. Sorry!"
+ else
+ print " $1*$NOC $2"
+ fi
+}
+
+wd_print_usage()
+{
+ print "Usage: wd [add|-a|--add] [rm|-r|--remove] [ls|-l|--list] <point>"
+ print "\nCommands:"
+ print "\t add \t Adds the current working directory to your warp points"
+ print "\t add! \t Overwrites existing warp point"
+ print "\t remove Removes the given warp point"
+ print "\t list \t Outputs all stored warp points"
+ print "\t help \t Show this extremely helpful text"
+}
+
+
+## run
+
+# get opts
+args=`getopt -o a:r:lhs -l add:,remove:,list,help,show -- $*`
+
+if [[ $? -ne 0 || $#* -eq 0 ]]
+then
+ wd_print_usage
+else
+ # can't exit, as this would exit the excecuting shell
+ # e.i. your terminal
+
+ #set -- $args # WTF
+
+ for i
+ do
+ case "$i"
+ in
+ -a|--add|add)
+ wd_add $2 false
+ shift
+ shift
+ break
+ ;;
+ -a!|--add!|add!)
+ wd_add $2 true
+ shift
+ shift
+ break
+ ;;
+ -r|--remove|rm)
+ wd_remove $2
+ shift
+ shift
+ break
+ ;;
+ -l|--list|ls)
+ wd_list_all
+ shift
+ break
+ ;;
+ -h|--help|help)
+ wd_print_usage
+ shift
+ break
+ ;;
+ -s|--show|show)
+ wd_show
+ shift
+ break
+ ;;
+ *)
+ wd_warp $i
+ shift
+ break
+ ;;
+ --)
+ shift; break;;
+ esac
+ done
+fi
+
+
+## garbage collection
+# if not, next time warp will pick up variables from this run
+# remember, there's no sub shell
+points=""
+args=""
+unhash -d val &> /dev/null # fixes issue #1
diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index 6b6de2b15..8eedb90ee 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 ddg='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 \!'
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
diff --git a/plugins/zeus/README.md b/plugins/zeus/README.md
index d7c2aef80..8964eaaec 100644
--- a/plugins/zeus/README.md
+++ b/plugins/zeus/README.md
@@ -41,3 +41,13 @@
* `zsw` aliases `rm .zeus.sock`
* `zweep` aliases `rm .zeus.sock`
+
+`zdbr` aliases `zeus rake db:reset db:test:prepare`
+`zdbreset` aliases `zeus rake db:reset db:test:prepare`
+
+`zdbm` aliases `zeus rake db:migrate db:test:prepare`
+`zdbmigrate` aliases `zeus rake db:migrate db:test:prepare`
+
+`zdbc` aliases `zeus rake db:create`
+
+`zdbcm` aliases `zeus rake db:create db:migrate db:test:prepare`
diff --git a/plugins/zeus/zeus.plugin.zsh b/plugins/zeus/zeus.plugin.zsh
index eddfb4f94..5ec9fa579 100644
--- a/plugins/zeus/zeus.plugin.zsh
+++ b/plugins/zeus/zeus.plugin.zsh
@@ -53,3 +53,17 @@ alias zall='zeus test test/unit/*; zeus test test/functional/; zeus cucumber'
# Clean up crashed zeus instances.
alias zsw='rm .zeus.sock'
alias zweep='rm .zeus.sock'
+
+# Reset database
+alias zdbr='zeus rake db:reset db:test:prepare'
+alias zdbreset='zeus rake db:reset db:test:prepare'
+
+# Migrate and prepare database
+alias zdbm='zeus rake db:migrate db:test:prepare'
+alias zdbmigrate='zeus rake db:migrate db:test:prepare'
+
+# Create database
+alias zdbc='zeus rake db:create'
+
+# Create, migrate and prepare database
+alias zdbcm='zeus rake db:create db:migrate db:test:prepare' \ No newline at end of file
diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template
index d4dded73a..c175c5811 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)
@@ -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)
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:"
diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index a9de8c84e..01cdc80e5 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,43 +90,43 @@ 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
}
prompt_hg() {
- local rev status
- if $(hg id >/dev/null 2>&1); then
- if $(hg prompt >/dev/null 2>&1); then
- if [[ $(hg prompt "{status|unknown}") = "?" ]]; then
- # if files are not added
- prompt_segment red white
- st='±'
- elif [[ -n $(hg prompt "{status|modified}") ]]; then
- # if any modification
- prompt_segment yellow black
- st='±'
- else
- # if working copy is clean
- prompt_segment green black
- fi
- echo -n $(hg prompt "⭠ {rev}@{branch}") $st
- else
- st=""
- rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
- branch=$(hg id -b 2>/dev/null)
- if `hg st | grep -Eq "^\?"`; then
- prompt_segment red black
- st='±'
- elif `hg st | grep -Eq "^(M|A)"`; then
- prompt_segment yellow black
- st='±'
- else
- prompt_segment green black
- fi
- echo -n "⭠ $rev@$branch" $st
- fi
- fi
+ local rev status
+ if $(hg id >/dev/null 2>&1); then
+ if $(hg prompt >/dev/null 2>&1); then
+ if [[ $(hg prompt "{status|unknown}") = "?" ]]; then
+ # if files are not added
+ prompt_segment red white
+ st='±'
+ elif [[ -n $(hg prompt "{status|modified}") ]]; then
+ # if any modification
+ prompt_segment yellow black
+ st='±'
+ else
+ # if working copy is clean
+ prompt_segment green black
+ fi
+ echo -n $(hg prompt "☿ {rev}@{branch}") $st
+ else
+ st=""
+ rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
+ branch=$(hg id -b 2>/dev/null)
+ if `hg st | grep -Eq "^\?"`; then
+ prompt_segment red black
+ st='±'
+ elif `hg st | grep -Eq "^(M|A)"`; then
+ prompt_segment yellow black
+ st='±'
+ else
+ prompt_segment green black
+ fi
+ echo -n "☿ $rev@$branch" $st
+ fi
+ fi
}
# Dir: current working directory
@@ -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 && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; 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
diff --git a/themes/amuse.zsh-theme b/themes/amuse.zsh-theme
new file mode 100644
index 000000000..548f6d39d
--- /dev/null
+++ b/themes/amuse.zsh-theme
@@ -0,0 +1,21 @@
+# vim:ft=zsh ts=2 sw=2 sts=2
+
+rvm_current() {
+ rvm current 2>/dev/null
+}
+
+rbenv_version() {
+ rbenv version 2>/dev/null | awk '{print $1}'
+}
+
+PROMPT='
+%{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(git_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%}
+$ '
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}⭠ "
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?"
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+RPROMPT='%{$fg_bold[red]%}$(rbenv_version)%{$reset_color%}'
diff --git a/themes/bureau.zsh-theme b/themes/bureau.zsh-theme
new file mode 100644
index 000000000..1d88f54d0
--- /dev/null
+++ b/themes/bureau.zsh-theme
@@ -0,0 +1,113 @@
+# oh-my-zsh Bureau Theme
+
+### NVM
+
+ZSH_THEME_NVM_PROMPT_PREFIX="%B⬡%b "
+ZSH_THEME_NVM_PROMPT_SUFFIX=""
+
+### Git [±master ▾●]
+
+ZSH_THEME_GIT_PROMPT_PREFIX="[%{$fg_bold[green]%}±%{$reset_color%}%{$fg_bold[white]%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}]"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[cyan]%}▴%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[magenta]%}▾%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg_bold[yellow]%}●%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}"
+
+bureau_git_branch () {
+ ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
+ ref=$(command git rev-parse --short HEAD 2> /dev/null) || return
+ echo "${ref#refs/heads/}"
+}
+
+bureau_git_status () {
+ _INDEX=$(command git status --porcelain -b 2> /dev/null)
+ _STATUS=""
+ if $(echo "$_INDEX" | grep '^[AMRD]. ' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED"
+ fi
+ if $(echo "$_INDEX" | grep '^.[MTD] ' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED"
+ fi
+ if $(echo "$_INDEX" | grep -E '^\?\? ' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED"
+ fi
+ if $(echo "$_INDEX" | grep '^UU ' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED"
+ fi
+ if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STASHED"
+ fi
+ if $(echo "$_INDEX" | grep '^## .*ahead' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_AHEAD"
+ fi
+ if $(echo "$_INDEX" | grep '^## .*behind' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_BEHIND"
+ fi
+ if $(echo "$_INDEX" | grep '^## .*diverged' &> /dev/null); then
+ _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_DIVERGED"
+ fi
+
+ echo $_STATUS
+}
+
+bureau_git_prompt () {
+ local _branch=$(bureau_git_branch)
+ local _status=$(bureau_git_status)
+ local _result=""
+ if [[ "${_branch}x" != "x" ]]; then
+ _result="$ZSH_THEME_GIT_PROMPT_PREFIX$_branch"
+ if [[ "${_status}x" != "x" ]]; then
+ _result="$_result $_status"
+ fi
+ _result="$_result$ZSH_THEME_GIT_PROMPT_SUFFIX"
+ fi
+ echo $_result
+}
+
+
+_PATH="%{$fg_bold[white]%}%~%{$reset_color%}"
+
+if [[ "%#" == "#" ]]; then
+ _USERNAME="%{$fg_bold[red]%}%n"
+ _LIBERTY="%{$fg[red]%}#"
+else
+ _USERNAME="%{$fg_bold[white]%}%n"
+ _LIBERTY="%{$fg[green]%}$"
+fi
+_USERNAME="$_USERNAME%{$reset_color%}@%m"
+_LIBERTY="$_LIBERTY%{$reset_color%}"
+
+
+get_space () {
+ local STR=$1$2
+ local zero='%([BSUbfksu]|([FB]|){*})'
+ local LENGTH=${#${(S%%)STR//$~zero/}}
+ local SPACES=""
+ (( LENGTH = ${COLUMNS} - $LENGTH - 1))
+
+ for i in {0..$LENGTH}
+ do
+ SPACES="$SPACES "
+ done
+
+ echo $SPACES
+}
+
+_1LEFT="$_USERNAME $_PATH"
+_1RIGHT="[%*] "
+
+bureau_precmd () {
+ _1SPACES=`get_space $_1LEFT $_1RIGHT`
+ echo
+}
+
+setopt prompt_subst
+PROMPT='$_1LEFT$_1SPACES$_1RIGHT
+> $_LIBERTY '
+RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)'
+
+autoload -U add-zsh-hook
+add-zsh-hook precmd bureau_precmd
diff --git a/themes/fino.zsh-theme b/themes/fino.zsh-theme
index 26e547176..4c7aabcff 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,34 +11,32 @@
#
# 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=''
+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)'
-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]%}${ruby_env}
+╰─${prompt_char} "
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$FG[239]%}on%{$reset_color%} %{$fg[255]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
diff --git a/themes/frisk.zsh-theme b/themes/frisk.zsh-theme
index 2c999a6a6..653c7461f 100644
--- a/themes/frisk.zsh-theme
+++ b/themes/frisk.zsh-theme
@@ -10,13 +10,3 @@ ZSH_THEME_GIT_PROMPT_PREFIX=$ZSH_THEME_SCM_PROMPT_PREFIX$GIT_CB
ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}*%{$fg[green]%}"
ZSH_THEME_GIT_PROMPT_CLEAN=""
-
-## Bazaar integration
-bzr_prompt_info() {
- BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'`
- if [ -n "$BZR_CB" ]; then
- BZR_DIRTY=""
- [[ -n `bzr status` ]] && BZR_DIRTY="%{$fg[red]%} *%{$reset_color%}"
- echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX"
- fi
-}
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
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.
-
- 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]:--}
+ # UTF-8 Fixed
+
+ 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
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
}
diff --git a/themes/linuxonly b/themes/linuxonly.zsh-theme
index a11b80d7f..a11b80d7f 100644
--- a/themes/linuxonly
+++ b/themes/linuxonly.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%}'
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)
+#
+# ------------------------------------------------------------------------------
diff --git a/themes/pygmalion.zsh-theme b/themes/pygmalion.zsh-theme
index cf3bb908f..654e0fc37 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%} '
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%}"
diff --git a/themes/sonicradish.zsh-theme b/themes/sonicradish.zsh-theme
new file mode 100644
index 000000000..508611830
--- /dev/null
+++ b/themes/sonicradish.zsh-theme
@@ -0,0 +1,37 @@
+#!/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%}"
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"
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_ "
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
+}
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]%})"
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
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() {
diff --git a/tools/upgrade.sh b/tools/upgrade.sh
index 3624a88e5..9a8497d96 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 --stat origin master
then
printf '\033[0;32m%s\033[0m\n' ' __ __ '
printf '\033[0;32m%s\033[0m\n' ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '