summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Russell <robby@planetargon.com>2012-12-02 11:50:36 -0800
committerRobby Russell <robby@planetargon.com>2012-12-02 11:50:36 -0800
commit56f094860bec91c1968d46cccd5d2c2e3d179de1 (patch)
tree88038f3e9a42d40906ce77252d4e664a1eb60fb8
parentded745bf1471487c7dc537c781685615ff4c2515 (diff)
parent80ab595696f30d89bf52bb5189fa39518a3ca780 (diff)
downloadzsh-56f094860bec91c1968d46cccd5d2c2e3d179de1.tar.gz
zsh-56f094860bec91c1968d46cccd5d2c2e3d179de1.tar.bz2
zsh-56f094860bec91c1968d46cccd5d2c2e3d179de1.zip
Merge branch 'master' of github.com:robbyrussell/oh-my-zsh
-rw-r--r--README.textile11
-rw-r--r--lib/git.zsh19
-rw-r--r--plugins/coffee/_coffee71
-rw-r--r--plugins/command-not-found/command-not-found.plugin.zsh2
-rw-r--r--plugins/git-flow/git-flow.plugin.zsh2
-rw-r--r--plugins/git-hubflow/git-hubflow.plugin.zsh348
-rw-r--r--plugins/git/git.plugin.zsh3
-rw-r--r--plugins/github/github.plugin.zsh1
-rw-r--r--plugins/heroku/_heroku1
-rw-r--r--plugins/jira/jira.plugin.zsh2
-rw-r--r--plugins/last-working-dir/last-working-dir.plugin.zsh23
-rw-r--r--plugins/pass/_pass119
-rw-r--r--plugins/per-directory-history/per-directory-history.plugin.zsh7
-rw-r--r--plugins/rails/rails.plugin.zsh1
-rw-r--r--plugins/rvm/_rvm147
-rw-r--r--plugins/rvm/rvm.plugin.zsh2
-rw-r--r--plugins/screen/screen.plugin.zsh2
-rw-r--r--plugins/svn/svn.plugin.zsh28
-rw-r--r--plugins/urltools/urltools.plugin.zsh4
-rw-r--r--plugins/vi-mode/vi-mode.plugin.zsh5
-rw-r--r--themes/adben.zsh-theme26
-rw-r--r--themes/frisk.zsh-theme16
-rw-r--r--themes/frontcube.zsh-theme12
-rw-r--r--themes/intheloop.zsh-theme24
-rw-r--r--themes/minimal.zsh-theme25
-rw-r--r--themes/tjkirch_mod.zsh-theme13
-rwxr-xr-xtools/install.sh2
27 files changed, 732 insertions, 184 deletions
diff --git a/README.textile b/README.textile
index a38e2d7cf..0a4545bac 100644
--- a/README.textile
+++ b/README.textile
@@ -26,17 +26,20 @@ h3. The manual way
@git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh@
-2. Create a new zsh config by copying the zsh template we've provided.
+2. *OPTIONAL* Backup your existing ~/.zshrc file
- *NOTE*: If you already have a ~/.zshrc file, you should back it up. @cp ~/.zshrc ~/.zshrc.orig@ in case you want to go back to your original settings.
+ @cp ~/.zshrc ~/.zshrc.orig@
+
+3. Create a new zsh config by copying the zsh template we've provided.
@cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc@
-3. Set zsh as your default shell:
+
+4. Set zsh as your default shell:
@chsh -s /bin/zsh@
-4. Start / restart zsh (open a new terminal is easy enough...)
+5. Start / restart zsh (open a new terminal is easy enough...)
h3. Problems?
diff --git a/lib/git.zsh b/lib/git.zsh
index fb4ad8ca6..258b1df8f 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -18,6 +18,25 @@ parse_git_dirty() {
fi
}
+# get the difference between the local and remote branches
+git_remote_status() {
+ remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/}
+ if [[ -n ${remote} ]] ; then
+ ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
+ behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
+
+ if [ $ahead -eq 0 ] && [ $behind -gt 0 ]
+ then
+ echo "$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE"
+ elif [ $ahead -gt 0 ] && [ $behind -eq 0 ]
+ then
+ echo "$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE"
+ elif [ $ahead -gt 0 ] && [ $behind -gt 0 ]
+ then
+ echo "$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE"
+ fi
+ fi
+}
# Checks if there are commits ahead from remote
function git_prompt_ahead() {
diff --git a/plugins/coffee/_coffee b/plugins/coffee/_coffee
new file mode 100644
index 000000000..5c8eb9a08
--- /dev/null
+++ b/plugins/coffee/_coffee
@@ -0,0 +1,71 @@
+#compdef coffee
+# ------------------------------------------------------------------------------
+# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the zsh-users nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# Completion script for Coffee.js v0.6.11 (http://coffeejs.org)
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Mario Fernandez (https://github.com/sirech)
+#
+# ------------------------------------------------------------------------------
+
+local curcontext="$curcontext" state line ret=1
+typeset -A opt_args
+
+_arguments -C \
+ '(- *)'{-h,--help}'[display this help message]' \
+ '(- *)'{-v,--version}'[display the version number]' \
+ '(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \
+ '(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \
+ '(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \
+ '(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \
+ '(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' \
+ '(--nodejs)--nodejs[pass options directly to the "node" binary]' \
+ '(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \
+ '(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \
+ '(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \
+ '(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \
+ '(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \
+ '(-r --require)'{-r,--require}'[require a library before executing your script]:library' \
+ '(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \
+ '(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \
+ '*:script or directory:_files' && ret=0
+
+return ret
+
+# Local Variables:
+# mode: Shell-Script
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# sh-basic-offset: 2
+# End:
+# vim: ft=zsh sw=2 ts=2 et
diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh
index 5ab03d5a9..567da1b45 100644
--- a/plugins/command-not-found/command-not-found.plugin.zsh
+++ b/plugins/command-not-found/command-not-found.plugin.zsh
@@ -2,4 +2,4 @@
# as seen in http://www.porcheron.info/command-not-found-for-zsh/
# this is installed in Ubuntu
-source /etc/zsh_command_not_found
+[[ -e /etc/zsh_command_not_found ]] && source /etc/zsh_command_not_found
diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index 71b343884..ea4caa016 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -195,7 +195,7 @@ __git-flow-feature ()
'start:Start a new feature branch.'
'finish:Finish a feature branch.'
'list:List all your feature branches. (Alias to `git flow feature`)'
- 'publish: public'
+ 'publish: publish'
'track: track'
'diff: diff'
'rebase: rebase'
diff --git a/plugins/git-hubflow/git-hubflow.plugin.zsh b/plugins/git-hubflow/git-hubflow.plugin.zsh
new file mode 100644
index 000000000..a09f88391
--- /dev/null
+++ b/plugins/git-hubflow/git-hubflow.plugin.zsh
@@ -0,0 +1,348 @@
+#!zsh
+#
+# Installation
+# ------------
+#
+# To achieve git-hubflow completion nirvana:
+#
+# 0. Update your zsh's git-completion module to the newest verion.
+# From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD
+#
+# 1. Install this file. Either:
+#
+# a. Place it in your .zshrc:
+#
+# b. Or, copy it somewhere (e.g. ~/.git-hubflow-completion.zsh) and put the following line in
+# your .zshrc:
+#
+# source ~/.git-hubflow-completion.zsh
+#
+# c. Or, use this file as a oh-my-zsh plugin.
+#
+
+_git-hf ()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+
+ local -a subcommands
+ subcommands=(
+ 'init:Initialize a new git repo with support for the branching model.'
+ 'feature:Manage your feature branches.'
+ 'release:Manage your release branches.'
+ 'hotfix:Manage your hotfix branches.'
+ 'support:Manage your support branches.'
+ 'update:Pull upstream changes down into your master and develop branches.'
+ 'version:Shows version information.'
+ )
+ _describe -t commands 'git hf' subcommands
+ ;;
+
+ (options)
+ case $line[1] in
+
+ (init)
+ _arguments \
+ -f'[Force setting of gitflow branches, even if already configured]'
+ ;;
+
+ (version)
+ ;;
+
+ (hotfix)
+ __git-hf-hotfix
+ ;;
+
+ (release)
+ __git-hf-release
+ ;;
+
+ (feature)
+ __git-hf-feature
+ ;;
+ esac
+ ;;
+ esac
+}
+
+__git-hf-release ()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+
+ local -a subcommands
+ subcommands=(
+ 'start:Start a new release branch.'
+ 'finish:Finish a release branch.'
+ 'list:List all your release branches. (Alias to `git hf release`)'
+ 'cancel:Cancel release'
+ 'push:Push release to github'
+ 'pull:Pull release from github'
+ 'track:Track release'
+ )
+ _describe -t commands 'git hf release' subcommands
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+
+ (options)
+ case $line[1] in
+
+ (start)
+ _arguments \
+ -F'[Fetch from origin before performing finish]'\
+ ':version:__git_hf_version_list'
+ ;;
+
+ (finish)
+ _arguments \
+ -F'[Fetch from origin before performing finish]' \
+ -s'[Sign the release tag cryptographically]'\
+ -u'[Use the given GPG-key for the digital signature (implies -s)]'\
+ -m'[Use the given tag message]'\
+ -p'[Push to $ORIGIN after performing finish]'\
+ -k'[Keep branch after performing finish]'\
+ -n"[Don't tag this release]"\
+ ':version:__git_hf_version_list'
+ ;;
+
+ *)
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+ esac
+ ;;
+ esac
+}
+
+__git-hf-hotfix ()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+
+ local -a subcommands
+ subcommands=(
+ 'start:Start a new hotfix branch.'
+ 'finish:Finish a hotfix branch.'
+ 'list:List all your hotfix branches. (Alias to `git hf hotfix`)'
+ 'publish:Publish the hotfix branch.'
+ 'track:Track the hotfix branch.'
+ 'pull:Pull the hotfix from github.'
+ 'push:Push the hotfix to github.'
+ 'cancel:Cancel the hotfix.'
+ )
+ _describe -t commands 'git hf hotfix' subcommands
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+
+ (options)
+ case $line[1] in
+
+ (start)
+ _arguments \
+ -F'[Fetch from origin before performing finish]'\
+ ':hotfix:__git_hf_version_list'\
+ ':branch-name:__git_branch_names'
+ ;;
+
+ (finish)
+ _arguments \
+ -F'[Fetch from origin before performing finish]' \
+ -s'[Sign the release tag cryptographically]'\
+ -u'[Use the given GPG-key for the digital signature (implies -s)]'\
+ -m'[Use the given tag message]'\
+ -p'[Push to $ORIGIN after performing finish]'\
+ -k'[Keep branch after performing finish]'\
+ -n"[Don't tag this release]"\
+ ':hotfix:__git_hf_hotfix_list'
+ ;;
+
+ *)
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+ esac
+ ;;
+ esac
+}
+
+__git-hf-feature ()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+
+ local -a subcommands
+ subcommands=(
+ 'list:List all your feature branches. (Alias to `git hf feature`)'
+ 'start:Start a new feature branch'
+ 'finish:Finish a feature branch'
+ 'submit:submit'
+ 'track:track'
+ 'diff:Diff'
+ 'rebase:Rebase feature branch against develop'
+ 'checkout:Checkout feature'
+ 'pull:Pull feature branch from github'
+ 'push:Push feature branch to github'
+ 'cancel:Cancel feature'
+ )
+ _describe -t commands 'git hf feature' subcommands
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+
+ (options)
+ case $line[1] in
+
+ (start)
+ _arguments \
+ -F'[Fetch from origin before performing finish]'\
+ ':feature:__git_hf_feature_list'\
+ ':branch-name:__git_branch_names'
+ ;;
+
+ (finish)
+ _arguments \
+ -F'[Fetch from origin before performing finish]' \
+ -r'[Rebase instead of merge]'\
+ ':feature:__git_hf_feature_list'
+ ;;
+
+ (publish)
+ _arguments \
+ ':feature:__git_hf_feature_list'\
+ ;;
+
+ (track)
+ _arguments \
+ ':feature:__git_hf_feature_list'\
+ ;;
+
+ (diff)
+ _arguments \
+ ':branch:__git_branch_names'\
+ ;;
+
+ (rebase)
+ _arguments \
+ -i'[Do an interactive rebase]' \
+ ':branch:__git_branch_names'
+ ;;
+
+ (checkout)
+ _arguments \
+ ':branch:__git_hf_feature_list'\
+ ;;
+
+ (pull)
+ _arguments \
+ ':remote:__git_remotes'\
+ ':branch:__git_branch_names'
+ ;;
+
+ *)
+ _arguments \
+ -v'[Verbose (more) output]'
+ ;;
+ esac
+ ;;
+ esac
+}
+
+__git_hf_version_list ()
+{
+ local expl
+ declare -a versions
+
+ versions=(${${(f)"$(_call_program versions git hf release list 2> /dev/null | tr -d ' |*')"}})
+ __git_command_successful || return
+
+ _wanted versions expl 'version' compadd $versions
+}
+
+__git_hf_feature_list ()
+{
+ local expl
+ declare -a features
+
+ features=(${${(f)"$(_call_program features git hf feature list 2> /dev/null | tr -d ' |*')"}})
+ __git_command_successful || return
+
+ _wanted features expl 'feature' compadd $features
+}
+
+__git_remotes () {
+ local expl gitdir remotes
+
+ gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null)
+ __git_command_successful || return
+
+ remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]})
+ __git_command_successful || return
+
+ # TODO: Should combine the two instead of either or.
+ if (( $#remotes > 0 )); then
+ _wanted remotes expl remote compadd $* - $remotes
+ else
+ _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*"
+ fi
+}
+
+__git_hf_hotfix_list ()
+{
+ local expl
+ declare -a hotfixes
+
+ hotfixes=(${${(f)"$(_call_program hotfixes git hf hotfix list 2> /dev/null | tr -d ' |*')"}})
+ __git_command_successful || return
+
+ _wanted hotfixes expl 'hotfix' compadd $hotfixes
+}
+
+__git_branch_names () {
+ local expl
+ declare -a branch_names
+
+ branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
+ __git_command_successful || return
+
+ _wanted branch-names expl branch-name compadd $* - $branch_names
+}
+
+__git_command_successful () {
+ if (( ${#pipestatus:#0} > 0 )); then
+ _message 'not a git repository'
+ return 1
+ fi
+ return 0
+}
+
+zstyle ':completion:*:*:git:*' user-commands flow:'description for foo'
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 71388c53a..14ae78d41 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -5,7 +5,7 @@ alias gst='git status'
compdef _git gst=git-status
alias gl='git pull'
compdef _git gl=git-pull
-alias gup='git fetch && git rebase'
+alias gup='git pull --rebase'
compdef _git gup=git-fetch
alias gp='git push'
compdef _git gp=git-push
@@ -38,6 +38,7 @@ alias gm='git merge'
compdef _git gm=git-merge
alias grh='git reset HEAD'
alias grhh='git reset HEAD --hard'
+alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
# Will cd into the top of the current repository
# or submodule.
diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh
index 197e86a48..598b059c1 100644
--- a/plugins/github/github.plugin.zsh
+++ b/plugins/github/github.plugin.zsh
@@ -61,6 +61,7 @@ exist_gh() { # [DIRECTORY]
cd "$1"
name=$( git config user.name )
ghuser=$( git config github.user )
+ repo=$1
git remote add origin git@github.com:${ghuser}/${repo}.git
git push -u origin master
diff --git a/plugins/heroku/_heroku b/plugins/heroku/_heroku
index dc899e2b2..a95c38647 100644
--- a/plugins/heroku/_heroku
+++ b/plugins/heroku/_heroku
@@ -154,5 +154,6 @@ case "$words[1]" in
_arguments \
$_command_args \
'(--app)--app[the app name]' \
+ '(--remote)--remote[the remote name]' \
&& return 0
diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh
index 636e4619e..de8d10529 100644
--- a/plugins/jira/jira.plugin.zsh
+++ b/plugins/jira/jira.plugin.zsh
@@ -14,7 +14,7 @@ open_jira_issue () {
`open $jira_url/secure/CreateIssue!default.jspa`;
else
echo "Opening issue #$1";
- `open $jira_url/issues/$1`;
+ `open $jira_url/browse/$1`;
fi
fi
}
diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh
new file mode 100644
index 000000000..5b3121d11
--- /dev/null
+++ b/plugins/last-working-dir/last-working-dir.plugin.zsh
@@ -0,0 +1,23 @@
+#!/usr/bin/env zsh
+# Keeps track of the last used working directory and automatically jumps
+# into it for new shells.
+
+# Flag indicating if we've previously jumped to last directory.
+typeset -g ZSH_LAST_WORKING_DIRECTORY
+local cache_file="$ZSH/cache/last-working-dir"
+
+# Updates the last directory once directory is changed.
+function chpwd() {
+ echo "$PWD" > "$cache_file"
+}
+
+# Changes directory to the last working directory.
+function lwd() {
+ [[ ! -r "$cache_file" ]] || cd `cat "$cache_file"`
+}
+
+# Automatically jump to last working directory unless this isn't the first time
+# this plugin has been loaded.
+if [[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]]; then
+ lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
+fi
diff --git a/plugins/pass/_pass b/plugins/pass/_pass
new file mode 100644
index 000000000..f6c1a6c4b
--- /dev/null
+++ b/plugins/pass/_pass
@@ -0,0 +1,119 @@
+#compdef pass
+#autoload
+
+# Copyright (C) 2012:
+# Johan Venant <jvenant@invicem.pro>
+# Brian Mattern <rephorm@rephorm.com>
+# Jason A. Donenfeld <Jason@zx2c4.com>.
+# Santiago Borrazás <sanbor@gmail.com>
+# All Rights Reserved.
+# This file is licensed under the GPLv2+. Please see COPYING for more information.
+
+
+_pass () {
+ local cmd
+ if (( CURRENT > 2)); then
+ cmd=${words[2]}
+ # Set the context for the subcommand.
+ curcontext="${curcontext%:*:*}:pass-$cmd"
+ # Narrow the range of words we are looking at to exclude `pass'
+ (( CURRENT-- ))
+ shift words
+ # Run the completion for the subcommand
+ case "${cmd}" in
+ init)
+ _arguments : \
+ "-r[re-encrypt existing passwords]" \
+ "--reencrypt[re-encrypt existing passwords]"
+ _pass_complete_keys
+ ;;
+ ls|list|edit)
+ _pass_complete_entries_with_subdirs
+ ;;
+ insert)
+ _arguments : \
+ "-e[echo password to console]" \
+ "--echo[echo password to console]" \
+ "-m[multiline]" \
+ "--multiline[multiline]"
+ _pass_complete_entries_with_subdirs
+ ;;
+ generate)
+ _arguments : \
+ "-n[don't include symbols in password]" \
+ "--no-symbols[don't include symbols in password]" \
+ "-c[copy password to the clipboard]" \
+ "--clip[copy password to the clipboard]"
+ _pass_complete_entries_with_subdirs
+ ;;
+ rm)
+ _arguments : \
+ "-f[force deletion]" \
+ "--force[force deletion]" \
+ "-r[recursively delete]" \
+ "--recursive[recursively delete]"
+ _pass_complete_entries_with_subdirs
+ ;;
+ git)
+ local -a subcommands
+ subcommands=(
+ "init:Initialize git repository"
+ "push:Push to remote repository"
+ "pull:Pull from remote repository"
+ "config:Show git config"
+ "log:Show git log"
+ "reflog:Show git reflog"
+ )
+ _describe -t commands 'pass git' subcommands
+ ;;
+ show|*)
+ _pass_cmd_show
+ ;;
+ esac
+ else
+ local -a subcommands
+ subcommands=(
+ "init:Initialize new password storage"
+ "ls:List passwords"
+ "show:Decrypt and print a password"
+ "insert:Insert a new password"
+ "generate:Generate a new password using pwgen"
+ "edit:Edit a password with \$EDITOR"
+ "rm:Remove the password"
+ "git:Call git on the password store"
+ "version:Output version information"
+ "help:Output help message"
+ )
+ _describe -t commands 'pass' subcommands
+ _arguments : \
+ "--version[Output version information]" \
+ "--help[Output help message]"
+ _pass_cmd_show
+ fi
+}
+
+_pass_cmd_show () {
+ _arguments : \
+ "-c[put it on the clipboard]" \
+ "--clip[put it on the clipboard]"
+ _pass_complete_entries
+}
+_pass_complete_entries_helper () {
+ local IFS=$'\n'
+ local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
+ _values -C 'passwords' $(find "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort)
+}
+
+_pass_complete_entries_with_subdirs () {
+ _pass_complete_entries_helper
+}
+
+_pass_complete_entries () {
+ _pass_complete_entries_helper -type f
+}
+
+_pass_complete_keys () {
+ local IFS=$'\n'
+ # Extract names and email addresses from gpg --list-keys
+ _values 'gpg keys' $(gpg2 --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d')
+}
diff --git a/plugins/per-directory-history/per-directory-history.plugin.zsh b/plugins/per-directory-history/per-directory-history.plugin.zsh
index 22383b8b9..61e8b5a62 100644
--- a/plugins/per-directory-history/per-directory-history.plugin.zsh
+++ b/plugins/per-directory-history/per-directory-history.plugin.zsh
@@ -65,12 +65,13 @@
function per-directory-history-toggle-history() {
if [[ $_per_directory_history_is_global == true ]]; then
_per-directory-history-set-directory-history
- echo "using local history\n"
+ print "\nusing local history\n"
else
_per-directory-history-set-global-history
- echo "using global history\n"
+ print "\nusing global history\n"
fi
- zle reset-prompt
+ zle .push-line
+ zle .accept-line
}
autoload per-directory-history-toggle-history
diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index 4aa7a05d6..cd232a6ae 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -5,6 +5,7 @@ alias sp='ruby script/plugin'
alias sr='ruby script/runner'
alias ssp='ruby script/spec'
alias rdbm='rake db:migrate'
+alias rdbtp='rake db:test:prepare'
alias sc='ruby script/console'
alias sd='ruby script/server --debugger'
alias devlog='tail -f log/development.log'
diff --git a/plugins/rvm/_rvm b/plugins/rvm/_rvm
deleted file mode 100644
index bba5304a0..000000000
--- a/plugins/rvm/_rvm
+++ /dev/null
@@ -1,147 +0,0 @@
-#compdef rvm
-
-local curcontext="$curcontext" state line cmds ret=1
-
-_arguments -C \
- '(- 1 *)'{-v,--version}'[display version information]' \
- '(-l|--level)'{-l,--level}'+[patch level to use with rvm use / install]:number' \
- '(--prefix)--prefix[path for all rvm files (~/.rvm/), with trailing slash!]:path:_files' \
- '(--bin)--bin[path for binaries to be placed (~/.rvm/bin/)]:path:_files' \
- '(--source)--source[src directory to use (~/.rvm/src/)]:path:_files' \
- '(--archives)--archives[directory for downladed files (~/.rvm/archives/)]:path:_files' \
- '-S[Specify a script file to attempt to load and run (rubydo)]:file:_files' \
- '-e[Execute code from the command line]:code' \
- '(-G)-G[root gem path to use]:path:_files' \
- '(--gems)--gems[Used to set the gems_flag, use with remove to remove gems]' \
- '(--archive)--archive[Used to set the archive_flag, use with remove to remove archive]' \
- '(--patch)--patch[With MRI Rubies you may specify one or more full paths to patches]' \
- '(-C|--configure)'{-C,--configure}'=[custom configure options]' \
- '(--nice)--nice[process niceness (for slow computers, default 0)]:number' \
- '(--ree)--ree-options[Options passed directly to ree ./installer on the command line]:options' \
- '(--head)--head[with update, updates rvm to git head version]' \
- '(--rubygems)--rubygems[with update, updates rubygems for selected ruby]' \
- '(--default)--default[with ruby select, sets a default ruby for new shells]' \
- '(--debug)--debug[Toggle debug mode on for very verbose output]' \
- '(--trace)--trace[Toggle trace mode on to see EVERYTHING rvm is doing]' \
- '(--force)--force[Force install, removes old install & source before install]' \
- '(--summary)--summary[Used with rubydo to print out a summary of the commands run]' \
- '(--latest)--latest[with gemset --dump skips version strings for latest gem]' \
- '(--gems)--gems[with uninstall/remove removes gems with the interpreter]' \
- '(--docs)--docs[with install, attempt to generate ri after installation]' \
- '(--reconfigure)--reconfigure[Force ./configure on install even if Makefile already exists]' \
- '1: :->cmds' \
- '*: :->args' && ret=0
-
-case $state in
- cmds)
- cmds=(
- "version:show the rvm version installed in rvm_path"
- "use:setup current shell to use a specific ruby version"
- "reload:reload rvm source itself (useful after changing rvm source)"
- "implode:(seppuku) removes the rvm installation completely. This means everything in $rvm_path (~/.rvm)."
- "update:upgrades rvm to the latest version."
- "reset:remove current and stored default & system settings."
- "info :show the *current* environment information for current ruby"
- "current:print the *current* ruby version and the name of any gemset being used."
- "debug:show info plus additional information for common issues"
- "install:install one or many ruby versions"
- "uninstall:uninstall one or many ruby versions, leaves their sources"
- "remove:uninstall one or many ruby versions and remove their sources"
- "migrate:Lets you migrate all gemsets from one ruby to another."
- "upgrade:Lets you upgrade from one version of a ruby to another, including migrating your gemsets semi-automatically."
- "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."
- "cleanup:Lets you remove stale source folders / archives and other miscellaneous data associated with rvm."
- "repair:Lets you repair parts of your environment e.g. wrappers, env files and and similar files (e.g. general maintenance)."
- "snapshot:Lets your backup / restore an rvm installation in a lightweight manner."
- "disk-usage:Tells you how much disk space rvm install is using."
- "tools:Provides general information about the ruby environment, primarily useful when scripting rvm."
- "docs:Tools to make installing ri and rdoc documentation easier."
- "rvmrc:Tools related to managing rvmrc trust and loading."
- "exec:runs an arbitrary command as a set operation."
- "ruby:runs a named ruby file against specified and/or all rubies"
- "gem:runs a gem command using selected ruby's 'gem'"
- "rake:runs a rake task against specified and/or all rubies"
- "tests:runs 'rake test' across selected ruby versions"
- "specs:runs 'rake spec' across selected ruby versions"
- "monitor:Monitor cwd for testing, run rake {spec,test} on changes."
- "gemset:gemsets: http://rvm.beginrescueend.com/gemsets/"
- "rubygems:Switches the installed version of rubygems for the current ruby."
- "gemdir:display the path to the current gem directory (GEM_HOME)."
- "srcdir:display the path to rvm source directory (may be yanked)"
- "fetch:Performs an archive / src fetch only of the selected ruby."
- "list:show currently installed rubies, interactive output."
- "package:Install a dependency package {readline,iconv,zlib,openssl}"
- "notes:Display notes, with operating system specifics."
- "export:Temporarily set an environment variable in the current shell."
- "unexport:Undo changes made to the environment by 'rvm export'."
- )
- _describe -t commands 'rvm command' cmds && ret=0
- ;;
- args)
- case $line[1] in
- (use|uninstall|remove|list)
- _values -S , 'rubies' $(rvm list strings | sed -e 's/ruby-\([^) ]*\)-\([^) ]*\)/ruby-\1-\2 \1-\2 \1/g') default system && ret=0
- ;;
- (install|fetch)
- _values -S , 'rubies' $(rvm list known_strings) && ret=0
- ;;
- gemset)
- if (( CURRENT == 3 )); then
- _values 'gemset_commands' \
- 'import' \
- 'export' \
- 'create' \
- 'copy' \
- 'rename' \
- 'empty' \
- 'delete' \
- 'name' \
- 'dir' \
- 'list' \
- 'list_all' \
- 'gemdir' \
- 'install' \
- 'pristine' \
- 'clear' \
- 'use' \
- 'update' \
- 'unpack' \
- 'globalcache'
- else
- _values -S , 'gemsets' $(rvm gemset list | grep -v gemset 2>/dev/null)
- fi
- ret=0
- ;;
- package)
- if (( CURRENT == 3 )); then
- _values 'package_commands' \
- 'install' \
- 'uninstall'
- else
- _values 'packages' \
- 'readline' \
- 'iconv' \
- 'curl' \
- 'openssl' \
- 'zlib' \
- 'autoconf' \
- 'ncurses' \
- 'pkgconfig' \
- 'gettext' \
- 'glib' \
- 'mono' \
- 'llvm' \
- 'libxml2' \
- 'libxslt' \
- 'libyaml'
- fi
- ret=0
- ;;
- *)
- (( ret )) && _message 'no more arguments'
- ;;
- esac
- ;;
-esac
-
-return ret
diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
index 604c00713..27f29f2b3 100644
--- a/plugins/rvm/rvm.plugin.zsh
+++ b/plugins/rvm/rvm.plugin.zsh
@@ -1,3 +1,5 @@
+fpath=($rvm_path/scripts/zsh/Completion $fpath)
+
alias rubies='rvm list rubies'
alias gemsets='rvm gemset list'
diff --git a/plugins/screen/screen.plugin.zsh b/plugins/screen/screen.plugin.zsh
index 98178e807..7009e7a91 100644
--- a/plugins/screen/screen.plugin.zsh
+++ b/plugins/screen/screen.plugin.zsh
@@ -1,6 +1,6 @@
# 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 [[ "$TERM" == screen* ]]; then
if [[ $_GET_PATH == '' ]]; then
_GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^\/home\//~/;s/^~$USER/~/"'
fi
diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh
index bd2767e3e..e38e8920b 100644
--- a/plugins/svn/svn.plugin.zsh
+++ b/plugins/svn/svn.plugin.zsh
@@ -1,7 +1,15 @@
+
function svn_prompt_info {
if [ $(in_svn) ]; then
+ if [ "x$SVN_SHOW_BRANCH" = "xtrue" ]; then
+ unset SVN_SHOW_BRANCH
+ _DISPLAY=$(svn_get_branch_name)
+ else
+ _DISPLAY=$(svn_get_repo_name)
+ fi
echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\
-$ZSH_THEME_REPO_NAME_COLOR$(svn_get_repo_name)$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR"
+$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR"
+ unset _DISPLAY
fi
}
@@ -15,11 +23,21 @@ function in_svn() {
function svn_get_repo_name {
if [ $(in_svn) ]; then
svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT
-
+
svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p"
fi
}
+function svn_get_branch_name {
+ _DISPLAY=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }')
+ if [ "x$_DISPLAY" = "x" ]; then
+ svn_get_repo_name
+ else
+ echo $_DISPLAY
+ fi
+ unset _DISPLAY
+}
+
function svn_get_rev_nr {
if [ $(in_svn) ]; then
svn info 2> /dev/null | sed -n s/Revision:\ //p
@@ -29,9 +47,11 @@ function svn_get_rev_nr {
function svn_dirty_choose {
if [ $(in_svn) ]; then
svn status 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'
- if [ $pipestatus[-1] -ne 0 ]; then
+ if [ $pipestatus[-1] -eq 0 ]; then
+ # Grep exits with 0 when "One or more lines were selected", return "dirty".
echo $1
- else
+ else
+ # Otherwise, no lines were found, or an error occurred. Return clean.
echo $2
fi
fi
diff --git a/plugins/urltools/urltools.plugin.zsh b/plugins/urltools/urltools.plugin.zsh
index 0d29314d6..3de74ae3d 100644
--- a/plugins/urltools/urltools.plugin.zsh
+++ b/plugins/urltools/urltools.plugin.zsh
@@ -4,6 +4,6 @@
# Taken from:
# http://ruslanspivak.com/2010/06/02/urlencode-and-urldecode-from-a-command-line/
-alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
+alias urlencode='node -e "console.log(encodeURIComponent(process.argv[1]))"'
-alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"' \ No newline at end of file
+alias urldecode='node -e "console.log(decodeURIComponent(process.argv[1]))"'
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
index d29eb1dda..c47ab7211 100644
--- a/plugins/vi-mode/vi-mode.plugin.zsh
+++ b/plugins/vi-mode/vi-mode.plugin.zsh
@@ -5,12 +5,7 @@ function zle-line-init zle-keymap-select {
zle -N zle-line-init
zle -N zle-keymap-select
-#changing mode clobbers the keybinds, so store the keybinds before and execute
-#them after
-binds=`bindkey -L`
bindkey -v
-for bind in ${(@f)binds}; do eval $bind; done
-unset binds
# if mode indicator wasn't setup by theme, define default
if [[ "$MODE_INDICATOR" == "" ]]; then
diff --git a/themes/adben.zsh-theme b/themes/adben.zsh-theme
new file mode 100644
index 000000000..9f777e847
--- /dev/null
+++ b/themes/adben.zsh-theme
@@ -0,0 +1,26 @@
+#!/usr/bin/env zsh
+local USER_HOST='%{$terminfo[bold]$fg[yellow]%}%n@%m%{$reset_color%}'
+local RETURN_CODE="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
+local GIT_BRANCH='%{$terminfo[bold]$fg[red]%}$(git_prompt_info)%{$reset_color%}'
+local CURRENT_DIR='%{$terminfo[bold]$fg[green]%} %~%{$reset_color%}'
+local RUBY_RVM='%{$fg[gray]%}‹$(rvm-prompt i v g)›%{$reset_color%}'
+local COMMAND_TIP='%{$terminfo[bold]$fg[blue]%}$(wget -qO - http://www.commandlinefu.com/commands/random/plaintext | sed 1d | sed '/^$/d' | sed 's/^/║/g')%{$reset_color%}'
+######### PROMPT #########
+PROMPT="%{$terminfo[bold]$fg[blue]%}╔═ %{$reset_color%}${USER_HOST} ${CURRENT_DIR} ${RUBY_RVM} ${GIT_BRANCH}
+${COMMAND_TIP}
+%{$terminfo[bold]$fg[blue]%}╚═ %{$reset_color%}%B%{$terminfo[bold]$fg[white]%}$%b%{$reset_color%} "
+RPS1='${RETURN_CODE}'
+RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}'
+######### PROMPT #########
+########## GIT ###########
+ZSH_THEME_GIT_PROMPT_PREFIX="‹"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$GIT_PROMPT_INFO%}›"
+ZSH_THEME_GIT_PROMPT_DIRTY=" %{$GIT_DIRTY_COLOR%}✘"
+ZSH_THEME_GIT_PROMPT_CLEAN=" %{$GIT_CLEAN_COLOR%}✔"
+ZSH_THEME_GIT_PROMPT_ADDED="%{$FG[082]%}✚%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_MODIFIED="%{$FG[166]%}✹%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[160]%}✖%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[220]%}➜%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[082]%}═%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[190]%}✭%{$reset_color%}"
+########## GIT ###########
diff --git a/themes/frisk.zsh-theme b/themes/frisk.zsh-theme
index f181aec90..2c999a6a6 100644
--- a/themes/frisk.zsh-theme
+++ b/themes/frisk.zsh-theme
@@ -1,10 +1,22 @@
PROMPT=$'
-%{$fg[blue]%}%/%{$reset_color%} $(git_prompt_info)%{$fg[white]%}[%n@%m]%{$reset_color%} %{$fg[white]%}[%T]%{$reset_color%}
+%{$fg[blue]%}%/%{$reset_color%} $(git_prompt_info)$(bzr_prompt_info)%{$fg[white]%}[%n@%m]%{$reset_color%} %{$fg[white]%}[%T]%{$reset_color%}
%{$fg_bold[black]%}>%{$reset_color%} '
PROMPT2="%{$fg_blod[black]%}%_> %{$reset_color%}"
-ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}["
+GIT_CB="git::"
+ZSH_THEME_SCM_PROMPT_PREFIX="%{$fg[green]%}["
+ZSH_THEME_GIT_PROMPT_PREFIX=$ZSH_THEME_SCM_PROMPT_PREFIX$GIT_CB
ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}*%{$fg[green]%}"
ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+## Bazaar integration
+bzr_prompt_info() {
+ BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'`
+ if [ -n "$BZR_CB" ]; then
+ BZR_DIRTY=""
+ [[ -n `bzr status` ]] && BZR_DIRTY="%{$fg[red]%} *%{$reset_color%}"
+ echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX"
+ fi
+}
diff --git a/themes/frontcube.zsh-theme b/themes/frontcube.zsh-theme
new file mode 100644
index 000000000..d9f5b6d9c
--- /dev/null
+++ b/themes/frontcube.zsh-theme
@@ -0,0 +1,12 @@
+local rvm="%{$fg[green]%}[$(rvm-prompt i v g)]%{$reset_color%}"
+
+PROMPT='
+%{$fg_bold[gray]%}%~%{$fg_bold[blue]%}%{$fg_bold[blue]%} % %{$reset_color%}
+%{$fg[green]%}➞ %{$reset_color%'
+
+RPROMPT='$(git_prompt_info) $(rvm)'
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}[git:"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}] %{$fg[red]%}✖ %{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}] %{$fg[green]%}✔%{$reset_color%}"
diff --git a/themes/intheloop.zsh-theme b/themes/intheloop.zsh-theme
new file mode 100644
index 000000000..85b4a4d95
--- /dev/null
+++ b/themes/intheloop.zsh-theme
@@ -0,0 +1,24 @@
+# ZSH theme by James Smith (http://loopj.com)
+# A multiline prompt with username, hostname, full path, return status, git branch, git dirty status, git remote status
+
+local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
+
+local host_color="green"
+if [ -n "$SSH_CLIENT" ]; then
+ local host_color="red"
+fi
+
+PROMPT='
+%{$fg_bold[grey]%}[%{$reset_color%}%{$fg_bold[${host_color}]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%}]%{$reset_color%} %{$fg_bold[blue]%}%10c%{$reset_color%} $(git_prompt_info) $(git_remote_status)
+%{$fg_bold[cyan]%}❯%{$reset_color%} '
+
+
+RPROMPT='${return_status}%{$reset_color%}'
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[grey]%}(%{$fg[red]%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[grey]%}) %{$fg[yellow]%}⚡%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[grey]%})"
+ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="%{$fg_bold[magenta]%}↓%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE="%{$fg_bold[magenta]%}↑%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="%{$fg_bold[magenta]%}↕%{$reset_color%}" \ No newline at end of file
diff --git a/themes/minimal.zsh-theme b/themes/minimal.zsh-theme
index ee3ab6b22..a2a16031f 100644
--- a/themes/minimal.zsh-theme
+++ b/themes/minimal.zsh-theme
@@ -1,15 +1,18 @@
ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}["
-ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}"
-ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$reset_color%}"
-ZSH_THEME_GIT_PROMPT_CLEAN=""
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$reset_color%}]%{$reset_color%} "
+ZSH_THEME_GIT_PROMPT_CLEAN="]%{$reset_color%} "
+ZSH_THEME_SVN_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
+ZSH_THEME_SVN_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
+ZSH_THEME_SVN_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
+ZSH_THEME_SVN_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
-#Customized git status, oh-my-zsh currently does not allow render dirty status before branch
-git_custom_status() {
- local cb=$(current_branch)
- if [ -n "$cb" ]; then
- echo "- $ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
- fi
+vcs_status() {
+ if [[ ( $(whence in_svn) != "" ) && ( $(in_svn) == 1 ) ]]; then
+ svn_prompt_info
+ else
+ git_prompt_info
+ fi
}
-
-PROMPT='%2~ $(git_custom_status) »%b ' \ No newline at end of file
+PROMPT='%2~ $(vcs_status)»%b ' \ No newline at end of file
diff --git a/themes/tjkirch_mod.zsh-theme b/themes/tjkirch_mod.zsh-theme
new file mode 100644
index 000000000..1b206a7e1
--- /dev/null
+++ b/themes/tjkirch_mod.zsh-theme
@@ -0,0 +1,13 @@
+ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}⚡"
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+function prompt_char {
+ if [ $UID -eq 0 ]; then echo "%{$fg[red]%}#%{$reset_color%}"; else echo $; fi
+}
+
+PROMPT='%(?,,%{$fg[red]%}FAIL: $?%{$reset_color%}
+)%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}: %{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) %_$(prompt_char) '
+
+RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}'
diff --git a/tools/install.sh b/tools/install.sh
index b080be3a1..6f58db939 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -13,7 +13,7 @@ hash git >/dev/null && /usr/bin/env git clone https://github.com/robbyrussell/oh
echo "\033[0;34mLooking for an existing zsh config...\033[0m"
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]
then
- echo "\033[0;33mFound ~/.zshrc.\033[0m \033[0;32]Backing up to ~/.zshrc.pre-oh-my-zsh\033[0m";
+ echo "\033[0;33mFound ~/.zshrc.\033[0m \033[0;32mBacking up to ~/.zshrc.pre-oh-my-zsh\033[0m";
cp ~/.zshrc ~/.zshrc.pre-oh-my-zsh;
rm ~/.zshrc;
fi