8411a39a869cd80474e3898f2fa4f204599b943a

Author
Pete Clark <pete.clark@gmail.com>
Committer
Pete Clark <pete.clark@gmail.com>
Date

Message

Merge branch 'master' of git://github.com/robbyrussell/oh-my-zsh into taskwarrior-plugin

Diff

This diff is truncated to protect this page.

  1diff --git a/.gitignore b/.gitignore
  2index ecb8e46bd2f1802c89e9b2f40361375241dc440b..2e8db7341894fdf0940c0c37995e93e1b3b0d9fa 100644
  3--- a/.gitignore
  4+++ b/.gitignore
  5@@ -2,6 +2,7 @@ locals.zsh
  6 log/.zsh_history
  7 projects.zsh
  8 custom/*
  9+!custom/example
 10 !custom/example.zsh
 11 cache
 12 *.swp
 13diff --git a/README.textile b/README.textile
 14index d01c3310a425d4a31017c2d22006575e6176c408..2dbfbe5a658d8bba2d387bbab272e189ab9e8fca 100644
 15--- a/README.textile
 16+++ b/README.textile
 17@@ -48,7 +48,9 @@ the "refcard":http://www.bash2zsh.com/zsh_refcard/refcard.pdf is pretty tasty fo
 18 h3. Customization
 19 
 20 If you want to override any of the default behavior, just add a new file (ending in @.zsh@) into the @custom/@ directory.
 21-If you have many functions which go good together you can put them as a *.plugin.zsh file in the @plugin/@ directory and then enable this plugin.
 22+If you have many functions which go good together you can put them as a *.plugin.zsh file in the @custom/plugins/@ directory and then enable this plugin.
 23+If you would like to override the functionality of a plugin distributed with oh-my-zsh, create a plugin of the same name in the @custom/plugins/@ directory and it will be loaded instead of the one in @plugins/@.
 24+
 25 
 26 h3. Uninstalling
 27 
 28@@ -68,4 +70,4 @@ This project wouldn't exist without all of our awesome users and contributors.
 29 
 30 * "View our growing list of contributors":https://github.com/robbyrussell/oh-my-zsh/contributors
 31 
 32-Thank you so much!
 33+Thank you so much!
 34diff --git a/custom/example/example.plugin.zsh b/custom/example/example.plugin.zsh
 35new file mode 100644
 36index 0000000000000000000000000000000000000000..406f27445b76feced2ff33e2d09b079f6739eca3
 37--- /dev/null
 38+++ b/custom/example/example.plugin.zsh
 39@@ -0,0 +1,2 @@
 40+# Add your own custom plugins in the custom/plugins directory. Plugins placed
 41+# here will override ones with the same name in the main plugins directory.
 42diff --git a/lib/functions.zsh b/lib/functions.zsh
 43index 6f5d015f7a598739ddc3de8e5fbf451817a8e125..b29d3e482d6dc1b0c1aad5980ed271332b232d68 100644
 44--- a/lib/functions.zsh
 45+++ b/lib/functions.zsh
 46@@ -29,7 +29,7 @@ function extract() {
 47       *.tar.xz) tar xvJf $1;;
 48       *.tar.lzma) tar --lzma -xvf $1;;
 49       *.bz2) bunzip $1;;
 50-      *.rar) unrar $1;;
 51+      *.rar) unrar x $1;;
 52       *.gz) gunzip $1;;
 53       *.tar) tar xvf $1;;
 54       *.tbz2) tar xvjf $1;;
 55diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
 56index 3ea88e9248f70f58fed084b2c274548acb902b7d..dbff1ced9685d00d328b8543852c0ce0219f6c14 100644
 57--- a/oh-my-zsh.sh
 58+++ b/oh-my-zsh.sh
 59@@ -1,7 +1,7 @@
 60 # Initializes Oh My Zsh
 61 
 62 # add a function path
 63-fpath=($ZSH/functions $fpath)
 64+fpath=($ZSH/functions $ZSH/completions $fpath)
 65 
 66 # Load all of the config files in ~/oh-my-zsh that end in .zsh
 67 # TIP: Add files you don't want in git to .gitignore
 68@@ -17,7 +17,9 @@ compinit -i
 69 
 70 # Load all of the plugins that were defined in ~/.zshrc
 71 for plugin ($plugins); do
 72-  if [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then
 73+  if [ -f $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh ]; then
 74+    source $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh
 75+  elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then
 76     source $ZSH/plugins/$plugin/$plugin.plugin.zsh
 77   fi
 78 done
 79@@ -31,7 +33,7 @@ if [ "$ZSH_THEME" = "random" ]
 80 then
 81   themes=($ZSH/themes/*zsh-theme)
 82   N=${#themes[@]}
 83-  ((N=RANDOM%N))
 84+  ((N=(RANDOM%N)+1))
 85   RANDOM_THEME=${themes[$N]}
 86   source "$RANDOM_THEME"
 87   echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
 88diff --git a/plugins/ant/ant.plugin.zsh b/plugins/ant/ant.plugin.zsh
 89new file mode 100644
 90index 0000000000000000000000000000000000000000..23bc7756a9ad98aaebc3ec99c81af69987fdef2f
 91--- /dev/null
 92+++ b/plugins/ant/ant.plugin.zsh
 93@@ -0,0 +1,26 @@
 94+stat -f%m . > /dev/null 2>&1
 95+if [ "$?" = 0 ]; then
 96+	stat_cmd=(stat -f%m)
 97+else
 98+	stat_cmd=(stat -L --format=%y)
 99+fi
100+
101+_ant_does_target_list_need_generating () {
102+  if [ ! -f .ant_targets ]; then return 0;
103+  else
104+    accurate=$($stat_cmd -f%m .ant_targets)
105+    changed=$($stat_cmd -f%m build.xml)
106+    return $(expr $accurate '>=' $changed)
107+  fi
108+}
109+
110+_ant () {
111+  if [ -f build.xml ]; then
112+    if _ant_does_target_list_need_generating; then
113+     sed -n '/<target/s/<target.*name="\([^"]*\).*$/\1/p' build.xml > .ant_targets
114+    fi
115+    compadd `cat .ant_targets`
116+  fi
117+}
118+
119+compdef _ant ant
120diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh
121new file mode 100644
122index 0000000000000000000000000000000000000000..da0a1276572dc655cc82eedc762e2996dac8b0b6
123--- /dev/null
124+++ b/plugins/autojump/autojump.plugin.zsh
125@@ -0,0 +1,3 @@
126+if [ -f `brew --prefix`/etc/autojump ]; then
127+  . `brew --prefix`/etc/autojump
128+fi
129diff --git a/plugins/brew/_brew b/plugins/brew/_brew
130index cee1e25f0bdbaae3808392f6bc678e22f653ec80..1dcf0a4bff26c50eec9a8023695cfe409db6053d 100644
131--- a/plugins/brew/_brew
132+++ b/plugins/brew/_brew
133@@ -25,10 +25,12 @@ _1st_arguments=(
134   'link:link a formula'
135   'list:list files in a formula or not-installed formulae'
136   'log:git commit log for a formula'
137+  'missing:check all installed formuale for missing dependencies.'
138   'outdated:list formulas for which a newer version is available'
139   'prune:remove dead links'
140   'remove:remove a formula'
141   'search:search for a formula (/regex/ or string)'
142+  'server:start a local web app that lets you browse formulae (requires Sinatra)'
143   'unlink:unlink a formula'
144   'update:freshen up links'
145   'upgrade:upgrade outdated formulae'
146@@ -36,10 +38,14 @@ _1st_arguments=(
147 )
148 
149 local expl
150-local -a formula installed_formulae
151+local -a formulae installed_formulae
152 
153 _arguments \
154-  '(-v --verbose)'{-v,--verbose}'[verbose]' \
155+  '(-v)-v[verbose]' \
156+  '(--cellar)--cellar[brew cellar]' \
157+  '(--config)--config[brew configuration]' \
158+  '(--env)--env[brew environment]' \
159+  '(--repository)--repository[brew repository]' \
160   '(--version)--version[version information]' \
161   '(--prefix)--prefix[where brew lives on this system]' \
162   '(--cache)--cache[brew cache]' \
163@@ -51,20 +57,24 @@ if (( CURRENT == 1 )); then
164 fi
165 
166 case "$words[1]" in
167-  list)
168+  search|-S)
169+    _arguments \
170+      '(--macports)--macports[search the macports repository]' \
171+      '(--fink)--fink[search the fink repository]' ;;
172+  list|ls)
173     _arguments \
174       '(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
175+      '(--versions)--versions[list all installed versions of a formula]' \
176       '1: :->forms' &&  return 0
177 
178       if [[ "$state" == forms ]]; then
179         _brew_installed_formulae
180-        _requested installed_formulae expl 'installed formulae' compadd -a installed_formulae
181+        _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
182       fi ;;
183-  install|home|log|info|uses|cat|deps)
184+  install|home|homepage|log|info|abv|uses|cat|deps|edit|options)
185     _brew_all_formulae
186     _wanted formulae expl 'all formulae' compadd -a formulae ;;
187-  remove|edit|xo)
188+  remove|rm|uninstall|unlink|cleanup|link|ln)
189     _brew_installed_formulae
190     _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
191 esac
192-
193diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh
194new file mode 100644
195index 0000000000000000000000000000000000000000..f584a4684fe347c9be9070e1862afd3809138670
196--- /dev/null
197+++ b/plugins/brew/brew.plugin.zsh
198@@ -0,0 +1,13 @@
199+# Move /usr/local/bin (path where brews are linked) to the front of the path
200+# This will allow us to override system binaries like ruby with our brews
201+# TODO: Do this in a more compatible way.
202+#       What if someone doesn't have /usr/bin in their path?
203+export PATH=`echo $PATH | sed -e 's|/usr/local/bin||' -e 's|::|:|g'` # Remove /usr/local/bin
204+export PATH=`echo $PATH | sed -e 's|/usr/bin|/usr/local/bin:&|'`     # Add it in front of /usr/bin
205+export PATH=`echo $PATH | sed -e 's|/usr/bin|/usr/local/sbin:&|'`    # Add /usr/local/sbin
206+
207+alias brews='brew list -1'
208+
209+function brew-link-completion {
210+	ln -s "$(brew --prefix)/Library/Contributions/brew_zsh_completion.zsh" "$ZSH/plugins/brew/_brew.official"
211+}
212diff --git a/plugins/cap/cap.plugin.zsh b/plugins/cap/cap.plugin.zsh
213index a0fa21d005e628888cf73c9f3e4abc56d1a090b1..8336182d5d8692f609b04d0c9c9c385fc6de5367 100644
214--- a/plugins/cap/cap.plugin.zsh
215+++ b/plugins/cap/cap.plugin.zsh
216@@ -18,4 +18,4 @@ function _cap () {
217   fi
218 }
219 
220-compctl -K _cap cap
221+compctl -K _cap cap
222diff --git a/plugins/compleat/compleat.plugin.zsh b/plugins/compleat/compleat.plugin.zsh
223index 8d16a5687eff49f83cc64d695f9c70a1cff125b5..38f1b396aabf16926d6f0aff06e6f20b2840ab40 100644
224--- a/plugins/compleat/compleat.plugin.zsh
225+++ b/plugins/compleat/compleat.plugin.zsh
226@@ -5,7 +5,6 @@
227 #       VERSION:  1.0.0
228 # ------------------------------------------------------------------------------
229 
230-
231 if (( ${+commands[compleat]} )); then
232   local prefix="${commands[compleat]:h:h}"
233   local setup="${prefix}/share/compleat-1.0/compleat_setup" 
234@@ -19,4 +18,3 @@ if (( ${+commands[compleat]} )); then
235     source "$setup" 
236   fi
237 fi
238-
239diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh
240index df7053ba7c897eff67982911cc754a62eb3970e3..1eb3381136818b82b1915cb5113d1877fc0907a5 100644
241--- a/plugins/github/github.plugin.zsh
242+++ b/plugins/github/github.plugin.zsh
243@@ -4,4 +4,3 @@ if [ "$commands[(I)hub]" ]; then
244     # eval `hub alias -s zsh`
245     function git(){hub "$@"}
246 fi
247-
248diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
249new file mode 100644
250index 0000000000000000000000000000000000000000..8cc71fd57692de243e8a497786d1e1f8eb0b2bba
251--- /dev/null
252+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
253@@ -0,0 +1,26 @@
254+# Based on ssh-agent code
255+
256+local GPG_ENV=$HOME/.gnupg/gpg-agent.env
257+
258+function start_agent {
259+  /usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV} > /dev/null
260+  chmod 600 ${GPG_ENV}
261+  . ${GPG_ENV} > /dev/null
262+}
263+
264+# Source GPG agent settings, if applicable
265+if [ -f "${GPG_ENV}" ]; then
266+  . ${GPG_ENV} > /dev/null
267+  ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || {
268+    start_agent;
269+  }
270+else
271+  start_agent;
272+fi
273+
274+export GPG_AGENT_INFO
275+export SSH_AUTH_SOCK
276+export SSH_AGENT_PID
277+
278+GPG_TTY=$(tty)
279+export GPG_TTY
280diff --git a/plugins/node/node.plugin.zsh b/plugins/node/node.plugin.zsh
281new file mode 100644
282index 0000000000000000000000000000000000000000..18f35333ccd510dfbb8d62058a5b28b2fc3c01f2
283--- /dev/null
284+++ b/plugins/node/node.plugin.zsh
285@@ -0,0 +1,8 @@
286+# This works if you installed node via homebrew.
287+export NODE_PATH="/usr/local/lib/node"
288+
289+# Open the node api for your current version to the optional section.
290+# TODO: Make the section part easier to use.
291+function node-api {
292+	open "http://nodejs.org/docs/$(node --version)/api/all.html#$1"
293+}
294diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh
295new file mode 100644
296index 0000000000000000000000000000000000000000..0b0a30e114072931782379c14eca74f527c96ea6
297--- /dev/null
298+++ b/plugins/npm/npm.plugin.zsh
299@@ -0,0 +1,2 @@
300+# TODO: Don't do this in such a weird way.
301+export PATH=`echo $PATH | sed -e 's|/usr/bin|/usr/local/share/npm/bin:&|'`
302diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
303index 81eed5e92af372466fc02bb682a9d5a8b26091e8..a65ca642a2cc31d89507274fe8714933d17b7281 100644
304--- a/plugins/osx/osx.plugin.zsh
305+++ b/plugins/osx/osx.plugin.zsh
306@@ -1,3 +1,9 @@
307+alias showfiles='defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder'
308+alias hidefiles='defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder'
309+
310+# Recursively delete .DS_Store files
311+alias rm-dsstore="find . -name '*.DS_Store' -type f -delete"
312+
313 function savepath() {
314   pwd > ~/.current_path~
315 }
316diff --git a/plugins/phing/phing.plugin.zsh b/plugins/phing/phing.plugin.zsh
317index 80e33462952f42d6533b09583b5dfb00fefda1c0..8f4adca08720ffdffc8ca258637d399dcdef8e37 100644
318--- a/plugins/phing/phing.plugin.zsh
319+++ b/plugins/phing/phing.plugin.zsh
320@@ -10,7 +10,6 @@ _phing_does_target_list_need_generating () {
321 _phing () {
322   if [ -f build.xml ]; then
323     if _phing_does_target_list_need_generating; then
324-      echo "\nGenerating .phing_targets..." > /dev/stderr
325       phing -l |grep -v ":" |grep -v "^$"|grep -v "\-" > .phing_targets
326     fi
327     compadd `cat .phing_targets`
328diff --git a/plugins/pow/pow.plugin.zsh b/plugins/pow/pow.plugin.zsh
329new file mode 100644
330index 0000000000000000000000000000000000000000..6b2a6f2be0f3636c9026eb82a0405eebc79669b4
331--- /dev/null
332+++ b/plugins/pow/pow.plugin.zsh
333@@ -0,0 +1,10 @@
334+# Thanks to Christopher Sexton
335+# https://gist.github.com/965032
336+function kapow {
337+	touch ~/.pow/$1/tmp/restart.txt
338+	if [ $? -eq 0 ]; then
339+		echo "$fg[yellow]Pow restarting $1...$reset_color"
340+	fi
341+}
342+
343+compctl -W ~/.pow -/ kapow
344diff --git a/plugins/ruby/ruby.plugin.zsh b/plugins/ruby/ruby.plugin.zsh
345index 82bf5d49d4420c398520709236a38291b4459cb9..08ca9c60178faf69bb92b4bcd1a5fd66b31f49eb 100644
346--- a/plugins/ruby/ruby.plugin.zsh
347+++ b/plugins/ruby/ruby.plugin.zsh
348@@ -1,4 +1,6 @@
349+# TODO: Make this compatible with rvm.
350+#       Run sudo gem on the system ruby, not the active ruby.
351 alias sgem='sudo gem'
352 
353 # Find ruby file
354-alias rfind='find . -name *.rb | xargs grep -n'
355+alias rfind='find . -name *.rb | xargs grep -n'
356diff --git a/plugins/rvm/_rvm b/plugins/rvm/_rvm
357new file mode 100644
358index 0000000000000000000000000000000000000000..bba5304a032647ca5ce34165b2ac71ceff2db5f8
359--- /dev/null
360+++ b/plugins/rvm/_rvm
361@@ -0,0 +1,147 @@
362+#compdef rvm
363+
364+local curcontext="$curcontext" state line cmds ret=1
365+
366+_arguments -C \
367+	'(- 1 *)'{-v,--version}'[display version information]' \
368+	'(-l|--level)'{-l,--level}'+[patch level to use with rvm use / install]:number' \
369+	'(--prefix)--prefix[path for all rvm files (~/.rvm/), with trailing slash!]:path:_files' \
370+	'(--bin)--bin[path for binaries to be placed (~/.rvm/bin/)]:path:_files' \
371+	'(--source)--source[src directory to use (~/.rvm/src/)]:path:_files' \
372+	'(--archives)--archives[directory for downladed files (~/.rvm/archives/)]:path:_files' \
373+	'-S[Specify a script file to attempt to load and run (rubydo)]:file:_files' \
374+	'-e[Execute code from the command line]:code' \
375+	'(-G)-G[root gem path to use]:path:_files' \
376+	'(--gems)--gems[Used to set the gems_flag, use with remove to remove gems]' \
377+	'(--archive)--archive[Used to set the archive_flag, use with remove to remove archive]' \
378+	'(--patch)--patch[With MRI Rubies you may specify one or more full paths to patches]' \
379+	'(-C|--configure)'{-C,--configure}'=[custom configure options]' \
380+	'(--nice)--nice[process niceness (for slow computers, default 0)]:number' \
381+	'(--ree)--ree-options[Options passed directly to ree ./installer on the command line]:options' \
382+	'(--head)--head[with update, updates rvm to git head version]' \
383+	'(--rubygems)--rubygems[with update, updates rubygems for selected ruby]' \
384+	'(--default)--default[with ruby select, sets a default ruby for new shells]' \
385+	'(--debug)--debug[Toggle debug mode on for very verbose output]' \
386+	'(--trace)--trace[Toggle trace mode on to see EVERYTHING rvm is doing]' \
387+	'(--force)--force[Force install, removes old install & source before install]' \
388+	'(--summary)--summary[Used with rubydo to print out a summary of the commands run]' \
389+	'(--latest)--latest[with gemset --dump skips version strings for latest gem]' \
390+	'(--gems)--gems[with uninstall/remove removes gems with the interpreter]' \
391+	'(--docs)--docs[with install, attempt to generate ri after installation]' \
392+	'(--reconfigure)--reconfigure[Force ./configure on install even if Makefile already exists]' \
393+	'1: :->cmds' \
394+	'*: :->args' && ret=0
395+
396+case $state in
397+	cmds)
398+		cmds=( 
399+            "version:show the rvm version installed in rvm_path"
400+            "use:setup current shell to use a specific ruby version"
401+            "reload:reload rvm source itself (useful after changing rvm source)"
402+            "implode:(seppuku) removes the rvm installation completely. This means everything in $rvm_path (~/.rvm)."
403+            "update:upgrades rvm to the latest version."
404+            "reset:remove current and stored default & system settings."
405+            "info :show the *current* environment information for current ruby"
406+            "current:print the *current* ruby version and the name of any gemset being used."
407+            "debug:show info plus additional information for common issues"
408+            "install:install one or many ruby versions"
409+            "uninstall:uninstall one or many ruby versions, leaves their sources"
410+            "remove:uninstall one or many ruby versions and remove their sources"
411+            "migrate:Lets you migrate all gemsets from one ruby to another."
412+            "upgrade:Lets you upgrade from one version of a ruby to another, including migrating your gemsets semi-automatically."
413+            "wrapper:generates a set of wrapper executables for a given ruby with the specified ruby and gemset combination. Used under the hood for passenger support and the like."
414+            "cleanup:Lets you remove stale source folders / archives and other miscellaneous data associated with rvm."
415+            "repair:Lets you repair parts of your environment e.g. wrappers, env files and and similar files (e.g. general maintenance)."
416+            "snapshot:Lets your backup / restore an rvm installation in a lightweight manner."
417+            "disk-usage:Tells you how much disk space rvm install is using."
418+            "tools:Provides general information about the ruby environment, primarily useful when scripting rvm."
419+            "docs:Tools to make installing ri and rdoc documentation easier."
420+            "rvmrc:Tools related to managing rvmrc trust and loading."
421+            "exec:runs an arbitrary command as a set operation."
422+            "ruby:runs a named ruby file against specified and/or all rubies"
423+            "gem:runs a gem command using selected ruby's 'gem'"
424+            "rake:runs a rake task against specified and/or all rubies"
425+            "tests:runs 'rake test' across selected ruby versions"
426+            "specs:runs 'rake spec' across selected ruby versions"
427+            "monitor:Monitor cwd for testing, run rake {spec,test} on changes."
428+            "gemset:gemsets: http://rvm.beginrescueend.com/gemsets/"
429+            "rubygems:Switches the installed version of rubygems for the current ruby."
430+            "gemdir:display the path to the current gem directory (GEM_HOME)."
431+            "srcdir:display the path to rvm source directory (may be yanked)"
432+            "fetch:Performs an archive / src fetch only of the selected ruby."
433+            "list:show currently installed rubies, interactive output."
434+            "package:Install a dependency package {readline,iconv,zlib,openssl}"
435+            "notes:Display notes, with operating system specifics."
436+            "export:Temporarily set an environment variable in the current shell."
437+            "unexport:Undo changes made to the environment by 'rvm export'."
438+        )
439+		_describe -t commands 'rvm command' cmds && ret=0
440+		;;
441+	args)
442+		case $line[1] in
443+			(use|uninstall|remove|list)
444+				_values -S , 'rubies' $(rvm list strings | sed -e 's/ruby-\([^) ]*\)-\([^) ]*\)/ruby-\1-\2 \1-\2 \1/g') default system && ret=0
445+				;;
446+			(install|fetch)
447+				_values -S , 'rubies' $(rvm list known_strings) && ret=0
448+				;;
449+			gemset)
450+				if (( CURRENT == 3 )); then
451+					_values 'gemset_commands' \
452+                        'import' \
453+                        'export' \
454+                        'create' \
455+                        'copy' \
456+                        'rename' \
457+                        'empty' \
458+                        'delete' \
459+                        'name' \
460+                        'dir' \
461diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
462new file mode 100644
463index 0000000000000000000000000000000000000000..8a3ec788a4ad1363e833808cf7c410c9c3afc9e9
464--- /dev/null
465+++ b/plugins/rvm/rvm.plugin.zsh
466@@ -0,0 +1,52 @@
467+fpath=($ZSH/plugins/rvm $fpath)
468+autoload -U compinit
469+compinit -i
470+
471+alias rubies='rvm list rubies'
472+alias gemsets='rvm gemset list'
473+
474+local ruby18='ruby-1.8.7-p334'
475+local ruby19='ruby-1.9.2-p180'
476+
477+function rb18 {
478+	if [ -z "$1" ]; then
479+		rvm use "$ruby18"
480+	else
481+		rvm use "$ruby18@$1"
482+	fi
483+}
484+
485+_rb18() {compadd `ls -1 $rvm_path/gems | grep "^$ruby18@" | sed -e "s/^$ruby18@//" | awk '{print $1}'`}
486+compdef _rb18 rb18
487+
488+function rb19 {
489+	if [ -z "$1" ]; then
490+		rvm use "$ruby19"
491+	else
492+		rvm use "$ruby19@$1"
493+	fi
494+}
495+
496+_rb19() {compadd `ls -1 $rvm_path/gems | grep "^$ruby19@" | sed -e "s/^$ruby19@//" | awk '{print $1}'`}
497+compdef _rb19 rb19
498+
499+function rvm-update {
500+	rvm get head
501+	rvm reload # TODO: Reload rvm completion?
502+}
503+
504+function rvm-link-completion {
505+	ln -s "$rvm_path/scripts/zsh/Completion/_rvm" "$ZSH/plugins/rvm/_rvm.official"
506+}
507+
508+# TODO: Make this usable w/o rvm.
509+function gems {
510+	local current_ruby=`rvm-prompt i v p`
511+	local current_gemset=`rvm-prompt g`
512+
513+	gem list $@ | sed \
514+		-Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \
515+		-Ee "s|$(echo $rvm_path)|$fg[magenta]\$rvm_path$reset_color|g" \
516+		-Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \
517+		-Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g"
518+}
519diff --git a/plugins/textmate/textmate.plugin.zsh b/plugins/textmate/textmate.plugin.zsh
520index 7b73e275152bd528fe5bf709f36db200f8b07bc8..aa2f75f4f7328b03765562b1e82b7408955f1e69 100644
521--- a/plugins/textmate/textmate.plugin.zsh
522+++ b/plugins/textmate/textmate.plugin.zsh
523@@ -1,11 +1,9 @@
524+alias et='mate .'
525+alias ett='mate app config lib db public spec test Rakefile Capfile Todo'
526+alias etp='mate app config lib db public spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
527+alias etts='mate app config lib db public script spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
528 
529-# TextMate
530-alias et='mate . &'
531-alias ett='mate app config lib db public spec test Rakefile Capfile Todo &'
532-alias etp='mate app config lib db public spec test vendor/plugins vendor/gems Rakefile Capfile Todo &'
533-alias etts='mate app config lib db public script spec test vendor/plugins vendor/gems Rakefile Capfile Todo &'
534-
535-# Editor Ruby file in TextMate
536+# Edit Ruby app in TextMate
537 alias mr='mate CHANGELOG app config db lib public script spec test'
538 
539 function tm() {
540diff --git a/plugins/thor/_thor b/plugins/thor/_thor
541new file mode 100644
542index 0000000000000000000000000000000000000000..9f7ed5aefd35f6fa8d6133cde408f50e56d773f6
543--- /dev/null
544+++ b/plugins/thor/_thor
545@@ -0,0 +1,4 @@
546+#compdef thor
547+#autoload
548+
549+compadd `thor list | grep thor | cut -d " " -f 2`
550diff --git a/themes/fishy.zsh-theme b/themes/fishy.zsh-theme
551index f22eda868501accc1aed45380a70d634eb8d0435..f9e506cae77d27e5782b4479c4683082bdcf0da0 100644
552--- a/themes/fishy.zsh-theme
553+++ b/themes/fishy.zsh-theme
554@@ -3,7 +3,18 @@
555 local user_color='green'; [ $UID -eq 0 ] && user_color='red'
556 PROMPT='%n@%m %{$fg[$user_color]%}%~%{$reset_color%}%(!.#.>) '
557 PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
558-RPS1='%(?..%{$fg[red]%}%? ↵%{$reset_color%})$(git_prompt_info)'
559 
560-ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[cyan]%}"
561-ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
562+local return_status="%{$fg_bold[red]%}%(?..%?)%{$reset_color%}"
563+RPROMPT='${return_status}$(git_prompt_info)$(git_prompt_status)%{$reset_color%}'
564+
565+ZSH_THEME_GIT_PROMPT_PREFIX=" "
566+ZSH_THEME_GIT_PROMPT_SUFFIX=""
567+ZSH_THEME_GIT_PROMPT_DIRTY=""
568+ZSH_THEME_GIT_PROMPT_CLEAN=""
569+
570+ZSH_THEME_GIT_PROMPT_ADDED="%{$fg_bold[green]%}+"
571+ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg_bold[blue]%}!"
572+ZSH_THEME_GIT_PROMPT_DELETED="%{$fg_bold[red]%}-"
573+ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg_bold[magenta]%}>"
574+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg_bold[yellow]%}#"
575+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[cyan]%}?"
576diff --git a/themes/fwalch.zsh-theme b/themes/fwalch.zsh-theme
577new file mode 100644
578index 0000000000000000000000000000000000000000..24edf55c01b73f6323ded39f1a9a9a49a4379fd5
579--- /dev/null
580+++ b/themes/fwalch.zsh-theme
581@@ -0,0 +1,6 @@
582+PROMPT='%{$fg_bold[green]%}%p %{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
583+
584+ZSH_THEME_GIT_PROMPT_PREFIX=" (%{$fg[red]%}"
585+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
586+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}"
587+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
588diff --git a/themes/minimal.zsh-theme b/themes/minimal.zsh-theme
589new file mode 100644
590index 0000000000000000000000000000000000000000..ee3ab6b224a097a3072d894ac111d11adc7bf77c
591--- /dev/null
592+++ b/themes/minimal.zsh-theme
593@@ -0,0 +1,15 @@
594+ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}["
595+ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}"
596+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$reset_color%}"
597+ZSH_THEME_GIT_PROMPT_CLEAN=""
598+
599+#Customized git status, oh-my-zsh currently does not allow render dirty status before branch
600+git_custom_status() {
601+  local cb=$(current_branch)
602+  if [ -n "$cb" ]; then
603+    echo "- $ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
604+  fi
605+}
606+
607+
608+PROMPT='%2~ $(git_custom_status) »%b '
609diff --git a/themes/obraun.zsh-theme b/themes/obraun.zsh-theme
610new file mode 100644
611index 0000000000000000000000000000000000000000..08d13766585b414d92b7d4df2ceb66e179669810
612--- /dev/null
613+++ b/themes/obraun.zsh-theme
614@@ -0,0 +1,11 @@
615+if [ "$(whoami)" = "root" ]; then CARETCOLOR="red"; else CARETCOLOR="blue"; fi
616+
617+local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
618+
619diff --git a/themes/re5et.zsh-theme b/themes/re5et.zsh-theme
620new file mode 100644
621index 0000000000000000000000000000000000000000..5bded76a3e99bf06a895424a1ac955967fe3fe26
622--- /dev/null
623+++ b/themes/re5et.zsh-theme
624@@ -0,0 +1,15 @@
625+if [ "$(whoami)" = "root" ]; then CARETCOLOR="red"; else CARETCOLOR="magenta"; fi
626+
627+local return_code="%(?..%{$fg_bold[red]%}:( %?%{$reset_color%})"
628+
629+PROMPT='
630+%{$fg_bold[cyan]%}%n%{$reset_color%}%{$fg[yellow]%}@%{$reset_color%}%{$fg_bold[blue]%}%m%{$reset_color%}:%{${fg_bold[green]}%}%~%{$reset_color%}$(git_prompt_info)
631+%{${fg[$CARETCOLOR]}%}%# %{${reset_color}%}'
632+
633+RPS1='${return_code} %D - %*'
634+
635+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[magenta]%}^%{$reset_color%}%{$fg_bold[yellow]%}"
636+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
637+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%} ±"
638+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ?"
639+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[red]%} ♥"
640diff --git a/themes/simple.zsh-theme b/themes/simple.zsh-theme
641new file mode 100644
642index 0000000000000000000000000000000000000000..a88d9d72a18690ff1d15c2e3615892ba92217f78
643--- /dev/null
644+++ b/themes/simple.zsh-theme
645@@ -0,0 +1,6 @@
646+PROMPT='%{$fg[green]%}%~%{$fg_bold[blue]%}$(git_prompt_info)%{$reset_color%} '
647+
648+ZSH_THEME_GIT_PROMPT_PREFIX="("
649+ZSH_THEME_GIT_PROMPT_SUFFIX=")"
650+ZSH_THEME_GIT_PROMPT_DIRTY=" ✗"
651+ZSH_THEME_GIT_PROMPT_CLEAN=" ✔"
652diff --git a/themes/steeef.zsh-theme b/themes/steeef.zsh-theme
653new file mode 100644
654index 0000000000000000000000000000000000000000..a2583b0287d7cd0ec8f07c7d5fff2863d0b2adf5
655--- /dev/null
656+++ b/themes/steeef.zsh-theme
657@@ -0,0 +1,100 @@
658+# prompt style and colors based on Steve Losh's Prose theme:
659+# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme
660+#
661+# vcs_info modifications from Bart Trojanowski's zsh prompt:
662+# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt
663+#
664+# git untracked files modification from Brian Carper:
665+# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt
666+
667+function virtualenv_info {
668+    [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '
669+}
670+PR_GIT_UPDATE=1
671+
672+setopt prompt_subst
673+autoload colors
674+colors
675+
676+autoload -U add-zsh-hook
677+autoload -Uz vcs_info
678+
679+#use extended color pallete if available
680+if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
681+    turquoise="%F{81}"
682+    orange="%F{166}"
683+    purple="%F{135}"
684+    hotpink="%F{161}"
685+    limegreen="%F{118}"
686+else
687+    turquoise="$fg[cyan]"
688+    orange="$fg[yellow]"
689+    purple="$fg[magenta]"
690+    hotpink="$fg[red]"
691+    limegreen="$fg[green]"
692+fi
693+
694+# enable VCS systems you use
695+zstyle ':vcs_info:*' enable git svn
696+
697+# check-for-changes can be really slow.
698+# you should disable it, if you work with large repositories
699+zstyle ':vcs_info:*:prompt:*' check-for-changes true
700+
701+# set formats
702+# %b - branchname
703+# %u - unstagedstr (see below)
704+# %c - stagedstr (see below)
705+# %a - action (e.g. rebase-i)
706+# %R - repository path
707+# %S - path in the repository
708+PR_RST="%{${reset_color}%}"
709+FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})"
710+FMT_ACTION="(%{$limegreen%}%a${PR_RST})"
711+FMT_UNSTAGED="%{$orange%}●"
712+FMT_STAGED="%{$limegreen%}●"
713+
714+zstyle ':vcs_info:*:prompt:*' unstagedstr   "${FMT_UNSTAGED}"
715+zstyle ':vcs_info:*:prompt:*' stagedstr     "${FMT_STAGED}"
716+zstyle ':vcs_info:*:prompt:*' actionformats "${FMT_BRANCH}${FMT_ACTION}"
717+zstyle ':vcs_info:*:prompt:*' formats       "${FMT_BRANCH}"
718+zstyle ':vcs_info:*:prompt:*' nvcsformats   ""
719+
720+
721+function steeef_preexec {
722+    case "$(history $HISTCMD)" in
723+        *git*)
724+            PR_GIT_UPDATE=1
725+            ;;
726+        *svn*)
727+            PR_GIT_UPDATE=1
728+            ;;
729+    esac
730+}
731+add-zsh-hook preexec steeef_preexec
732+
733+function steeef_chpwd {
734+    PR_GIT_UPDATE=1
735+}
736+add-zsh-hook chpwd steeef_chpwd
737+
738+function steeef_precmd {
739+    if [[ -n "$PR_GIT_UPDATE" ]] ; then
740+        # check for untracked files or updated submodules, since vcs_info doesn't
741+        if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
742+            PR_GIT_UPDATE=1
743+            FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})"
744+        else
745+            FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})"
746+        fi
747+        zstyle ':vcs_info:*:prompt:*' formats       "${FMT_BRANCH}"
748+
749+        vcs_info 'prompt'
750+        PR_GIT_UPDATE=
751+    fi
752+}
753+add-zsh-hook precmd steeef_precmd
754+
755+PROMPT=$'
756+%{$purple%}%n%{$reset_color%} at %{$orange%}%m%{$reset_color%} in %{$limegreen%}%~%{$reset_color%} $vcs_info_msg_0_
757diff --git a/themes/trapd00r.zsh-theme b/themes/trapd00r.zsh-theme
758new file mode 100644
759index 0000000000000000000000000000000000000000..cba14c42cab41b9a8f5fc1770b72275a2a273db8
760--- /dev/null
761+++ b/themes/trapd00r.zsh-theme
762@@ -0,0 +1,95 @@
763+# Name:   trapd00r zsh theme
764+# Author: Magnus Woldrich <m@japh.se>
765+#
766+# This theme needs a terminal supporting 256 colors as well as unicode. It also
767+# needs the script that splits up the current path and makes it fancy as located
768+# here: https://github.com/trapd00r/utils/blob/master/zsh_path
769+#
770+# By default it spans over two lines like so:
771+#
772+# scp1@shiva:pts/9-> /home » scp1 (0)
773+# >
774+#
775+# that's  user@host:pts/-> splitted path (return status)
776+#
777+# If the current directory is a git repository, we span 3 lines;
778+#
779+# git❨ master ❩ DIRTY
780+# scp1@shiva:pts/4-> /home » scp1 » dev » utils (0)
781+# >
782+
783+autoload -U add-zsh-hook
784+autoload -Uz vcs_info
785+
786+local c0=$( printf "\e[m")
787+local c1=$( printf "\e[38;5;245m")
788+local c2=$( printf "\e[38;5;250m")
789+local c3=$( printf "\e[38;5;242m")
790+local c4=$( printf "\e[38;5;197m")
791+local c5=$( printf "\e[38;5;225m")
792+local c6=$( printf "\e[38;5;240m")
793+local c7=$( printf "\e[38;5;242m")
794+local c8=$( printf "\e[38;5;244m")
795+local c9=$( printf "\e[38;5;162m")
796+local c10=$(printf "\e[1m")
797+local c11=$(printf "\e[38;5;208m\e[1m")
798+local c12=$(printf "\e[38;5;142m\e[1m")
799+local c13=$(printf "\e[38;5;196m\e[1m")
800+
801+
802+# We dont want to use the extended colorset in the TTY / VC.
803+if [ "$TERM" = "linux" ]; then
804+    c1=$( printf "\e[34;1m")
805+    c2=$( printf "\e[35m")
806+    c3=$( printf "\e[31m")
807+    c4=$( printf "\e[31;1m")
808+    c5=$( printf "\e[32m")
809+    c6=$( printf "\e[32;1m")
810+    c7=$( printf "\e[33m")
811+    c8=$( printf "\e[33;1m")
812+    c9=$( printf "\e[34m")
813+
814+    c11=$(printf "\e[35;1m")
815+    c12=$(printf "\e[36m")
816+    c13=$(printf "\e[31;1m")
817+fi
818+
819+zstyle ':vcs_info:*' actionformats \
820+    '%{$c8%}(%f%s)%{$c7%}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
821+
822+zstyle ':vcs_info:*' formats \
823+    "%{$c8%}%s%%{$c7%}❨ %{$c9%}%{$c11%}%b%{$c7%} ❩%{$reset_color%}%f "
824+
825+zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
826+zstyle ':vcs_info:*' enable git
827+
828+add-zsh-hook precmd prompt_jnrowe_precmd
829+
830+prompt_jnrowe_precmd () {
831+  vcs_info
832+  if [ "${vcs_info_msg_0_}" = "" ]; then
833+    dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})"
834+    PROMPT='%{$fg_bold[green]%}%p%{$reset_color%}${vcs_info_msg_0_}${dir_status} ${ret_status}%{$reset_color%}
835+> '
836+
837+# modified, to be commited
838+  elif [[ $(git diff --cached --name-status 2>/dev/null ) != "" ]]; then
839+    dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})"
840+    PROMPT='${vcs_info_msg_0_}%{$30%} %{$bg_bold[red]%}%{$fg_bold[cyan]%}C%{$fg_bold[black]%}OMMIT%{$reset_color%}
841+%{$fg_bold[green]%}%p%{$reset_color%}${dir_status}%{$reset_color%}
842+> '
843+
844+  elif [[ $(git diff --name-status 2>/dev/null ) != "" ]]; then
845+    dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})"
846+    PROMPT='${vcs_info_msg_0_}%{$bg_bold[red]%}%{$fg_bold[blue]%}D%{$fg_bold[black]%}IRTY%{$reset_color%}
847+%{$fg_bold[green]%}%p%{$reset_color%}${dir_status}%{$reset_color%}
848+%{$c13%}>%{$c0%} '
849+  else
850+    dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})"
851+    PROMPT='${vcs_info_msg_0_}
852+%{$fg_bold[green]%}%p%{$reset_color%}${dir_status} ${vcs_info_msg_0_}%{$reset_color%}
853+> '
854+fi
855+}
856+
857+#  vim: set ft=zsh sw=2 et tw=0: