summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorJames Smith <james@loopj.com>2012-07-24 13:39:07 -0700
committerJames Smith <james@loopj.com>2012-07-24 13:39:07 -0700
commit772bc51c3a2372592c400e0d4e159a0128989ba2 (patch)
tree191af002e272ce95418910b9c0ea63443e48e681 /plugins
parent0ba398f9e1aaf05e72406d5c840f013eebb6b260 (diff)
parentd05b2010ffd4cd33ff9402c402051b1caf985d97 (diff)
downloadzsh-772bc51c3a2372592c400e0d4e159a0128989ba2.tar.gz
zsh-772bc51c3a2372592c400e0d4e159a0128989ba2.tar.bz2
zsh-772bc51c3a2372592c400e0d4e159a0128989ba2.zip
Merge
Diffstat (limited to 'plugins')
-rw-r--r--plugins/archlinux/archlinux.plugin.zsh1
-rw-r--r--plugins/autojump/autojump.plugin.zsh10
-rw-r--r--plugins/battery/battery.plugin.zsh20
-rw-r--r--plugins/bundler/_bundler82
-rw-r--r--plugins/bundler/bundler.plugin.zsh13
-rw-r--r--plugins/cake/cake.plugin.zsh22
-rw-r--r--plugins/deb/deb.plugin.zsh13
-rw-r--r--plugins/debian/debian.plugin.zsh172
-rw-r--r--plugins/dircycle/dircycle.plugin.zsh10
-rw-r--r--plugins/dirpersist/dirpersist.plugin.zsh2
-rw-r--r--plugins/django/django.plugin.zsh1
-rw-r--r--plugins/encode64/encode64.plugin.zsh2
-rw-r--r--plugins/extract/extract.plugin.zsh5
-rw-r--r--plugins/fasd/fasd.plugin.zsh6
-rw-r--r--plugins/git-flow/git-flow.plugin.zsh4
-rw-r--r--plugins/git/git.plugin.zsh17
-rw-r--r--plugins/github/github.plugin.zsh72
-rw-r--r--plugins/gnu-utils/gnu-utils.plugin.zsh80
-rw-r--r--plugins/gradle/gradle.plugin.zsh119
-rwxr-xr-xplugins/grails/grails.plugin.zsh54
-rw-r--r--plugins/heroku/_heroku158
-rw-r--r--plugins/jake-node/jake-node.plugin.zsh14
-rwxr-xr-xplugins/jruby/jruby.plugin.zsh4
-rw-r--r--plugins/knife/_knife21
-rw-r--r--plugins/lol/lol.plugin.zsh13
-rw-r--r--plugins/mercurial/mercurial.plugin.zsh14
-rw-r--r--plugins/mvn/mvn.plugin.zsh6
-rw-r--r--plugins/npm/_npm19
-rw-r--r--plugins/npm/npm.plugin.zsh1
-rw-r--r--plugins/nyan/nyan.plugin.zsh5
-rw-r--r--plugins/pip/_pip64
-rw-r--r--plugins/pow/pow.plugin.zsh70
-rw-r--r--plugins/powder/_powder4
-rw-r--r--plugins/python/python.plugin.zsh8
-rw-r--r--plugins/rails/rails.plugin.zsh1
-rw-r--r--plugins/rails3/rails3.plugin.zsh4
-rw-r--r--plugins/rake/rake.plugin.zsh6
-rw-r--r--plugins/rbenv/rbenv.plugin.zsh57
-rw-r--r--plugins/rbfu/rbfu.plugin.zsh42
-rw-r--r--plugins/ruby/ruby.plugin.zsh2
-rw-r--r--plugins/rvm/rvm.plugin.zsh2
-rw-r--r--plugins/screen/screen.plugin.zsh54
-rw-r--r--plugins/sprunge/sprunge.plugin.zsh64
-rwxr-xr-xplugins/sublime/sublime.plugin.zsh9
-rw-r--r--plugins/suse/suse.plugin.zsh7
-rw-r--r--plugins/svn/svn.plugin.zsh10
-rw-r--r--plugins/symfony2/symfony2.plugin.zsh13
-rw-r--r--plugins/taskwarrior/_task162
-rw-r--r--plugins/terminalapp/terminalapp.plugin.zsh11
-rw-r--r--plugins/terminitor/_terminitor38
-rw-r--r--plugins/textmate/textmate.plugin.zsh2
-rw-r--r--plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh46
-rw-r--r--plugins/vundle/vundle.plugin.zsh23
-rw-r--r--plugins/wakeonlan/README29
-rw-r--r--plugins/wakeonlan/_wake4
-rw-r--r--plugins/wakeonlan/wakeonlan.plugin.zsh14
-rw-r--r--plugins/yum/yum.plugin.zsh6
57 files changed, 1491 insertions, 221 deletions
diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh
index b5e519036..294dc5354 100644
--- a/plugins/archlinux/archlinux.plugin.zsh
+++ b/plugins/archlinux/archlinux.plugin.zsh
@@ -9,6 +9,7 @@ if [[ -x `which yaourt` ]]; then
alias yaconf='yaourt -C' # Fix all configuration files with vimdiff
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
alias yaupg='yaourt -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.
+ alias yasu='yaourt --sucre' # Same as yaupg, but without confirmation
alias yain='yaourt -S' # Install specific package(s) from the repositories
alias yains='yaourt -U' # Install specific package not from the repositories but from a file
alias yare='yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies
diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh
index da0a12765..6f0edb062 100644
--- a/plugins/autojump/autojump.plugin.zsh
+++ b/plugins/autojump/autojump.plugin.zsh
@@ -1,3 +1,9 @@
-if [ -f `brew --prefix`/etc/autojump ]; then
- . `brew --prefix`/etc/autojump
+if [ $commands[autojump] ]; then # check if autojump is installed
+ if [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package
+ . /usr/share/autojump/autojump.zsh
+ elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation
+ . /etc/profile.d/autojump.zsh
+ elif [ $commands[brew] -a -f `brew --prefix`/etc/autojump ]; then # mac os x with brew
+ . `brew --prefix`/etc/autojump
+ fi
fi
diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh
new file mode 100644
index 000000000..bc75c5cf9
--- /dev/null
+++ b/plugins/battery/battery.plugin.zsh
@@ -0,0 +1,20 @@
+if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
+ function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" }
+ function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') }
+ function battery_pct_prompt() {
+ b=$(battery_pct_remaining)
+ if [ $b -gt 50 ] ; then
+ color='green'
+ elif [ $b -gt 20 ] ; then
+ color='yellow'
+ else
+ color='red'
+ fi
+ echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}"
+ }
+else
+ error_msg='no battery'
+ function battery_pct_remaining() { echo $error_msg }
+ function battery_time_remaining() { echo $error_msg }
+ function battery_pct_prompt() { echo '' }
+fi
diff --git a/plugins/bundler/_bundler b/plugins/bundler/_bundler
new file mode 100644
index 000000000..5d22cac9a
--- /dev/null
+++ b/plugins/bundler/_bundler
@@ -0,0 +1,82 @@
+#compdef bundle
+
+local curcontext="$curcontext" state line _gems _opts ret=1
+
+_arguments -C -A "-v" -A "--version" \
+ '(- 1 *)'{-v,--version}'[display version information]' \
+ '1: :->cmds' \
+ '*:: :->args' && ret=0
+
+case $state in
+ cmds)
+ _values "bundle command" \
+ "install[Install the gems specified by the Gemfile or Gemfile.lock]" \
+ "update[Update dependencies to their latest versions]" \
+ "package[Package the .gem files required by your application]" \
+ "exec[Execute a script in the context of the current bundle]" \
+ "config[Specify and read configuration options for bundler]" \
+ "check[Determine whether the requirements for your application are installed]" \
+ "list[Show all of the gems in the current bundle]" \
+ "show[Show the source location of a particular gem in the bundle]" \
+ "console[Start an IRB session in the context of the current bundle]" \
+ "open[Open an installed gem in the editor]" \
+ "viz[Generate a visual representation of your dependencies]" \
+ "init[Generate a simple Gemfile, placed in the current directory]" \
+ "gem[Create a simple gem, suitable for development with bundler]" \
+ "help[Describe available tasks or one specific task]"
+ ret=0
+ ;;
+ args)
+ case $line[1] in
+ help)
+ _values 'commands' \
+ 'install' \
+ 'update' \
+ 'package' \
+ 'exec' \
+ 'config' \
+ 'check' \
+ 'list' \
+ 'show' \
+ 'console' \
+ 'open' \
+ 'viz' \
+ 'init' \
+ 'gem' \
+ 'help' && ret=0
+ ;;
+ install)
+ _arguments \
+ '(--no-color)--no-color[disable colorization in output]' \
+ '(--local)--local[do not attempt to connect to rubygems.org]' \
+ '(--quiet)--quiet[only output warnings and errors]' \
+ '(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \
+ '(--system)--system[install to the system location]' \
+ '(--deployment)--deployment[install using defaults tuned for deployment environments]' \
+ '(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \
+ '(--path)--path=-[specify a different path than the system default]:path:_files' \
+ '(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \
+ '(--without)--without=-[exclude gems that are part of the specified named group]:groups'
+ ret=0
+ ;;
+ exec)
+ _normal && ret=0
+ ;;
+ (open|show)
+ _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') )
+ if [[ $_gems != "" ]]; then
+ _values 'gems' $_gems && ret=0
+ fi
+ ;;
+ *)
+ _opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') )
+ _opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') )
+ if [[ $_opts != "" ]]; then
+ _values 'options' $_opts && ret=0
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+return ret
diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
index f005700ff..39b76ecdf 100644
--- a/plugins/bundler/bundler.plugin.zsh
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -1,12 +1,12 @@
alias be="bundle exec"
alias bi="bundle install"
alias bl="bundle list"
-alias bu="bundle update"
alias bp="bundle package"
+alias bu="bundle update"
# The following is based on https://github.com/gma/bundler-exec
-bundled_commands=(cap capify cucumber heroku rackup rails rake rspec ruby shotgun spec spork thin unicorn unicorn_rails)
+bundled_commands=(annotate cap capify cucumber foreman guard middleman nanoc rackup rainbows rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails)
## Functions
@@ -16,7 +16,7 @@ _bundler-installed() {
_within-bundled-project() {
local check_dir=$PWD
- while [ "$(dirname $check_dir)" != "/" ]; do
+ while [ $check_dir != "/" ]; do
[ -f "$check_dir/Gemfile" ] && return
check_dir="$(dirname $check_dir)"
done
@@ -33,5 +33,10 @@ _run-with-bundler() {
## Main program
for cmd in $bundled_commands; do
- alias $cmd="_run-with-bundler $cmd"
+ eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}"
+ alias $cmd=bundled_$cmd
+
+ if which _$cmd > /dev/null 2>&1; then
+ compdef _$cmd bundled_$cmd=$cmd
+ fi
done
diff --git a/plugins/cake/cake.plugin.zsh b/plugins/cake/cake.plugin.zsh
index f968c71d5..1d0d196ee 100644
--- a/plugins/cake/cake.plugin.zsh
+++ b/plugins/cake/cake.plugin.zsh
@@ -1,18 +1,22 @@
# Set this to 1 if you want to cache the tasks
-cache_task_list=1
+_cake_cache_task_list=1
# Cache filename
-cache_file='.cake_task_cache'
+_cake_task_cache_file='.cake_task_cache'
+
+_cake_get_target_list () {
+ cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'
+}
_cake_does_target_list_need_generating () {
- if [ $cache_task_list -eq 0 ]; then
+ if [ ${_cake_cache_task_list} -eq 0 ]; then
return 1;
fi
- if [ ! -f $cache_file ]; then return 0;
+ if [ ! -f ${_cake_task_cache_file} ]; then return 0;
else
- accurate=$(stat -f%m $cache_file)
+ accurate=$(stat -f%m $_cake_task_cache_file)
changed=$(stat -f%m Cakefile)
return $(expr $accurate '>=' $changed)
fi
@@ -21,12 +25,12 @@ _cake_does_target_list_need_generating () {
_cake () {
if [ -f Cakefile ]; then
if _cake_does_target_list_need_generating; then
- cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cache_file
- compadd `cat $cache_file`
+ _cake_get_target_list > ${_cake_task_cache_file}
+ compadd `cat ${_cake_task_cache_file}`
else
- compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'`
+ compadd `_cake_get_target_list`
fi
fi
}
-compdef _cake cake
+compdef _cake cake \ No newline at end of file
diff --git a/plugins/deb/deb.plugin.zsh b/plugins/deb/deb.plugin.zsh
deleted file mode 100644
index 1b35a0646..000000000
--- a/plugins/deb/deb.plugin.zsh
+++ /dev/null
@@ -1,13 +0,0 @@
-# Aliases
-alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" \
- --no-gui --disable-columns search" # search package
-alias ad="sudo apt-get update" # update packages lists
-alias au="sudo apt-get update && \
- sudo apt-get dselect-upgrade" # upgrade packages
-alias ai="sudo apt-get install" # install package
-alias ar="sudo apt-get remove --purge && \
- sudo apt-get autoremove --purge" # remove package
-alias ap="apt-cache policy" # apt policy
-alias av="apt-cache show" # show package info
-alias acs="apt-cache search" # search package
-alias ac="sudo apt-get clean && sudo apt-get autoclean" # clean apt cache
diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh
index f8865a412..39d3ef36a 100644
--- a/plugins/debian/debian.plugin.zsh
+++ b/plugins/debian/debian.plugin.zsh
@@ -1,53 +1,178 @@
-# https://github.com/dbbolton/
+# Authors:
+# https://github.com/AlexBio
+# https://github.com/dbb
#
# Debian-related zsh aliases and functions for zsh
+# Use aptitude if installed, or apt-get if not.
+# You can just set apt_pref='apt-get' to override it.
+if [[ -e $( which aptitude ) ]]; then
+ apt_pref='aptitude'
+else
+ apt_pref='apt-get'
+fi
+
+# Use sudo by default if it's installed
+if [[ -e $( which sudo ) ]]; then
+ use_sudo=1
+fi
# Aliases ###################################################################
+# These are for more obscure uses of apt-get and aptitude that aren't covered
+# below.
+alias ag='apt-get'
+alias at='aptitude'
# Some self-explanatory aliases
-alias afs='apt-file search --regexp'
+alias acs="apt-cache search"
alias aps='aptitude search'
-alias apsrc='apt-get source'
-alias apv='apt-cache policy'
+alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" \
+ --no-gui --disable-columns search" # search package
+
+# apt-file
+alias afs='apt-file search --regexp'
-alias apdg='su -c "aptitude update && aptitude safe-upgrade"'
-alias apud='su -c "aptitude update"'
-alias apug='su -c "aptitude safe-upgrade"'
+# These are apt-get only
+alias asrc='apt-get source'
+alias ap='apt-cache policy'
+
+# superuser operations ######################################################
+if [[ $use_sudo -eq 1 ]]; then
+# commands using sudo #######
+ alias aac='sudo $apt_pref autoclean'
+ alias abd='sudo $apt_pref build-dep'
+ alias ac='sudo $apt_pref clean'
+ alias ad='sudo $apt_pref update'
+ alias adg='sudo $apt_pref update && sudo $apt_pref upgrade'
+ alias adu='sudo $apt_pref update && sudo $apt_pref dist-upgrade'
+ alias afu='sudo apt-file update'
+ alias ag='sudo $apt_pref upgrade'
+ alias ai='sudo $apt_pref install'
+ # Install all packages given on the command line while using only the first word of each line:
+ # acs ... | ail
+ alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | "' xargs sudo $apt_pref install'
+ alias ap='sudo $apt_pref purge'
+ alias ar='sudo $apt_pref remove'
+
+ # apt-get only
+ alias ads='sudo $apt_pref dselect-upgrade'
+
+ # Install all .deb files in the current directory.
+ # Warning: you will need to put the glob in single quotes if you use:
+ # glob_subst
+ alias di='sudo dpkg -i ./*.deb'
+
+ # Remove ALL kernel images and headers EXCEPT the one in use
+ alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) \
+ ?not(~n`uname -r`))'
+
+
+# commands using su #########
+else
+ alias aac='su -ls \'$apt_pref autoclean\' root'
+ abd() {
+ cmd="su -lc '$apt_pref build-dep $@' root"
+ print "$cmd"
+ eval "$cmd"
+ }
+ alias ac='su -ls \'$apt_pref clean\' root'
+ alias ad='su -lc \'$apt_pref update\' root'
+ alias adg='su -lc \'$apt_pref update && aptitude safe-upgrade\' root'
+ alias adu='su -lc \'$apt_pref update && aptitude dist-upgrade\' root'
+ alias afu='su -lc "apt-file update"'
+ alias ag='su -lc \'$apt_pref safe-upgrade\' root'
+ ai() {
+ cmd="su -lc 'aptitude -P install $@' root"
+ print "$cmd"
+ eval "$cmd"
+ }
+ ap() {
+ cmd="su -lc '$apt_pref -P purge $@' root"
+ print "$cmd"
+ eval "$cmd"
+ }
+ ar() {
+ cmd="su -lc '$apt_pref -P remove $@' root"
+ print "$cmd"
+ eval "$cmd"
+ }
+
+ # Install all .deb files in the current directory
+ # Assumes glob_subst is off
+ alias di='su -lc "dpkg -i ./*.deb" root'
+
+ # Remove ALL kernel images and headers EXCEPT the one in use
+ alias kclean='su -lc '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) \
+ ?not(~n`uname -r`))'\'' root'
+fi
+
+
+# Misc. #####################################################################
# print all installed packages
alias allpkgs='aptitude search -F "%p" --disable-columns ~i'
-# Install all .deb files in the current directory.
-# Warning: you will need to put the glob in single quotes if you use:
-# glob_subst
-alias di='su -c "dpkg -i ./*.deb"'
-
# Create a basic .deb package
alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc'
-# Remove ALL kernel images and headers EXCEPT the one in use
-alias kclean='su -c '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root'
-
-
# Functions #################################################################
-
# create a simple script that can be used to 'duplicate' a system
apt-copy() {
- print '#!/bin/sh'"\n" > apt-copy.sh
+ print '#!/bin/sh'"\n" > apt-copy.sh
+
+ cmd='$apt_pref install'
- list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;')
+ for p in ${(f)"$(aptitude search -F "%p" --disable-columns \~i)"}; {
+ cmd="${cmd} ${p}"
+ }
- print 'aptitude install '"$list\n" >> apt-copy.sh
+ print $cmd "\n" >> apt-copy.sh
- chmod +x apt-copy.sh
+ chmod +x apt-copy.sh
}
+# Prints apt history
+# Usage:
+# apt-history install
+# apt-history upgrade
+# apt-history remove
+# apt-history rollback
+# apt-history list
+# Based On: http://linuxcommando.blogspot.com/2008/08/how-to-show-apt-log-history.html
+apt-history () {
+ case "$1" in
+ install)
+ zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
+ ;;
+ upgrade|remove)
+ zgrep --no-filename $1 $(ls -rt /var/log/dpkg*)
+ ;;
+ rollback)
+ zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) | \
+ grep "$2" -A10000000 | \
+ grep "$3" -B10000000 | \
+ awk '{print $4"="$5}'
+ ;;
+ list)
+ zcat $(ls -rt /var/log/dpkg*)
+ ;;
+ *)
+ echo "Parameters:"
+ echo " install - Lists all packages that have been installed."
+ echo " upgrade - Lists all packages that have been upgraded."
+ echo " remove - Lists all packages that have been removed."
+ echo " rollback - Lists rollback information."
+ echo " list - Lists all contains of dpkg logs."
+ ;;
+ esac
+}
# Kernel-package building shortcut
-dbb-build () {
- MAKEFLAGS='' # temporarily unset MAKEFLAGS ( '-j3' will fail )
+kerndeb () {
+ # temporarily unset MAKEFLAGS ( '-j3' will fail )
+ MAKEFLAGS=$( print - $MAKEFLAGS | perl -pe 's/-j\s*[\d]+//g' )
+ print '$MAKEFLAGS set to '"'$MAKEFLAGS'"
appendage='-custom' # this shows up in $ (uname -r )
revision=$(date +"%Y%m%d") # this shows up in the .deb file name
@@ -57,4 +182,3 @@ dbb-build () {
"$revision" kernel_image kernel_headers
}
-
diff --git a/plugins/dircycle/dircycle.plugin.zsh b/plugins/dircycle/dircycle.plugin.zsh
new file mode 100644
index 000000000..46a0ab268
--- /dev/null
+++ b/plugins/dircycle/dircycle.plugin.zsh
@@ -0,0 +1,10 @@
+##
+# dircycle plugin: enables cycling through the directory
+# stack using Ctrl+Shift+Left/Right
+
+eval "insert-cycledleft () { zle push-line; LBUFFER='pushd -q +1'; zle accept-line }"
+zle -N insert-cycledleft
+bindkey "\e[1;6D" insert-cycledleft
+eval "insert-cycledright () { zle push-line; LBUFFER='pushd -q -0'; zle accept-line }"
+zle -N insert-cycledright
+bindkey "\e[1;6C" insert-cycledright
diff --git a/plugins/dirpersist/dirpersist.plugin.zsh b/plugins/dirpersist/dirpersist.plugin.zsh
index 6a2b289a2..0f6d9f435 100644
--- a/plugins/dirpersist/dirpersist.plugin.zsh
+++ b/plugins/dirpersist/dirpersist.plugin.zsh
@@ -12,7 +12,7 @@ dirpersistinstall () {
if grep 'dirpersiststore' ~/.zlogout > /dev/null; then
else
if read -q \?"Would you like to set up your .zlogout file for use with dirspersist? (y/n) "; then
- echo "# Store dirs stack\n# See ~/.oh-my-zsh/plugins/dirspersist.plugin.zsh\ndirpersiststore" >> ~/.zlogout
+ echo "# Store dirs stack\n# See $ZSH/plugins/dirspersist.plugin.zsh\ndirpersiststore" >> ~/.zlogout
else
echo "If you don't want this message to appear, remove dirspersist from \$plugins"
fi
diff --git a/plugins/django/django.plugin.zsh b/plugins/django/django.plugin.zsh
index 1d72a2f2c..0bbd031fe 100644
--- a/plugins/django/django.plugin.zsh
+++ b/plugins/django/django.plugin.zsh
@@ -220,3 +220,4 @@ _managepy() {
compdef _managepy manage.py
compdef _managepy django
+compdef _managepy django-manage
diff --git a/plugins/encode64/encode64.plugin.zsh b/plugins/encode64/encode64.plugin.zsh
new file mode 100644
index 000000000..cfb7c6a18
--- /dev/null
+++ b/plugins/encode64/encode64.plugin.zsh
@@ -0,0 +1,2 @@
+encode64(){ echo -n $1 | base64 }
+decode64(){ echo -n $1 | base64 -D } \ No newline at end of file
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 8cc17f7d4..5c125e98b 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -78,8 +78,3 @@ function extract() {
alias x=extract
-# add extract completion function to path
-fpath=($ZSH/plugins/extract $fpath)
-autoload -U compinit
-compinit -i
-
diff --git a/plugins/fasd/fasd.plugin.zsh b/plugins/fasd/fasd.plugin.zsh
new file mode 100644
index 000000000..d42584f1a
--- /dev/null
+++ b/plugins/fasd/fasd.plugin.zsh
@@ -0,0 +1,6 @@
+if [ $commands[fasd] ]; then # check if fasd is installed
+ eval "$(fasd --init auto)"
+ alias v='f -e vim'
+ alias o='a -e open'
+fi
+
diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index 270bcbe38..71b343884 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -110,6 +110,8 @@ __git-flow-release ()
-u'[Use the given GPG-key for the digital signature (implies -s)]'\
-m'[Use the given tag message]'\
-p'[Push to $ORIGIN after performing finish]'\
+ -k'[Keep branch after performing finish]'\
+ -n"[Don't tag this release]"\
':version:__git_flow_version_list'
;;
@@ -162,6 +164,8 @@ __git-flow-hotfix ()
-u'[Use the given GPG-key for the digital signature (implies -s)]'\
-m'[Use the given tag message]'\
-p'[Push to $ORIGIN after performing finish]'\
+ -k'[Keep branch after performing finish]'\
+ -n"[Don't tag this release]"\
':hotfix:__git_flow_hotfix_list'
;;
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 5132b639a..d3d3f702a 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -9,7 +9,7 @@ alias gup='git fetch && git rebase'
compdef _git gup=git-fetch
alias gp='git push'
compdef _git gp=git-push
-gdv() { git-diff -w "$@" | view - }
+gdv() { git diff -w "$@" | view - }
compdef _git gdv=git-diff
alias gc='git commit -v'
compdef _git gc=git-commit
@@ -17,6 +17,7 @@ alias gca='git commit -v -a'
compdef _git gca=git-commit
alias gco='git checkout'
compdef _git gco=git-checkout
+alias gcm='git checkout master'
alias gb='git branch'
compdef _git gb=git-branch
alias gba='git branch -a'
@@ -29,6 +30,14 @@ alias glg='git log --stat --max-count=5'
compdef _git glg=git-log
alias glgg='git log --graph --max-count=5'
compdef _git glgg=git-log
+alias gss='git status -s'
+compdef _git gss=git-status
+alias ga='git add'
+compdef _git ga=git-add
+alias gm='git merge'
+compdef _git gm=git-merge
+alias grh='git reset HEAD'
+alias grhh='git reset HEAD --hard'
# Git and svn mix
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
@@ -45,6 +54,12 @@ function current_branch() {
echo ${ref#refs/heads/}
}
+function current_repository() {
+
+ ref=$(git symbolic-ref HEAD 2> /dev/null) || return
+ echo $(git remote -v | cut -d':' -f 2)
+}
+
# these aliases take advantage of the previous function
alias ggpull='git pull origin $(current_branch)'
compdef ggpull=git
diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh
index 1eb338113..197e86a48 100644
--- a/plugins/github/github.plugin.zsh
+++ b/plugins/github/github.plugin.zsh
@@ -1,6 +1,70 @@
-# hub alias from defunkt
-# https://github.com/defunkt/hub
-if [ "$commands[(I)hub]" ]; then
+# Setup hub function for git, if it is available; http://github.com/defunkt/hub
+if [ "$commands[(I)hub]" ] && [ "$commands[(I)ruby]" ]; then
# eval `hub alias -s zsh`
- function git(){hub "$@"}
+ function git(){
+ if ! (( $+_has_working_hub )); then
+ hub --version &> /dev/null
+ _has_working_hub=$(($? == 0))
+ fi
+ if (( $_has_working_hub )) ; then
+ hub "$@"
+ else
+ command git "$@"
+ fi
+ }
fi
+
+# Functions #################################################################
+
+# https://github.com/dbb
+
+
+# empty_gh [NAME_OF_REPO]
+#
+# Use this when creating a new repo from scratch.
+empty_gh() { # [NAME_OF_REPO]
+ repo = $1
+ ghuser=$( git config github.user )
+
+ mkdir "$repo"
+ cd "$repo"
+ git init
+ touch README
+ git add README
+ git commit -m 'Initial commit.'
+ git remote add origin git@github.com:${ghuser}/${repo}.git
+ git push -u origin master
+}
+
+# new_gh [DIRECTORY]
+#
+# Use this when you have a directory that is not yet set up for git.
+# This function will add all non-hidden files to git.
+new_gh() { # [DIRECTORY]
+ cd "$1"
+ ghuser=$( git config github.user )
+
+ git init
+ # add all non-dot files
+ print '.*'"\n"'*~' >> .gitignore
+ git add ^.*
+ git commit -m 'Initial commit.'
+ git remote add origin git@github.com:${ghuser}/${repo}.git
+ git push -u origin master
+}
+
+# exist_gh [DIRECTORY]
+#
+# Use this when you have a git repo that's ready to go and you want to add it
+# to your GitHub.
+exist_gh() { # [DIRECTORY]
+ cd "$1"
+ name=$( git config user.name )
+ ghuser=$( git config github.user )
+
+ git remote add origin git@github.com:${ghuser}/${repo}.git
+ git push -u origin master
+}
+
+# End Functions #############################################################
+
diff --git a/plugins/gnu-utils/gnu-utils.plugin.zsh b/plugins/gnu-utils/gnu-utils.plugin.zsh
new file mode 100644
index 000000000..e59265d66
--- /dev/null
+++ b/plugins/gnu-utils/gnu-utils.plugin.zsh
@@ -0,0 +1,80 @@
+# ------------------------------------------------------------------------------
+# FILE: gnu-utils.plugin.zsh
+# DESCRIPTION: oh-my-zsh plugin file.
+# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
+# VERSION: 1.0.0
+# ------------------------------------------------------------------------------
+
+
+if [[ -x "${commands[gwhoami]}" ]]; then
+ __gnu_utils() {
+ emulate -L zsh
+ local gcmds
+ local gcmd
+ local cmd
+ local prefix
+
+ # coreutils
+ gcmds=('g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
+ 'gchown' 'gchroot' 'gcksum' 'gcomm' 'gcp' 'gcsplit' 'gcut' 'gdate'
+ 'gdd' 'gdf' 'gdir' 'gdircolors' 'gdirname' 'gdu' 'gecho' 'genv' 'gexpand'
+ 'gexpr' 'gfactor' 'gfalse' 'gfmt' 'gfold' 'ggroups' 'ghead' 'ghostid'
+ 'gid' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum'
+ 'gmkdir' 'gmkfifo' 'gmknod' 'gmktemp' 'gmv' 'gnice' 'gnl' 'gnohup' 'gnproc'
+ 'god' 'gpaste' 'gpathchk' 'gpinky' 'gpr' 'gprintenv' 'gprintf' 'gptx' 'gpwd'
+ 'greadlink' 'grm' 'grmdir' 'gruncon' 'gseq' 'gsha1sum' 'gsha224sum'
+ 'gsha256sum' 'gsha384sum' 'gsha512sum' 'gshred' 'gshuf' 'gsleep' 'gsort'
+ 'gsplit' 'gstat' 'gstty' 'gsum' 'gsync' 'gtac' 'gtail' 'gtee' 'gtest'
+ 'gtimeout' 'gtouch' 'gtr' 'gtrue' 'gtruncate' 'gtsort' 'gtty' 'guname'
+ 'gunexpand' 'guniq' 'gunlink' 'guptime' 'gusers' 'gvdir' 'gwc' 'gwho'
+ 'gwhoami' 'gyes')
+
+ # Not part of coreutils, installed separately.
+ gcmds+=('gsed' 'gtar' 'gtime')
+
+ for gcmd in "${gcmds[@]}"; do
+ #
+ # This method allows for builtin commands to be primary but it's
+ # lost if hash -r or rehash -f is executed. Thus, those two
+ # functions have to be wrapped.
+ #
+ (( ${+commands[$gcmd]} )) && hash ${gcmd[2,-1]}=${commands[$gcmd]}
+
+ #
+ # This method generates wrapper functions.
+ # It will override shell builtins.
+ #
+ # (( ${+commands[$gcmd]} )) && \
+ # eval "function $gcmd[2,-1]() { \"${prefix}/${gcmd//"["/"\\["}\" \"\$@\"; }"
+
+ #
+ # This method is inflexible since the aliases are at risk of being
+ # overriden resulting in the BSD coreutils being called.
+ #
+ # (( ${+commands[$gcmd]} )) && \
+ # alias "$gcmd[2,-1]"="${prefix}/${gcmd//"["/"\\["}"
+ done
+
+ return 0
+ }
+ __gnu_utils;
+
+ function hash() {
+ if [[ "$*" =~ "-(r|f)" ]]; then
+ builtin hash "$@"
+ __gnu_utils
+ else
+ builtin hash "$@"
+ fi
+ }
+
+ function rehash() {
+ if [[ "$*" =~ "-f" ]]; then
+ builtin rehash "$@"
+ __gnu_utils
+ else
+ builtin rehash "$@"
+ fi
+ }
+fi
+
diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh
new file mode 100644
index 000000000..fc4c78c50
--- /dev/null
+++ b/plugins/gradle/gradle.plugin.zsh
@@ -0,0 +1,119 @@
+#!zsh
+##############################################################################
+# A descriptive listing of core Gradle commands
+############################################################################
+function _gradle_core_commands() {
+ local ret=1 state
+ _arguments ':subcommand:->subcommand' && ret=0
+
+ case $state in
+ subcommand)
+ subcommands=(
+ "properties:Display all project properties"
+ "tasks:Calculate and display all tasks"
+ "dependencies:Calculate and display all dependencies"
+ "projects:Discover and display all sub-projects"
+ "build:Build the project"
+ "help:Display help"
+ )
+ _describe -t subcommands 'gradle subcommands' subcommands && ret=0
+ esac
+
+ return ret
+}
+
+function _gradle_arguments() {
+ _arguments -C \
+ '-a[Do not rebuild project dependencies]' \
+ '-h[Help]' \
+ '-D[System property]' \
+ '-d[Log at the debug level]' \
+ '--gui[Launches the Gradle GUI app]' \
+ '--stop[Stop the Gradle daemon]' \
+ '--daemon[Use the Gradle daemon]' \
+ '--no-daemon[Do not use the Gradle daemon]' \
+ '--no-opt[Do not perform any task optimization]' \
+ '-i[Log at the info level]' \
+ '-m[Dry run]' \
+ '-P[Set a project property]' \
+ '--profile[Profile the build time]' \
+ '-q[Log at the quiet level (only show errors)]' \
+ '-v[Print the Gradle version info]' \
+ '-x[Specify a task to be excluded]' \
+ '*::command:->command' \
+ && return 0
+}
+
+
+##############################################################################
+# Are we in a directory containing a build.gradle file?
+############################################################################
+function in_gradle() {
+ if [[ -f build.gradle ]]; then
+ echo 1
+ fi
+}
+
+############################################################################
+# Define the stat_cmd command based on platform behavior
+##########################################################################
+stat -f%m . > /dev/null 2>&1
+if [ "$?" = 0 ]; then
+ stat_cmd=(stat -f%m)
+else
+ stat_cmd=(stat -L --format=%Y)
+fi
+
+############################################################################## Examine the build.gradle file to see if its
+# timestamp has changed, and if so, regen
+# the .gradle_tasks cache file
+############################################################################
+_gradle_does_task_list_need_generating () {
+ if [ ! -f .gradletasknamecache ]; then return 0;
+ else
+ accurate=$($stat_cmd .gradletasknamecache)
+ changed=$($stat_cmd build.gradle)
+ return $(expr $accurate '>=' $changed)
+ fi
+}
+
+
+##############################################################################
+# Discover the gradle tasks by running "gradle tasks --all"
+############################################################################
+_gradle_tasks () {
+ if [ in_gradle ]; then
+ _gradle_arguments
+ if _gradle_does_task_list_need_generating; then
+ gradle tasks --all | grep "^[ ]*[a-zA-Z0-9]*\ -\ " | sed "s/ - .*$//" | sed "s/[\ ]*//" > .gradletasknamecache
+ fi
+ compadd -X "==== Gradle Tasks ====" `cat .gradletasknamecache`
+ fi
+}
+
+_gradlew_tasks () {
+ if [ in_gradle ]; then
+ _gradle_arguments
+ if _gradle_does_task_list_need_generating; then
+ gradlew tasks --all | grep "^[ ]*[a-zA-Z0-9]*\ -\ " | sed "s/ - .*$//" | sed "s/[\ ]*//" > .gradletasknamecache
+ fi
+ compadd -X "==== Gradlew Tasks ====" `cat .gradletasknamecache`
+ fi
+}
+
+
+##############################################################################
+# Register the completions against the gradle and gradlew commands
+############################################################################
+compdef _gradle_tasks gradle
+compdef _gradlew_tasks gradlew
+
+
+##############################################################################
+# Open questions for future improvements:
+# 1) Should 'gradle tasks' use --all or just the regular set?
+# 2) Should gradlew use the same approach as gradle?
+# 3) Should only the " - " be replaced with a colon so it can work
+# with the richer descriptive method of _arguments?
+# gradle tasks | grep "^[a-zA-Z0-9]*\ -\ " | sed "s/ - /\:/"
+#############################################################################
diff --git a/plugins/grails/grails.plugin.zsh b/plugins/grails/grails.plugin.zsh
new file mode 100755
index 000000000..cc6f9c53b
--- /dev/null
+++ b/plugins/grails/grails.plugin.zsh
@@ -0,0 +1,54 @@
+_enumerateGrailsScripts() {
+ # Default directoryies
+ directories=($GRAILS_HOME/scripts ~/.grails/scripts ./scripts)
+
+ # Check all of the plugins directories, if they exist
+ if [ -d plugins ]
+ then
+ directories+=(plugins/*/scripts)
+ fi
+
+ # Enumerate all of the Groovy files
+ files=()
+ for dir in $directories;
+ do
+ if [ -d $dir ]
+ then
+ files+=($dir/[^_]*.groovy)
+ fi
+ done
+
+ # Don't try to basename ()
+ if [ ${#files} -eq 0 ];
+ then
+ return
+ fi
+
+ # - Strip the path
+ # - Remove all scripts with a leading '_'
+ # - PackagePlugin_.groovy -> PackagePlugin
+ # - PackagePlugin -> Package-Plugin
+ # - Package-Plugin -> package-plugin
+ basename $files \
+ | sed -E -e 's/^_?([^_]+)_?.groovy/\1/'\
+ -e 's/([a-z])([A-Z])/\1-\2/g' \
+ | tr "[:upper:]" "[:lower:]" \
+ | sort \
+ | uniq
+}
+
+_grails() {
+ if (( CURRENT == 2 )); then
+ scripts=( $(_enumerateGrailsScripts) )
+
+ if [ ${#scripts} -ne 0 ];
+ then
+ _multi_parts / scripts
+ return
+ fi
+ fi
+
+ _files
+}
+
+compdef _grails grails
diff --git a/plugins/heroku/_heroku b/plugins/heroku/_heroku
new file mode 100644
index 000000000..dc899e2b2
--- /dev/null
+++ b/plugins/heroku/_heroku
@@ -0,0 +1,158 @@
+#compdef heroku
+
+# Heroku Autocomplete plugin for Oh-My-Zsh
+# Requires: The Heroku client gem (https://github.com/heroku/heroku)
+# Author: Ali B. (http://awhitebox.com)
+
+local -a _1st_arguments
+_1st_arguments=(
+ "account\:confirm_billing":"Confirm that your account can be billed at the end of the month"
+ "addons":"list installed addons"
+ "addons\:list":"list all available addons"
+ "addons\:add":"install an addon"
+ "addons\:upgrade":"upgrade an existing addon"
+ "addons\:downgrade":"downgrade an existing addon"
+ "addons\:remove":"uninstall an addon"
+ "addons\:open":"open an addon's dashboard in your browser"
+ "apps":"list your apps"
+ "apps\:info":"show detailed app information"
+ "apps\:create":"create a new app"
+ "apps\:rename":"rename the app"
+ "apps\:open":"open the app in a web browser"
+ "apps\:destroy":"permanently destroy an app"
+ "auth\:login":"log in with your heroku credentials"
+ "auth\:logout":"clear local authentication credentials"
+ "config":"display the config vars for an app"
+ "config\:add":"add one or more config vars"
+ "config\:remove":"remove a config var"
+ "db\:push":"push local data up to your app"
+ "db\:pull":"pull heroku data down into your local database"
+ "domains":"list custom domains for an app"
+ "domains\:add":"add a custom domain to an app"
+ "domains\:remove":"remove a custom domain from an app"
+ "domains\:clear":"remove all custom domains from an app"
+ "help":"list available commands or display help for a specific command"
+ "keys":"display keys for the current user"
+ "keys\:add":"add a key for the current user"
+ "keys\:remove":"remove a key from the current user"
+ "keys\:clear":"remove all authentication keys from the current user"
+ "logs":"display recent log output"
+ "logs\:cron":"DEPRECATED: display cron logs from legacy logging"
+ "logs\:drains":"manage syslog drains"
+ "maintenance\:on":"put the app into maintenance mode"
+ "maintenance\:off":"take the app out of maintenance mode"
+ "pg\:info":"display database information"
+ "pg\:ingress":"allow direct connections to the database from this IP for one minute"
+ "pg\:promote":"sets DATABASE as your DATABASE_URL"
+ "pg\:psql":"open a psql shell to the database"
+ "pg\:reset":"delete all data in DATABASE"
+ "pg\:unfollow":"stop a replica from following and make it a read/write database"
+ "pg\:wait":"monitor database creation, exit when complete"
+ "pgbackups":"list captured backups"
+ "pgbackups\:url":"get a temporary URL for a backup"
+ "pgbackups\:capture":"capture a backup from a database id"
+ "pgbackups\:restore":"restore a backup to a database"
+ "pgbackups\:destroy":"destroys a backup"
+ "plugins":"list installed plugins"
+ "plugins\:install":"install a plugin"
+ "plugins\:uninstall":"uninstall a plugin"
+ "ps\:dynos":"scale to QTY web processes"
+ "ps\:workers":"scale to QTY background processes"
+ "ps":"list processes for an app"
+ "ps\:restart":"restart an app process"
+ "ps\:scale":"scale processes by the given amount"
+ "releases":"list releases"
+ "releases\:info":"view detailed information for a release"
+ "rollback":"roll back to an older release"
+ "run":"run an attached process"
+ "run\:rake":"remotely execute a rake command"
+ "run\:console":"open a remote console session"
+ "sharing":"list collaborators on an app"
+ "sharing\:add":"add a collaborator to an app"
+ "sharing\:remove":"remove a collaborator from an app"
+ "sharing\:transfer":"transfer an app to a new owner"
+ "ssl":"list certificates for an app"
+ "ssl\:add":"add an ssl certificate to an app"
+ "ssl\:remove":"remove an ssl certificate from an app"
+ "ssl\:clear":"remove all ssl certificates from an app"
+ "stack":"show the list of available stacks"
+ "stack\:migrate":"prepare migration of this app to a new stack"
+ "version":"show heroku client version"
+)
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+ _describe -t commands "heroku command" _1st_arguments
+ return
+fi
+
+local -a _command_args
+case "$words[1]" in
+ apps:info)
+ _command_args=(
+ '(-r|--raw)'{-r,--raw}'[output info as raw key/value pairs]' \
+ )
+ ;;
+ apps:create)
+ _command_args=(
+ '(-a|--addons)'{-a,--addons}'[a list of addons to install]' \
+ '(-r|--remote)'{-r,--remote}'[the git remote to create, default "heroku"]' \
+ '(-s|--stack)'{-s,--stack}'[the stack on which to create the app]' \
+ )
+ ;;
+ config)
+ _command_args=(
+ '(-s|--shell)'{-s,--shell}'[output config vars in shell format]' \
+ )
+ ;;
+ db:push)
+ _command_args=(
+ '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \
+ '(-d|--debug)'{-d,--debug}'[enable debugging output]' \
+ '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the push]' \
+ '(-f|--filter)'{-f,--filter}'[only push certain tables]' \
+ '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \
+ '(-t|--tables)'{-t,--tables}'[only push the specified tables]' \
+ )
+ ;;
+ db:pull)
+ _command_args=(
+ '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \
+ '(-d|--debug)'{-d,--debug}'[enable debugging output]' \
+ '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the pull]' \
+ '(-f|--filter)'{-f,--filter}'[only pull certain tables]' \
+ '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \
+ '(-t|--tables)'{-t,--tables}'[only pull the specified tables]' \
+ )
+ ;;
+ keys)
+ _command_args=(
+ '(-l|--long)'{-l,--long}'[display extended information for each key]' \
+ )
+ ;;
+ logs)
+ _command_args=(
+ '(-n|--num)'{-n,--num}'[the number of lines to display]' \
+ '(-p|--ps)'{-p,--ps}'[only display logs from the given process]' \
+ '(-s|--source)'{-s,--source}'[only display logs from the given source]' \
+ '(-t|--tail)'{-t,--tail}'[continually stream logs]' \
+ )
+ ;;
+ pgbackups:capture)
+ _command_args=(
+ '(-e|--expire)'{-e,--expire}'[if no slots are available to capture, delete the oldest backup to make room]' \
+ )
+ ;;
+ stack)
+ _command_args=(
+ '(-a|--all)'{-a,--all}'[include deprecated stacks]' \
+ )
+ ;;
+ esac
+
+_arguments \
+ $_command_args \
+ '(--app)--app[the app name]' \
+ && return 0
+
diff --git a/plugins/jake-node/jake-node.plugin.zsh b/plugins/jake-node/jake-node.plugin.zsh
new file mode 100644
index 000000000..a9eef4029
--- /dev/null
+++ b/plugins/jake-node/jake-node.plugin.zsh
@@ -0,0 +1,14 @@
+#---oh-my-zsh plugin : task Autocomplete for Jake tool---
+# Jake : https://github.com/mde/jake
+# Warning : Jakefile should have the right case : Jakefile or jakefile
+# Tested on : MacOSX 10.7 (Lion), Ubuntu 11.10
+# Author : Alexandre Lacheze (@al3xstrat)
+# Inspiration : http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh
+
+function _jake () {
+ if [ -f Jakefile ]||[ -f jakefile ]; then
+ compadd `jake -T | cut -d " " -f 2 | sed -E "s/.\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"`
+ fi
+}
+
+compdef _jake jake \ No newline at end of file
diff --git a/plugins/jruby/jruby.plugin.zsh b/plugins/jruby/jruby.plugin.zsh
new file mode 100755
index 000000000..bb7975b10
--- /dev/null
+++ b/plugins/jruby/jruby.plugin.zsh
@@ -0,0 +1,4 @@
+# Aliases
+alias jrspec='jruby --debug -S rspec --debug'
+alias jprofile='jruby --profile.api -S rspec'
+alias jexec='jruby -S'
diff --git a/plugins/knife/_knife b/plugins/knife/_knife
index 7f8c95ee5..8453af5be 100644
--- a/plugins/knife/_knife
+++ b/plugins/knife/_knife
@@ -26,7 +26,7 @@ _knife() {
case $state in
knifecmd)
- compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" exec index node recipe role search ssh status windows $cloudproviders
+ compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" exec environment index node recipe role search ssh status windows $cloudproviders
;;
knifesubcmd)
case $words[2] in
@@ -42,6 +42,9 @@ _knife() {
cookbook)
compadd -Q "$@" test list create download delete "metadata from" show "bulk delete" metadata upload
;;
+ environment)
+ compadd -Q "$@" list create delete edit show "from file"
+ ;;
node)
compadd -Q "$@" "from file" create show edit delete list run_list "bulk delete"
;;
@@ -138,27 +141,31 @@ _knife_options3() {
# The chef_x_remote functions use knife to get a list of objects of type x on the server
_chef_roles_remote() {
- (knife role list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife role list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
}
_chef_clients_remote() {
- (knife client list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife client list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
}
_chef_nodes_remote() {
- (knife node list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife node list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
}
_chef_cookbooks_remote() {
- (knife cookbook list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife cookbook list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
}
_chef_sitecookbooks_remote() {
- (knife cookbook site list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife cookbook site list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
}
_chef_data_bags_remote() {
- (knife data bag list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+ (knife data bag list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
+}
+
+_chef_environments_remote() {
+ (knife environment list | awk '{print $1}')
}
# The chef_x_local functions use the knife config to find the paths of relevant objects x to be uploaded to the server
diff --git a/plugins/lol/lol.plugin.zsh b/plugins/lol/lol.plugin.zsh
index a7153bb57..697f98d66 100644
--- a/plugins/lol/lol.plugin.zsh
+++ b/plugins/lol/lol.plugin.zsh
@@ -8,19 +8,30 @@ alias rtfm='man'
alias visible='echo'
alias invisible='cat'
alias moar='more'
+alias tldr='less'
+alias alwayz='tail -f'
alias icanhas='mkdir'
+alias gimmeh='touch'
alias donotwant='rm'
alias dowant='cp'
alias gtfo='mv'
+alias nowai='chmod'
alias hai='cd'
+alias iz='ls'
alias plz='pwd'
+alias ihasbucket='df -h'
alias inur='locate'
+alias iminurbase='finger'
-alias nomz='ps -aux'
+alias btw='nice'
+alias obtw='nohup'
+
+alias nomz='ps aux'
alias nomnom='killall'
+alias byes='exit'
alias cya='reboot'
alias kthxbai='halt'
diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
new file mode 100644
index 000000000..caf0d9efc
--- /dev/null
+++ b/plugins/mercurial/mercurial.plugin.zsh
@@ -0,0 +1,14 @@
+
+# Mercurial
+alias hgc='hg commit'
+alias hgb='hg branch'
+alias hgba='hg branches'
+alias hgco='hg checkout'
+alias hgd='hg diff'
+alias hged='hg diffmerge'
+# pull and update
+alias hgl='hg pull -u'
+alias hgp='hg push'
+alias hgs='hg status'
+# this is the 'git commit --amend' equivalent
+alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh
new file mode 100644
index 000000000..e8af2f49d
--- /dev/null
+++ b/plugins/mvn/mvn.plugin.zsh
@@ -0,0 +1,6 @@
+function listMavenCompletions {
+ reply=(
+ cli:execute cli:execute-phase archetype:generate generate-sources compile clean install test test-compile deploy package cobertura:cobertura jetty:run gwt:run gwt:debug -DskipTests -Dmaven.test.skip=true -DarchetypeCatalog=http://tapestry.formos.com/maven-snapshot-repository -Dtest= `if [ -d ./src ] ; then find ./src -type f | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi`);
+}
+
+compctl -K listMavenCompletions mvn \ No newline at end of file
diff --git a/plugins/npm/_npm b/plugins/npm/_npm
deleted file mode 100644
index 24b536188..000000000
--- a/plugins/npm/_npm
+++ /dev/null
@@ -1,19 +0,0 @@
-#compdef npm
-
-# Node Package Manager 0.3.15 completion, letting npm do all the completion work
-
-_npm() {
- compadd -- $(_npm_complete $words)
-}
-
-# We want to show all errors of any substance, but never the "npm (not )ok" one.
-# (Also doesn't consider "ERR! no match found" worth breaking the terminal for.)
-_npm_complete() {
- local ask_npm
- ask_npm=(npm completion --color false --loglevel error -- $@)
- { _call_program npm $ask_npm 2>&1 >&3 \
- | egrep -v '^(npm (not |)ok|ERR! no match found)$' >&2; \
- } 3>&1
-}
-
-_npm "$@"
diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh
new file mode 100644
index 000000000..c3eb91d31
--- /dev/null
+++ b/plugins/npm/npm.plugin.zsh
@@ -0,0 +1 @@
+eval "$(npm completion 2>/dev/null)"
diff --git a/plugins/nyan/nyan.plugin.zsh b/plugins/nyan/nyan.plugin.zsh
new file mode 100644
index 000000000..6321e5f5a
--- /dev/null
+++ b/plugins/nyan/nyan.plugin.zsh
@@ -0,0 +1,5 @@
+if [[ -x `which nc` ]]; then
+ alias nyan='nc -v miku.acm.uiuc.edu 23' # nyan cat
+fi
+
+
diff --git a/plugins/pip/_pip b/plugins/pip/_pip
index b58010173..df53ba5ce 100644
--- a/plugins/pip/_pip
+++ b/plugins/pip/_pip
@@ -3,30 +3,43 @@
# pip zsh completion, based on homebrew completion
+_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]'))
+ fi
+}
+
_pip_installed() {
- installed_pkgs=(`pip freeze`)
+ installed_pkgs=(`pip freeze | cut -d '=' -f 1`)
}
local -a _1st_arguments
_1st_arguments=(
- 'bundle:Create pybundles (archives containing multiple packages)'
- 'freeze:Output all currently installed packages (exact versions) to stdout'
- 'help:Show available commands'
- 'install:Install packages'
- 'search:Search PyPI'
- 'uninstall:Uninstall packages'
- 'unzip:Unzip individual packages'
- 'zip:Zip individual packages'
+ 'bundle:create pybundles (archives containing multiple packages)'
+ 'freeze:output all currently installed packages (exact versions) to stdout'
+ 'help:show available commands'
+ 'install:install packages'
+ 'search:search PyPI'
+ 'uninstall:uninstall packages'
+ 'unzip:unzip individual packages'
+ 'zip:zip individual packages'
)
local expl
-local -a pkgs installed_pkgs
+local -a all_pkgs installed_pkgs
_arguments \
- '(--version)--version[Show version number of program and exit]' \
- '(-v --verbose)'{-v,--verbose}'[Give more output]' \
- '(-q --quiet)'{-q,--quiet}'[Give less output]' \
- '(-h --help)'{-h,--help}'[Show help]' \
+ '(--version)--version[show version number of program and exit]' \
+ '(-h --help)'{-h,--help}'[show help]' \
+ '(-E --environment)'{-E,--environment}'[virtualenv environment to run pip in]' \
+ '(-s --enable-site-packages)'{-s,--enable-site-packages}'[include site-packages in virtualenv]' \
+ '(-v --verbose)'{-v,--verbose}'[give more output]' \
+ '(-q --quiet)'{-q,--quiet}'[give less output]' \
+ '(--log)--log[log file location]' \
+ '(--proxy)--proxy[proxy in form user:passwd@proxy.server:port]' \
+ '(--timeout)--timeout[socket timeout (default 15s)]' \
'*:: :->subcmds' && return 0
if (( CURRENT == 1 )); then
@@ -35,10 +48,25 @@ if (( CURRENT == 1 )); then
fi
case "$words[1]" in
- list)
- if [[ "$state" == forms ]]; then
- _pip_installed
- _requested installed_pkgs expl 'installed packages' compadd -a installed_pkgs
+ search)
+ _arguments \
+ '(--index)--index[base URL of Python Package Index]' ;;
+ freeze)
+ _arguments \
+ '(-l --local)'{-l,--local}'[report only virtualenv packages]' ;;
+ install)
+ _arguments \
+ '(-U --upgrade)'{-U,--upgrade}'[upgrade all packages to the newest available version]' \
+ '(-f --find-links)'{-f,--find-links}'[URL for finding packages]' \
+ '(--no-deps --no-dependencies)'{--no-deps,--no-dependencies}'[iIgnore package dependencies]' \
+ '(--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]' \
+ '1: :->packages' && return 0
+
+ if [[ "$state" == packages ]]; then
+ _pip_all
+ _wanted piplist expl 'packages' compadd -a piplist
fi ;;
uninstall)
_pip_installed
diff --git a/plugins/pow/pow.plugin.zsh b/plugins/pow/pow.plugin.zsh
index 6b2a6f2be..399a54cb0 100644
--- a/plugins/pow/pow.plugin.zsh
+++ b/plugins/pow/pow.plugin.zsh
@@ -1,10 +1,66 @@
-# Thanks to Christopher Sexton
-# https://gist.github.com/965032
-function kapow {
- touch ~/.pow/$1/tmp/restart.txt
- if [ $? -eq 0 ]; then
- echo "$fg[yellow]Pow restarting $1...$reset_color"
- fi
+# Restart a rack app running under pow
+# http://pow.cx/
+#
+# Adds a kapow command that will restart an app
+#
+# $ kapow myapp
+#
+# Supports command completion.
+#
+# If you are not already using completion you might need to enable it with
+#
+# autoload -U compinit compinit
+#
+# Changes:
+#
+# Defaults to the current application, and will walk up the tree to find
+# a config.ru file and restart the corresponding app
+#
+# Will Detect if a app does not exist in pow and print a (slightly) helpful
+# error message
+
+rack_root_detect(){
+ setopt chaselinks
+ local orgdir=$(pwd)
+ local basedir=$(pwd)
+
+ while [[ $basedir != '/' ]]; do
+ test -e "$basedir/config.ru" && break
+ builtin cd ".." 2>/dev/null
+ basedir="$(pwd)"
+ done
+
+ builtin cd $orgdir 2>/dev/null
+ [[ ${basedir} == "/" ]] && return 1
+ echo `basename $basedir | sed -E "s/.(com|net|org)//"`
}
+kapow(){
+ local vhost=$1
+ [ ! -n "$vhost" ] && vhost=$(rack_root_detect)
+ if [ ! -h ~/.pow/$vhost ]
+ then
+ echo "pow: This domain isn’t set up yet. Symlink your application to ${vhost} first."
+ return 1
+ fi
+
+ [ ! -d ~/.pow/${vhost}/tmp ] && mkdir -p ~/.pow/$vhost/tmp
+ touch ~/.pow/$vhost/tmp/restart.txt;
+ [ $? -eq 0 ] && echo "pow: restarting $vhost.dev"
+}
compctl -W ~/.pow -/ kapow
+
+powit(){
+ local basedir=$(pwd)
+ local vhost=$1
+ [ ! -n "$vhost" ] && vhost=$(rack_root_detect)
+ if [ ! -h ~/.pow/$vhost ]
+ then
+ echo "pow: Symlinking your app with pow. ${vhost}"
+ [ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost
+ return 1
+ fi
+}
+
+# View the standard out (puts) from any pow app
+alias kaput="tail -f ~/Library/Logs/Pow/apps/*"
diff --git a/plugins/powder/_powder b/plugins/powder/_powder
new file mode 100644
index 000000000..84e260a15
--- /dev/null
+++ b/plugins/powder/_powder
@@ -0,0 +1,4 @@
+#compdef powder
+#autoload
+
+compadd `powder help | grep powder | cut -d " " -f 4`
diff --git a/plugins/python/python.plugin.zsh b/plugins/python/python.plugin.zsh
new file mode 100644
index 000000000..8be3cd863
--- /dev/null
+++ b/plugins/python/python.plugin.zsh
@@ -0,0 +1,8 @@
+# Find python file
+alias pyfind='find . -name "*.py"'
+
+# Remove python compiled byte-code
+alias pyclean='find . -type f -name "*.py[co]" -delete'
+
+# Grep among .py files
+alias pygrep='grep --include="*.py"'
diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index ac8119e83..4aa7a05d6 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -2,6 +2,7 @@ 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 sc='ruby script/console'
diff --git a/plugins/rails3/rails3.plugin.zsh b/plugins/rails3/rails3.plugin.zsh
index f4ee637e6..237d0594b 100644
--- a/plugins/rails3/rails3.plugin.zsh
+++ b/plugins/rails3/rails3.plugin.zsh
@@ -13,7 +13,11 @@ 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'
diff --git a/plugins/rake/rake.plugin.zsh b/plugins/rake/rake.plugin.zsh
new file mode 100644
index 000000000..16b933c14
--- /dev/null
+++ b/plugins/rake/rake.plugin.zsh
@@ -0,0 +1,6 @@
+alias rake="noglob rake" # allows square brackts for rake task invocation
+alias brake='noglob bundle exec rake' # execute the bundled rake gem
+alias srake='noglob sudo rake' # noglob must come before sudo
+alias sbrake='noglob sudo bundle exec rake' # altogether now ...
+
+
diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh
new file mode 100644
index 000000000..d855c2445
--- /dev/null
+++ b/plugins/rbenv/rbenv.plugin.zsh
@@ -0,0 +1,57 @@
+_homebrew-installed() {
+ type brew &> /dev/null
+}
+
+_rbenv-from-homebrew-installed() {
+ brew --prefix rbenv &> /dev/null
+}
+
+FOUND_RBENV=0
+rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv")
+if _homebrew-installed && _rbenv-from-homebrew-installed ; then
+ rbenvdirs=($(brew --prefix rbenv) "${rbenvdirs[@]}")
+fi
+
+for rbenvdir in "${rbenvdirs[@]}" ; do
+ if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then
+ FOUND_RBENV=1
+ export RBENV_ROOT=$rbenvdir
+ export PATH=${rbenvdir}/bin:$PATH
+ eval "$(rbenv init - zsh)"
+
+ alias rubies="rbenv versions"
+ alias gemsets="rbenv gemset list"
+
+ function current_ruby() {
+ echo "$(rbenv version-name)"
+ }
+
+ function current_gemset() {
+ echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)"
+ }
+
+ function gems {
+ local rbenv_path=$(rbenv prefix)
+ gem list $@ | sed \
+ -Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \
+ -Ee "s|$(echo $rbenv_path)|$fg[magenta]\$rbenv_path$reset_color|g" \
+ -Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \
+ -Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g"
+ }
+
+ function rbenv_prompt_info() {
+ if [[ -n $(current_gemset) ]] ; then
+ echo "$(current_ruby)@$(current_gemset)"
+ else
+ echo "$(current_ruby)"
+ fi
+ }
+ fi
+done
+unset rbenvdir
+
+if [ $FOUND_RBENV -eq 0 ] ; then
+ alias rubies='ruby -v'
+ function gemsets() { echo 'not supported' }
+ function rbenv_prompt_info() { echo "system: $(ruby -v | cut -f-2 -d ' ')" }
+fi
diff --git a/plugins/rbfu/rbfu.plugin.zsh b/plugins/rbfu/rbfu.plugin.zsh
new file mode 100644
index 000000000..008485205
--- /dev/null
+++ b/plugins/rbfu/rbfu.plugin.zsh
@@ -0,0 +1,42 @@
+# Enables rbfu with --auto option, if available.
+#
+# Also provides a command to list all installed/available
+# rubies. To ensure compatibility with themes, creates the
+# rvm_prompt_info function to return the $RBFU_RUBY_VERSION
+# version.
+
+command -v rbfu &>/dev/null
+
+if [[ $? -eq 0 ]]; then
+ eval "$(rbfu --init --auto)"
+
+ # Internal: Print ruby version details, if it's currently
+ # active etc.
+ function _rbfu_rubies_print() {
+ local rb rb_out
+ rb=$(basename $1)
+ rb_out="$rb"
+ [[ -h $1 ]] && rb_out="$rb_out${fg[green]}@${reset_color}"
+ [[ "x$rb" == "x$2" ]] && rb_out="${fg[red]}$rb_out ${fg[red]}*${reset_color}"
+ echo $rb_out
+ }
+
+ # Public: Provide a list with all available rubies, this basically depends
+ # on `ls -1` and .rfbu/rubies. Highlights the currently active ruby version
+ # and aliases.
+ function rbfu-rubies() {
+ local rbfu_dir active_rb
+ rbfu_dir=$RBFU_RUBIES
+ active_rb=$RBFU_RUBY_VERSION
+ [[ -z "$rbfu_dir" ]] && rbfu_dir="${HOME}/.rbfu/rubies"
+ [[ -z "$active_rb" ]] && active_rb="system"
+ _rbfu_rubies_print "${rbfu_dir}/system" $active_rb
+ for rb in $(ls -1 $rbfu_dir); do
+ _rbfu_rubies_print "${rbfu_dir}/${rb}" $active_rb
+ done
+ }
+
+ # Public: Create rvm_prompt_info command for themes compatibility, unless
+ # it has already been defined.
+ [ ! -x rvm_prompt_info ] && function rvm_prompt_info() { echo "${RBFU_RUBY_VERSION:=system}" }
+fi
diff --git a/plugins/ruby/ruby.plugin.zsh b/plugins/ruby/ruby.plugin.zsh
index 08ca9c601..38e4d7cd0 100644
--- a/plugins/ruby/ruby.plugin.zsh
+++ b/plugins/ruby/ruby.plugin.zsh
@@ -3,4 +3,4 @@
alias sgem='sudo gem'
# Find ruby file
-alias rfind='find . -name *.rb | xargs grep -n'
+alias rfind='find . -name "*.rb" | xargs grep -n'
diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
index 24621fe0b..604c00713 100644
--- a/plugins/rvm/rvm.plugin.zsh
+++ b/plugins/rvm/rvm.plugin.zsh
@@ -37,7 +37,7 @@ function gems {
local current_gemset=`rvm-prompt g`
gem list $@ | sed \
- -Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \
+ -Ee "s/\([0-9, \.]+( .+)?\)/$fg[blue]&$reset_color/g" \
-Ee "s|$(echo $rvm_path)|$fg[magenta]\$rvm_path$reset_color|g" \
-Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \
-Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g"
diff --git a/plugins/screen/screen.plugin.zsh b/plugins/screen/screen.plugin.zsh
new file mode 100644
index 000000000..98178e807
--- /dev/null
+++ b/plugins/screen/screen.plugin.zsh
@@ -0,0 +1,54 @@
+# if using GNU screen, let the zsh tell screen what the title and hardstatus
+# of the tab window should be.
+if [[ $TERM == "screen" ]]; then
+ if [[ $_GET_PATH == '' ]]; then
+ _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^\/home\//~/;s/^~$USER/~/"'
+ fi
+ if [[ $_GET_HOST == '' ]]; then
+ _GET_HOST='echo $HOST | sed "s/\..*//"'
+ fi
+
+ # use the current user as the prefix of the current tab title
+ TAB_TITLE_PREFIX='"`'$_GET_HOST'`:`'$_GET_PATH' | sed "s:..*/::"`$PROMPT_CHAR"'
+ # when at the shell prompt, show a truncated version of the current path (with
+ # standard ~ replacement) as the rest of the title.
+ TAB_TITLE_PROMPT='$SHELL:t'
+ # when running a command, show the title of the command as the rest of the
+ # title (truncate to drop the path to the command)
+ TAB_TITLE_EXEC='$cmd[1]:t'
+
+ # use the current path (with standard ~ replacement) in square brackets as the
+ # prefix of the tab window hardstatus.
+ TAB_HARDSTATUS_PREFIX='"[`'$_GET_PATH'`] "'
+ # when at the shell prompt, use the shell name (truncated to remove the path to
+ # the shell) as the rest of the title
+ TAB_HARDSTATUS_PROMPT='$SHELL:t'
+ # when running a command, show the command name and arguments as the rest of
+ # the title
+ TAB_HARDSTATUS_EXEC='$cmd'
+
+ # tell GNU screen what the tab window title ($1) and the hardstatus($2) should be
+ function screen_set()
+ {
+ # set the tab window title (%t) for screen
+ print -nR $'\033k'$1$'\033'\\\
+
+ # set hardstatus of tab window (%h) for screen
+ print -nR $'\033]0;'$2$'\a'
+ }
+ # called by zsh before executing a command
+ function preexec()
+ {
+ local -a cmd; cmd=(${(z)1}) # the command string
+ eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_EXEC"
+ eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_EXEC"
+ screen_set $tab_title $tab_hardstatus
+ }
+ # called by zsh before showing the prompt
+ function precmd()
+ {
+ eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_PROMPT"
+ eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_PROMPT"
+ screen_set $tab_title $tab_hardstatus
+ }
+fi \ No newline at end of file
diff --git a/plugins/sprunge/sprunge.plugin.zsh b/plugins/sprunge/sprunge.plugin.zsh
new file mode 100644
index 000000000..9f9432ac8
--- /dev/null
+++ b/plugins/sprunge/sprunge.plugin.zsh
@@ -0,0 +1,64 @@
+# Contributed and SLIGHTLY modded by Matt Parnell/ilikenwf <parwok -at- gmail>
+# Created by the blogger at the URL below...I don't know where to find his/her name
+# Original found at http://www.shellperson.net/sprunge-pastebin-script/
+
+usage() {
+description | fmt -s >&2
+}
+
+description() {
+cat << HERE
+
+DESCRIPTION
+ Upload data and fetch URL from the pastebin http://sprunge.us
+
+USAGE
+ $0 filename.txt
+ $0 text string
+ $0 < filename.txt
+ piped_data | $0
+
+NOTES
+--------------------------------------------------------------------------
+* INPUT METHODS *
+$0 can accept piped data, STDIN redirection [<filename.txt], text strings following the command as arguments, or filenames as arguments. Only one of these methods can be used at a time, so please see the note on precedence. Also, note that using a pipe or STDIN redirection will treat tabs as spaces, or disregard them entirely (if they appear at the beginning of a line). So I suggest using a filename as an argument if tabs are important either to the function or readability of the code.
+
+* PRECEDENCE *
+STDIN redirection has precedence, then piped input, then a filename as an argument, and finally text strings as an arguments.
+
+ EXAMPLE:
+ echo piped | "$0" arguments.txt < stdin_redirection.txt
+
+In this example, the contents of file_as_stdin_redirection.txt would be uploaded. Both the piped_text and the file_as_argument.txt are ignored. If there is piped input and arguments, the arguments will be ignored, and the piped input uploaded.
+
+* FILENAMES *
+If a filename is misspelled or doesn't have the necessary path description, it will NOT generate an error, but will instead treat it as a text string and upload it.
+--------------------------------------------------------------------------
+
+HERE
+exit
+}
+
+sprunge() {
+ if [ -t 0 ]; then
+ echo Running interactively, checking for arguments... >&2
+ if [ "$*" ]; then
+ echo Arguments present... >&2
+ if [ -f "$*" ]; then
+ echo Uploading the contents of "$*"... >&2
+ cat "$*"
+ else
+ echo Uploading the text: \""$*"\"... >&2
+ echo "$*"
+ fi | curl -F 'sprunge=<-' http://sprunge.us
+ else
+ echo No arguments found, printing USAGE and exiting. >&2
+ usage
+ fi
+ else
+ echo Using input from a pipe or STDIN redirection... >&2
+ while read -r line ; do
+ echo $line
+ done | curl -F 'sprunge=<-' http://sprunge.us
+ fi
+}
diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
new file mode 100755
index 000000000..91b0279c5
--- /dev/null
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -0,0 +1,9 @@
+# Sublime Text 2 Aliases
+#unamestr = 'uname'
+
+if [[ $('uname') == 'Linux' ]]; then
+ alias st='/usr/bin/sublime_text&'
+elif [[ $('uname') == 'Darwin' ]]; then
+ alias st='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'
+fi
+alias stt='st .'
diff --git a/plugins/suse/suse.plugin.zsh b/plugins/suse/suse.plugin.zsh
new file mode 100644
index 000000000..d46286948
--- /dev/null
+++ b/plugins/suse/suse.plugin.zsh
@@ -0,0 +1,7 @@
+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'
diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh
index 53a8a513a..4d5bfb8dd 100644
--- a/plugins/svn/svn.plugin.zsh
+++ b/plugins/svn/svn.plugin.zsh
@@ -1,5 +1,5 @@
function svn_prompt_info {
- if [ in_svn ]; then
+ if [ $(in_svn) ]; then
echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\
$ZSH_THEME_REPO_NAME_COLOR$(svn_get_repo_name)$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR"
fi
@@ -13,21 +13,21 @@ function in_svn() {
}
function svn_get_repo_name {
- if [ in_svn ]; then
+ if [ $(in_svn) ]; then
svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT
- svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" | sed "s/\/.*$//"
+ svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p"
fi
}
function svn_get_rev_nr {
- if [ in_svn ]; then
+ if [ $(in_svn) ]; then
svn info 2> /dev/null | sed -n s/Revision:\ //p
fi
}
function svn_dirty_choose {
- if [ in_svn ]; then
+ if [ $(in_svn) ]; then
s=$(svn status|grep -E '^\s*[ACDIM!?L]' 2>/dev/null)
if [ $s ]; then
echo $1
diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh
new file mode 100644
index 000000000..644266841
--- /dev/null
+++ b/plugins/symfony2/symfony2.plugin.zsh
@@ -0,0 +1,13 @@
+# Symfony2 basic command completion
+
+_symfony2_get_command_list () {
+ app/console --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
+}
+
+_symfony2 () {
+ if [ -f app/console ]; then
+ compadd `_symfony2_get_command_list`
+ fi
+}
+
+compdef _symfony2 app/console \ No newline at end of file
diff --git a/plugins/taskwarrior/_task b/plugins/taskwarrior/_task
index 5bffa9119..0bda738bb 100644
--- a/plugins/taskwarrior/_task
+++ b/plugins/taskwarrior/_task
@@ -1,37 +1,37 @@
#compdef task
-#
# zsh completion for taskwarrior
#
+# taskwarrior - a command line task list manager.
+#
# Copyright 2010 - 2011 Johannes Schlatow
# Copyright 2009 P.C. Shyamshankar
-# All rights reserved.
-#
-# This script is part of the taskwarrior project.
#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
#
-# Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor,
-# Boston, MA
-# 02110-1301
-# USA
+# http://www.opensource.org/licenses/mit-license.php
#
typeset -g _task_cmds _task_projects _task_tags _task_config _task_modifiers
_task_projects=($(task _projects))
_task_tags=($(task _tags))
_task_ids=($(task _ids))
_task_config=($(task _config))
+_task_columns=($(task _columns))
_task_modifiers=(
'before' \
'after' \
@@ -46,39 +46,19 @@ _task_modifiers=(
'word' \
'noword'
)
+_task_conjunctions=(
+ 'and' \
+ 'or' \
+ 'xor' \
+ '\)'
+ '\('
+)
_task_cmds=($(task _commands))
_task_zshcmds=( ${(f)"$(task _zshcommands)"} )
-
-_task_idCmds=(
- 'append' \
- 'prepend' \
- 'annotate' \
- 'denotate' \
- 'edit' \
- 'duplicate' \
- 'info' \
- 'start' \
- 'stop' \
- 'done'
-)
-
-_task_idCmdsDesc=(
- 'append:Appends more description to an existing task.' \
- 'prepend:Prepends more description to an existing task.' \
- 'annotate:Adds an annotation to an existing task.' \
- 'denotate:Deletes an annotation of an existing task.' \
- 'edit:Launches an editor to let you modify a task directly.' \
- 'duplicate:Duplicates the specified task, and allows modifications.' \
- 'info:Shows all data, metadata for specified task.' \
- 'start:Marks specified task as started.' \
- 'stop:Removes the start time from a task.' \
- 'done:Marks the specified task as completed.'
-)
-
_task() {
_arguments -s -S \
- "*::task command:_task_commands"
+ "*::task default:_task_default"
return 0
}
@@ -148,6 +128,7 @@ _regex_words values 'task frequencies' \
'weekly:Every week' \
'biweekly:Every two weeks' \
'fortnight:Every two weeks' \
++ 'monthly:Every month' \
'quarterly:Every three months' \
'semiannual:Every six months' \
'annual:Every year' \
@@ -196,22 +177,13 @@ _regex_arguments _task_attributes "${args[@]}"
## task commands
-# default completion
-(( $+functions[_task_default] )) ||
-_task_default() {
+# filter completion
+(( $+functions[_task_filter] )) ||
+_task_filter() {
_task_attributes "$@"
-}
-# commands expecting an ID
-(( $+functions[_task_id] )) ||
-_task_id() {
- if (( CURRENT < 3 )); then
- # update IDs
- _task_zshids=( ${(f)"$(task _zshids)"} )
- _describe -t values 'task IDs' _task_zshids
- else
- _task_attributes "$@"
- fi
+ # TODO complete conjunctions only if the previous word is a filter expression, i.e. attribute, ID, any non-command
+ _describe -t default 'task conjunctions' _task_conjunctions
}
# merge completion
@@ -235,46 +207,42 @@ _task_pull() {
_files
}
+# execute completion
+(( $+functions[_task_execute] )) ||
+_task_execute() {
+ _files
+}
-# modify (task [0-9]* ...) completion
-(( $+functions[_task_modify] )) ||
-_task_modify() {
- _describe -t commands 'task command' _task_idCmdsDesc
- _task_attributes "$@"
+# id-only completion
+(( $+functions[_task_id] )) ||
+_task_id() {
+ _describe -t values 'task IDs' _task_zshids
}
## first level completion => task sub-command completion
-(( $+functions[_task_commands] )) ||
-_task_commands() {
+(( $+functions[_task_default] )) ||
+_task_default() {
local cmd ret=1
- if (( CURRENT == 1 )); then
- # update IDs
- _task_zshids=( ${(f)"$(task _zshids)"} )
-
- _describe -t commands 'task command' _task_zshcmds
- _describe -t values 'task IDs' _task_zshids
- # TODO match more than one ID
- elif [[ $words[1] =~ ^[0-9]*$ ]] then
- _call_function ret _task_modify
- return ret
- else
-# local curcontext="${curcontext}"
-# cmd="${_task_cmds[(r)$words[1]:*]%%:*}"
- cmd="${_task_cmds[(r)$words[1]]}"
- idCmd="${(M)_task_idCmds[@]:#$words[1]}"
- if (( $#cmd )); then
-# curcontext="${curcontext%:*:*}:task-${cmd}"
- if (( $#idCmd )); then
- _call_function ret _task_id
- else
- _call_function ret _task_${cmd} ||
- _call_function ret _task_default ||
- _message "No command remaining."
- fi
- else
- _message "Unknown subcommand ${cmd}"
- fi
- return ret
- fi
+ integer i=1
+ while (( i < $#words ))
+ do
+ cmd="${_task_cmds[(r)$words[$i]]}"
+ if (( $#cmd )); then
+ _call_function ret _task_${cmd} ||
+ _call_function ret _task_filter ||
+ _message "No command remaining."
+ return ret
+ fi
+ (( i++ ))
+ done
+
+ # update IDs
+ _task_zshids=( ${(f)"$(task _zshids)"} )
+
+ _describe -t commands 'task command' _task_zshcmds
+ _describe -t values 'task IDs' _task_zshids
+ _call_function ret _task_filter
+
+ return ret
}
diff --git a/plugins/terminalapp/terminalapp.plugin.zsh b/plugins/terminalapp/terminalapp.plugin.zsh
new file mode 100644
index 000000000..4695ad055
--- /dev/null
+++ b/plugins/terminalapp/terminalapp.plugin.zsh
@@ -0,0 +1,11 @@
+# Set Apple Terminal.app resume directory
+# based on this answer: http://superuser.com/a/315029
+
+function chpwd {
+ local SEARCH=' '
+ local REPLACE='%20'
+ local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
+ printf '\e]7;%s\a' "$PWD_URL"
+}
+
+chpwd \ No newline at end of file
diff --git a/plugins/terminitor/_terminitor b/plugins/terminitor/_terminitor
new file mode 100644
index 000000000..1ce87c3ad
--- /dev/null
+++ b/plugins/terminitor/_terminitor
@@ -0,0 +1,38 @@
+#compdef terminitor
+#autoload
+
+# terminitor zsh completion
+
+_terminitor_available_scripts() {
+ scripts=(`for SCRIPT in ~/.config/terminitor/*.term ; do basename $SCRIPT .term ; done`)
+}
+
+local -a _1st_arguments
+_1st_arguments=(
+ 'create:create a Termfile in directory'
+ 'delete:delete terminitor script'
+ 'edit:open termitor script'
+ 'fetch:clone the designated repo and run setup'
+ 'help:Describe available tasks or one specific task'
+ 'init:create initial root terminitor folder'
+ 'list:lists all terminitor scripts'
+ 'setup:execute setup in the terminitor script'
+ 'start:runs the terminitor script'
+ 'update:update Terminitor to new global path(.config/.terminitor)'
+)
+
+local expl
+
+_arguments \
+ '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+ _describe -t commands "terminitor task" _1st_arguments
+ return
+fi
+
+case "$words[1]" in
+ start|edit|delete|setup)
+ _terminitor_available_scripts
+ _wanted scripts expl 'installed scripts' compadd -a scripts ;;
+esac
diff --git a/plugins/textmate/textmate.plugin.zsh b/plugins/textmate/textmate.plugin.zsh
index aa2f75f4f..a11a097f5 100644
--- a/plugins/textmate/textmate.plugin.zsh
+++ b/plugins/textmate/textmate.plugin.zsh
@@ -1,5 +1,5 @@
alias et='mate .'
-alias ett='mate app config lib db public spec test Rakefile Capfile Todo'
+alias ett='mate Gemfile app config features lib db public spec test Rakefile Capfile Todo'
alias etp='mate app config lib db public spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
alias etts='mate app config lib db public script spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
new file mode 100644
index 000000000..5d0860400
--- /dev/null
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -0,0 +1,46 @@
+WRAPPER_FOUND=0
+for wrapsource in "/usr/bin/virtualenvwrapper.sh" "/usr/local/bin/virtualenvwrapper.sh" "/etc/bash_completion.d/virtualenvwrapper" ; do
+ if [[ -e $wrapsource ]] ; then
+ WRAPPER_FOUND=1
+ source $wrapsource
+
+ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
+ # Automatically activate Git projects' 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 {
+ # Check that this is a Git repo
+ PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
+ if (( $? == 0 )); then
+ # Check for virtualenv name override
+ ENV_NAME=`basename "$PROJECT_ROOT"`
+ if [[ -f "$PROJECT_ROOT/.venv" ]]; then
+ ENV_NAME=`cat "$PROJECT_ROOT/.venv"`
+ fi
+ # Activate the environment only if it is not already active
+ if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
+ if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
+ workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
+ fi
+ fi
+ elif [ $CD_VIRTUAL_ENV ]; then
+ # We've just left the repo, deactivate the environment
+ # Note: this only happens if the virtualenv was activated automatically
+ deactivate && unset CD_VIRTUAL_ENV
+ fi
+ unset PROJECT_ROOT
+ }
+
+ # New cd function that does the virtualenv magic
+ function cd {
+ builtin cd "$@" && workon_cwd
+ }
+ fi
+
+ break
+ fi
+done
+
+if [ $WRAPPER_FOUND -eq 0 ] ; then
+ print "zsh virtualenvwrapper plugin: Couldn't activate virtualenvwrapper. Please run \`pip install virtualenvwrapper\`."
+fi
diff --git a/plugins/vundle/vundle.plugin.zsh b/plugins/vundle/vundle.plugin.zsh
new file mode 100644
index 000000000..005a58476
--- /dev/null
+++ b/plugins/vundle/vundle.plugin.zsh
@@ -0,0 +1,23 @@
+function vundle-init () {
+ if [ ! -d ~/.vim/bundle/vundle/ ]
+ then
+ mkdir -p ~/.vim/bundle/vundle/
+ fi
+
+ if [ ! -d ~/.vim/bundle/vundle/.git/ ]
+ then
+ git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
+ echo "\n\tRead about vim configuration for vundle at https://github.com/gmarik/vundle\n"
+ fi
+}
+
+function vundle () {
+ vundle-init
+ vim -c "execute \"BundleInstall\" | q | q"
+}
+
+
+function vundle-update () {
+ vundle-init
+ vim -c "execute \"BundleInstall!\" | q | q"
+}
diff --git a/plugins/wakeonlan/README b/plugins/wakeonlan/README
new file mode 100644
index 000000000..16fdd4587
--- /dev/null
+++ b/plugins/wakeonlan/README
@@ -0,0 +1,29 @@
+This plugin provides a wrapper around the "wakeonlan" tool available from most
+distributions' package repositories, or from the following website:
+
+http://gsd.di.uminho.pt/jpo/software/wakeonlan/
+
+In order to use this wrapper, create the ~/.wakeonlan directory, and place in
+that directory one file for each device you would like to be able to wake. Give
+the file a name that describes the device, such as its hostname. Each file
+should contain a line with the mac address of the target device and the network
+broadcast address.
+
+For instance, there might be a file ~/.wakeonlan/leto with the following
+contents:
+
+00:11:22:33:44:55:66 192.168.0.255
+
+To wake that device, use the following command:
+
+# wake leto
+
+The available device names will be autocompleted, so:
+
+# wake <tab>
+
+...will suggest "leto", along with any other configuration files that were
+placed in the ~/.wakeonlan directory.
+
+For more information regarding the configuration file format, check the
+wakeonlan man page.
diff --git a/plugins/wakeonlan/_wake b/plugins/wakeonlan/_wake
new file mode 100644
index 000000000..4ab10d374
--- /dev/null
+++ b/plugins/wakeonlan/_wake
@@ -0,0 +1,4 @@
+#compdef wake
+#autoload
+
+_arguments "1:device to wake:_files -W '$HOME/.wakeonlan'" && return 0
diff --git a/plugins/wakeonlan/wakeonlan.plugin.zsh b/plugins/wakeonlan/wakeonlan.plugin.zsh
new file mode 100644
index 000000000..6cef7d44a
--- /dev/null
+++ b/plugins/wakeonlan/wakeonlan.plugin.zsh
@@ -0,0 +1,14 @@
+function wake() {
+ local config_file="$HOME/.wakeonlan/$1"
+ if [[ ! -f "$config_file" ]]; then
+ echo "ERROR: There is no configuration file at \"$config_file\"."
+ return 1
+ fi
+
+ if (( ! $+commands[wakeonlan] )); then
+ echo "ERROR: Can't find \"wakeonlan\". Are you sure it's installed?"
+ return 1
+ fi
+
+ wakeonlan -f "$config_file"
+}
diff --git a/plugins/yum/yum.plugin.zsh b/plugins/yum/yum.plugin.zsh
index d6ba7ed62..69abfc4ce 100644
--- a/plugins/yum/yum.plugin.zsh
+++ b/plugins/yum/yum.plugin.zsh
@@ -3,10 +3,14 @@
alias ys="yum search" # search package
alias yp="yum info" # show package info
alias yl="yum list" # list packages
+alias ygl="yum grouplist" # list package groups
alias yli="yum list installed" # print all installed packages
+alias ymc="yum makecache" # rebuilds the yum package list
alias yu="sudo yum update" # upgrate packages
alias yi="sudo yum install" # install package
+alias ygi="sudo yum groupinstall" # install package group
alias yr="sudo yum remove" # remove package
+alias ygr="sudo yum groupremove" # remove pagage group
alias yrl="sudo yum remove --remove-leaves" # remove package and leaves
-alias yc="sudo yum clean all" # clean cache
+alias yc="sudo yum clean all" # clean cache \ No newline at end of file