summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/atom/atom.plugin.zsh4
-rw-r--r--plugins/battery/battery.plugin.zsh90
-rw-r--r--plugins/brew/_brew74
-rw-r--r--plugins/cabal/cabal.plugin.zsh11
-rw-r--r--plugins/catimg/catimg.plugin.zsh17
-rwxr-xr-xplugins/catimg/catimg.sh88
-rw-r--r--plugins/catimg/colors.pngbin0 -> 353 bytes
-rw-r--r--plugins/emacs/emacs.plugin.zsh56
-rwxr-xr-xplugins/emacs/emacsclient.sh12
-rw-r--r--plugins/gem/gem.plugin.zsh7
-rw-r--r--plugins/git-prompt/gitstatus.py88
-rw-r--r--plugins/git/git.plugin.zsh4
-rw-r--r--plugins/gitfast/_git163
-rw-r--r--plugins/gitfast/git-completion.bash301
-rw-r--r--plugins/gitfast/git-prompt.sh334
-rw-r--r--plugins/gitignore/gitignore.plugin.zsh6
l---------[-rw-r--r--]plugins/go/go.plugin.zsh152
-rw-r--r--plugins/golang/golang.plugin.zsh34
-rw-r--r--plugins/iwhois/iwhois.plugin.zsh8
-rw-r--r--plugins/lol/lol.plugin.zsh12
-rw-r--r--plugins/nyan/nyan.plugin.zsh2
-rw-r--r--plugins/pip/_pip4
-rw-r--r--plugins/rails/rails.plugin.zsh1
-rw-r--r--plugins/rake/rake.plugin.zsh4
-rw-r--r--plugins/rbenv/rbenv.plugin.zsh8
-rwxr-xr-xplugins/sublime/sublime.plugin.zsh41
-rw-r--r--plugins/sudo/sudo.plugin.zsh (renamed from plugins/sudo/sudo.zsh)0
-rw-r--r--plugins/svn-fast-info/svn-fast-info.plugin.zsh73
-rw-r--r--plugins/tmuxinator/_tmuxinator2
-rw-r--r--plugins/wd/_wd.sh110
-rwxr-xr-xplugins/wd/wd.plugin.zsh4
-rwxr-xr-xplugins/wd/wd.sh75
-rw-r--r--plugins/xcode/xcode.plugin.zsh1
-rw-r--r--plugins/yii/yii.plugin.zsh17
34 files changed, 1100 insertions, 703 deletions
diff --git a/plugins/atom/atom.plugin.zsh b/plugins/atom/atom.plugin.zsh
new file mode 100644
index 000000000..048fd7521
--- /dev/null
+++ b/plugins/atom/atom.plugin.zsh
@@ -0,0 +1,4 @@
+#
+# Your guess is as good as mine. Let's just assume that we will need this...
+# - For more info visit... http://atom.io/
+# \ No newline at end of file
diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh
index 9f053383a..e39cc5b8f 100644
--- a/plugins/battery/battery.plugin.zsh
+++ b/plugins/battery/battery.plugin.zsh
@@ -11,23 +11,29 @@
if [[ $(uname) == "Darwin" ]] ; then
function battery_pct() {
- typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //')
- typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //')
+ local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
+ typeset -F maxcapacity=$(echo $smart_battery_status | grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //')
+ typeset -F currentcapacity=$(echo $smart_battery_status | grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //')
integer i=$(((currentcapacity/maxcapacity) * 100))
echo $i
}
+
+ function plugged_in() {
+ [ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ]
+ }
function battery_pct_remaining() {
- if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
- battery_pct
- else
+ if plugged_in ; then
echo "External Power"
+ else
+ battery_pct
fi
}
function battery_time_remaining() {
- if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
- timeremaining=$(ioreg -rc "AppleSmartBattery"| grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
+ local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
+ if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
+ timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
else
echo "∞"
@@ -49,6 +55,10 @@ if [[ $(uname) == "Darwin" ]] ; then
echo "∞"
fi
}
+
+ function battery_is_charging() {
+ [[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
+ }
elif [[ $(uname) == "Linux" ]] ; then
@@ -79,14 +89,66 @@ elif [[ $(uname) == "Linux" ]] ; then
echo "∞"
fi
}
+
+ function battery_pct() {
+ # todo for on linux
+ }
+
+ function battery_is_charging() {
+ # todo on linux
+ false
+ }
+
else
- # Empty functions so we don't cause errors in prompts
- function battery_pct_remaining() {
- }
+ # Empty functions so we don't cause errors in prompts
+ function battery_pct_remaining() {
+ }
- function battery_time_remaining() {
- }
+ function battery_time_remaining() {
+ }
- function battery_pct_prompt() {
- }
+ function battery_pct_prompt() {
+ }
fi
+
+function battery_level_gauge() {
+ local gauge_slots=${BATTERY_GAUGE_SLOTS:-10};
+ local green_threshold=${BATTERY_GREEN_THRESHOLD:-6};
+ local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-4};
+ local color_green=${BATTERY_COLOR_GREEN:-%F{green}};
+ local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}};
+ local color_red=${BATTERY_COLOR_RED:-%F{red}};
+ local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}};
+ local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['};
+ local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'};
+ local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'};
+ local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'};
+ local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow};
+ local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'};
+
+ local battery_remaining_percentage=$(battery_pct);
+
+ if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then
+ local filled=$(((( $battery_remaining_percentage + $gauge_slots - 1) / $gauge_slots)));
+ local empty=$(($gauge_slots - $filled));
+
+ if [[ $filled -gt $green_threshold ]]; then local gauge_color=$color_green;
+ elif [[ $filled -gt $yellow_threshold ]]; then local gauge_color=$color_yellow;
+ else local gauge_color=$color_red;
+ fi
+ else
+ local filled=$gauge_slots;
+ local empty=0;
+ filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'};
+ fi
+
+
+ local charging=' ' && battery_is_charging && charging=$charging_symbol;
+
+ printf ${charging_color//\%/\%\%}$charging${color_reset//\%/\%\%}${battery_prefix//\%/\%\%}${gauge_color//\%/\%\%}
+ printf ${filled_symbol//\%/\%\%}'%.0s' {1..$filled}
+ [[ $filled -lt $gauge_slots ]] && printf ${empty_symbol//\%/\%\%}'%.0s' {1..$empty}
+ printf ${color_reset//\%/\%\%}${battery_suffix//\%/\%\%}${color_reset//\%/\%\%}
+}
+
+
diff --git a/plugins/brew/_brew b/plugins/brew/_brew
index a25caf40c..9eb3bb557 100644
--- a/plugins/brew/_brew
+++ b/plugins/brew/_brew
@@ -11,10 +11,25 @@ _brew_installed_formulae() {
installed_formulae=(`brew list`)
}
+_brew_installed_taps() {
+ installed_taps=(`brew tap`)
+}
+
+_brew_outdated_formulae() {
+ outdated_formulae=(`brew outdated`)
+}
+
+_brew_running_services() {
+ running_services=(`brew services list | awk '{print $1}'`)
+}
+
local -a _1st_arguments
_1st_arguments=(
+ 'audit:check formulae for Homebrew coding style'
+ 'bundle:look for a Brewfile and run each line as a brew command'
'cat:display formula file for a formula'
'cleanup:uninstall unused and old versions of packages'
+ 'commands:show a list of commands'
'create:create a new formula'
'deps:list dependencies and dependants of a formula'
'doctor:audits your installation for common issues'
@@ -22,26 +37,38 @@ _1st_arguments=(
'home:visit the homepage of a formula or the brew project'
'info:information about a formula'
'install:install a formula'
+ 'reinstall:install a formula anew; re-using its current options'
'link:link a formula'
'list:list files in a formula or not-installed formulae'
'log:git commit log for a formula'
'missing:check all installed formuale for missing dependencies.'
- 'options:display install options specific to formula.'
- 'outdated:list formulas for which a newer version is available'
+ 'outdated:list formulae for which a newer version is available'
+ 'pin:pin specified formulae'
'prune:remove dead links'
- 'reinstall:reinstall a formula'
'remove:remove a formula'
'search:search for a formula (/regex/ or string)'
'server:start a local web app that lets you browse formulae (requires Sinatra)'
+ 'services:small wrapper around `launchctl` for supported formulae'
+ 'tap:tap a new formula repository from GitHub, or list existing taps'
'unlink:unlink a formula'
+ 'unpin:unpin specified formulae'
+ 'untap:remove a tapped repository'
'update:freshen up links'
'upgrade:upgrade outdated formulae'
- 'uses:show formulas which depend on a formula'
- 'versions:show all available formula versions'
+ 'uses:show formulae which depend on a formula'
+)
+
+local -a _service_arguments
+_service_arguments=(
+ 'cleanup:get rid of stale services and unused plists'
+ 'list:list all services managed by `brew services`'
+ 'restart:gracefully restart selected service'
+ 'start:start selected service'
+ 'stop:stop selected service'
)
local expl
-local -a formulae installed_formulae
+local -a formulae installed_formulae installed_taps outdated_formulae running_services
_arguments \
'(-v)-v[verbose]' \
@@ -60,24 +87,41 @@ if (( CURRENT == 1 )); then
fi
case "$words[1]" in
- search|-S)
- _arguments \
- '(--macports)--macports[search the macports repository]' \
- '(--fink)--fink[search the fink repository]' ;;
+ install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|edit|options)
+ _brew_all_formulae
+ _wanted formulae expl 'all formulae' compadd -a formulae ;;
list|ls)
_arguments \
'(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
+ '(--pinned)--pinned[list all versions of pinned formulae]' \
'(--versions)--versions[list all installed versions of a formula]' \
- '1: :->forms' && return 0
+ '1: :->forms' && return 0
if [[ "$state" == forms ]]; then
_brew_installed_formulae
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
fi ;;
- install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions)
- _brew_all_formulae
- _wanted formulae expl 'all formulae' compadd -a formulae ;;
- reinstall|remove|rm|uninstall|unlink|cleanup|link|ln)
+ remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin)
_brew_installed_formulae
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
+ search|-S)
+ _arguments \
+ '(--macports)--macports[search the macports repository]' \
+ '(--fink)--fink[search the fink repository]' ;;
+ services)
+ if [[ -n "$words[2]" ]]; then
+ case "$words[2]" in
+ restart|start|stop)
+ _brew_running_services
+ _wanted running_services expl 'running services' compadd -a running_services ;;
+ esac
+ else
+ _describe -t commands "brew services subcommand" _service_arguments
+ fi ;;
+ untap)
+ _brew_installed_taps
+ _wanted installed_taps expl 'installed taps' compadd -a installed_taps ;;
+ upgrade)
+ _brew_outdated_formulae
+ _wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae ;;
esac
diff --git a/plugins/cabal/cabal.plugin.zsh b/plugins/cabal/cabal.plugin.zsh
index 8d3c64587..9f76add7a 100644
--- a/plugins/cabal/cabal.plugin.zsh
+++ b/plugins/cabal/cabal.plugin.zsh
@@ -1,3 +1,14 @@
+function cabal_sandbox_info() {
+ cabal_files=(*.cabal(N))
+ if [ $#cabal_files -gt 0 ]; then
+ if [ -f cabal.sandbox.config ]; then
+ echo "%{$fg[green]%}sandboxed%{$reset_color%}"
+ else
+ echo "%{$fg[red]%}not sandboxed%{$reset_color%}"
+ fi
+ fi
+}
+
function _cabal_commands() {
local ret=1 state
_arguments ':subcommand:->subcommand' && ret=0
diff --git a/plugins/catimg/catimg.plugin.zsh b/plugins/catimg/catimg.plugin.zsh
new file mode 100644
index 000000000..cb92f5986
--- /dev/null
+++ b/plugins/catimg/catimg.plugin.zsh
@@ -0,0 +1,17 @@
+################################################################################
+# catimg script by Eduardo San Martin Morote aka Posva #
+# http://posva.net #
+# #
+# Ouput the content of an image to the stdout using the 256 colors of the #
+# terminal. #
+# Github: https://github.com/posva/catimg #
+################################################################################
+
+
+function catimg() {
+ if [[ -x `which convert` ]]; then
+ zsh $ZSH/plugins/catimg/catimg.sh $@
+ else
+ echo "catimg need convert (ImageMagick) to work)"
+ fi
+}
diff --git a/plugins/catimg/catimg.sh b/plugins/catimg/catimg.sh
new file mode 100755
index 000000000..cd0f2e333
--- /dev/null
+++ b/plugins/catimg/catimg.sh
@@ -0,0 +1,88 @@
+################################################################################
+# catimg script by Eduardo San Martin Morote aka Posva #
+# http://posva.net #
+# #
+# Ouput the content of an image to the stdout using the 256 colors of the #
+# terminal. #
+# Github: https://github.com/posva/catimg #
+################################################################################
+
+function help() {
+ echo "Usage catimg [-h] [-w width] [-c char] img"
+ echo "By default char is \" \" and w is the terminal width"
+}
+
+# VARIABLES
+COLOR_FILE=$(dirname $0)/colors.png
+CHAR=" "
+
+WIDTH=""
+IMG=""
+
+while getopts qw:c:h opt; do
+ case "$opt" in
+ w) WIDTH="$OPTARG" ;;
+ c) CHAR="$OPTARG" ;;
+ h) help; exit ;;
+ *) help ; exit 1;;
+ esac
+ done
+
+while [ "$1" ]; do
+ IMG="$1"
+ shift
+done
+
+if [ "$IMG" = "" -o ! -f "$IMG" ]; then
+ help
+ exit 1
+fi
+
+if [ ! "$WIDTH" ]; then
+ COLS=$(expr $(tput cols) "/" $(echo -n "$CHAR" | wc -c))
+else
+ COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c))
+fi
+WIDTH=$(convert "$IMG" -print "%w\n" /dev/null)
+if [ "$WIDTH" -gt "$COLS" ]; then
+ WIDTH=$COLS
+fi
+
+REMAP=""
+if convert "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then
+ REMAP="-remap $COLOR_FILE"
+else
+ echo "The version of convert is too old, don't expect good results :(" >&2
+ #convert "$IMG" -colors 256 PNG8:tmp.png
+ #IMG="tmp.png"
+fi
+
+# Display the image
+I=0
+convert "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null |
+sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' |
+while read R G B f; do
+ if [ ! "$R" = "NO" ]; then
+ if [ "$R" -eq "$G" -a "$G" -eq "$B" ]; then
+ ((
+ I++,
+ IDX = 232 + R * 23 / 255
+ ))
+ else
+ ((
+ I++,
+ IDX = 16
+ + R * 5 / 255 * 36
+ + G * 5 / 255 * 6
+ + B * 5 / 255
+ ))
+ fi
+ #echo "$R,$G,$B: $IDX"
+ echo -ne "\e[48;5;${IDX}m${CHAR}"
+ else
+ (( I++ ))
+ echo -ne "\e[0m${CHAR}"
+ fi
+ # New lines
+ (( $I % $WIDTH )) || echo -e "\e[0m"
+done
diff --git a/plugins/catimg/colors.png b/plugins/catimg/colors.png
new file mode 100644
index 000000000..5f2c8126b
--- /dev/null
+++ b/plugins/catimg/colors.png
Binary files differ
diff --git a/plugins/emacs/emacs.plugin.zsh b/plugins/emacs/emacs.plugin.zsh
new file mode 100644
index 000000000..a3f0085a8
--- /dev/null
+++ b/plugins/emacs/emacs.plugin.zsh
@@ -0,0 +1,56 @@
+# Emacs 23 daemon capability is a killing feature.
+# One emacs process handles all your frames whether
+# you use a frame opened in a terminal via a ssh connection or X frames
+# opened on the same host.
+
+# Benefits are multiple
+# - You don't have the cost of starting Emacs all the time anymore
+# - Opening a file is as fast as Emacs does not have anything else to do.
+# - You can share opened buffered across opened frames.
+# - Configuration changes made at runtime are applied to all frames.
+
+
+if "$ZSH/tools/require_tool.sh" emacs 23 2>/dev/null ; then
+ export EMACS_PLUGIN_LAUNCHER="$ZSH/plugins/emacs/emacsclient.sh"
+
+ # set EDITOR if not already defined.
+ export EDITOR="${EDITOR:-${EMACS_PLUGIN_LAUNCHER}}"
+
+ alias emacs="$EMACS_PLUGIN_LAUNCHER --no-wait"
+ alias e=emacs
+
+ # same than M-x eval but from outside Emacs.
+ alias eeval="$EMACS_PLUGIN_LAUNCHER --eval"
+ # create a new X frame
+ alias eframe='emacsclient --alternate-editor "" --create-frame'
+
+ # to code all night long
+ alias emasc=emacs
+ alias emcas=emacs
+
+ # Write to standard output the path to the file
+ # opened in the current buffer.
+ function efile {
+ local cmd="(buffer-file-name (window-buffer))"
+ "$EMACS_PLUGIN_LAUNCHER" --eval "$cmd" | tr -d \"
+ }
+
+ # Write to standard output the directory of the file
+ # opened in the the current buffer
+ function ecd {
+ local cmd="(let ((buf-name (buffer-file-name (window-buffer))))
+ (if buf-name (file-name-directory buf-name)))"
+
+ local dir="$($EMACS_PLUGIN_LAUNCHER --eval $cmd | tr -d \")"
+ if [ -n "$dir" ] ;then
+ echo "$dir"
+ else
+ echo "can not deduce current buffer filename." >/dev/stderr
+ return 1
+ fi
+ }
+fi
+
+## Local Variables:
+## mode: sh
+## End:
diff --git a/plugins/emacs/emacsclient.sh b/plugins/emacs/emacsclient.sh
new file mode 100755
index 000000000..38d419813
--- /dev/null
+++ b/plugins/emacs/emacsclient.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# get list of available X windows.
+x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
+
+if [ -z "$x" ] ;then
+ # Create one if there is no X window yet.
+ emacsclient --alternate-editor "" --create-frame "$@"
+else
+ # prevent creating another X frame if there is at least one present.
+ emacsclient --alternate-editor "" "$@"
+fi
diff --git a/plugins/gem/gem.plugin.zsh b/plugins/gem/gem.plugin.zsh
new file mode 100644
index 000000000..938f5c993
--- /dev/null
+++ b/plugins/gem/gem.plugin.zsh
@@ -0,0 +1,7 @@
+alias gemb="gem build *.gemspec"
+alias gemp="gem push *.gem"
+
+# gemy GEM 0.0.0 = gem yank GEM -v 0.0.0
+function gemy {
+ gem yank $1 -v $2
+} \ No newline at end of file
diff --git a/plugins/git-prompt/gitstatus.py b/plugins/git-prompt/gitstatus.py
index ee6fab9bd..ef894bff2 100644
--- a/plugins/git-prompt/gitstatus.py
+++ b/plugins/git-prompt/gitstatus.py
@@ -1,20 +1,30 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
+from subprocess import Popen, PIPE
+import re
# change those symbols to whatever you prefer
-symbols = {'ahead of': '↑', 'behind': '↓', 'staged':'♦', 'changed':'‣', 'untracked':'…', 'clean':'⚡', 'unmerged':'≠', 'sha1':':'}
-
-from subprocess import Popen, PIPE
+symbols = {
+ 'ahead of': '↑',
+ 'behind': '↓',
+ 'staged': '♦',
+ 'changed': '‣',
+ 'untracked': '…',
+ 'clean': '⚡',
+ 'unmerged': '≠',
+ 'sha1': ':'
+}
-output,error = Popen(['git','status'], stdout=PIPE, stderr=PIPE).communicate()
+output, error = Popen(
+ ['git', 'status'], stdout=PIPE, stderr=PIPE).communicate()
if error:
- import sys
- sys.exit(0)
+ import sys
+ sys.exit(0)
lines = output.splitlines()
-import re
-behead_re = re.compile(r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
+behead_re = re.compile(
+ r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
diverge_re = re.compile(r"^# and have (\d+) and (\d+) different")
status = ''
@@ -23,46 +33,50 @@ changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE)
untracked = re.compile(r'^# Untracked files:$', re.MULTILINE)
unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE)
+
def execute(*command):
- out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate()
- if not err:
- nb = len(out.splitlines())
- else:
- nb = '?'
- return nb
+ out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate()
+ if not err:
+ nb = len(out.splitlines())
+ else:
+ nb = '?'
+ return nb
if staged.search(output):
- nb = execute(['git','diff','--staged','--name-only','--diff-filter=ACDMRT'])
- status += '%s%s' % (symbols['staged'], nb)
+ nb = execute(
+ ['git', 'diff', '--staged', '--name-only', '--diff-filter=ACDMRT'])
+ status += '%s%s' % (symbols['staged'], nb)
if unmerged.search(output):
- nb = execute(['git','diff', '--staged','--name-only', '--diff-filter=U'])
- status += '%s%s' % (symbols['unmerged'], nb)
+ nb = execute(['git', 'diff', '--staged', '--name-only', '--diff-filter=U'])
+ status += '%s%s' % (symbols['unmerged'], nb)
if changed.search(output):
- nb = execute(['git','diff','--name-only', '--diff-filter=ACDMRT'])
- status += '%s%s' % (symbols['changed'], nb)
+ nb = execute(['git', 'diff', '--name-only', '--diff-filter=ACDMRT'])
+ status += '%s%s' % (symbols['changed'], nb)
if untracked.search(output):
-## nb = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines())
-## status += "%s" % (symbols['untracked']*(nb//3 + 1), )
- status += symbols['untracked']
+ status += symbols['untracked']
if status == '':
- status = symbols['clean']
+ status = symbols['clean']
remote = ''
bline = lines[0]
if bline.find('Not currently on any branch') != -1:
- branch = symbols['sha1']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1]
+ branch = symbols['sha1'] + Popen([
+ 'git',
+ 'rev-parse',
+ '--short',
+ 'HEAD'], stdout=PIPE).communicate()[0][:-1]
else:
- branch = bline.split(' ')[3]
- bstatusline = lines[1]
- match = behead_re.match(bstatusline)
- if match:
- remote = symbols[match.groups()[0]]
- remote += match.groups()[2]
- elif lines[2:]:
- div_match = diverge_re.match(lines[2])
- if div_match:
- remote = "{behind}{1}{ahead of}{0}".format(*div_match.groups(), **symbols)
-
-print '\n'.join([branch,remote,status])
+ branch = bline.split(' ')[-1]
+ bstatusline = lines[1]
+ match = behead_re.match(bstatusline)
+ if match:
+ remote = symbols[match.groups()[0]]
+ remote += match.groups()[2]
+ elif lines[2:]:
+ div_match = diverge_re.match(lines[2])
+ if div_match:
+ remote = "{behind}{1}{ahead of}{0}".format(
+ *div_match.groups(), **symbols)
+print('\n'.join([branch, remote, status]))
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 1285a3247..2b5983f33 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -62,8 +62,10 @@ alias glgg='git log --graph --max-count=10'
compdef _git glgg=git-log
alias glgga='git log --graph --decorate --all'
compdef _git glgga=git-log
-alias glo='git log --oneline'
+alias glo='git log --oneline --decorate --color'
compdef _git glo=git-log
+alias glog='git log --oneline --decorate --color --graph'
+compdef _git glog=git-log
alias gss='git status -s'
compdef _git gss=git-status
alias ga='git add'
diff --git a/plugins/gitfast/_git b/plugins/gitfast/_git
index cf8116d47..fac5e711e 100644
--- a/plugins/gitfast/_git
+++ b/plugins/gitfast/_git
@@ -2,18 +2,19 @@
# zsh completion wrapper for git
#
-# You need git's bash completion script installed somewhere, by default on the
-# same directory as this script.
+# Copyright (c) 2012-2013 Felipe Contreras <felipe.contreras@gmail.com>
#
-# If your script is on ~/.git-completion.sh instead, you can configure it on
-# your ~/.zshrc:
+# You need git's bash completion script installed somewhere, by default it
+# would be the location bash-completion uses.
+#
+# If your script is somewhere else, you can configure it on your ~/.zshrc:
#
# zstyle ':completion:*:*:git:*' script ~/.git-completion.sh
#
-# The recommended way to install this script is to copy to
-# '~/.zsh/completion/_git', and then add the following to your ~/.zshrc file:
+# The recommended way to install this script is to copy to '~/.zsh/_git', and
+# then add the following to your ~/.zshrc file:
#
-# fpath=(~/.zsh/completion $fpath)
+# fpath=(~/.zsh $fpath)
complete ()
{
@@ -21,8 +22,23 @@ complete ()
return 0
}
+zstyle -T ':completion:*:*:git:*' tag-order && \
+ zstyle ':completion:*:*:git:*' tag-order 'common-commands'
+
zstyle -s ":completion:*:*:git:*" script script
-test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
+if [ -z "$script" ]; then
+ local -a locations
+ local e
+ locations=(
+ '/etc/bash_completion.d/git' # fedora, old debian
+ '/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
+ '/usr/share/bash-completion/git' # gentoo
+ $(dirname ${funcsourcetrace[1]%:*})/git-completion.bash
+ )
+ for e in $locations; do
+ test -f $e && script="$e" && break
+ done
+fi
ZSH_VERSION='' . "$script"
__gitcomp ()
@@ -69,18 +85,131 @@ __gitcomp_file ()
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
}
+__git_zsh_bash_func ()
+{
+ emulate -L ksh
+
+ local command=$1
+
+ local completion_func="_git_${command//-/_}"
+ declare -f $completion_func >/dev/null && $completion_func && return
+
+ local expansion=$(__git_aliased_command "$command")
+ if [ -n "$expansion" ]; then
+ completion_func="_git_${expansion//-/_}"
+ declare -f $completion_func >/dev/null && $completion_func
+ fi
+}
+
+__git_zsh_cmd_common ()
+{
+ local -a list
+ list=(
+ add:'add file contents to the index'
+ bisect:'find by binary search the change that introduced a bug'
+ branch:'list, create, or delete branches'
+ checkout:'checkout a branch or paths to the working tree'
+ clone:'clone a repository into a new directory'
+ commit:'record changes to the repository'
+ diff:'show changes between commits, commit and working tree, etc'
+ fetch:'download objects and refs from another repository'
+ grep:'print lines matching a pattern'
+ init:'create an empty Git repository or reinitialize an existing one'
+ log:'show commit logs'
+ merge:'join two or more development histories together'
+ mv:'move or rename a file, a directory, or a symlink'
+ pull:'fetch from and merge with another repository or a local branch'
+ push:'update remote refs along with associated objects'
+ rebase:'forward-port local commits to the updated upstream head'
+ reset:'reset current HEAD to the specified state'
+ rm:'remove files from the working tree and from the index'
+ show:'show various types of objects'
+ status:'show the working tree status'
+ tag:'create, list, delete or verify a tag object signed with GPG')
+ _describe -t common-commands 'common commands' list && _ret=0
+}
+
+__git_zsh_cmd_alias ()
+{
+ local -a list
+ list=(${${${(0)"$(git config -z --get-regexp '^alias\.')"}#alias.}%$'\n'*})
+ _describe -t alias-commands 'aliases' list $* && _ret=0
+}
+
+__git_zsh_cmd_all ()
+{
+ local -a list
+ emulate ksh -c __git_compute_all_commands
+ list=( ${=__git_all_commands} )
+ _describe -t all-commands 'all commands' list && _ret=0
+}
+
+__git_zsh_main ()
+{
+ local curcontext="$curcontext" state state_descr line
+ typeset -A opt_args
+ local -a orig_words
+
+ orig_words=( ${words[@]} )
+
+ _arguments -C \
+ '(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
+ '(-p --paginate)--no-pager[do not pipe git output into a pager]' \
+ '--git-dir=-[set the path to the repository]: :_directories' \
+ '--bare[treat the repository as a bare repository]' \
+ '(- :)--version[prints the git suite version]' \
+ '--exec-path=-[path to where your core git programs are installed]:: :_directories' \
+ '--html-path[print the path where git''s HTML documentation is installed]' \
+ '--info-path[print the path where the Info files are installed]' \
+ '--man-path[print the manpath (see `man(1)`) for the man pages]' \
+ '--work-tree=-[set the path to the working tree]: :_directories' \
+ '--namespace=-[set the git namespace]' \
+ '--no-replace-objects[do not use replacement refs to replace git objects]' \
+ '(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \
+ '(-): :->command' \
+ '(-)*:: :->arg' && return
+
+ case $state in
+ (command)
+ _alternative \
+ 'alias-commands:alias:__git_zsh_cmd_alias' \
+ 'common-commands:common:__git_zsh_cmd_common' \
+ 'all-commands:all:__git_zsh_cmd_all' && _ret=0
+ ;;
+ (arg)
+ local command="${words[1]}" __git_dir
+
+ if (( $+opt_args[--bare] )); then
+ __git_dir='.'
+ else
+ __git_dir=${opt_args[--git-dir]}
+ fi
+
+ (( $+opt_args[--help] )) && command='help'
+
+ words=( ${orig_words[@]} )
+
+ __git_zsh_bash_func $command
+ ;;
+ esac
+}
+
_git ()
{
local _ret=1
- () {
- emulate -L ksh
- local cur cword prev
- cur=${words[CURRENT-1]}
- prev=${words[CURRENT-2]}
- let cword=CURRENT-1
- __${service}_main
- }
- let _ret && _default -S '' && _ret=0
+ local cur cword prev
+
+ cur=${words[CURRENT]}
+ prev=${words[CURRENT-1]}
+ let cword=CURRENT-1
+
+ if (( $+functions[__${service}_zsh_main] )); then
+ __${service}_zsh_main
+ else
+ emulate ksh -c __${service}_main
+ fi
+
+ let _ret && _default && _ret=0
return _ret
}
diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash
index 93eba4675..5da920ecd 100644
--- a/plugins/gitfast/git-completion.bash
+++ b/plugins/gitfast/git-completion.bash
@@ -33,8 +33,6 @@ esac
# returns location of .git repo
__gitdir ()
{
- # Note: this function is duplicated in git-prompt.sh
- # When updating it, make sure you update the other one to match.
if [ -z "${1-}" ]; then
if [ -n "${__git_dir-}" ]; then
echo "$__git_dir"
@@ -53,19 +51,6 @@ __gitdir ()
fi
}
-__gitcomp_1 ()
-{
- local c IFS=$' \t\n'
- for c in $1; do
- c="$c$2"
- case $c in
- --*=*|*.) ;;
- *) c="$c " ;;
- esac
- printf '%s\n' "$c"
- done
-}
-
# The following function is based on code from:
#
# bash_completion - programmable completion functions for bash 3.2+
@@ -195,8 +180,18 @@ _get_comp_words_by_ref ()
}
fi
-# Generates completion reply with compgen, appending a space to possible
-# completion words, if necessary.
+__gitcompadd ()
+{
+ local i=0
+ for x in $1; do
+ if [[ "$x" == "$3"* ]]; then
+ COMPREPLY[i++]="$2$x$4"
+ fi
+ done
+}
+
+# Generates completion reply, appending a space to possible completion words,
+# if necessary.
# It accepts 1 to 4 arguments:
# 1: List of possible completion words.
# 2: A prefix to be added to each possible completion word (optional).
@@ -208,19 +203,25 @@ __gitcomp ()
case "$cur_" in
--*=)
- COMPREPLY=()
;;
*)
- local IFS=$'\n'
- COMPREPLY=($(compgen -P "${2-}" \
- -W "$(__gitcomp_1 "${1-}" "${4-}")" \
- -- "$cur_"))
+ local c i=0 IFS=$' \t\n'
+ for c in $1; do
+ c="$c${4-}"
+ if [[ $c == "$cur_"* ]]; then
+ case $c in
+ --*=*|*.) ;;
+ *) c="$c " ;;
+ esac
+ COMPREPLY[i++]="${2-}$c"
+ fi
+ done
;;
esac
}
-# Generates completion reply with compgen from newline-separated possible
-# completion words by appending a space to all of them.
+# Generates completion reply from newline-separated possible completion words
+# by appending a space to all of them.
# It accepts 1 to 4 arguments:
# 1: List of possible completion words, separated by a single newline.
# 2: A prefix to be added to each possible completion word (optional).
@@ -231,7 +232,7 @@ __gitcomp ()
__gitcomp_nl ()
{
local IFS=$'\n'
- COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}"))
+ __gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }"
}
# Generates completion reply with compgen from newline-separated possible
@@ -249,106 +250,50 @@ __gitcomp_file ()
# since tilde expansion is not applied.
# This means that COMPREPLY will be empty and Bash default
# completion will be used.
- COMPREPLY=($(compgen -P "${2-}" -W "$1" -- "${3-$cur}"))
-
- # Tell Bash that compspec generates filenames.
- compopt -o filenames 2>/dev/null
-}
-
-__git_index_file_list_filter_compat ()
-{
- local path
+ __gitcompadd "$1" "${2-}" "${3-$cur}" ""
- while read -r path; do
- case "$path" in
- ?*/*) echo "${path%%/*}/" ;;
- *) echo "$path" ;;
- esac
- done
+ # use a hack to enable file mode in bash < 4
+ compopt -o filenames +o nospace 2>/dev/null ||
+ compgen -f /non-existing-dir/ > /dev/null
}
-__git_index_file_list_filter_bash ()
-{
- local path
-
- while read -r path; do
- case "$path" in
- ?*/*)
- # XXX if we append a slash to directory names when using
- # `compopt -o filenames`, Bash will append another slash.
- # This is pretty stupid, and this the reason why we have to
- # define a compatible version for this function.
- echo "${path%%/*}" ;;
- *)
- echo "$path" ;;
- esac
- done
-}
-
-# Process path list returned by "ls-files" and "diff-index --name-only"
-# commands, in order to list only file names relative to a specified
-# directory, and append a slash to directory names.
-__git_index_file_list_filter ()
-{
- # Default to Bash >= 4.x
- __git_index_file_list_filter_bash
-}
-
-# Execute git ls-files, returning paths relative to the directory
-# specified in the first argument, and using the options specified in
-# the second argument.
+# Execute 'git ls-files', unless the --committable option is specified, in
+# which case it runs 'git diff-index' to find out the files that can be
+# committed. It return paths relative to the directory specified in the first
+# argument, and using the options specified in the second argument.
__git_ls_files_helper ()
{
(
test -n "${CDPATH+set}" && unset CDPATH
- # NOTE: $2 is not quoted in order to support multiple options
- cd "$1" && git ls-files --exclude-standard $2
+ cd "$1"
+ if [ "$2" == "--committable" ]; then
+ git diff-index --name-only --relative HEAD
+ else
+ # NOTE: $2 is not quoted in order to support multiple options
+ git ls-files --exclude-standard $2
+ fi
) 2>/dev/null
}
-# Execute git diff-index, returning paths relative to the directory
-# specified in the first argument, and using the tree object id
-# specified in the second argument.
-__git_diff_index_helper ()
-{
- (
- test -n "${CDPATH+set}" && unset CDPATH
- cd "$1" && git diff-index --name-only --relative "$2"
- ) 2>/dev/null
-}
-
# __git_index_files accepts 1 or 2 arguments:
# 1: Options to pass to ls-files (required).
-# Supported options are --cached, --modified, --deleted, --others,
-# and --directory.
# 2: A directory path (optional).
# If provided, only files within the specified directory are listed.
# Sub directories are never recursed. Path must have a trailing
# slash.
__git_index_files ()
{
- local dir="$(__gitdir)" root="${2-.}"
+ local dir="$(__gitdir)" root="${2-.}" file
if [ -d "$dir" ]; then
- __git_ls_files_helper "$root" "$1" | __git_index_file_list_filter |
- sort | uniq
- fi
-}
-
-# __git_diff_index_files accepts 1 or 2 arguments:
-# 1) The id of a tree object.
-# 2) A directory path (optional).
-# If provided, only files within the specified directory are listed.
-# Sub directories are never recursed. Path must have a trailing
-# slash.
-__git_diff_index_files ()
-{
- local dir="$(__gitdir)" root="${2-.}"
-
- if [ -d "$dir" ]; then
- __git_diff_index_helper "$root" "$1" | __git_index_file_list_filter |
- sort | uniq
+ __git_ls_files_helper "$root" "$1" |
+ while read -r file; do
+ case "$file" in
+ ?*/*) echo "${file%%/*}" ;;
+ *) echo "$file" ;;
+ esac
+ done | sort | uniq
fi
}
@@ -424,14 +369,8 @@ __git_refs ()
done
;;
*)
- git ls-remote "$dir" HEAD ORIG_HEAD 'refs/tags/*' 'refs/heads/*' 'refs/remotes/*' 2>/dev/null | \
- while read -r hash i; do
- case "$i" in
- *^{}) ;;
- refs/*) echo "${i#refs/*/}" ;;
- *) echo "$i" ;;
- esac
- done
+ echo "HEAD"
+ git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
;;
esac
}
@@ -549,44 +488,23 @@ __git_complete_revlist_file ()
}
-# __git_complete_index_file requires 1 argument: the options to pass to
-# ls-file
+# __git_complete_index_file requires 1 argument:
+# 1: the options to pass to ls-file
+#
+# The exception is --committable, which finds the files appropriate commit.
__git_complete_index_file ()
{
- local pfx cur_="$cur"
+ local pfx="" cur_="$cur"
case "$cur_" in
?*/*)
pfx="${cur_%/*}"
cur_="${cur_##*/}"
pfx="${pfx}/"
-
- __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
- ;;
- *)
- __gitcomp_file "$(__git_index_files "$1")" "" "$cur_"
;;
esac
-}
-
-# __git_complete_diff_index_file requires 1 argument: the id of a tree
-# object
-__git_complete_diff_index_file ()
-{
- local pfx cur_="$cur"
- case "$cur_" in
- ?*/*)
- pfx="${cur_%/*}"
- cur_="${cur_##*/}"
- pfx="${pfx}/"
-
- __gitcomp_file "$(__git_diff_index_files "$1" "$pfx")" "$pfx" "$cur_"
- ;;
- *)
- __gitcomp_file "$(__git_diff_index_files "$1")" "" "$cur_"
- ;;
- esac
+ __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
}
__git_complete_file ()
@@ -614,7 +532,6 @@ __git_complete_remote_or_refspec ()
case "$cmd" in
push) no_complete_refspec=1 ;;
fetch)
- COMPREPLY=()
return
;;
*) ;;
@@ -630,7 +547,6 @@ __git_complete_remote_or_refspec ()
return
fi
if [ $no_complete_refspec = 1 ]; then
- COMPREPLY=()
return
fi
[ "$remote" = "." ] && remote=
@@ -732,6 +648,7 @@ __git_list_porcelain_commands ()
cat-file) : plumbing;;
check-attr) : plumbing;;
check-ignore) : plumbing;;
+ check-mailmap) : plumbing;;
check-ref-format) : plumbing;;
checkout-index) : plumbing;;
commit-tree) : plumbing;;
@@ -951,7 +868,6 @@ _git_am ()
"
return
esac
- COMPREPLY=()
}
_git_apply ()
@@ -971,7 +887,6 @@ _git_apply ()
"
return
esac
- COMPREPLY=()
}
_git_add ()
@@ -1031,7 +946,6 @@ _git_bisect ()
__gitcomp_nl "$(__git_refs)"
;;
*)
- COMPREPLY=()
;;
esac
}
@@ -1124,9 +1038,14 @@ _git_cherry ()
_git_cherry_pick ()
{
+ local dir="$(__gitdir)"
+ if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
+ __gitcomp "--continue --quit --abort"
+ return
+ fi
case "$cur" in
--*)
- __gitcomp "--edit --no-commit"
+ __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
;;
*)
__gitcomp_nl "$(__git_refs)"
@@ -1170,7 +1089,6 @@ _git_clone ()
return
;;
esac
- COMPREPLY=()
}
_git_commit ()
@@ -1182,13 +1100,6 @@ _git_commit ()
;;
esac
- case "$prev" in
- -c|-C)
- __gitcomp_nl "$(__git_refs)" "" "${cur}"
- return
- ;;
- esac
-
case "$cur" in
--cleanup=*)
__gitcomp "default strip verbatim whitespace
@@ -1218,7 +1129,7 @@ _git_commit ()
esac
if git rev-parse --verify --quiet HEAD >/dev/null; then
- __git_complete_diff_index_file "HEAD"
+ __git_complete_index_file "--committable"
else
# This is the first commit
__git_complete_index_file "--cached"
@@ -1251,7 +1162,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
--no-prefix --src-prefix= --dst-prefix=
--inter-hunk-context=
--patience --histogram --minimal
- --raw
+ --raw --word-diff
--dirstat --dirstat= --dirstat-by-file
--dirstat-by-file= --cumulative
--diff-algorithm=
@@ -1299,7 +1210,7 @@ _git_difftool ()
return
;;
esac
- __git_complete_file
+ __git_complete_revlist_file
}
__git_fetch_options="
@@ -1319,11 +1230,12 @@ _git_fetch ()
}
__git_format_patch_options="
- --stdout --attach --no-attach --thread --thread= --output-directory
+ --stdout --attach --no-attach --thread --thread= --no-thread
--numbered --start-number --numbered-files --keep-subject --signoff
--signature --no-signature --in-reply-to= --cc= --full-index --binary
--not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
--inline --suffix= --ignore-if-in-upstream --subject-prefix=
+ --output-directory --reroll-count --to= --quiet --notes
"
_git_format_patch ()
@@ -1354,7 +1266,6 @@ _git_fsck ()
return
;;
esac
- COMPREPLY=()
}
_git_gc ()
@@ -1365,7 +1276,6 @@ _git_gc ()
return
;;
esac
- COMPREPLY=()
}
_git_gitk ()
@@ -1442,7 +1352,6 @@ _git_init ()
return
;;
esac
- COMPREPLY=()
}
_git_ls_files ()
@@ -1578,7 +1487,6 @@ _git_mergetool ()
return
;;
esac
- COMPREPLY=()
}
_git_merge_base ()
@@ -1819,7 +1727,7 @@ __git_config_get_set_variables ()
_git_config ()
{
case "$prev" in
- branch.*.remote)
+ branch.*.remote|branch.*.pushremote)
__gitcomp_nl "$(__git_remotes)"
return
;;
@@ -1827,11 +1735,19 @@ _git_config ()
__gitcomp_nl "$(__git_refs)"
return
;;
+ branch.*.rebase)
+ __gitcomp "false true"
+ return
+ ;;
+ remote.pushdefault)
+ __gitcomp_nl "$(__git_remotes)"
+ return
+ ;;
remote.*.fetch)
local remote="${prev#remote.}"
remote="${remote%.fetch}"
if [ -z "$cur" ]; then
- COMPREPLY=("refs/heads/")
+ __gitcomp_nl "refs/heads/" "" "" ""
return
fi
__gitcomp_nl "$(__git_refs_remotes "$remote")"
@@ -1866,6 +1782,10 @@ _git_config ()
"
return
;;
+ diff.submodule)
+ __gitcomp "log short"
+ return
+ ;;
help.format)
__gitcomp "man info web html"
return
@@ -1891,7 +1811,6 @@ _git_config ()
return
;;
*.*)
- COMPREPLY=()
return
;;
esac
@@ -1908,7 +1827,7 @@ _git_config ()
;;
branch.*.*)
local pfx="${cur%.*}." cur_="${cur##*.}"
- __gitcomp "remote merge mergeoptions rebase" "$pfx" "$cur_"
+ __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
return
;;
branch.*)
@@ -2039,7 +1958,6 @@ _git_config ()
core.fileMode
core.fsyncobjectfiles
core.gitProxy
- core.ignoreCygwinFSTricks
core.ignoreStat
core.ignorecase
core.logAllRefUpdates
@@ -2061,13 +1979,14 @@ _git_config ()
core.whitespace
core.worktree
diff.autorefreshindex
- diff.statGraphWidth
diff.external
diff.ignoreSubmodules
diff.mnemonicprefix
diff.noprefix
diff.renameLimit
diff.renames
+ diff.statGraphWidth
+ diff.submodule
diff.suppressBlankEmpty
diff.tool
diff.wordRegex
@@ -2202,6 +2121,7 @@ _git_config ()
receive.fsckObjects
receive.unpackLimit
receive.updateserverinfo
+ remote.pushdefault
remotes.
repack.usedeltabaseoffset
rerere.autoupdate
@@ -2272,7 +2192,6 @@ _git_remote ()
__gitcomp "$c"
;;
*)
- COMPREPLY=()
;;
esac
}
@@ -2356,7 +2275,7 @@ _git_show ()
return
;;
esac
- __git_complete_file
+ __git_complete_revlist_file
}
_git_show_branch ()
@@ -2388,8 +2307,6 @@ _git_stash ()
*)
if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
__gitcomp "$subcommands"
- else
- COMPREPLY=()
fi
;;
esac
@@ -2402,14 +2319,12 @@ _git_stash ()
__gitcomp "--index --quiet"
;;
show,--*|drop,--*|branch,--*)
- COMPREPLY=()
;;
show,*|apply,*|drop,*|pop,*|branch,*)
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
| sed -n -e 's/:.*//p')"
;;
*)
- COMPREPLY=()
;;
esac
fi
@@ -2419,7 +2334,7 @@ _git_submodule ()
{
__git_has_doubledash && return
- local subcommands="add status init update summary foreach sync"
+ local subcommands="add status init deinit update summary foreach sync"
if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
case "$cur" in
--*)
@@ -2451,7 +2366,7 @@ _git_svn ()
--no-metadata --use-svm-props --use-svnsync-props
--log-window-size= --no-checkout --quiet
--repack-flags --use-log-author --localtime
- --ignore-paths= $remote_opts
+ --ignore-paths= --include-paths= $remote_opts
"
local init_opts="
--template= --shared= --trunk= --tags=
@@ -2526,7 +2441,6 @@ _git_svn ()
__gitcomp "--revision= --parent"
;;
*)
- COMPREPLY=()
;;
esac
fi
@@ -2551,13 +2465,10 @@ _git_tag ()
case "$prev" in
-m|-F)
- COMPREPLY=()
;;
-*|tag)
if [ $f = 1 ]; then
__gitcomp_nl "$(__git_tags)"
- else
- COMPREPLY=()
fi
;;
*)
@@ -2579,9 +2490,10 @@ __git_main ()
i="${words[c]}"
case "$i" in
--git-dir=*) __git_dir="${i#--git-dir=}" ;;
+ --git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
--bare) __git_dir="." ;;
--help) command="help"; break ;;
- -c) c=$((++c)) ;;
+ -c|--work-tree|--namespace) ((c++)) ;;
-*) ;;
*) command="$i"; break ;;
esac
@@ -2599,6 +2511,7 @@ __git_main ()
--exec-path
--exec-path=
--html-path
+ --man-path
--info-path
--work-tree=
--namespace=
@@ -2693,35 +2606,19 @@ if [[ -n ${ZSH_VERSION-} ]]; then
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
}
- __git_zsh_helper ()
- {
- emulate -L ksh
- local cur cword prev
- cur=${words[CURRENT-1]}
- prev=${words[CURRENT-2]}
- let cword=CURRENT-1
- __${service}_main
- }
-
_git ()
{
- emulate -L zsh
- local _ret=1
- __git_zsh_helper
- let _ret && _default -S '' && _ret=0
+ local _ret=1 cur cword prev
+ cur=${words[CURRENT]}
+ prev=${words[CURRENT-1]}
+ let cword=CURRENT-1
+ emulate ksh -c __${service}_main
+ let _ret && _default && _ret=0
return _ret
}
compdef _git git gitk
return
-elif [[ -n ${BASH_VERSION-} ]]; then
- if ((${BASH_VERSINFO[0]} < 4)); then
- # compopt is not supported
- __git_index_file_list_filter ()
- {
- __git_index_file_list_filter_compat
- }
- fi
fi
__git_func_wrap ()
diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh
index 65f8368f1..a81ef5a48 100644
--- a/plugins/gitfast/git-prompt.sh
+++ b/plugins/gitfast/git-prompt.sh
@@ -3,7 +3,7 @@
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Distributed under the GNU General Public License, version 2.0.
#
-# This script allows you to see the current branch in your prompt.
+# This script allows you to see repository status in your prompt.
#
# To enable:
#
@@ -13,23 +13,27 @@
# 3a) Change your PS1 to call __git_ps1 as
# command-substitution:
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
-# ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
+# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
# the optional argument will be used as format string.
-# 3b) Alternatively, if you are using bash, __git_ps1 can be
-# used for PROMPT_COMMAND with two parameters, <pre> and
-# <post>, which are strings you would put in $PS1 before
-# and after the status string generated by the git-prompt
-# machinery. e.g.
-# PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
-# will show username, at-sign, host, colon, cwd, then
-# various status string, followed by dollar and SP, as
-# your prompt.
+# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
+# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
+# with two parameters, <pre> and <post>, which are strings
+# you would put in $PS1 before and after the status string
+# generated by the git-prompt machinery. e.g.
+# Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
+# will show username, at-sign, host, colon, cwd, then
+# various status string, followed by dollar and SP, as
+# your prompt.
+# ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
+# will show username, pipe, then various status string,
+# followed by colon, cwd, dollar and SP, as your prompt.
# Optionally, you can supply a third argument with a printf
# format string to finetune the output of the branch status
#
-# The argument to __git_ps1 will be displayed only if you are currently
-# in a git repository. The %s token will be the name of the current
-# branch.
+# The repository status will be displayed only if you are currently in a
+# git repository. The %s token is the placeholder for the shown status.
+#
+# The prompt status always includes the current branch name.
#
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
# unstaged (*) and staged (+) changes will be shown next to the branch
@@ -77,31 +81,8 @@
#
# If you would like a colored hint about the current dirty state, set
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
-# the colored output of "git status -sb".
-
-# __gitdir accepts 0 or 1 arguments (i.e., location)
-# returns location of .git repo
-__gitdir ()
-{
- # Note: this function is duplicated in git-completion.bash
- # When updating it, make sure you update the other one to match.
- if [ -z "${1-}" ]; then
- if [ -n "${__git_dir-}" ]; then
- echo "$__git_dir"
- elif [ -n "${GIT_DIR-}" ]; then
- test -d "${GIT_DIR-}" || return 1
- echo "$GIT_DIR"
- elif [ -d .git ]; then
- echo .git
- else
- git rev-parse --git-dir 2>/dev/null
- fi
- elif [ -d "$1/.git" ]; then
- echo "$1/.git"
- else
- echo "$1"
- fi
-}
+# the colored output of "git status -sb" and are available only when
+# using __git_ps1 for PROMPT_COMMAND or precmd.
# stores the divergence from upstream in $p
# used by GIT_PS1_SHOWUPSTREAM
@@ -124,7 +105,7 @@ __git_ps1_show_upstream ()
fi
;;
svn-remote.*.url)
- svn_remote[ $((${#svn_remote[@]} + 1)) ]="$value"
+ svn_remote[$((${#svn_remote[@]} + 1))]="$value"
svn_url_pattern+="\\|$value"
upstream=svn+git # default upstream is SVN if available, else git
;;
@@ -146,10 +127,11 @@ __git_ps1_show_upstream ()
svn*)
# get the upstream from the "git-svn-id: ..." in a commit message
# (git-svn uses essentially the same procedure internally)
- local svn_upstream=($(git log --first-parent -1 \
+ local -a svn_upstream
+ svn_upstream=($(git log --first-parent -1 \
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
if [[ 0 -ne ${#svn_upstream[@]} ]]; then
- svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]}
+ svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
svn_upstream=${svn_upstream%@*}
local n_stop="${#svn_remote[@]}"
for ((n=1; n <= n_stop; n++)); do
@@ -222,6 +204,51 @@ __git_ps1_show_upstream ()
}
+# Helper function that is meant to be called from __git_ps1. It
+# injects color codes into the appropriate gitstring variables used
+# to build a gitstring.
+__git_ps1_colorize_gitstring ()
+{
+ if [[ -n ${ZSH_VERSION-} ]]; then
+ local c_red='%F{red}'
+ local c_green='%F{green}'
+ local c_lblue='%F{blue}'
+ local c_clear='%f'
+ else
+ # Using \[ and \] around colors is necessary to prevent
+ # issues with command line editing/browsing/completion!
+ local c_red='\[\e[31m\]'
+ local c_green='\[\e[32m\]'
+ local c_lblue='\[\e[1;34m\]'
+ local c_clear='\[\e[0m\]'
+ fi
+ local bad_color=$c_red
+ local ok_color=$c_green
+ local flags_color="$c_lblue"
+
+ local branch_color=""
+ if [ $detached = no ]; then
+ branch_color="$ok_color"
+ else
+ branch_color="$bad_color"
+ fi
+ c="$branch_color$c"
+
+ z="$c_clear$z"
+ if [ "$w" = "*" ]; then
+ w="$bad_color$w"
+ fi
+ if [ -n "$i" ]; then
+ i="$ok_color$i"
+ fi
+ if [ -n "$s" ]; then
+ s="$flags_color$s"
+ fi
+ if [ -n "$u" ]; then
+ u="$bad_color$u"
+ fi
+ r="$c_clear$r"
+}
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
# when called from PS1 using command substitution
@@ -254,39 +281,83 @@ __git_ps1 ()
;;
esac
- local g="$(__gitdir)"
- if [ -z "$g" ]; then
+ local repo_info rev_parse_exit_code
+ repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
+ --is-bare-repository --is-inside-work-tree \
+ --short HEAD 2>/dev/null)"
+ rev_parse_exit_code="$?"
+
+ if [ -z "$repo_info" ]; then
if [ $pcmode = yes ]; then
#In PC mode PS1 always needs to be set
PS1="$ps1pc_start$ps1pc_end"
fi
- else
- local r=""
- local b=""
+ return
+ fi
+
+ local short_sha
+ if [ "$rev_parse_exit_code" = "0" ]; then
+ short_sha="${repo_info##*$'\n'}"
+ repo_info="${repo_info%$'\n'*}"
+ fi
+ local inside_worktree="${repo_info##*$'\n'}"
+ repo_info="${repo_info%$'\n'*}"
+ local bare_repo="${repo_info##*$'\n'}"
+ repo_info="${repo_info%$'\n'*}"
+ local inside_gitdir="${repo_info##*$'\n'}"
+ local g="${repo_info%$'\n'*}"
+
+ local r=""
+ local b=""
+ local step=""
+ local total=""
+ if [ -d "$g/rebase-merge" ]; then
+ read b 2>/dev/null <"$g/rebase-merge/head-name"
+ read step 2>/dev/null <"$g/rebase-merge/msgnum"
+ read total 2>/dev/null <"$g/rebase-merge/end"
if [ -f "$g/rebase-merge/interactive" ]; then
r="|REBASE-i"
- b="$(cat "$g/rebase-merge/head-name")"
- elif [ -d "$g/rebase-merge" ]; then
+ else
r="|REBASE-m"
- b="$(cat "$g/rebase-merge/head-name")"
+ fi
+ else
+ if [ -d "$g/rebase-apply" ]; then
+ read step 2>/dev/null <"$g/rebase-apply/next"
+ read total 2>/dev/null <"$g/rebase-apply/last"
+ if [ -f "$g/rebase-apply/rebasing" ]; then
+ read b 2>/dev/null <"$g/rebase-apply/head-name"
+ r="|REBASE"
+ elif [ -f "$g/rebase-apply/applying" ]; then
+ r="|AM"
+ else
+ r="|AM/REBASE"
+ fi
+ elif [ -f "$g/MERGE_HEAD" ]; then
+ r="|MERGING"
+ elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
+ r="|CHERRY-PICKING"
+ elif [ -f "$g/REVERT_HEAD" ]; then
+ r="|REVERTING"
+ elif [ -f "$g/BISECT_LOG" ]; then
+ r="|BISECTING"
+ fi
+
+ if [ -n "$b" ]; then
+ :
+ elif [ -h "$g/HEAD" ]; then
+ # symlink symbolic ref
+ b="$(git symbolic-ref HEAD 2>/dev/null)"
else
- if [ -d "$g/rebase-apply" ]; then
- if [ -f "$g/rebase-apply/rebasing" ]; then
- r="|REBASE"
- elif [ -f "$g/rebase-apply/applying" ]; then
- r="|AM"
- else
- r="|AM/REBASE"
+ local head=""
+ if ! read head 2>/dev/null <"$g/HEAD"; then
+ if [ $pcmode = yes ]; then
+ PS1="$ps1pc_start$ps1pc_end"
fi
- elif [ -f "$g/MERGE_HEAD" ]; then
- r="|MERGING"
- elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
- r="|CHERRY-PICKING"
- elif [ -f "$g/BISECT_LOG" ]; then
- r="|BISECTING"
+ return
fi
-
- b="$(git symbolic-ref HEAD 2>/dev/null)" || {
+ # is it a symbolic ref?
+ b="${head#ref: }"
+ if [ "$head" = "$b" ]; then
detached=yes
b="$(
case "${GIT_PS1_DESCRIBE_STYLE-}" in
@@ -300,100 +371,75 @@ __git_ps1 ()
git describe --tags --exact-match HEAD ;;
esac 2>/dev/null)" ||
- b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." ||
- b="unknown"
+ b="$short_sha..."
b="($b)"
- }
+ fi
fi
+ fi
+
+ if [ -n "$step" ] && [ -n "$total" ]; then
+ r="$r $step/$total"
+ fi
- local w=""
- local i=""
- local s=""
- local u=""
- local c=""
- local p=""
+ local w=""
+ local i=""
+ local s=""
+ local u=""
+ local c=""
+ local p=""
- if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
- if [ "true" = "$(git rev-parse --is-bare-repository 2>/dev/null)" ]; then
- c="BARE:"
+ if [ "true" = "$inside_gitdir" ]; then
+ if [ "true" = "$bare_repo" ]; then
+ c="BARE:"
+ else
+ b="GIT_DIR!"
+ fi
+ elif [ "true" = "$inside_worktree" ]; then
+ if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
+ [ "$(git config --bool bash.showDirtyState)" != "false" ]
+ then
+ git diff --no-ext-diff --quiet --exit-code || w="*"
+ if [ -n "$short_sha" ]; then
+ git diff-index --cached --quiet HEAD -- || i="+"
else
- b="GIT_DIR!"
- fi
- elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
- if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
- [ "$(git config --bool bash.showDirtyState)" != "false" ]
- then
- git diff --no-ext-diff --quiet --exit-code || w="*"
- if git rev-parse --quiet --verify HEAD >/dev/null; then
- git diff-index --cached --quiet HEAD -- || i="+"
- else
- i="#"
- fi
- fi
- if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then
- git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
+ i="#"
fi
+ fi
+ if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
+ [ -r "$g/refs/stash" ]; then
+ s="$"
+ fi
- if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
- [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
- [ -n "$(git ls-files --others --exclude-standard)" ]
- then
- u="%%"
- fi
+ if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
+ [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
+ git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
+ then
+ u="%${ZSH_VERSION+%}"
+ fi
- if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
- __git_ps1_show_upstream
- fi
+ if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
+ __git_ps1_show_upstream
fi
+ fi
- local f="$w$i$s$u"
- if [ $pcmode = yes ]; then
- local gitstring=
- if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
- local c_red='\e[31m'
- local c_green='\e[32m'
- local c_lblue='\e[1;34m'
- local c_clear='\e[0m'
- local bad_color=$c_red
- local ok_color=$c_green
- local branch_color="$c_clear"
- local flags_color="$c_lblue"
- local branchstring="$c${b##refs/heads/}"
+ local z="${GIT_PS1_STATESEPARATOR-" "}"
- if [ $detached = no ]; then
- branch_color="$ok_color"
- else
- branch_color="$bad_color"
- fi
+ # NO color option unless in PROMPT_COMMAND mode
+ if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
+ __git_ps1_colorize_gitstring
+ fi
- # Setting gitstring directly with \[ and \] around colors
- # is necessary to prevent wrapping issues!
- gitstring="\[$branch_color\]$branchstring\[$c_clear\]"
+ local f="$w$i$s$u"
+ local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
- if [ -n "$w$i$s$u$r$p" ]; then
- gitstring="$gitstring "
- fi
- if [ "$w" = "*" ]; then
- gitstring="$gitstring\[$bad_color\]$w"
- fi
- if [ -n "$i" ]; then
- gitstring="$gitstring\[$ok_color\]$i"
- fi
- if [ -n "$s" ]; then
- gitstring="$gitstring\[$flags_color\]$s"
- fi
- if [ -n "$u" ]; then
- gitstring="$gitstring\[$bad_color\]$u"
- fi
- gitstring="$gitstring\[$c_clear\]$r$p"
- else
- gitstring="$c${b##refs/heads/}${f:+ $f}$r$p"
- fi
+ if [ $pcmode = yes ]; then
+ if [[ -n ${ZSH_VERSION-} ]]; then
gitstring=$(printf -- "$printf_format" "$gitstring")
- PS1="$ps1pc_start$gitstring$ps1pc_end"
else
- # NO color option unless in PROMPT_COMMAND mode
- printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
+ printf -v gitstring -- "$printf_format" "$gitstring"
fi
+ PS1="$ps1pc_start$gitstring$ps1pc_end"
+ else
+ printf -- "$printf_format" "$gitstring"
fi
}
diff --git a/plugins/gitignore/gitignore.plugin.zsh b/plugins/gitignore/gitignore.plugin.zsh
index 332497cec..be037d87a 100644
--- a/plugins/gitignore/gitignore.plugin.zsh
+++ b/plugins/gitignore/gitignore.plugin.zsh
@@ -1,7 +1,7 @@
-function gi() { curl http://gitignore.io/api/$@ ;}
+function gi() { curl http://www.gitignore.io/api/$@ ;}
_gitignireio_get_command_list() {
- curl -s http://gitignore.io/api/list | tr "," "\n"
+ curl -s http://www.gitignore.io/api/list | tr "," "\n"
}
_gitignireio () {
@@ -9,4 +9,4 @@ _gitignireio () {
compadd -S '' `_gitignireio_get_command_list`
}
-compdef _gitignireio gi \ No newline at end of file
+compdef _gitignireio gi
diff --git a/plugins/go/go.plugin.zsh b/plugins/go/go.plugin.zsh
index 23afa9656..cf943e2e1 100644..120000
--- a/plugins/go/go.plugin.zsh
+++ b/plugins/go/go.plugin.zsh
@@ -1,151 +1 @@
-# install in /etc/zsh/zshrc or your personal .zshrc
-
-# gc
-prefixes=(5 6 8)
-for p in $prefixes; do
- compctl -g "*.${p}" ${p}l
- compctl -g "*.go" ${p}g
-done
-
-# standard go tools
-compctl -g "*.go" gofmt
-
-# gccgo
-compctl -g "*.go" gccgo
-
-# go tool
-__go_tool_complete() {
- typeset -a commands build_flags
- commands+=(
- 'build[compile packages and dependencies]'
- 'clean[remove object files]'
- 'doc[run godoc on package sources]'
- 'fix[run go tool fix on packages]'
- 'fmt[run gofmt on package sources]'
- 'get[download and install packages and dependencies]'
- 'help[display help]'
- 'install[compile and install packages and dependencies]'
- 'list[list packages]'
- 'run[compile and run Go program]'
- 'test[test packages]'
- 'tool[run specified go tool]'
- 'version[print Go version]'
- 'vet[run go tool vet on packages]'
- )
- if (( CURRENT == 2 )); then
- # explain go commands
- _values 'go tool commands' ${commands[@]}
- return
- fi
- build_flags=(
- '-a[force reinstallation of packages that are already up-to-date]'
- '-n[print the commands but do not run them]'
- "-p[number of parallel builds]:number"
- '-x[print the commands]'
- "-work[print temporary directory name and keep it]"
- "-gcflags[flags for 5g/6g/8g]:flags"
- "-ldflags[flags for 5l/6l/8l]:flags"
- "-gccgoflags[flags for gccgo]:flags"
- )
- __go_list() {
- local expl importpaths
- declare -a importpaths
- importpaths=($(go list ${words[$CURRENT]}... 2>/dev/null))
- _wanted importpaths expl 'import paths' compadd "$@" - "${importpaths[@]}"
- }
- case ${words[2]} in
- clean|doc)
- _arguments -s -w : '*:importpaths:__go_list'
- ;;
- fix|fmt|list|vet)
- _alternative ':importpaths:__go_list' ':files:_path_files -g "*.go"'
- ;;
- install)
- _arguments -s -w : ${build_flags[@]} \
- "-v[show package names]" \
- '*:importpaths:__go_list'
- ;;
- get)
- _arguments -s -w : \
- ${build_flags[@]}
- ;;
- build)
- _arguments -s -w : \
- ${build_flags[@]} \
- "-v[show package names]" \
- "-o[output file]:file:_files" \
- "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }"
- ;;
- test)
- _arguments -s -w : \
- ${build_flags[@]} \
- "-c[do not run, compile the test binary]" \
- "-i[do not run, install dependencies]" \
- "-v[print test output]" \
- "-x[print the commands]" \
- "-short[use short mode]" \
- "-parallel[number of parallel tests]:number" \
- "-cpu[values of GOMAXPROCS to use]:number list" \
- "-run[run tests and examples matching regexp]:regexp" \
- "-bench[run benchmarks matching regexp]:regexp" \
- "-benchtime[run each benchmark during n seconds]:duration" \
- "-timeout[kill test after that duration]:duration" \
- "-cpuprofile[write CPU profile to file]:file:_files" \
- "-memprofile[write heap profile to file]:file:_files" \
- "-memprofilerate[set heap profiling rate]:number" \
- "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }"
- ;;
- help)
- _values "${commands[@]}" \
- 'gopath[GOPATH environment variable]' \
- 'importpath[description of import paths]' \
- 'remote[remote import path syntax]' \
- 'testflag[description of testing flags]' \
- 'testfunc[description of testing functions]'
- ;;
- run)
- _arguments -s -w : \
- ${build_flags[@]} \
- '*:file:_path_files -g "*.go"'
- ;;
- tool)
- if (( CURRENT == 3 )); then
- _values "go tool" $(go tool)
- return
- fi
- case ${words[3]} in
- [568]g)
- _arguments -s -w : \
- '-I[search for packages in DIR]:includes:_path_files -/' \
- '-L[show full path in file:line prints]' \
- '-S[print the assembly language]' \
- '-V[print the compiler version]' \
- '-e[no limit on number of errors printed]' \
- '-h[panic on an error]' \
- '-l[disable inlining]' \
- '-m[print optimization decisions]' \
- '-o[file specify output file]:file' \
- '-p[assumed import path for this code]:importpath' \
- '-u[disable package unsafe]' \
- "*:file:_files -g '*.go'"
- ;;
- [568]l)
- local O=${words[3]%l}
- _arguments -s -w : \
- '-o[file specify output file]:file' \
- '-L[search for packages in DIR]:includes:_path_files -/' \
- "*:file:_files -g '*.[ao$O]'"
- ;;
- dist)
- _values "dist tool" banner bootstrap clean env install version
- ;;
- *)
- # use files by default
- _files
- ;;
- esac
- ;;
- esac
-}
-
-compdef __go_tool_complete go
+../golang/golang.plugin.zsh \ No newline at end of file
diff --git a/plugins/golang/golang.plugin.zsh b/plugins/golang/golang.plugin.zsh
index e60c4afe4..18bcaaff2 100644
--- a/plugins/golang/golang.plugin.zsh
+++ b/plugins/golang/golang.plugin.zsh
@@ -1,9 +1,10 @@
-# From : http://golang.org/misc/zsh/go?m=text
+# install in /etc/zsh/zshrc or your personal .zshrc
+
# gc
prefixes=(5 6 8)
for p in $prefixes; do
- compctl -g "*.${p}" ${p}l
- compctl -g "*.go" ${p}g
+ compctl -g "*.${p}" ${p}l
+ compctl -g "*.go" ${p}g
done
# standard go tools
@@ -19,6 +20,7 @@ __go_tool_complete() {
'build[compile packages and dependencies]'
'clean[remove object files]'
'doc[run godoc on package sources]'
+ 'env[print Go environment information]'
'fix[run go tool fix on packages]'
'fmt[run gofmt on package sources]'
'get[download and install packages and dependencies]'
@@ -39,12 +41,17 @@ __go_tool_complete() {
build_flags=(
'-a[force reinstallation of packages that are already up-to-date]'
'-n[print the commands but do not run them]'
- "-p[number of parallel builds]:number"
+ '-p[number of parallel builds]:number'
+ '-race[enable data race detection]'
'-x[print the commands]'
- "-work[print temporary directory name and keep it]"
- "-gcflags[flags for 5g/6g/8g]:flags"
- "-ldflags[flags for 5l/6l/8l]:flags"
- "-gccgoflags[flags for gccgo]:flags"
+ '-work[print temporary directory name and keep it]'
+ '-ccflags[flags for 5c/6c/8c]:flags'
+ '-gcflags[flags for 5g/6g/8g]:flags'
+ '-ldflags[flags for 5l/6l/8l]:flags'
+ '-gccgoflags[flags for gccgo]:flags'
+ '-compiler[name of compiler to use]:name'
+ '-installsuffix[suffix to add to package directory]:suffix'
+ '-tags[list of build tags to consider satisfied]:tags'
)
__go_list() {
local expl importpaths
@@ -62,7 +69,7 @@ __go_tool_complete() {
install)
_arguments -s -w : ${build_flags[@]} \
"-v[show package names]" \
- '*:importpaths:__go_list'
+ '*:importpaths:__go_list'
;;
get)
_arguments -s -w : \
@@ -87,7 +94,10 @@ __go_tool_complete() {
"-cpu[values of GOMAXPROCS to use]:number list" \
"-run[run tests and examples matching regexp]:regexp" \
"-bench[run benchmarks matching regexp]:regexp" \
- "-benchtime[run each benchmark during n seconds]:duration" \
+ "-benchmem[print memory allocation stats]" \
+ "-benchtime[run each benchmark until taking this long]:duration" \
+ "-blockprofile[write goroutine blocking profile to file]:file" \
+ "-blockprofilerate[set sampling rate of goroutine blocking profile]:number" \
"-timeout[kill test after that duration]:duration" \
"-cpuprofile[write CPU profile to file]:file:_files" \
"-memprofile[write heap profile to file]:file:_files" \
@@ -97,7 +107,7 @@ __go_tool_complete() {
help)
_values "${commands[@]}" \
'gopath[GOPATH environment variable]' \
- 'importpath[description of import paths]' \
+ 'packages[description of package lists]' \
'remote[remote import path syntax]' \
'testflag[description of testing flags]' \
'testfunc[description of testing functions]'
@@ -147,4 +157,4 @@ __go_tool_complete() {
esac
}
-compdef __go_tool_complete go \ No newline at end of file
+compdef __go_tool_complete go
diff --git a/plugins/iwhois/iwhois.plugin.zsh b/plugins/iwhois/iwhois.plugin.zsh
new file mode 100644
index 000000000..38790bf28
--- /dev/null
+++ b/plugins/iwhois/iwhois.plugin.zsh
@@ -0,0 +1,8 @@
+# provide a whois command with a more accurate and up to date list of whois
+# servers using CNAMES via whois.geek.nz
+
+function iwhois() {
+ resolver="whois.geek.nz"
+ tld=`echo ${@: -1} | awk -F "." '{print $NF}'`
+ whois -h ${tld}.${resolver} "$@" ;
+}
diff --git a/plugins/lol/lol.plugin.zsh b/plugins/lol/lol.plugin.zsh
index ae065c12f..1b32ec2e4 100644
--- a/plugins/lol/lol.plugin.zsh
+++ b/plugins/lol/lol.plugin.zsh
@@ -36,3 +36,15 @@ alias nomnom='killall'
alias byes='exit'
alias cya='reboot'
alias kthxbai='halt'
+
+alias pwned='ssh'
+
+alias hackzor='git init'
+alias rulz='git push'
+alias bringz='git pull'
+alias chicken='git add'
+alias oanward='git commit -m'
+alias ooanward='git commit -am'
+alias letcat='git checkout'
+alias violenz='git rebase'
+
diff --git a/plugins/nyan/nyan.plugin.zsh b/plugins/nyan/nyan.plugin.zsh
index 6321e5f5a..ac9d0017e 100644
--- a/plugins/nyan/nyan.plugin.zsh
+++ b/plugins/nyan/nyan.plugin.zsh
@@ -1,5 +1,5 @@
if [[ -x `which nc` ]]; then
- alias nyan='nc -v miku.acm.uiuc.edu 23' # nyan cat
+ alias nyan='nc -v nyancat.dakko.us 23' # nyan cat
fi
diff --git a/plugins/pip/_pip b/plugins/pip/_pip
index 967da48ca..7c1238db7 100644
--- a/plugins/pip/_pip
+++ b/plugins/pip/_pip
@@ -20,6 +20,7 @@ _1st_arguments=(
'bundle:create pybundles (archives containing multiple packages)'
'freeze:output all currently installed packages (exact versions) to stdout'
'help:show available commands'
+ 'show:show information about installed packages'
'install:install packages'
'search:search PyPI'
'uninstall:uninstall packages'
@@ -76,4 +77,7 @@ case "$words[1]" in
uninstall)
_pip_installed
_wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
+ show)
+ _pip_installed
+ _wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
esac
diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index 210fdfcf7..fb46cdcf0 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -51,6 +51,7 @@ alias rds='rake db:seed'
alias rdd='rake db:drop'
alias rdtc='rake db:test:clone'
alias rdtp='rake db:test:prepare'
+alias rdmtc='rake db:migrate db:test:clone'
alias rlc='rake log:clear'
alias rn='rake notes'
diff --git a/plugins/rake/rake.plugin.zsh b/plugins/rake/rake.plugin.zsh
index 16b933c14..121150017 100644
--- a/plugins/rake/rake.plugin.zsh
+++ b/plugins/rake/rake.plugin.zsh
@@ -1,3 +1,7 @@
+# Thank you Jim for everything you contributed to the Ruby and open source community
+# over the years. We will miss you dearly.
+alias jimweirich="rake"
+
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
diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh
index 78f76c3a3..57ae2ca1f 100644
--- a/plugins/rbenv/rbenv.plugin.zsh
+++ b/plugins/rbenv/rbenv.plugin.zsh
@@ -10,12 +10,18 @@ FOUND_RBENV=0
rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv")
if _homebrew-installed && _rbenv-from-homebrew-installed ; then
rbenvdirs=($(brew --prefix rbenv) "${rbenvdirs[@]}")
+ if [[ $RBENV_ROOT = '' ]]; then
+ RBENV_ROOT="$HOME/.rbenv"
+ fi
fi
for rbenvdir in "${rbenvdirs[@]}" ; do
if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then
FOUND_RBENV=1
- export RBENV_ROOT=$rbenvdir
+ if [[ $RBENV_ROOT = '' ]]; then
+ RBENV_ROOT=$rbenvdir
+ fi
+ export RBENV_ROOT
export PATH=${rbenvdir}/bin:$PATH
eval "$(rbenv init --no-rehash - zsh)"
diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
index 566279183..a2042343a 100755
--- a/plugins/sublime/sublime.plugin.zsh
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -1,25 +1,32 @@
# Sublime Text 2 Aliases
-local _sublime_darwin_paths > /dev/null 2>&1
-_sublime_darwin_paths=(
- "/usr/local/bin/subl"
- "$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
- "$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
- "$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
- "/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
- "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
- "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
-)
-
if [[ $('uname') == 'Linux' ]]; then
- if [ -f '/usr/bin/sublime_text' ]; then
- st_run() { nohup /usr/bin/sublime_text $@ > /dev/null & }
- else
- st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & }
- fi
- alias st=st_run
+ local _sublime_linux_paths > /dev/null 2>&1
+ _sublime_linux_paths=(
+ "$HOME/bin/sublime_text"
+ "/opt/sublime_text/sublime_text"
+ "/usr/bin/sublime_text"
+ "/usr/local/bin/sublime_text"
+ )
+ for _sublime_path in $_sublime_linux_paths; do
+ if [[ -a $_sublime_path ]]; then
+ st_run() { $_sublime_path $@ >/dev/null 2>&1 &| }
+ alias st=st_run
+ break
+ fi
+ done
elif [[ $('uname') == 'Darwin' ]]; then
+ local _sublime_darwin_paths > /dev/null 2>&1
+ _sublime_darwin_paths=(
+ "/usr/local/bin/subl"
+ "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
+ "/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
+ "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
+ "$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
+ "$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
+ "$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
+ )
for _sublime_path in $_sublime_darwin_paths; do
if [[ -a $_sublime_path ]]; then
diff --git a/plugins/sudo/sudo.zsh b/plugins/sudo/sudo.plugin.zsh
index d12e06853..d12e06853 100644
--- a/plugins/sudo/sudo.zsh
+++ b/plugins/sudo/sudo.plugin.zsh
diff --git a/plugins/svn-fast-info/svn-fast-info.plugin.zsh b/plugins/svn-fast-info/svn-fast-info.plugin.zsh
new file mode 100644
index 000000000..ea19bcea0
--- /dev/null
+++ b/plugins/svn-fast-info/svn-fast-info.plugin.zsh
@@ -0,0 +1,73 @@
+# vim:ft=zsh ts=2 sw=2 sts=2 et
+#
+# Faster alternative to the current SVN plugin implementation.
+#
+# Works with svn 1.6, 1.7, 1.8.
+# Use `svn_prompt_info` method to enquire the svn data.
+# It's faster because his efficient use of svn (single svn call) which saves a lot on a huge codebase
+# It displays the current status of the local files (added, deleted, modified, replaced, or else...)
+#
+# Use as a drop-in replacement of the svn plugin not as complementary plugin
+
+function svn_prompt_info() {
+ local info
+ info=$(svn info 2>&1) || return 1; # capture stdout and stderr
+ local repo_need_upgrade=$(svn_repo_need_upgrade $info)
+
+ if [[ -n $repo_need_upgrade ]]; then
+ printf '%s%s%s%s%s%s%s\n' \
+ $ZSH_PROMPT_BASE_COLOR \
+ $ZSH_THEME_SVN_PROMPT_PREFIX \
+ $ZSH_PROMPT_BASE_COLOR \
+ $repo_need_upgrade \
+ $ZSH_PROMPT_BASE_COLOR \
+ $ZSH_THEME_SVN_PROMPT_SUFFIX \
+ $ZSH_PROMPT_BASE_COLOR
+ else
+ printf '%s%s%s %s%s:%s%s%s%s%s' \
+ $ZSH_PROMPT_BASE_COLOR \
+ $ZSH_THEME_SVN_PROMPT_PREFIX \
+ \
+ "$(svn_status_info $info)" \
+ $ZSH_PROMPT_BASE_COLOR \
+ \
+ $ZSH_THEME_BRANCH_NAME_COLOR \
+ $(svn_current_branch_name $info) \
+ $ZSH_PROMPT_BASE_COLOR \
+ \
+ $(svn_current_revision $info) \
+ $ZSH_PROMPT_BASE_COLOR \
+ \
+ $ZSH_THEME_SVN_PROMPT_SUFFIX \
+ $ZSH_PROMPT_BASE_COLOR
+ fi
+}
+
+function svn_repo_need_upgrade() {
+ grep -q "E155036" <<< ${1:-$(svn info 2> /dev/null)} && \
+ echo "E155036: upgrade repo with svn upgrade"
+}
+
+function svn_current_branch_name() {
+ grep '^URL:' <<< "${1:-$(svn info 2> /dev/null)}" | egrep -o '(tags|branches)/[^/]+|trunk'
+}
+
+function svn_repo_root_name() {
+ grep '^Repository\ Root:' <<< "${1:-$(svn info 2> /dev/null)}" | sed 's#.*/##'
+}
+
+function svn_current_revision() {
+ echo "${1:-$(svn info 2> /dev/null)}" | sed -n 's/Revision: //p'
+}
+
+function svn_status_info() {
+ local svn_status_string="$ZSH_THEME_SVN_PROMPT_CLEAN"
+ local svn_status="$(svn status 2> /dev/null)";
+ if grep -E '^\s*A' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_ADDITIONS:-+}"; fi
+ if grep -E '^\s*D' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_DELETIONS:-✖}"; fi
+ if grep -E '^\s*M' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_MODIFICATIONS:-✎}"; fi
+ if grep -E '^\s*[R~]' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_REPLACEMENTS:-∿}"; fi
+ if grep -E '^\s*\?' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_UNTRACKED:-?}"; fi
+ if grep -E '^\s*[CI!L]' &> /dev/null <<< $svn_status; then svn_status_string="$svn_status_string ${ZSH_THEME_SVN_PROMPT_DIRTY:-'!'}"; fi
+ echo $svn_status_string
+}
diff --git a/plugins/tmuxinator/_tmuxinator b/plugins/tmuxinator/_tmuxinator
index 117685279..cd227b7df 100644
--- a/plugins/tmuxinator/_tmuxinator
+++ b/plugins/tmuxinator/_tmuxinator
@@ -25,7 +25,7 @@ case $state in
args)
case $line[1] in
start|open|copy|delete)
- _configs=(`find ~/.tmuxinator/ -name \*.yml | cut -d/ -f5 | sed s:.yml::g`)
+ _configs=(`find ~/.tmuxinator -name \*.yml | cut -d/ -f5 | sed s:.yml::g`)
_values 'configs' $_configs
ret=0
;;
diff --git a/plugins/wd/_wd.sh b/plugins/wd/_wd.sh
index 950564435..29df63520 100644
--- a/plugins/wd/_wd.sh
+++ b/plugins/wd/_wd.sh
@@ -1,48 +1,68 @@
-#compdef wd.sh
-
-zstyle ":completion:*:descriptions" format "%B%d%b"
-
-CONFIG=$HOME/.warprc
-
-local -a main_commands
-main_commands=(
- add:'Adds the current working directory to your warp points'
- #add'\!':'Overwrites existing warp point' # TODO: Fix
- rm:'Removes the given warp point'
- ls:'Outputs all stored warp points'
- show:'Outputs warp points to current directory'
-)
-
-local -a points
-while read line
-do
- points+=$(awk "{ gsub(/\/Users\/$USER|\/home\/$USER/,\"~\"); print }" <<< $line)
-done < $CONFIG
-
-_wd()
-{
- # init variables
- local curcontext="$curcontext" state line
- typeset -A opt_args
-
- # init state
- _arguments \
- '1: :->command' \
- '2: :->argument'
-
- case $state in
- command)
- compadd "$@" add rm ls show
- _describe -t warp-points 'Warp points:' points && ret=0
- ;;
- argument)
- case $words[2] in
- rm|add!)
- _describe -t warp-points 'warp points' points && ret=0
- ;;
- *)
- esac
- esac
+#compdef wd
+
+zstyle ':completion:*:descriptions' format '%B%d%b'
+zstyle ':completion::complete:wd:*:commands' group-name commands
+zstyle ':completion::complete:wd:*:warp_points' group-name warp_points
+zstyle ':completion::complete:wd::' list-grouped
+
+# Call `_wd()` when when trying to complete the command `wd`
+
+zmodload zsh/mapfile
+function _wd() {
+ local ret=1
+ local CONFIG=$HOME/.warprc
+
+ # Stolen from
+ # http://stackoverflow.com/questions/9000698/completion-when-program-has-sub-commands
+
+ # local curcontext="$curcontext" state line
+ # typeset -A opt_args
+
+ local -a commands
+ local -a warp_points
+ warp_points=( "${(f)mapfile[$CONFIG]}" )
+ # LIST="${mapfile[$FNAME]}" # Not required unless stuff uses it
+
+ commands=(
+ 'add:Adds the current working directory to your warp points'
+ 'add!:Overwrites existing warp point'
+ 'rm:Removes the given warp point'
+ 'ls:Outputs all stored warp points'
+ 'show:Outputs all warp points that point to the current directory'
+ 'help:Show this extremely helpful text'
+ '..:Go back to last directory'
+ )
+
+ _arguments -C \
+ '1: :->first_arg' \
+ '2: :->second_arg' && ret=0
+
+ case $state in
+ first_arg)
+ _describe -t warp_points "Warp points" warp_points && ret=0
+ _describe -t commands "Commands" commands && ret=0
+ ;;
+ second_arg)
+ case $words[2] in
+ add\!|rm)
+ _describe -t points "Warp points" warp_points && ret=0
+ ;;
+ add)
+ _message 'Write the name of your warp point' && ret=0
+ ;;
+ esac
+ ;;
+ esac
+
+ return $ret
}
_wd "$@"
+
+# 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/wd/wd.plugin.zsh b/plugins/wd/wd.plugin.zsh
index bbec4a715..9800335fc 100755
--- a/plugins/wd/wd.plugin.zsh
+++ b/plugins/wd/wd.plugin.zsh
@@ -6,4 +6,6 @@
#
# @github.com/mfaerevaag/wd
-alias wd='. $ZSH/plugins/wd/wd.sh'
+wd() {
+ . $ZSH/plugins/wd/wd.sh
+}
diff --git a/plugins/wd/wd.sh b/plugins/wd/wd.sh
index 744f58bc2..96a3426fc 100755
--- a/plugins/wd/wd.sh
+++ b/plugins/wd/wd.sh
@@ -50,12 +50,12 @@ wd_warp()
wd_print_msg $YELLOW "Warping to current directory?"
else
(( n = $#1 - 1 ))
- wd_print_msg $BLUE "Warping..."
+ #wd_print_msg $BLUE "Warping..."
cd -$n > /dev/null
fi
elif [[ ${points[$1]} != "" ]]
then
- wd_print_msg $BLUE "Warping..."
+ #wd_print_msg $BLUE "Warping..."
cd ${points[$1]}
else
wd_print_msg $RED "Unkown warp point '$1'"
@@ -64,16 +64,16 @@ wd_warp()
wd_add()
{
- if [[ $1 =~ "^\.+$" ]]
+ if [[ $2 =~ "^\.+$" || $2 =~ "^\s*$" ]]
then
- wd_print_msg $RED "Illeagal warp point (see README)."
- elif [[ ${points[$1]} == "" ]] || $2
+ wd_print_msg $RED "Illegal warp point (see README)."
+ elif [[ ${points[$2]} == "" ]] || $1
then
- wd_remove $1 > /dev/null
- print "$1:$PWD" >> $CONFIG
+ wd_remove $2 > /dev/null
+ print "$2:$PWD" >> $CONFIG
wd_print_msg $GREEN "Warp point added"
else
- wd_print_msg $YELLOW "Warp point '$1' alredy exists. Use 'add!' to overwrite."
+ wd_print_msg $YELLOW "Warp point '$2' already exists. Use 'add!' to overwrite."
fi
}
@@ -83,7 +83,9 @@ wd_remove()
then
if wd_tmp=`sed "/^$1:/d" $CONFIG`
then
- echo $wd_tmp > $CONFIG
+ # `>!` forces overwrite
+ # we need this if people use `setopt NO_CLOBBER`
+ echo $wd_tmp >! $CONFIG
wd_print_msg $GREEN "Warp point removed"
else
wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!"
@@ -131,9 +133,9 @@ wd_print_usage()
print "\nCommands:"
print "\t add \t Adds the current working directory to your warp points"
print "\t add! \t Overwrites existing warp point"
- print "\t remove Removes the given warp point"
+ print "\t rm \t Removes the given warp point"
print "\t show \t Outputs warp points to current directory"
- print "\t list \t Outputs all stored warp points"
+ print "\t ls \t Outputs all stored warp points"
print "\t help \t Show this extremely helpful text"
}
@@ -141,7 +143,7 @@ wd_print_usage()
## run
# get opts
-args=`getopt -o a:r:lhs -l add:,remove:,list,help,show -- $*`
+args=`getopt -o a:r:lhs -l add:,rm:,ls,help,show -- $*`
# check if no arguments were given
if [[ $? -ne 0 || $#* -eq 0 ]]
@@ -161,49 +163,40 @@ else
for i
do
- case "$i"
- in
- -a|--add|add)
- wd_add $2 false
- shift
- shift
+ case "$i"
+ in
+ -a|--add|add)
+ wd_add false $2
break
;;
-a!|--add!|add!)
- wd_add $2 true
- shift
- shift
+ wd_add true $2
break
;;
- -r|--remove|rm)
- wd_remove $2
- shift
- shift
+ -r|--remove|rm)
+ wd_remove $2
break
;;
- -l|--list|ls)
- wd_list_all
- shift
+ -l|--list|ls)
+ wd_list_all
break
;;
- -h|--help|help)
- wd_print_usage
- shift
+ -h|--help|help)
+ wd_print_usage
break
;;
- -s|--show|show)
- wd_show
- shift
+ -s|--show|show)
+ wd_show
break
;;
*)
wd_warp $i
- shift
break
;;
- --)
- shift; break;;
- esac
+ --)
+ break
+ ;;
+ esac
done
fi
@@ -211,6 +204,6 @@ fi
## garbage collection
# if not, next time warp will pick up variables from this run
# remember, there's no sub shell
-points=""
-args=""
-unhash -d val &> /dev/null # fixes issue #1
+unset points
+unset args
+unset val &> /dev/null # fixes issue #1
diff --git a/plugins/xcode/xcode.plugin.zsh b/plugins/xcode/xcode.plugin.zsh
index f137253f3..4816ab0ed 100644
--- a/plugins/xcode/xcode.plugin.zsh
+++ b/plugins/xcode/xcode.plugin.zsh
@@ -16,3 +16,4 @@ function xcsel {
alias xcb='xcodebuild'
alias xcp='xcode-select --print-path'
+alias simulator='open $(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app'
diff --git a/plugins/yii/yii.plugin.zsh b/plugins/yii/yii.plugin.zsh
new file mode 100644
index 000000000..b816160f0
--- /dev/null
+++ b/plugins/yii/yii.plugin.zsh
@@ -0,0 +1,17 @@
+# Yii basic command completion
+
+_yii_get_command_list () {
+ protected/yiic | awk '/^ - [a-z]+/ { print $2 }'
+}
+
+_yii () {
+ if [ -f protected/yiic ]; then
+ compadd `_yii_get_command_list`
+ fi
+}
+
+compdef _yii protected/yiic
+compdef _yii yiic
+
+# Aliases
+alias yiic='protected/yiic'