summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-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/debian/debian.plugin.zsh4
-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/_gem11
-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/postgres/postgres.plugin.zsh6
-rw-r--r--plugins/powify/_powify6
-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/sudo/sudo.zsh22
-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/systemadmin/systemadmin.zsh159
-rw-r--r--plugins/terminalapp/terminalapp.plugin.zsh2
-rw-r--r--plugins/themes/themes.plugin.zsh2
-rw-r--r--plugins/tmux/tmux.plugin.zsh16
-rw-r--r--plugins/urltools/urltools.plugin.zsh5
-rw-r--r--plugins/virtualenv/virtualenv.plugin.zsh7
-rw-r--r--plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh25
-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
79 files changed, 3455 insertions, 204 deletions
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/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh
index 55b90e379..b51d0cd37 100644
--- a/plugins/debian/debian.plugin.zsh
+++ b/plugins/debian/debian.plugin.zsh
@@ -6,14 +6,14 @@
# Use aptitude if installed, or apt-get if not.
# You can just set apt_pref='apt-get' to override it.
-if [[ -e $( which aptitude 2>&1 ) ]]; then
+if [[ -e $( which -p aptitude 2>&1 ) ]]; then
apt_pref='aptitude'
else
apt_pref='apt-get'
fi
# Use sudo by default if it's installed
-if [[ -e $( which sudo 2>&1 ) ]]; then
+if [[ -e $( which -p sudo 2>&1 ) ]]; then
use_sudo=1
fi
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..66c77b7d1 100644
--- a/plugins/gem/_gem
+++ b/plugins/gem/_gem
@@ -4,13 +4,15 @@
# gem zsh completion, based on homebrew completion
_gem_installed() {
- installed_gems=(`gem list --local --no-versions`)
+ installed_gems=(${(f)"$(gem list --local --no-versions)"})
}
local -a _1st_arguments
+
_1st_arguments=(
+ 'build:Build a gem from a gemspec'
'cert:Manage RubyGems certificates and signing settings'
- 'check:Check installed gems'
+ '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 +23,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 +37,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/postgres/postgres.plugin.zsh b/plugins/postgres/postgres.plugin.zsh
new file mode 100644
index 000000000..cdd142e92
--- /dev/null
+++ b/plugins/postgres/postgres.plugin.zsh
@@ -0,0 +1,6 @@
+# Aliases to stop, start and restart Postgres
+# Paths noted below are for Postgress installed via Homebrew on OSX
+
+alias startpost='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
+alias stoppost='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
+alias restartpost='stoppost && sleep 1 && startpost' \ No newline at end of file
diff --git a/plugins/powify/_powify b/plugins/powify/_powify
index d23c46513..9507f400e 100644
--- a/plugins/powify/_powify
+++ b/plugins/powify/_powify
@@ -1,7 +1,7 @@
#compdef powify
_powify_all_servers() {
- all_servers=(`ls $HOME/.pow/`)
+ all_servers=(`ls $HOME/.pow/ 2>/dev/null`)
}
local -a all_servers
@@ -30,7 +30,7 @@ fi
case "$words[1]" in
server)
- _values \
+ _values , \
'install[install pow server]' \
'reinstall[reinstall pow server]' \
'update[update pow server]' \
@@ -45,7 +45,7 @@ case "$words[1]" in
'config[print the current server configuration]' \
'logs[tails the pow server logs]' ;;
utils)
- _values \
+ _values , \
'install[install powify.dev server management tool]' \
'reinstall[reinstall powify.dev server management tool]' \
'uninstall[uninstall powify.dev server management tool]' ;;
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/sudo/sudo.zsh b/plugins/sudo/sudo.zsh
new file mode 100644
index 000000000..d12e06853
--- /dev/null
+++ b/plugins/sudo/sudo.zsh
@@ -0,0 +1,22 @@
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# sudo will be inserted before the command
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Dongweiming <ciici123@gmail.com>
+#
+# ------------------------------------------------------------------------------
+
+sudo-command-line() {
+[[ -z $BUFFER ]] && zle up-history
+[[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
+zle end-of-line
+}
+zle -N sudo-command-line
+# Defined shortcut keys: [Esc] [Esc]
+bindkey "\e\e" sudo-command-line
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/systemadmin/systemadmin.zsh b/plugins/systemadmin/systemadmin.zsh
new file mode 100644
index 000000000..f5e44c66f
--- /dev/null
+++ b/plugins/systemadmin/systemadmin.zsh
@@ -0,0 +1,159 @@
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# This is one for the system administrator, operation and maintenance.
+# Some of which come from http://justinlilly.com/dotfiles/zsh.html
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Dongweiming <ciici123@gmail.com>
+#
+# ------------------------------------------------------------------------------
+
+function retval() {
+ if [[ -z $1 ]];then
+ echo '.'
+ else
+ echo $1
+ fi
+}
+
+function retlog() {
+ if [[ -z $1 ]];then
+ echo '/var/log/nginx/access.log'
+ else
+ echo $1
+ fi
+}
+
+alias ping='ping -c 5'
+alias clr='clear;echo "Currently logged in on $(tty), as $(whoami) in directory $(pwd)."'
+alias path='echo -e ${PATH//:/\\n}'
+alias mkdir='mkdir -pv'
+# get top process eating memory
+alias psmem='ps -e -orss=,args= | sort -b -k1,1n'
+alias psmem10='ps -e -orss=,args= | sort -b -k1,1n| head -10'
+# get top process eating cpu if not work try excute : export LC_ALL='C'
+alias pscpu='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1 -nr'
+alias pscpu10='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1 -nr | head -10'
+# top10 of the history
+alias hist10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
+
+# directory LS
+dls () {
+ ls -l | grep "^d" | awk '{ print $9 }' | tr -d "/"
+}
+psgrep() {
+ ps aux | grep "$(retval $1)" | grep -v grep
+}
+# Kills any process that matches a regexp passed to it
+killit() {
+ ps aux | grep -v "grep" | grep "$@" | awk '{print $2}' | xargs sudo kill
+}
+
+# list contents of directories in a tree-like format
+if [ -z "\${which tree}" ]; then
+ tree () {
+ find $@ -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
+ }
+fi
+
+# Sort connection state
+sortcons() {
+ netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
+}
+
+# View all 80 Port Connections
+con80() {
+ netstat -nat|grep -i ":80"|wc -l
+}
+
+# On the connected IP sorted by the number of connections
+sortconip() {
+ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
+}
+
+# top20 of Find the number of requests on 80 port
+req20() {
+ netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
+}
+
+# top20 of Using tcpdump port 80 access to view
+http20() {
+ sudo tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
+}
+
+# top20 of Find time_wait connection
+timewait20() {
+ netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
+}
+
+# top20 of Find SYN connection
+syn20() {
+ netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr|head -n20
+}
+
+# Printing process according to the port number
+port_pro() {
+ netstat -ntlp | grep "$(retval $1)" | awk '{print $7}' | cut -d/ -f1
+}
+
+# top10 of gain access to the ip address
+accessip10() {
+ awk '{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}' "$(retlog)"
+}
+
+# top20 of Most Visited file or page
+visitpage20() {
+ awk '{print $11}' "$(retlog)"|sort|uniq -c|sort -nr|head -20
+}
+
+# top100 of Page lists the most time-consuming (more than 60 seconds) as well as the corresponding page number of occurrences
+consume100() {
+ awk '($NF > 60 && $7~/\.php/){print $7}' "$(retlog)" |sort -n|uniq -c|sort -nr|head -100
+ # if django website or other webiste make by no suffix language
+ # awk '{print $7}' "$(retlog)" |sort -n|uniq -c|sort -nr|head -100
+}
+
+# Website traffic statistics (G)
+webtraffic() {
+ awk "{sum+=$10} END {print sum/1024/1024/1024}" "$(retlog)"
+}
+
+# Statistical connections 404
+c404() {
+ awk '($9 ~/404/)' "$(retlog)" | awk '{print $9,$7}' | sort
+}
+
+# Statistical http status.
+httpstatus() {
+ awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}' "$(retlog)"
+}
+
+# Delete 0 byte file
+d0() {
+ find "$(retval $1)" -type f -size 0 -exec rm -rf {} \;
+}
+
+# gather external ip address
+geteip() {
+ curl http://ifconfig.me
+}
+
+# determine local IP address
+getip() {
+ ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
+}
+
+# Clear zombie processes
+clrz() {
+ ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
+}
+
+# Second concurrent
+conssec() {
+ awk '{if($9~/200|30|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}' "$(retlog)"|sort -k 2 -nr|head -n10
+}
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/urltools/urltools.plugin.zsh b/plugins/urltools/urltools.plugin.zsh
index 4ddfff8ce..22327334d 100644
--- a/plugins/urltools/urltools.plugin.zsh
+++ b/plugins/urltools/urltools.plugin.zsh
@@ -14,6 +14,9 @@ if [[ $(whence node) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD
elif [[ $(whence python) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xpython" ) ]]; then
alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
+elif [[ $(whence xxd) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xshell" ) ]]; then
+ function urlencode() {echo $@ | tr -d "\n" | xxd -plain | sed "s/\(..\)/%\1/g"}
+ function urldecode() {printf $(echo -n $@ | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')"\n"}
elif [[ $(whence ruby) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xruby" ) ]]; then
alias urlencode='ruby -r cgi -e "puts CGI.escape(ARGV[0])"'
alias urldecode='ruby -r cgi -e "puts CGI.unescape(ARGV[0])"'
@@ -33,4 +36,4 @@ elif [[ $(whence perl) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHO
fi
fi
-unset URLTOOLS_METHOD \ No newline at end of file
+unset URLTOOLS_METHOD
diff --git a/plugins/virtualenv/virtualenv.plugin.zsh b/plugins/virtualenv/virtualenv.plugin.zsh
index e8458389f..8e06450b1 100644
--- a/plugins/virtualenv/virtualenv.plugin.zsh
+++ b/plugins/virtualenv/virtualenv.plugin.zsh
@@ -1,9 +1,8 @@
function virtualenv_prompt_info(){
- local virtualenv_path="$VIRTUAL_ENV"
- if [[ -n $virtualenv_path ]]; then
- local virtualenv_name=`basename $virtualenv_path`
- printf "%s[%s] " "%{${fg[yellow]}%}" $virtualenv_name
+ if [[ -n $VIRTUAL_ENV ]]; then
+ printf "%s[%s] " "%{${fg[yellow]}%}" ${${VIRTUAL_ENV}:t}
fi
}
+# disables prompt mangling in virtual_env/bin/activate
export VIRTUAL_ENV_DISABLE_PROMPT=1
diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 35de50874..670c287bd 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -1,10 +1,9 @@
-wrapsource=`which virtualenvwrapper_lazy.sh`
-
-if [[ -f "$wrapsource" ]]; then
- source $wrapsource
+virtualenvwrapper='virtualenvwrapper_lazy.sh'
+if (( $+commands[$virtualenvwrapper] )); then
+ source ${${virtualenvwrapper}:c}
if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
- # Automatically activate Git projects' virtual environments based on the
+ # Automatically activate Git projects's virtual environments based on the
# directory name of the project. Virtual environment name can be overridden
# by placing a .venv file in the project root with a virtualenv name in it
function workon_cwd {
@@ -40,11 +39,17 @@ if [[ -f "$wrapsource" ]]; then
fi
}
- # New cd function that does the virtualenv magic
- function cd {
- builtin cd "$@" && workon_cwd
- }
+ # Append workon_cwd to the chpwd_functions array, so it will be called on cd
+ # http://zsh.sourceforge.net/Doc/Release/Functions.html
+ # TODO: replace with 'add-zsh-hook chpwd workon_cwd' when oh-my-zsh min version is raised above 4.3.4
+ if (( ${+chpwd_functions} )); then
+ if (( $chpwd_functions[(I)workon_cwd] == 0 )); then
+ set -A chpwd_functions $chpwd_functions workon_cwd
+ fi
+ else
+ set -A chpwd_functions workon_cwd
+ fi
fi
else
- print "zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper_lazy.sh. Please install with \`pip install virtualenvwrapper\`."
+ print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}. Please install with \`pip install virtualenvwrapper\`."
fi
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