Merged blessed.

This commit is contained in:
Carlos Cardoso 2014-03-23 19:58:16 -03:00
commit ad4e88bc23
116 changed files with 3804 additions and 1034 deletions

4
.gitignore vendored
View file

@ -1,8 +1,8 @@
locals.zsh locals.zsh
log/.zsh_history log/.zsh_history
projects.zsh projects.zsh
custom/* custom
!custom/example !custom/plugins/example
!custom/example.zsh !custom/example.zsh
*.swp *.swp
*.un~ *.un~

View file

@ -1,6 +1,6 @@
The MIT License The MIT License
Copyright (c) 2009-2013 Robby Russell and contributors (see https://github.com/robbyrussell/oh-my-zsh/contributors) Copyright (c) 2009-2014 Robby Russell and contributors (see https://github.com/robbyrussell/oh-my-zsh/contributors)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -14,15 +14,25 @@ You can install this via the command line with either `curl` or `wget`.
h4. via `curl` h4. via `curl`
@curl -L https://github.com/cadusk/oh-my-zsh/raw/master/tools/install.sh | sh@ @curl -L http://install.ohmyz.sh | sh@
h4. via `wget` h4. via `wget`
@wget --no-check-certificate https://github.com/cadusk/oh-my-zsh/raw/master/tools/install.sh -O - | sh@ @wget --no-check-certificate http://install.ohmyz.sh -O - | sh@
h4. Optional: change the install directory
The default location is `~/.oh-my-zsh` (hidden in your home directory).
You can change the install directory with the ZSH environment variable, either
by running `export ZSH=/your/path` before installing, or setting it before the
end of the install pipeline like this:
@curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | ZSH=~/.dotfiles/zsh sh@
h3. The manual way h3. The manual way
1. Clone the repository 1. Clone the repository
@git clone git://github.com/cadusk/oh-my-zsh.git ~/.oh-my-zsh@ @git clone git://github.com/cadusk/oh-my-zsh.git ~/.oh-my-zsh@
@ -35,7 +45,6 @@ h3. The manual way
@cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc@ @cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc@
4. Set zsh as your default shell: 4. Set zsh as your default shell:
@chsh -s /bin/zsh@ @chsh -s /bin/zsh@
@ -46,9 +55,11 @@ h3. Problems?
You _might_ need to modify your PATH in ~/.zshrc if you're not able to find some commands after switching to _Oh My Zsh_. You _might_ need to modify your PATH in ~/.zshrc if you're not able to find some commands after switching to _Oh My Zsh_.
If you installed manually or changed the install location, check ZSH in ~/.zshrc
h2. Usage h2. Usage
* enable the plugins you want in your @~/.zshrc@ (take a look at @plugins/@ to see what's possible) * enable the plugins you want in your @~/.zshrc@ (take a look at the @plugins/@ directory and the "wiki":https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins to see what's possible)
** example: @plugins=(git osx ruby)@ ** example: @plugins=(git osx ruby)@
* Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@. * Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@.
** Take a look at the "current themes":https://wiki.github.com/cadusk/oh-my-zsh/themes that come bundled with _Oh My Zsh_. ** Take a look at the "current themes":https://wiki.github.com/cadusk/oh-my-zsh/themes that come bundled with _Oh My Zsh_.

118
README.textile.orig Normal file
View file

@ -0,0 +1,118 @@
!https://s3.amazonaws.com/ohmyzsh/oh-my-zsh-logo.png!
oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout...
bq. "OH MY ZSHELL!"
h2. Setup
@oh-my-zsh@ should work with any recent release of "zsh":http://www.zsh.org/, the minimum recommended version is 4.3.9.
h3. The automatic installer... (do you trust me?)
You can install this via the command line with either `curl` or `wget`.
h4. via `curl`
<<<<<<< HEAD
@curl -L https://github.com/cadusk/oh-my-zsh/raw/master/tools/install.sh | sh@
h4. via `wget`
@wget --no-check-certificate https://github.com/cadusk/oh-my-zsh/raw/master/tools/install.sh -O - | sh@
=======
@curl -L http://install.ohmyz.sh | sh@
h4. via `wget`
@wget --no-check-certificate http://install.ohmyz.sh -O - | sh@
>>>>>>> blessed-master
h4. Optional: change the install directory
The default location is `~/.oh-my-zsh` (hidden in your home directory).
You can change the install directory with the ZSH environment variable, either
by running `export ZSH=/your/path` before installing, or setting it before the
end of the install pipeline like this:
@curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | ZSH=~/.dotfiles/zsh sh@
h3. The manual way
1. Clone the repository
@git clone git://github.com/cadusk/oh-my-zsh.git ~/.oh-my-zsh@
2. *OPTIONAL* Backup your existing ~/.zshrc file
@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@
4. Set zsh as your default shell:
@chsh -s /bin/zsh@
5. Start / restart zsh (open a new terminal is easy enough...)
h3. Problems?
You _might_ need to modify your PATH in ~/.zshrc if you're not able to find some commands after switching to _Oh My Zsh_.
If you installed manually or changed the install location, check ZSH in ~/.zshrc
h2. Usage
* enable the plugins you want in your @~/.zshrc@ (take a look at the @plugins/@ directory and the "wiki":https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins to see what's possible)
** example: @plugins=(git osx ruby)@
* Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@.
** Take a look at the "current themes":https://wiki.github.com/cadusk/oh-my-zsh/themes that come bundled with _Oh My Zsh_.
* much much more... take a look at @lib/@ what _Oh My Zsh_ offers...
h2. Useful
the "refcard":http://www.bash2zsh.com/zsh_refcard/refcard.pdf is pretty tasty for tips.
h3. Customization
If you want to override any of the default behavior, just add a new file (ending in @.zsh@) into the @custom/@ directory.
If you have many functions which go well together you can put them as a *.plugin.zsh file in the @custom/plugins/@ directory and then enable this plugin.
If you would like to override the functionality of a plugin distributed with oh-my-zsh, create a plugin of the same name in the @custom/plugins/@ directory and it will be loaded instead of the one in @plugins/@.
h3. Updates
By default you will be prompted to check for updates. If you would like oh-my-zsh to automatically update itself without prompting you, set the following in your ~/.zshrc
@DISABLE_UPDATE_PROMPT=true@
To disable updates entirely, put this in your ~/.zshrc
@DISABLE_AUTO_UPDATE=true@
To upgrade directly from the command line, just run @upgrade_oh_my_zsh@
h3. Uninstalling
If you want to uninstall it, just run @uninstall_oh_my_zsh@ from the command line and it'll remove itself and revert you to bash (or your previous zsh config).
h2. Help out!
I'm far from being a zsh-expert and suspect there are many ways to improve. If you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
h3. (Don't) Send us your theme! (for now)
-I'm hoping to collect a bunch of themes for our command prompts. You can see existing ones in the @themes/@ directory.-
We have enough themes for the time being. Please fork the project and add on in there, you can let people know how to grab it from there.
h2. Contributors
This project wouldn't exist without all of our awesome users and contributors.
* "View our growing list of contributors":https://github.com/cadusk/oh-my-zsh/contributors
Thank you so much!

View file

@ -29,11 +29,11 @@ fi
alias afind='ack-grep -il' alias afind='ack-grep -il'
# List direcory contents # List direcory contents
alias lsa='ls -lah' alias lsa='ls -lah'
alias l='ls -la' alias l='ls -lah'
alias ll='ls -l' alias ll='ls -lh'
alias la='ls -lA' alias la='ls -lAh'
alias l=la
alias sl=ls # often screw this up alias sl=ls # often screw this up
# Git aliases # Git aliases
alias gita='git add -A' alias gita='git add -A'
alias gits='git st' alias gits='git st'

52
lib/aliases.zsh.orig Normal file
View file

@ -0,0 +1,52 @@
# Push and pop directories on directory stack
alias pu='pushd'
alias po='popd'
# Basic directory operations
alias ...='cd ../..'
alias -- -='cd -'
# Super user
alias _='sudo'
alias please='sudo'
#alias g='grep -in'
# Show history
if [ "$HIST_STAMPS" = "mm/dd/yyyy" ]
then
alias history='fc -fl 1'
elif [ "$HIST_STAMPS" = "dd.mm.yyyy" ]
then
alias history='fc -El 1'
elif [ "$HIST_STAMPS" = "yyyy-mm-dd" ]
then
alias history='fc -il 1'
else
alias history='fc -l 1'
fi
alias afind='ack-grep -il'
# List direcory contents
alias lsa='ls -lah'
<<<<<<< HEAD
alias l='ls -la'
alias ll='ls -l'
alias la='ls -lA'
alias l=la
=======
alias l='ls -lah'
alias ll='ls -lh'
alias la='ls -lAh'
>>>>>>> blessed-master
alias sl=ls # often screw this up
# Git aliases
alias gita='git add -A'
alias gits='git st'
alias gitl='git l'
alias gitw='git who'
alias gitt='git tags'
# Aliases
alias ta='tmux attach -t'
alias tl='tmux list-session'
alias ts='tmux new-session'

View file

@ -31,35 +31,20 @@ zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
cdpath=(.) cdpath=(.)
# use /etc/hosts and known_hosts for hostname completion
[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _global_ssh_hosts=()
[ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()
[ -r ~/.ssh/config ] && _ssh_config=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) || _ssh_config=()
[ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
hosts=(
"$_ssh_config[@]"
"$_global_ssh_hosts[@]"
"$_ssh_hosts[@]"
"$_etc_hosts[@]"
"$HOST"
localhost
)
zstyle ':completion:*:hosts' hosts $hosts
zstyle ':completion:*' users off
# Use caching so that commands like apt and dpkg complete are useable # Use caching so that commands like apt and dpkg complete are useable
zstyle ':completion::complete:*' use-cache 1 zstyle ':completion::complete:*' use-cache 1
zstyle ':completion::complete:*' cache-path $ZSH/cache/ zstyle ':completion::complete:*' cache-path $ZSH/cache/
# Don't complete uninteresting users # Don't complete uninteresting users
zstyle ':completion:*:*:*:users' ignored-patterns \ zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \
mailman mailnull mldonkey mysql nagios \ ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \
operator pcap postfix postgres privoxy pulse pvm quagga radvd \ operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \
usbmux uucp vcsa wwwrun xfs
# ... unless we really want to. # ... unless we really want to.
zstyle '*' single-ignored show zstyle '*' single-ignored show

View file

@ -2,5 +2,12 @@
# Color grep results # Color grep results
# Examples: http://rubyurl.com/ZXv # Examples: http://rubyurl.com/ZXv
# #
export GREP_OPTIONS='--color=auto'
# avoid VCS folders
GREP_OPTIONS=
for PATTERN in .cvs .git .hg .svn; do
GREP_OPTIONS+="--exclude-dir=$PATTERN "
done
GREP_OPTIONS+="--color=auto"
export GREP_OPTIONS="$GREP_OPTIONS"
export GREP_COLOR='1;32' export GREP_COLOR='1;32'

View file

@ -5,7 +5,6 @@ fi
HISTSIZE=10000 HISTSIZE=10000
SAVEHIST=10000 SAVEHIST=10000
setopt append_history
setopt extended_history setopt extended_history
setopt hist_expire_dups_first setopt hist_expire_dups_first
setopt hist_ignore_dups # ignore duplication command history list setopt hist_ignore_dups # ignore duplication command history list

View file

@ -1,34 +1,63 @@
# TODO: Explain what some of this does.. # http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets
bindkey -e # Make sure that the terminal is in application mode when zle is active, since
bindkey '\ew' kill-region # only then values from $terminfo are valid
bindkey -s '\el' "ls\n" if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
bindkey '^r' history-incremental-search-backward function zle-line-init() {
bindkey "^[[5~" up-line-or-history echoti smkx
bindkey "^[[6~" down-line-or-history }
function zle-line-finish() {
echoti rmkx
}
zle -N zle-line-init
zle -N zle-line-finish
fi
# make search up and down work, so partially type and hit up/down to find relevant stuff bindkey -e # Use emacs key bindings
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
bindkey "^[[H" beginning-of-line bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
bindkey "^[[1~" beginning-of-line bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
bindkey "^[OH" beginning-of-line bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
bindkey "^[[F" end-of-line if [[ "${terminfo[kpp]}" != "" ]]; then
bindkey "^[[4~" end-of-line bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history
bindkey "^[OF" end-of-line fi
bindkey ' ' magic-space # also do history expansion on space if [[ "${terminfo[knp]}" != "" ]]; then
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
fi
bindkey "^[[1;5C" forward-word if [[ "${terminfo[kcuu1]}" != "" ]]; then
bindkey "^[[1;5D" backward-word bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
fi
if [[ "${terminfo[kcud1]}" != "" ]]; then
bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
fi
bindkey '^[[Z' reverse-menu-complete if [[ "${terminfo[khome]}" != "" ]]; then
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
fi
if [[ "${terminfo[kend]}" != "" ]]; then
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
fi
# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~ bindkey ' ' magic-space # [Space] - do history expansion
bindkey '^?' backward-delete-char
bindkey "^[[3~" delete-char bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey "^[3;5~" delete-char bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
bindkey "\e[3~" delete-char
if [[ "${terminfo[kdch1]}" != "" ]]; then
bindkey "${terminfo[kdch1]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards
fi
bindkey '^?' backward-delete-char # [Backspace] - delete backward
if [[ "${terminfo[kdch1]}" != "" ]]; then
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
else
bindkey "^[[3~" delete-char
bindkey "^[3;5~" delete-char
bindkey "\e[3~" delete-char
fi
# Edit the current command line in $EDITOR # Edit the current command line in $EDITOR
autoload -U edit-command-line autoload -U edit-command-line

View file

@ -0,0 +1,33 @@
# *_prompt_info functions for usage in your prompt
#
# Plugin creators, please add your *_prompt_info function to the list
# of dummy implementations to help theme creators not receiving errors
# without the need of implementing conditional clauses.
#
# See also lib/bzr.zsh, lib/git.zsh and lib/nvm.zsh for
# git_prompt_info, bzr_prompt_info and nvm_prompt_info
# Dummy implementations that return false to prevent command_not_found
# errors with themes, that implement these functions
# Real implementations will be used when the respective plugins are loaded
function chruby_prompt_info hg_prompt_info pyenv_prompt_info \
rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \
virtualenv_prompt_info {
return 1
}
# oh-my-zsh supports an rvm prompt by default
# get the name of the rvm ruby version
function rvm_prompt_info() {
[ -f $HOME/.rvm/bin/rvm-prompt ] || return 1
local rvm_prompt
rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null)
[[ "${rvm_prompt}x" == "x" ]] && return 1
echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}"
}
# use this to enable users to see their ruby version, no matter which
# version management system they use
function ruby_prompt_info() {
echo $(rvm_prompt_info || rbenv_prompt_info || chruby_prompt_info)
}

View file

@ -1,2 +0,0 @@
# using the rbenv plugin will override this with a real implementation
function rbenv_prompt_info() {}

View file

@ -1,8 +0,0 @@
# get the name of the ruby version
function rvm_prompt_info() {
[ -f $HOME/.rvm/bin/rvm-prompt ] || return
local rvm_prompt
rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null)
[[ "${rvm_prompt}x" == "x" ]] && return
echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}"
}

View file

@ -19,17 +19,19 @@ for color in {000..255}; do
BG[$color]="%{[48;5;${color}m%}" BG[$color]="%{[48;5;${color}m%}"
done done
ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
# Show all 256 colors with color number # Show all 256 colors with color number
function spectrum_ls() { function spectrum_ls() {
for code in {000..255}; do for code in {000..255}; do
print -P -- "$code: %F{$code}Test%f" print -P -- "$code: %F{$code}$ZSH_SPECTRUM_TEXT%f"
done done
} }
# Show all 256 colors where the background is set to specific color # Show all 256 colors where the background is set to specific color
function spectrum_bls() { function spectrum_bls() {
for code in {000..255}; do for code in {000..255}; do
((cc = code + 1)) print -P -- "$BG[$code]$code: $ZSH_SPECTRUM_TEXT %{$reset_color%}"
print -P -- "$BG[$code]$code: Test %{$reset_color%}"
done done
} }

View file

@ -27,9 +27,8 @@ function omz_termsupport_preexec {
emulate -L zsh emulate -L zsh
setopt extended_glob setopt extended_glob
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
local LINE="${2:gs/$/\\$}" local LINE="${2:gs/%/%%}"
LINE="${LINE:gs/%/%%}" title '$CMD' '%100>...>$LINE%<<'
title "$CMD" "%100>...>$LINE%<<"
} }
autoload -U add-zsh-hook autoload -U add-zsh-hook

View file

@ -1,6 +1,6 @@
# Check for updates on initial load... # Check for updates on initial load...
if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then
/usr/bin/env ZSH=$ZSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh $ZSH/tools/check_for_upgrade.sh /usr/bin/env ZSH=$ZSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh -f $ZSH/tools/check_for_upgrade.sh
fi fi
# Initializes Oh My Zsh # Initializes Oh My Zsh

View file

@ -0,0 +1,14 @@
local _atom_paths > /dev/null 2>&1
_atom_paths=(
"$HOME/Applications/Atom.app"
"/Applications/Atom.app"
)
for _atom_path in $_atom_paths; do
if [[ -a $_atom_path ]]; then
alias at="open -a '$_atom_path'"
break
fi
done
alias att='at .'

View file

@ -0,0 +1,17 @@
export AWS_HOME=~/.aws
function agp {
echo $AWS_DEFAULT_PROFILE
}
function asp {
export AWS_DEFAULT_PROFILE=$1
export RPROMPT="<aws:$AWS_DEFAULT_PROFILE>"
}
function aws_profiles {
reply=($(grep profile $AWS_HOME/config|sed -e 's/.*profile \([a-zA-Z0-9_-]*\).*/\1/'))
}
compctl -K aws_profiles asp
source `which aws_zsh_completer.sh`

View file

@ -11,24 +11,34 @@
if [[ $(uname) == "Darwin" ]] ; then if [[ $(uname) == "Darwin" ]] ; then
function battery_pct() { function battery_pct() {
typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') 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)) integer i=$(((currentcapacity/maxcapacity) * 100))
echo $i echo $i
} }
function plugged_in() {
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ]
}
function battery_pct_remaining() { function battery_pct_remaining() {
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then if plugged_in ; then
battery_pct
else
echo "External Power" echo "External Power"
else
battery_pct
fi fi
} }
function battery_time_remaining() { function battery_time_remaining() {
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
timeremaining=$(ioreg -rc "AppleSmartBattery"| grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
echo "~$((timeremaining / 60)):$((timeremaining % 60))" timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
if [ $timeremaining -gt 720 ] ; then
echo "::"
else
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
fi
else else
echo "∞" echo "∞"
fi fi
@ -50,14 +60,30 @@ if [[ $(uname) == "Darwin" ]] ; then
fi fi
} }
function battery_is_charging() {
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
}
elif [[ $(uname) == "Linux" ]] ; then elif [[ $(uname) == "Linux" ]] ; then
function battery_pct_remaining() { function battery_is_charging() {
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then ! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
}
function battery_pct() {
if (( $+commands[acpi] )) ; then
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
fi fi
} }
function battery_pct_remaining() {
if [ ! $(battery_is_charging) ] ; then
battery_pct
else
echo "External Power"
fi
}
function battery_time_remaining() { function battery_time_remaining() {
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
echo $(acpi | cut -f3 -d ',') echo $(acpi | cut -f3 -d ',')
@ -79,14 +105,56 @@ elif [[ $(uname) == "Linux" ]] ; then
echo "∞" echo "∞"
fi fi
} }
else else
# Empty functions so we don't cause errors in prompts # Empty functions so we don't cause errors in prompts
function battery_pct_remaining() { function battery_pct_remaining() {
} }
function battery_time_remaining() { function battery_time_remaining() {
} }
function battery_pct_prompt() { function battery_pct_prompt() {
} }
fi 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//\%/\%\%}
}

View file

@ -11,10 +11,25 @@ _brew_installed_formulae() {
installed_formulae=(`brew list`) 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 local -a _1st_arguments
_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' 'cat:display formula file for a formula'
'cleanup:uninstall unused and old versions of packages' 'cleanup:uninstall unused and old versions of packages'
'commands:show a list of commands'
'create:create a new formula' 'create:create a new formula'
'deps:list dependencies and dependants of a formula' 'deps:list dependencies and dependants of a formula'
'doctor:audits your installation for common issues' 'doctor:audits your installation for common issues'
@ -22,26 +37,38 @@ _1st_arguments=(
'home:visit the homepage of a formula or the brew project' 'home:visit the homepage of a formula or the brew project'
'info:information about a formula' 'info:information about a formula'
'install:install a formula' 'install:install a formula'
'reinstall:install a formula anew; re-using its current options'
'link:link a formula' 'link:link a formula'
'list:list files in a formula or not-installed formulae' 'list:list files in a formula or not-installed formulae'
'log:git commit log for a formula' 'log:git commit log for a formula'
'missing:check all installed formuale for missing dependencies.' 'missing:check all installed formuale for missing dependencies.'
'options:display install options specific to formula.' 'outdated:list formulae for which a newer version is available'
'outdated:list formulas for which a newer version is available' 'pin:pin specified formulae'
'prune:remove dead links' 'prune:remove dead links'
'reinstall:reinstall a formula'
'remove:remove a formula' 'remove:remove a formula'
'search:search for a formula (/regex/ or string)' 'search:search for a formula (/regex/ or string)'
'server:start a local web app that lets you browse formulae (requires Sinatra)' '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' 'unlink:unlink a formula'
'unpin:unpin specified formulae'
'untap:remove a tapped repository'
'update:freshen up links' 'update:freshen up links'
'upgrade:upgrade outdated formulae' 'upgrade:upgrade outdated formulae'
'uses:show formulas which depend on a formula' 'uses:show formulae which depend on a formula'
'versions:show all available formula versions' )
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 expl
local -a formulae installed_formulae local -a formulae installed_formulae installed_taps outdated_formulae running_services
_arguments \ _arguments \
'(-v)-v[verbose]' \ '(-v)-v[verbose]' \
@ -60,24 +87,41 @@ if (( CURRENT == 1 )); then
fi fi
case "$words[1]" in case "$words[1]" in
search|-S) install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|edit|options)
_arguments \ _brew_all_formulae
'(--macports)--macports[search the macports repository]' \ _wanted formulae expl 'all formulae' compadd -a formulae ;;
'(--fink)--fink[search the fink repository]' ;;
list|ls) list|ls)
_arguments \ _arguments \
'(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \ '(--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]' \ '(--versions)--versions[list all installed versions of a formula]' \
'1: :->forms' && return 0 '1: :->forms' && return 0
if [[ "$state" == forms ]]; then if [[ "$state" == forms ]]; then
_brew_installed_formulae _brew_installed_formulae
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
fi ;; fi ;;
install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions) remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin)
_brew_all_formulae
_wanted formulae expl 'all formulae' compadd -a formulae ;;
reinstall|remove|rm|uninstall|unlink|cleanup|link|ln)
_brew_installed_formulae _brew_installed_formulae
_wanted installed_formulae expl 'installed formulae' compadd -a 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 esac

View file

@ -6,7 +6,7 @@ alias bu="bundle update"
# The following is based on https://github.com/gma/bundler-exec # The following is based on https://github.com/gma/bundler-exec
bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma) bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard irb jekyll kitchen knife mailcatcher middleman nanoc puma rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails)
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list # Remove $UNBUNDLED_COMMANDS from the bundled_commands list
for cmd in $UNBUNDLED_COMMANDS; do for cmd in $UNBUNDLED_COMMANDS; do

View file

@ -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() { function _cabal_commands() {
local ret=1 state local ret=1 state
_arguments ':subcommand:->subcommand' && ret=0 _arguments ':subcommand:->subcommand' && ret=0

View file

@ -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
}

88
plugins/catimg/catimg.sh Executable file
View file

@ -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

BIN
plugins/catimg/colors.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

View file

@ -71,7 +71,7 @@ if [ ${ZSH_VERSION//\./} -ge 420 ]; then
_image_fts=(jpg jpeg png gif mng tiff tif xpm) _image_fts=(jpg jpeg png gif mng tiff tif xpm)
for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done
_media_fts=(avi mpg mpeg ogm mp3 wav ogg ape rm mov mkv) _media_fts=(ape avi flv mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
for ft in $_media_fts ; do alias -s $ft=mplayer ; done for ft in $_media_fts ; do alias -s $ft=mplayer ; done
#read documents #read documents

View file

@ -217,3 +217,11 @@ kerndeb () {
"$revision" kernel_image kernel_headers "$revision" kernel_image kernel_headers
} }
# List packages by size
function apt-list-packages {
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \
grep -v deinstall | \
sort -n | \
awk '{print $1" "$2}'
}

View file

@ -0,0 +1,132 @@
##
# Navigate directory history using ALT-LEFT and ALT-RIGHT. ALT-LEFT moves back to directories
# that the user has changed to in the past, and ALT-RIGHT undoes ALT-LEFT.
#
dirhistory_past=(`pwd`)
dirhistory_future=()
export dirhistory_past
export dirhistory_future
export DIRHISTORY_SIZE=30
# Pop the last element of dirhistory_past.
# Pass the name of the variable to return the result in.
# Returns the element if the array was not empty,
# otherwise returns empty string.
function pop_past() {
eval "$1='$dirhistory_past[$#dirhistory_past]'"
if [[ $#dirhistory_past -gt 0 ]]; then
dirhistory_past[$#dirhistory_past]=()
fi
}
function pop_future() {
eval "$1='$dirhistory_future[$#dirhistory_future]'"
if [[ $#dirhistory_future -gt 0 ]]; then
dirhistory_future[$#dirhistory_future]=()
fi
}
# Push a new element onto the end of dirhistory_past. If the size of the array
# is >= DIRHISTORY_SIZE, the array is shifted
function push_past() {
if [[ $#dirhistory_past -ge $DIRHISTORY_SIZE ]]; then
shift dirhistory_past
fi
if [[ $#dirhistory_past -eq 0 || $dirhistory_past[$#dirhistory_past] != "$1" ]]; then
dirhistory_past+=($1)
fi
}
function push_future() {
if [[ $#dirhistory_future -ge $DIRHISTORY_SIZE ]]; then
shift dirhistory_future
fi
if [[ $#dirhistory_future -eq 0 || $dirhistory_futuret[$#dirhistory_future] != "$1" ]]; then
dirhistory_future+=($1)
fi
}
# Called by zsh when directory changes
function chpwd() {
push_past `pwd`
# If DIRHISTORY_CD is not set...
if [[ -z "${DIRHISTORY_CD+x}" ]]; then
# ... clear future.
dirhistory_future=()
fi
}
function dirhistory_cd(){
DIRHISTORY_CD="1"
cd $1
unset DIRHISTORY_CD
}
# Move backward in directory history
function dirhistory_back() {
local cw=""
local d=""
# Last element in dirhistory_past is the cwd.
pop_past cw
if [[ "" == "$cw" ]]; then
# Someone overwrote our variable. Recover it.
dirhistory_past=(`pwd`)
return
fi
pop_past d
if [[ "" != "$d" ]]; then
dirhistory_cd $d
push_future $cw
else
push_past $cw
fi
}
# Move forward in directory history
function dirhistory_forward() {
local d=""
pop_future d
if [[ "" != "$d" ]]; then
dirhistory_cd $d
push_past $d
fi
}
# Bind keys to history navigation
function dirhistory_zle_dirhistory_back() {
# Erase current line in buffer
zle kill-buffer
dirhistory_back
zle accept-line
}
function dirhistory_zle_dirhistory_future() {
# Erase current line in buffer
zle kill-buffer
dirhistory_forward
zle accept-line
}
zle -N dirhistory_zle_dirhistory_back
# xterm in normal mode
bindkey "\e[3D" dirhistory_zle_dirhistory_back
bindkey "\e[1;3D" dirhistory_zle_dirhistory_back
# Putty:
bindkey "\e\e[D" dirhistory_zle_dirhistory_back
# GNU screen:
bindkey "\eO3D" dirhistory_zle_dirhistory_back
zle -N dirhistory_zle_dirhistory_future
bindkey "\e[3C" dirhistory_zle_dirhistory_future
bindkey "\e[1;3C" dirhistory_zle_dirhistory_future
bindkey "\e\e[C" dirhistory_zle_dirhistory_future
bindkey "\eO3C" dirhistory_zle_dirhistory_future

View file

@ -1,39 +1,19 @@
#!/bin/zsh # Save dirstack history to .zdirs
# # adapted from:
# Make the dirstack more persistant # github.com/grml/grml-etc-core/blob/master/etc/zsh/zshrc#L1547
#
# Add dirpersist to $plugins in ~/.zshrc to load
#
# $zdirstore is the file used to persist the stack DIRSTACKSIZE=${DIRSTACKSIZE:-20}
zdirstore=~/.zdirstore dirstack_file=${dirstack_file:-${HOME}/.zdirs}
dirpersistinstall () { if [[ -f ${dirstack_file} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
if grep 'dirpersiststore' ~/.zlogout > /dev/null; then dirstack=( ${(f)"$(< $dirstack_file)"} )
else # "cd -" won't work after login by just setting $OLDPWD, so
if read -q \?"Would you like to set up your .zlogout file for use with dirspersist? (y/n) "; then [[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD
echo "# Store dirs stack\n# See $ZSH/plugins/dirspersist.plugin.zsh\ndirpersiststore" >> ~/.zlogout fi
else
echo "If you don't want this message to appear, remove dirspersist from \$plugins" chpwd() {
fi if (( $DIRSTACKSIZE <= 0 )) || [[ -z $dirstack_file ]]; then return; fi
fi local -ax my_stack
my_stack=( ${PWD} ${dirstack} )
builtin print -l ${(u)my_stack} >! ${dirstack_file}
} }
dirpersiststore () {
dirs -p | perl -e 'foreach (reverse <STDIN>) {chomp;s/([& ])/\\$1/g ;print "if [ -d $_ ]; then pushd -q $_; fi\n"}' > $zdirstore
}
dirpersistrestore () {
if [ -f $zdirstore ]; then
source $zdirstore
fi
}
DIRSTACKSIZE=10
setopt autopushd pushdminus pushdsilent pushdtohome pushdignoredups
dirpersistinstall
dirpersistrestore
# Make popd changes permanent without having to wait for logout
alias popd="popd;dirpersiststore"

View file

@ -111,7 +111,7 @@ __ps() {
'-beforeId="[Show only container created before Id, include non-running ones.]' \ '-beforeId="[Show only container created before Id, include non-running ones.]' \
'-l[Show only the latest created container, include non-running ones.]' \ '-l[Show only the latest created container, include non-running ones.]' \
'-n=[Show n last created containers, include non-running ones.]' \ '-n=[Show n last created containers, include non-running ones.]' \
'-notrurrrrnc[Dont truncate output]' \ '-notrunc[Dont truncate output]' \
'-q[Only display numeric IDs]' \ '-q[Only display numeric IDs]' \
'-s[Display sizes]' \ '-s[Display sizes]' \
'-sinceId="[Show only containers created since Id, include non-running ones.]' '-sinceId="[Show only containers created since Id, include non-running ones.]'

View file

@ -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:

12
plugins/emacs/emacsclient.sh Executable file
View file

@ -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

View file

@ -13,6 +13,7 @@ case $state in
cmds=( cmds=(
"version:Prints Gas's version" "version:Prints Gas's version"
"use:Uses author" "use:Uses author"
"ssh:Creates a new ssh key for an existing gas author"
"show:Shows your current user" "show:Shows your current user"
"list:Lists your authors" "list:Lists your authors"
"import:Imports current user to gasconfig" "import:Imports current user to gasconfig"
@ -25,8 +26,12 @@ case $state in
args) args)
case $line[1] in case $line[1] in
(use|delete) (use|delete)
_values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0 VERSION=$(gas -v)
;; if [[ $VERSION == <1->.*.* ]] || [[ $VERSION == 0.<2->.* ]] || [[ $VERSION == 0.1.<6-> ]] then
_values -S , 'authors' $(cat ~/.gas/gas.authors | sed -n -e 's/^.*\[\(.*\)\]/\1/p') && ret=0
else
_values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0
fi
esac esac
;; ;;
esac esac

View file

@ -56,6 +56,9 @@ if (( CURRENT == 1 )); then
fi fi
case "$words[1]" in case "$words[1]" in
build)
_files -g "*.gemspec"
;;
list) list)
if [[ "$state" == forms ]]; then if [[ "$state" == forms ]]; then
_gem_installed _gem_installed

View file

@ -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
}

View file

@ -1,20 +1,30 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: UTF-8 -*- # -*- coding: UTF-8 -*-
from subprocess import Popen, PIPE
import re
# change those symbols to whatever you prefer # change those symbols to whatever you prefer
symbols = {'ahead of': '', 'behind': '', 'staged':'', 'changed':'', 'untracked':'', 'clean':'', 'unmerged':'', 'sha1':':'} symbols = {
'ahead of': '',
'behind': '',
'staged': '',
'changed': '',
'untracked': '',
'clean': '',
'unmerged': '',
'sha1': ':'
}
from subprocess import Popen, PIPE output, error = Popen(
['git', 'status'], stdout=PIPE, stderr=PIPE).communicate()
output,error = Popen(['git','status'], stdout=PIPE, stderr=PIPE).communicate()
if error: if error:
import sys import sys
sys.exit(0) sys.exit(0)
lines = output.splitlines() lines = output.splitlines()
import re behead_re = re.compile(
behead_re = re.compile(r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit") r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
diverge_re = re.compile(r"^# and have (\d+) and (\d+) different") diverge_re = re.compile(r"^# and have (\d+) and (\d+) different")
status = '' status = ''
@ -23,46 +33,50 @@ changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE)
untracked = re.compile(r'^# Untracked files:$', re.MULTILINE) untracked = re.compile(r'^# Untracked files:$', re.MULTILINE)
unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE) unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE)
def execute(*command): def execute(*command):
out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate() out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate()
if not err: if not err:
nb = len(out.splitlines()) nb = len(out.splitlines())
else: else:
nb = '?' nb = '?'
return nb return nb
if staged.search(output): if staged.search(output):
nb = execute(['git','diff','--staged','--name-only','--diff-filter=ACDMRT']) nb = execute(
status += '%s%s' % (symbols['staged'], nb) ['git', 'diff', '--staged', '--name-only', '--diff-filter=ACDMRT'])
status += '%s%s' % (symbols['staged'], nb)
if unmerged.search(output): if unmerged.search(output):
nb = execute(['git','diff', '--staged','--name-only', '--diff-filter=U']) nb = execute(['git', 'diff', '--staged', '--name-only', '--diff-filter=U'])
status += '%s%s' % (symbols['unmerged'], nb) status += '%s%s' % (symbols['unmerged'], nb)
if changed.search(output): if changed.search(output):
nb = execute(['git','diff','--name-only', '--diff-filter=ACDMRT']) nb = execute(['git', 'diff', '--name-only', '--diff-filter=ACDMRT'])
status += '%s%s' % (symbols['changed'], nb) status += '%s%s' % (symbols['changed'], nb)
if untracked.search(output): if untracked.search(output):
## nb = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines()) status += symbols['untracked']
## status += "%s" % (symbols['untracked']*(nb//3 + 1), )
status += symbols['untracked']
if status == '': if status == '':
status = symbols['clean'] status = symbols['clean']
remote = '' remote = ''
bline = lines[0] bline = lines[0]
if bline.find('Not currently on any branch') != -1: 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: else:
branch = bline.split(' ')[3] branch = bline.split(' ')[-1]
bstatusline = lines[1] bstatusline = lines[1]
match = behead_re.match(bstatusline) match = behead_re.match(bstatusline)
if match: if match:
remote = symbols[match.groups()[0]] remote = symbols[match.groups()[0]]
remote += match.groups()[2] remote += match.groups()[2]
elif lines[2:]: elif lines[2:]:
div_match = diverge_re.match(lines[2]) div_match = diverge_re.match(lines[2])
if div_match: if div_match:
remote = "{behind}{1}{ahead of}{0}".format(*div_match.groups(), **symbols) remote = "{behind}{1}{ahead of}{0}".format(
*div_match.groups(), **symbols)
print '\n'.join([branch,remote,status])
print('\n'.join([branch, remote, status]))

View file

@ -62,8 +62,10 @@ alias glgg='git log --graph --max-count=10'
compdef _git glgg=git-log compdef _git glgg=git-log
alias glgga='git log --graph --decorate --all' alias glgga='git log --graph --decorate --all'
compdef _git glgga=git-log compdef _git glgga=git-log
alias glo='git log --oneline' alias glo='git log --oneline --decorate --color'
compdef _git glo=git-log compdef _git glo=git-log
alias glog='git log --oneline --decorate --color --graph'
compdef _git glog=git-log
alias gss='git status -s' alias gss='git status -s'
compdef _git gss=git-status compdef _git gss=git-status
alias ga='git add' alias ga='git add'
@ -142,13 +144,13 @@ compdef _git glp=git-log
# #
# This function return a warning if the current branch is a wip # This function return a warning if the current branch is a wip
function work_in_progress() { function work_in_progress() {
if $(git log -n 1 2>/dev/null | grep -q -c wip); then if $(git log -n 1 2>/dev/null | grep -q -c "\-\-wip\-\-"); then
echo "WIP!!" echo "WIP!!"
fi fi
} }
# these alias commit and uncomit wip branches # these alias commit and uncomit wip branches
alias gwip='git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip"' alias gwip='git add -A; git ls-files --deleted -z | xargs -r0 git rm; git commit -m "--wip--"'
alias gunwip='git log -n 1 | grep -q -c wip && git reset HEAD~1' alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
# these alias ignore changes to file # these alias ignore changes to file
alias gignore='git update-index --assume-unchanged' alias gignore='git update-index --assume-unchanged'

View file

@ -2,18 +2,19 @@
# zsh completion wrapper for git # zsh completion wrapper for git
# #
# You need git's bash completion script installed somewhere, by default on the # Copyright (c) 2012-2013 Felipe Contreras <felipe.contreras@gmail.com>
# same directory as this script.
# #
# If your script is on ~/.git-completion.sh instead, you can configure it on # You need git's bash completion script installed somewhere, by default it
# your ~/.zshrc: # 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 # zstyle ':completion:*:*:git:*' script ~/.git-completion.sh
# #
# The recommended way to install this script is to copy to # The recommended way to install this script is to copy to '~/.zsh/_git', and
# '~/.zsh/completion/_git', and then add the following to your ~/.zshrc file: # then add the following to your ~/.zshrc file:
# #
# fpath=(~/.zsh/completion $fpath) # fpath=(~/.zsh $fpath)
complete () complete ()
{ {
@ -21,8 +22,23 @@ complete ()
return 0 return 0
} }
zstyle -T ':completion:*:*:git:*' tag-order && \
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
zstyle -s ":completion:*:*:git:*" script script 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" ZSH_VERSION='' . "$script"
__gitcomp () __gitcomp ()
@ -69,18 +85,131 @@ __gitcomp_file ()
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 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 () _git ()
{ {
local _ret=1 local _ret=1
() { local cur cword prev
emulate -L ksh
local cur cword prev cur=${words[CURRENT]}
cur=${words[CURRENT-1]} prev=${words[CURRENT-1]}
prev=${words[CURRENT-2]} let cword=CURRENT-1
let cword=CURRENT-1
__${service}_main if (( $+functions[__${service}_zsh_main] )); then
} __${service}_zsh_main
let _ret && _default -S '' && _ret=0 else
emulate ksh -c __${service}_main
fi
let _ret && _default && _ret=0
return _ret return _ret
} }

View file

@ -33,8 +33,6 @@ esac
# returns location of .git repo # returns location of .git repo
__gitdir () __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 [ -z "${1-}" ]; then
if [ -n "${__git_dir-}" ]; then if [ -n "${__git_dir-}" ]; then
echo "$__git_dir" echo "$__git_dir"
@ -53,19 +51,6 @@ __gitdir ()
fi 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: # The following function is based on code from:
# #
# bash_completion - programmable completion functions for bash 3.2+ # bash_completion - programmable completion functions for bash 3.2+
@ -195,8 +180,18 @@ _get_comp_words_by_ref ()
} }
fi fi
# Generates completion reply with compgen, appending a space to possible __gitcompadd ()
# completion words, if necessary. {
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: # It accepts 1 to 4 arguments:
# 1: List of possible completion words. # 1: List of possible completion words.
# 2: A prefix to be added to each possible completion word (optional). # 2: A prefix to be added to each possible completion word (optional).
@ -208,19 +203,25 @@ __gitcomp ()
case "$cur_" in case "$cur_" in
--*=) --*=)
COMPREPLY=()
;; ;;
*) *)
local IFS=$'\n' local c i=0 IFS=$' \t\n'
COMPREPLY=($(compgen -P "${2-}" \ for c in $1; do
-W "$(__gitcomp_1 "${1-}" "${4-}")" \ c="$c${4-}"
-- "$cur_")) if [[ $c == "$cur_"* ]]; then
case $c in
--*=*|*.) ;;
*) c="$c " ;;
esac
COMPREPLY[i++]="${2-}$c"
fi
done
;; ;;
esac esac
} }
# Generates completion reply with compgen from newline-separated possible # Generates completion reply from newline-separated possible completion words
# completion words by appending a space to all of them. # by appending a space to all of them.
# It accepts 1 to 4 arguments: # It accepts 1 to 4 arguments:
# 1: List of possible completion words, separated by a single newline. # 1: List of possible completion words, separated by a single newline.
# 2: A prefix to be added to each possible completion word (optional). # 2: A prefix to be added to each possible completion word (optional).
@ -231,7 +232,7 @@ __gitcomp ()
__gitcomp_nl () __gitcomp_nl ()
{ {
local IFS=$'\n' 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 # Generates completion reply with compgen from newline-separated possible
@ -249,106 +250,50 @@ __gitcomp_file ()
# since tilde expansion is not applied. # since tilde expansion is not applied.
# This means that COMPREPLY will be empty and Bash default # This means that COMPREPLY will be empty and Bash default
# completion will be used. # completion will be used.
COMPREPLY=($(compgen -P "${2-}" -W "$1" -- "${3-$cur}")) __gitcompadd "$1" "${2-}" "${3-$cur}" ""
# Tell Bash that compspec generates filenames. # use a hack to enable file mode in bash < 4
compopt -o filenames 2>/dev/null compopt -o filenames +o nospace 2>/dev/null ||
compgen -f /non-existing-dir/ > /dev/null
} }
__git_index_file_list_filter_compat () # 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
local path # committed. It return paths relative to the directory specified in the first
# argument, and using the options specified in the second argument.
while read -r path; do
case "$path" in
?*/*) echo "${path%%/*}/" ;;
*) echo "$path" ;;
esac
done
}
__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.
__git_ls_files_helper () __git_ls_files_helper ()
{ {
( (
test -n "${CDPATH+set}" && unset CDPATH test -n "${CDPATH+set}" && unset CDPATH
# NOTE: $2 is not quoted in order to support multiple options cd "$1"
cd "$1" && git ls-files --exclude-standard $2 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 ) 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: # __git_index_files accepts 1 or 2 arguments:
# 1: Options to pass to ls-files (required). # 1: Options to pass to ls-files (required).
# Supported options are --cached, --modified, --deleted, --others,
# and --directory.
# 2: A directory path (optional). # 2: A directory path (optional).
# If provided, only files within the specified directory are listed. # If provided, only files within the specified directory are listed.
# Sub directories are never recursed. Path must have a trailing # Sub directories are never recursed. Path must have a trailing
# slash. # slash.
__git_index_files () __git_index_files ()
{ {
local dir="$(__gitdir)" root="${2-.}" local dir="$(__gitdir)" root="${2-.}" file
if [ -d "$dir" ]; then if [ -d "$dir" ]; then
__git_ls_files_helper "$root" "$1" | __git_index_file_list_filter | __git_ls_files_helper "$root" "$1" |
sort | uniq while read -r file; do
fi case "$file" in
} ?*/*) echo "${file%%/*}" ;;
*) echo "$file" ;;
# __git_diff_index_files accepts 1 or 2 arguments: esac
# 1) The id of a tree object. done | sort | uniq
# 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
fi fi
} }
@ -424,14 +369,8 @@ __git_refs ()
done done
;; ;;
*) *)
git ls-remote "$dir" HEAD ORIG_HEAD 'refs/tags/*' 'refs/heads/*' 'refs/remotes/*' 2>/dev/null | \ echo "HEAD"
while read -r hash i; do git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
case "$i" in
*^{}) ;;
refs/*) echo "${i#refs/*/}" ;;
*) echo "$i" ;;
esac
done
;; ;;
esac esac
} }
@ -549,44 +488,23 @@ __git_complete_revlist_file ()
} }
# __git_complete_index_file requires 1 argument: the options to pass to # __git_complete_index_file requires 1 argument:
# ls-file # 1: the options to pass to ls-file
#
# The exception is --committable, which finds the files appropriate commit.
__git_complete_index_file () __git_complete_index_file ()
{ {
local pfx cur_="$cur" local pfx="" cur_="$cur"
case "$cur_" in case "$cur_" in
?*/*) ?*/*)
pfx="${cur_%/*}" pfx="${cur_%/*}"
cur_="${cur_##*/}" cur_="${cur_##*/}"
pfx="${pfx}/" pfx="${pfx}/"
__gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
;;
*)
__gitcomp_file "$(__git_index_files "$1")" "" "$cur_"
;; ;;
esac esac
}
# __git_complete_diff_index_file requires 1 argument: the id of a tree __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
# 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
} }
__git_complete_file () __git_complete_file ()
@ -614,7 +532,6 @@ __git_complete_remote_or_refspec ()
case "$cmd" in case "$cmd" in
push) no_complete_refspec=1 ;; push) no_complete_refspec=1 ;;
fetch) fetch)
COMPREPLY=()
return return
;; ;;
*) ;; *) ;;
@ -630,7 +547,6 @@ __git_complete_remote_or_refspec ()
return return
fi fi
if [ $no_complete_refspec = 1 ]; then if [ $no_complete_refspec = 1 ]; then
COMPREPLY=()
return return
fi fi
[ "$remote" = "." ] && remote= [ "$remote" = "." ] && remote=
@ -732,6 +648,7 @@ __git_list_porcelain_commands ()
cat-file) : plumbing;; cat-file) : plumbing;;
check-attr) : plumbing;; check-attr) : plumbing;;
check-ignore) : plumbing;; check-ignore) : plumbing;;
check-mailmap) : plumbing;;
check-ref-format) : plumbing;; check-ref-format) : plumbing;;
checkout-index) : plumbing;; checkout-index) : plumbing;;
commit-tree) : plumbing;; commit-tree) : plumbing;;
@ -951,7 +868,6 @@ _git_am ()
" "
return return
esac esac
COMPREPLY=()
} }
_git_apply () _git_apply ()
@ -971,7 +887,6 @@ _git_apply ()
" "
return return
esac esac
COMPREPLY=()
} }
_git_add () _git_add ()
@ -1031,7 +946,6 @@ _git_bisect ()
__gitcomp_nl "$(__git_refs)" __gitcomp_nl "$(__git_refs)"
;; ;;
*) *)
COMPREPLY=()
;; ;;
esac esac
} }
@ -1124,9 +1038,14 @@ _git_cherry ()
_git_cherry_pick () _git_cherry_pick ()
{ {
local dir="$(__gitdir)"
if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
__gitcomp "--continue --quit --abort"
return
fi
case "$cur" in case "$cur" in
--*) --*)
__gitcomp "--edit --no-commit" __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
;; ;;
*) *)
__gitcomp_nl "$(__git_refs)" __gitcomp_nl "$(__git_refs)"
@ -1170,7 +1089,6 @@ _git_clone ()
return return
;; ;;
esac esac
COMPREPLY=()
} }
_git_commit () _git_commit ()
@ -1182,13 +1100,6 @@ _git_commit ()
;; ;;
esac esac
case "$prev" in
-c|-C)
__gitcomp_nl "$(__git_refs)" "" "${cur}"
return
;;
esac
case "$cur" in case "$cur" in
--cleanup=*) --cleanup=*)
__gitcomp "default strip verbatim whitespace __gitcomp "default strip verbatim whitespace
@ -1218,7 +1129,7 @@ _git_commit ()
esac esac
if git rev-parse --verify --quiet HEAD >/dev/null; then if git rev-parse --verify --quiet HEAD >/dev/null; then
__git_complete_diff_index_file "HEAD" __git_complete_index_file "--committable"
else else
# This is the first commit # This is the first commit
__git_complete_index_file "--cached" __git_complete_index_file "--cached"
@ -1251,7 +1162,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
--no-prefix --src-prefix= --dst-prefix= --no-prefix --src-prefix= --dst-prefix=
--inter-hunk-context= --inter-hunk-context=
--patience --histogram --minimal --patience --histogram --minimal
--raw --raw --word-diff
--dirstat --dirstat= --dirstat-by-file --dirstat --dirstat= --dirstat-by-file
--dirstat-by-file= --cumulative --dirstat-by-file= --cumulative
--diff-algorithm= --diff-algorithm=
@ -1299,7 +1210,7 @@ _git_difftool ()
return return
;; ;;
esac esac
__git_complete_file __git_complete_revlist_file
} }
__git_fetch_options=" __git_fetch_options="
@ -1319,11 +1230,12 @@ _git_fetch ()
} }
__git_format_patch_options=" __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 --numbered --start-number --numbered-files --keep-subject --signoff
--signature --no-signature --in-reply-to= --cc= --full-index --binary --signature --no-signature --in-reply-to= --cc= --full-index --binary
--not --all --cover-letter --no-prefix --src-prefix= --dst-prefix= --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
--inline --suffix= --ignore-if-in-upstream --subject-prefix= --inline --suffix= --ignore-if-in-upstream --subject-prefix=
--output-directory --reroll-count --to= --quiet --notes
" "
_git_format_patch () _git_format_patch ()
@ -1354,7 +1266,6 @@ _git_fsck ()
return return
;; ;;
esac esac
COMPREPLY=()
} }
_git_gc () _git_gc ()
@ -1365,7 +1276,6 @@ _git_gc ()
return return
;; ;;
esac esac
COMPREPLY=()
} }
_git_gitk () _git_gitk ()
@ -1442,7 +1352,6 @@ _git_init ()
return return
;; ;;
esac esac
COMPREPLY=()
} }
_git_ls_files () _git_ls_files ()
@ -1578,7 +1487,6 @@ _git_mergetool ()
return return
;; ;;
esac esac
COMPREPLY=()
} }
_git_merge_base () _git_merge_base ()
@ -1819,7 +1727,7 @@ __git_config_get_set_variables ()
_git_config () _git_config ()
{ {
case "$prev" in case "$prev" in
branch.*.remote) branch.*.remote|branch.*.pushremote)
__gitcomp_nl "$(__git_remotes)" __gitcomp_nl "$(__git_remotes)"
return return
;; ;;
@ -1827,11 +1735,19 @@ _git_config ()
__gitcomp_nl "$(__git_refs)" __gitcomp_nl "$(__git_refs)"
return return
;; ;;
branch.*.rebase)
__gitcomp "false true"
return
;;
remote.pushdefault)
__gitcomp_nl "$(__git_remotes)"
return
;;
remote.*.fetch) remote.*.fetch)
local remote="${prev#remote.}" local remote="${prev#remote.}"
remote="${remote%.fetch}" remote="${remote%.fetch}"
if [ -z "$cur" ]; then if [ -z "$cur" ]; then
COMPREPLY=("refs/heads/") __gitcomp_nl "refs/heads/" "" "" ""
return return
fi fi
__gitcomp_nl "$(__git_refs_remotes "$remote")" __gitcomp_nl "$(__git_refs_remotes "$remote")"
@ -1866,6 +1782,10 @@ _git_config ()
" "
return return
;; ;;
diff.submodule)
__gitcomp "log short"
return
;;
help.format) help.format)
__gitcomp "man info web html" __gitcomp "man info web html"
return return
@ -1891,7 +1811,6 @@ _git_config ()
return return
;; ;;
*.*) *.*)
COMPREPLY=()
return return
;; ;;
esac esac
@ -1908,7 +1827,7 @@ _git_config ()
;; ;;
branch.*.*) branch.*.*)
local pfx="${cur%.*}." cur_="${cur##*.}" local pfx="${cur%.*}." cur_="${cur##*.}"
__gitcomp "remote merge mergeoptions rebase" "$pfx" "$cur_" __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
return return
;; ;;
branch.*) branch.*)
@ -2039,7 +1958,6 @@ _git_config ()
core.fileMode core.fileMode
core.fsyncobjectfiles core.fsyncobjectfiles
core.gitProxy core.gitProxy
core.ignoreCygwinFSTricks
core.ignoreStat core.ignoreStat
core.ignorecase core.ignorecase
core.logAllRefUpdates core.logAllRefUpdates
@ -2061,13 +1979,14 @@ _git_config ()
core.whitespace core.whitespace
core.worktree core.worktree
diff.autorefreshindex diff.autorefreshindex
diff.statGraphWidth
diff.external diff.external
diff.ignoreSubmodules diff.ignoreSubmodules
diff.mnemonicprefix diff.mnemonicprefix
diff.noprefix diff.noprefix
diff.renameLimit diff.renameLimit
diff.renames diff.renames
diff.statGraphWidth
diff.submodule
diff.suppressBlankEmpty diff.suppressBlankEmpty
diff.tool diff.tool
diff.wordRegex diff.wordRegex
@ -2202,6 +2121,7 @@ _git_config ()
receive.fsckObjects receive.fsckObjects
receive.unpackLimit receive.unpackLimit
receive.updateserverinfo receive.updateserverinfo
remote.pushdefault
remotes. remotes.
repack.usedeltabaseoffset repack.usedeltabaseoffset
rerere.autoupdate rerere.autoupdate
@ -2272,7 +2192,6 @@ _git_remote ()
__gitcomp "$c" __gitcomp "$c"
;; ;;
*) *)
COMPREPLY=()
;; ;;
esac esac
} }
@ -2356,7 +2275,7 @@ _git_show ()
return return
;; ;;
esac esac
__git_complete_file __git_complete_revlist_file
} }
_git_show_branch () _git_show_branch ()
@ -2388,8 +2307,6 @@ _git_stash ()
*) *)
if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
__gitcomp "$subcommands" __gitcomp "$subcommands"
else
COMPREPLY=()
fi fi
;; ;;
esac esac
@ -2402,14 +2319,12 @@ _git_stash ()
__gitcomp "--index --quiet" __gitcomp "--index --quiet"
;; ;;
show,--*|drop,--*|branch,--*) show,--*|drop,--*|branch,--*)
COMPREPLY=()
;; ;;
show,*|apply,*|drop,*|pop,*|branch,*) show,*|apply,*|drop,*|pop,*|branch,*)
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \ __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
| sed -n -e 's/:.*//p')" | sed -n -e 's/:.*//p')"
;; ;;
*) *)
COMPREPLY=()
;; ;;
esac esac
fi fi
@ -2419,7 +2334,7 @@ _git_submodule ()
{ {
__git_has_doubledash && return __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 if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
case "$cur" in case "$cur" in
--*) --*)
@ -2451,7 +2366,7 @@ _git_svn ()
--no-metadata --use-svm-props --use-svnsync-props --no-metadata --use-svm-props --use-svnsync-props
--log-window-size= --no-checkout --quiet --log-window-size= --no-checkout --quiet
--repack-flags --use-log-author --localtime --repack-flags --use-log-author --localtime
--ignore-paths= $remote_opts --ignore-paths= --include-paths= $remote_opts
" "
local init_opts=" local init_opts="
--template= --shared= --trunk= --tags= --template= --shared= --trunk= --tags=
@ -2526,7 +2441,6 @@ _git_svn ()
__gitcomp "--revision= --parent" __gitcomp "--revision= --parent"
;; ;;
*) *)
COMPREPLY=()
;; ;;
esac esac
fi fi
@ -2551,13 +2465,10 @@ _git_tag ()
case "$prev" in case "$prev" in
-m|-F) -m|-F)
COMPREPLY=()
;; ;;
-*|tag) -*|tag)
if [ $f = 1 ]; then if [ $f = 1 ]; then
__gitcomp_nl "$(__git_tags)" __gitcomp_nl "$(__git_tags)"
else
COMPREPLY=()
fi fi
;; ;;
*) *)
@ -2579,9 +2490,10 @@ __git_main ()
i="${words[c]}" i="${words[c]}"
case "$i" in case "$i" in
--git-dir=*) __git_dir="${i#--git-dir=}" ;; --git-dir=*) __git_dir="${i#--git-dir=}" ;;
--git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
--bare) __git_dir="." ;; --bare) __git_dir="." ;;
--help) command="help"; break ;; --help) command="help"; break ;;
-c) c=$((++c)) ;; -c|--work-tree|--namespace) ((c++)) ;;
-*) ;; -*) ;;
*) command="$i"; break ;; *) command="$i"; break ;;
esac esac
@ -2599,6 +2511,7 @@ __git_main ()
--exec-path --exec-path
--exec-path= --exec-path=
--html-path --html-path
--man-path
--info-path --info-path
--work-tree= --work-tree=
--namespace= --namespace=
@ -2693,35 +2606,19 @@ if [[ -n ${ZSH_VERSION-} ]]; then
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 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 () _git ()
{ {
emulate -L zsh local _ret=1 cur cword prev
local _ret=1 cur=${words[CURRENT]}
__git_zsh_helper prev=${words[CURRENT-1]}
let _ret && _default -S '' && _ret=0 let cword=CURRENT-1
emulate ksh -c __${service}_main
let _ret && _default && _ret=0
return _ret return _ret
} }
compdef _git git gitk compdef _git git gitk
return 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 fi
__git_func_wrap () __git_func_wrap ()

View file

@ -3,7 +3,7 @@
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Distributed under the GNU General Public License, version 2.0. # 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: # To enable:
# #
@ -13,23 +13,27 @@
# 3a) Change your PS1 to call __git_ps1 as # 3a) Change your PS1 to call __git_ps1 as
# command-substitution: # command-substitution:
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # 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. # the optional argument will be used as format string.
# 3b) Alternatively, if you are using bash, __git_ps1 can be # 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
# used for PROMPT_COMMAND with two parameters, <pre> and # be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
# <post>, which are strings you would put in $PS1 before # with two parameters, <pre> and <post>, which are strings
# and after the status string generated by the git-prompt # you would put in $PS1 before and after the status string
# machinery. e.g. # generated by the git-prompt machinery. e.g.
# PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "' # Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
# will show username, at-sign, host, colon, cwd, then # will show username, at-sign, host, colon, cwd, then
# various status string, followed by dollar and SP, as # various status string, followed by dollar and SP, as
# your prompt. # 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 # Optionally, you can supply a third argument with a printf
# format string to finetune the output of the branch status # format string to finetune the output of the branch status
# #
# The argument to __git_ps1 will be displayed only if you are currently # The repository status will be displayed only if you are currently in a
# in a git repository. The %s token will be the name of the current # git repository. The %s token is the placeholder for the shown status.
# branch. #
# The prompt status always includes the current branch name.
# #
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value, # In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
# unstaged (*) and staged (+) changes will be shown next to the branch # 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 # 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 # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb". # the colored output of "git status -sb" and are available only when
# using __git_ps1 for PROMPT_COMMAND or precmd.
# __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
}
# stores the divergence from upstream in $p # stores the divergence from upstream in $p
# used by GIT_PS1_SHOWUPSTREAM # used by GIT_PS1_SHOWUPSTREAM
@ -124,7 +105,7 @@ __git_ps1_show_upstream ()
fi fi
;; ;;
svn-remote.*.url) svn-remote.*.url)
svn_remote[ $((${#svn_remote[@]} + 1)) ]="$value" svn_remote[$((${#svn_remote[@]} + 1))]="$value"
svn_url_pattern+="\\|$value" svn_url_pattern+="\\|$value"
upstream=svn+git # default upstream is SVN if available, else git upstream=svn+git # default upstream is SVN if available, else git
;; ;;
@ -146,10 +127,11 @@ __git_ps1_show_upstream ()
svn*) svn*)
# get the upstream from the "git-svn-id: ..." in a commit message # get the upstream from the "git-svn-id: ..." in a commit message
# (git-svn uses essentially the same procedure internally) # (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)) --grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
if [[ 0 -ne ${#svn_upstream[@]} ]]; then if [[ 0 -ne ${#svn_upstream[@]} ]]; then
svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]} svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
svn_upstream=${svn_upstream%@*} svn_upstream=${svn_upstream%@*}
local n_stop="${#svn_remote[@]}" local n_stop="${#svn_remote[@]}"
for ((n=1; n <= n_stop; n++)); do 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) # __git_ps1 accepts 0 or 1 arguments (i.e., format string)
# when called from PS1 using command substitution # when called from PS1 using command substitution
@ -254,39 +281,83 @@ __git_ps1 ()
;; ;;
esac esac
local g="$(__gitdir)" local repo_info rev_parse_exit_code
if [ -z "$g" ]; then 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 if [ $pcmode = yes ]; then
#In PC mode PS1 always needs to be set #In PC mode PS1 always needs to be set
PS1="$ps1pc_start$ps1pc_end" PS1="$ps1pc_start$ps1pc_end"
fi fi
else return
local r="" fi
local b=""
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 if [ -f "$g/rebase-merge/interactive" ]; then
r="|REBASE-i" r="|REBASE-i"
b="$(cat "$g/rebase-merge/head-name")"
elif [ -d "$g/rebase-merge" ]; then
r="|REBASE-m"
b="$(cat "$g/rebase-merge/head-name")"
else else
if [ -d "$g/rebase-apply" ]; then r="|REBASE-m"
if [ -f "$g/rebase-apply/rebasing" ]; then fi
r="|REBASE" else
elif [ -f "$g/rebase-apply/applying" ]; then if [ -d "$g/rebase-apply" ]; then
r="|AM" read step 2>/dev/null <"$g/rebase-apply/next"
else read total 2>/dev/null <"$g/rebase-apply/last"
r="|AM/REBASE" if [ -f "$g/rebase-apply/rebasing" ]; then
fi read b 2>/dev/null <"$g/rebase-apply/head-name"
elif [ -f "$g/MERGE_HEAD" ]; then r="|REBASE"
r="|MERGING" elif [ -f "$g/rebase-apply/applying" ]; then
elif [ -f "$g/CHERRY_PICK_HEAD" ]; then r="|AM"
r="|CHERRY-PICKING" else
elif [ -f "$g/BISECT_LOG" ]; then r="|AM/REBASE"
r="|BISECTING"
fi 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
b="$(git symbolic-ref HEAD 2>/dev/null)" || { if [ -n "$b" ]; then
:
elif [ -h "$g/HEAD" ]; then
# symlink symbolic ref
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
local head=""
if ! read head 2>/dev/null <"$g/HEAD"; then
if [ $pcmode = yes ]; then
PS1="$ps1pc_start$ps1pc_end"
fi
return
fi
# is it a symbolic ref?
b="${head#ref: }"
if [ "$head" = "$b" ]; then
detached=yes detached=yes
b="$( b="$(
case "${GIT_PS1_DESCRIBE_STYLE-}" in case "${GIT_PS1_DESCRIBE_STYLE-}" in
@ -300,100 +371,75 @@ __git_ps1 ()
git describe --tags --exact-match HEAD ;; git describe --tags --exact-match HEAD ;;
esac 2>/dev/null)" || esac 2>/dev/null)" ||
b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." || b="$short_sha..."
b="unknown"
b="($b)" b="($b)"
}
fi
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:"
else
b="GIT_DIR!"
fi 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="$"
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_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/}"
if [ $detached = no ]; then
branch_color="$ok_color"
else
branch_color="$bad_color"
fi
# Setting gitstring directly with \[ and \] around colors
# is necessary to prevent wrapping issues!
gitstring="\[$branch_color\]$branchstring\[$c_clear\]"
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
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"
fi 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=""
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
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" ] &&
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
fi
local z="${GIT_PS1_STATESEPARATOR-" "}"
# NO color option unless in PROMPT_COMMAND mode
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
__git_ps1_colorize_gitstring
fi
local f="$w$i$s$u"
local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
if [ $pcmode = yes ]; then
if [[ -n ${ZSH_VERSION-} ]]; then
gitstring=$(printf -- "$printf_format" "$gitstring")
else
printf -v gitstring -- "$printf_format" "$gitstring"
fi
PS1="$ps1pc_start$gitstring$ps1pc_end"
else
printf -- "$printf_format" "$gitstring"
fi
} }

View file

@ -84,5 +84,14 @@ exist_gh() { # [DIRECTORY]
git push -u origin master git push -u origin master
} }
# git.io "GitHub URL"
#
# Shorten GitHub url, example:
# https://github.com/nvogel/dotzsh > http://git.io/8nU25w
# source: https://github.com/nvogel/dotzsh
# documentation: https://github.com/blog/985-git-io-github-url-shortener
#
git.io() {curl -i -s http://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "}
# End Functions ############################################################# # End Functions #############################################################

View file

@ -1,7 +1,7 @@
function gi() { curl http://gitignore.io/api/$@ ;} function gi() { curl http://www.gitignore.io/api/$@ ;}
_gitignireio_get_command_list() { _gitignireio_get_command_list() {
curl -s http://gitignore.io/api/list | tr "," "\n" curl -s http://www.gitignore.io/api/list | tr "," "\n"
} }
_gitignireio () { _gitignireio () {

1150
plugins/glassfish/_asadmin Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
# if there is a user named 'glassfish' on the system, we'll assume
# that is the user asadmin should be run as
# grep -e '^glassfish' /etc/passwd > /dev/null && alias asadmin='sudo -u glassfish asadmin'

View file

@ -1,151 +0,0 @@
# 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

1
plugins/go/go.plugin.zsh Symbolic link
View file

@ -0,0 +1 @@
../golang/golang.plugin.zsh

View file

@ -1,9 +1,10 @@
# From : http://golang.org/misc/zsh/go?m=text # install in /etc/zsh/zshrc or your personal .zshrc
# gc # gc
prefixes=(5 6 8) prefixes=(5 6 8)
for p in $prefixes; do for p in $prefixes; do
compctl -g "*.${p}" ${p}l compctl -g "*.${p}" ${p}l
compctl -g "*.go" ${p}g compctl -g "*.go" ${p}g
done done
# standard go tools # standard go tools
@ -19,6 +20,7 @@ __go_tool_complete() {
'build[compile packages and dependencies]' 'build[compile packages and dependencies]'
'clean[remove object files]' 'clean[remove object files]'
'doc[run godoc on package sources]' 'doc[run godoc on package sources]'
'env[print Go environment information]'
'fix[run go tool fix on packages]' 'fix[run go tool fix on packages]'
'fmt[run gofmt on package sources]' 'fmt[run gofmt on package sources]'
'get[download and install packages and dependencies]' 'get[download and install packages and dependencies]'
@ -39,12 +41,17 @@ __go_tool_complete() {
build_flags=( build_flags=(
'-a[force reinstallation of packages that are already up-to-date]' '-a[force reinstallation of packages that are already up-to-date]'
'-n[print the commands but do not run them]' '-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]' '-x[print the commands]'
"-work[print temporary directory name and keep it]" '-work[print temporary directory name and keep it]'
"-gcflags[flags for 5g/6g/8g]:flags" '-ccflags[flags for 5c/6c/8c]:flags'
"-ldflags[flags for 5l/6l/8l]:flags" '-gcflags[flags for 5g/6g/8g]:flags'
"-gccgoflags[flags for gccgo]: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() { __go_list() {
local expl importpaths local expl importpaths
@ -62,7 +69,7 @@ __go_tool_complete() {
install) install)
_arguments -s -w : ${build_flags[@]} \ _arguments -s -w : ${build_flags[@]} \
"-v[show package names]" \ "-v[show package names]" \
'*:importpaths:__go_list' '*:importpaths:__go_list'
;; ;;
get) get)
_arguments -s -w : \ _arguments -s -w : \
@ -87,7 +94,10 @@ __go_tool_complete() {
"-cpu[values of GOMAXPROCS to use]:number list" \ "-cpu[values of GOMAXPROCS to use]:number list" \
"-run[run tests and examples matching regexp]:regexp" \ "-run[run tests and examples matching regexp]:regexp" \
"-bench[run benchmarks 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" \ "-timeout[kill test after that duration]:duration" \
"-cpuprofile[write CPU profile to file]:file:_files" \ "-cpuprofile[write CPU profile to file]:file:_files" \
"-memprofile[write heap profile to file]:file:_files" \ "-memprofile[write heap profile to file]:file:_files" \
@ -97,7 +107,7 @@ __go_tool_complete() {
help) help)
_values "${commands[@]}" \ _values "${commands[@]}" \
'gopath[GOPATH environment variable]' \ 'gopath[GOPATH environment variable]' \
'importpath[description of import paths]' \ 'packages[description of package lists]' \
'remote[remote import path syntax]' \ 'remote[remote import path syntax]' \
'testflag[description of testing flags]' \ 'testflag[description of testing flags]' \
'testfunc[description of testing functions]' 'testfunc[description of testing functions]'

View file

@ -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} "$@" ;
}

View file

@ -0,0 +1,16 @@
# JSON Tools
# Adds command line aliases useful for dealing with JSON
if [[ $(whence $JSONTOOLS_METHOD) = "" ]]; then
JSONTOOLS_METHOD=""
fi
if [[ $(whence node) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xnode" ) ]]; then
alias pp_json='node -e "console.log(JSON.stringify(process.argv[1]), null, 4)"'
elif [[ $(whence python) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xpython" ) ]]; then
alias pp_json='python -mjson.tool'
elif [[ $(whence ruby) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xruby" ) ]]; then
alias pp_json='ruby -e "require \"json\"; require \"yaml\"; puts JSON.parse(STDIN.read).to_yaml"'
fi
unset JSONTOOLS_METHOD

View file

@ -31,7 +31,7 @@ _knife() {
case $state in case $state in
knifecmd) knifecmd)
compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search ssh status upload windows $cloudproviders compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search ssh status upload vault windows $cloudproviders
;; ;;
knifesubcmd) knifesubcmd)
case $words[2] in case $words[2] in
@ -65,6 +65,9 @@ _knife() {
upload) upload)
_arguments '*:file or directory:_files -g "*"' _arguments '*:file or directory:_files -g "*"'
;; ;;
vault)
compadd -Q "$@" create decrypt delete edit remove "rotate all keys" "rotate keys" show update
;;
windows) windows)
compadd "$@" bootstrap compadd "$@" bootstrap
;; ;;

View file

@ -0,0 +1,20 @@
# Laravel4 basic command completion
_laravel4_get_command_list () {
php artisan --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
}
_laravel4 () {
if [ -f artisan ]; then
compadd `_laravel4_get_command_list`
fi
}
compdef _laravel4 artisan
compdef _laravel4 la4
#Alias
alias la4='php artisan'
alias la4dump='php artisan dump-autoload'
alias la4cache='php artisan cache:clear'
alias la4routes='php artisan routes'

View file

@ -36,3 +36,15 @@ alias nomnom='killall'
alias byes='exit' alias byes='exit'
alias cya='reboot' alias cya='reboot'
alias kthxbai='halt' 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'

View file

@ -13,7 +13,7 @@ alias hglr='hg pull --rebase'
alias hgo='hg outgoing' alias hgo='hg outgoing'
alias hgp='hg push' alias hgp='hg push'
alias hgs='hg status' alias hgs='hg status'
alias hgsl='log --limit 20 --template "{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n" ' alias hgsl='hg log --limit 20 --template "{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n" '
# this is the 'git commit --amend' equivalent # this is the 'git commit --amend' equivalent
alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip' alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'

48
plugins/meteor/_meteor Normal file
View file

@ -0,0 +1,48 @@
#compdef meteor
#autoload
# Meteor Autocomplete plugin for Oh-My-Zsh, based on homebrew completion
# Original author: Dimitri JORGE (https://github.com/jorge-d)
_meteor_all_packages() {
packages=(`meteor list | cut -d" " -f1`)
}
_meteor_installed_packages() {
installed_packages=(`meteor list --using`)
}
local -a _1st_arguments
_1st_arguments=(
'run:[Default] Run this project in local development mode'
'create:Create a new project'
'update:Upgrade this project to the latest version of Meteor'
'add:Add a package to this project'
'remove:Remove a package from this project'
'list:List available packages'
'help:Display Meteor help'
'bundle:Pack this project up into a tarball'
'mongo:Connect to the Mongo database for the specified site'
'deploy:Deploy this project to Meteor'
'logs:Show logs for specified site'
'reset:Reset the project state. Erases the local database.'
'test-packages:Test one or more packages'
)
local expl
local -a packages installed_packages
if (( CURRENT == 2 )); then
_describe -t commands "meteor subcommand" _1st_arguments
return
fi
case "$words[2]" in
help)
_describe -t commands "meteor subcommand" _1st_arguments ;;
remove)
_meteor_installed_packages
_wanted installed_packages expl 'installed packages' compadd -a installed_packages ;;
add)
_meteor_all_packages
_wanted packages expl 'all packages' compadd -a packages ;;
esac

View file

@ -52,6 +52,11 @@ alias mvnc='mvn clean'
alias mvncom='mvn compile' alias mvncom='mvn compile'
alias mvnt='mvn test' alias mvnt='mvn test'
alias mvnag='mvn archetype:generate' alias mvnag='mvn archetype:generate'
alias mvn-updates='mvn versions:display-dependency-updates'
alias mvntc7='mvn tomcat7:run'
alias mvntc='mvn tomcat:run'
alias mvnjetty='mvn jetty:run'
function listMavenCompletions { function listMavenCompletions {
reply=( reply=(

View file

@ -1,5 +1,5 @@
if [[ -x `which nc` ]]; then 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 fi

View file

@ -20,6 +20,7 @@ _1st_arguments=(
'bundle:create pybundles (archives containing multiple packages)' 'bundle:create pybundles (archives containing multiple packages)'
'freeze:output all currently installed packages (exact versions) to stdout' 'freeze:output all currently installed packages (exact versions) to stdout'
'help:show available commands' 'help:show available commands'
'show:show information about installed packages'
'install:install packages' 'install:install packages'
'search:search PyPI' 'search:search PyPI'
'uninstall:uninstall packages' 'uninstall:uninstall packages'
@ -58,6 +59,7 @@ case "$words[1]" in
_arguments \ _arguments \
'(-U --upgrade)'{-U,--upgrade}'[upgrade all packages to the newest available version]' \ '(-U --upgrade)'{-U,--upgrade}'[upgrade all packages to the newest available version]' \
'(-f --find-links)'{-f,--find-links}'[URL for finding packages]' \ '(-f --find-links)'{-f,--find-links}'[URL for finding packages]' \
'(-r --requirement)'{-r,--requirement}'[Requirements file for packages to install]:File:_files' \
'(--no-deps --no-dependencies)'{--no-deps,--no-dependencies}'[iIgnore package dependencies]' \ '(--no-deps --no-dependencies)'{--no-deps,--no-dependencies}'[iIgnore package dependencies]' \
'(--no-install)--no-install[only download packages]' \ '(--no-install)--no-install[only download packages]' \
'(--no-download)--no-download[only install downloaded packages]' \ '(--no-download)--no-download[only install downloaded packages]' \
@ -76,4 +78,7 @@ case "$words[1]" in
uninstall) uninstall)
_pip_installed _pip_installed
_wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;; _wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
show)
_pip_installed
_wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
esac esac

View file

@ -19,7 +19,7 @@
# Will Detect if a app does not exist in pow and print a (slightly) helpful # Will Detect if a app does not exist in pow and print a (slightly) helpful
# error message # error message
rack_root_detect(){ rack_root(){
setopt chaselinks setopt chaselinks
local orgdir=$(pwd) local orgdir=$(pwd)
local basedir=$(pwd) local basedir=$(pwd)
@ -32,6 +32,11 @@ rack_root_detect(){
builtin cd $orgdir 2>/dev/null builtin cd $orgdir 2>/dev/null
[[ ${basedir} == "/" ]] && return 1 [[ ${basedir} == "/" ]] && return 1
echo $basedir
}
rack_root_detect(){
basedir=$(rack_root)
echo `basename $basedir | sed -E "s/.(com|net|org)//"` echo `basename $basedir | sed -E "s/.(com|net|org)//"`
} }
@ -51,16 +56,30 @@ kapow(){
compctl -W ~/.pow -/ kapow compctl -W ~/.pow -/ kapow
powit(){ powit(){
local basedir=$(pwd) local basedir=$(pwd)
local vhost=$1 local vhost=$1
[ ! -n "$vhost" ] && vhost=$(rack_root_detect) [ ! -n "$vhost" ] && vhost=$(rack_root_detect)
if [ ! -h ~/.pow/$vhost ] if [ ! -h ~/.pow/$vhost ]
then then
echo "pow: Symlinking your app with pow. ${vhost}" echo "pow: Symlinking your app with pow. ${vhost}"
[ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost [ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost
return 1 return 1
fi fi
} }
powed(){
local basedir=$(rack_root)
find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \;
}
# Restart pow process
# taken from http://www.matthewratzloff.com/blog/2011/12/23/restarting-pow-when-dns-stops-responding
repow(){
lsof | grep 20560 | awk '{print $2}' | xargs kill -9
launchctl unload ~/Library/LaunchAgents/cx.pow.powd.plist
launchctl load ~/Library/LaunchAgents/cx.pow.powd.plist
echo "restarted pow"
}
# View the standard out (puts) from any pow app # View the standard out (puts) from any pow app
alias kaput="tail -f ~/Library/Logs/Pow/apps/*" alias kaput="tail -f ~/Library/Logs/Pow/apps/*"

View file

@ -1,10 +1,10 @@
function _rails_command () { function _rails_command () {
if [ -e "script/server" ]; then if [ -e "bin/rails" ]; then
ruby script/$@ bin/rails $@
elif [ -e "script/rails" ]; then elif [ -e "script/rails" ]; then
ruby script/rails $@ ruby script/rails $@
elif [ -e "bin/rails" ]; then elif [ -e "script/server" ]; then
bin/rails $@ ruby script/$@
else else
rails $@ rails $@
fi fi
@ -51,6 +51,7 @@ alias rds='rake db:seed'
alias rdd='rake db:drop' alias rdd='rake db:drop'
alias rdtc='rake db:test:clone' alias rdtc='rake db:test:clone'
alias rdtp='rake db:test:prepare' alias rdtp='rake db:test:prepare'
alias rdmtc='rake db:migrate db:test:clone'
alias rlc='rake log:clear' alias rlc='rake log:clear'
alias rn='rake notes' alias rn='rake notes'

View file

@ -0,0 +1,51 @@
# rake-fast
# Fast rake autocompletion plugin for oh-my-zsh
# This script caches the output for later usage and significantly speeds it up.
# It generates a .rake_tasks file in parallel to the Rakefile.
# You'll want to add `.rake_tasks` to your global .git_ignore file:
# https://help.github.com/articles/ignoring-files#global-gitignore
# You can force .rake_tasks to refresh with:
# $ rake_refresh
# This is entirely based on Ullrich Schäfer's work
# (https://github.com/robb/.dotfiles/pull/10/),
# which is inspired by this Ruby on Rails trick from 2006:
# http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh/
_rake_refresh () {
if [ -f .rake_tasks ]; then
rm .rake_tasks
fi
echo "Generating .rake_tasks..." > /dev/stderr
_rake_generate
cat .rake_tasks
}
_rake_does_task_list_need_generating () {
if [ ! -f .rake_tasks ]; then return 0;
else
accurate=$(stat -f%m .rake_tasks)
changed=$(stat -f%m Rakefile)
return $(expr $accurate '>=' $changed)
fi
}
_rake_generate () {
rake --silent --tasks | cut -d " " -f 2 > .rake_tasks
}
_rake () {
if [ -f Rakefile ]; then
if _rake_does_task_list_need_generating; then
echo "\nGenerating .rake_tasks..." > /dev/stderr
_rake_generate
fi
compadd `cat .rake_tasks`
fi
}
compdef _rake rake
alias rake_refresh='_rake_refresh'

View file

@ -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 rake="noglob rake" # allows square brackts for rake task invocation
alias brake='noglob bundle exec rake' # execute the bundled rake gem alias brake='noglob bundle exec rake' # execute the bundled rake gem
alias srake='noglob sudo rake' # noglob must come before sudo alias srake='noglob sudo rake' # noglob must come before sudo

View file

@ -15,7 +15,10 @@ fi
for rbenvdir in "${rbenvdirs[@]}" ; do for rbenvdir in "${rbenvdirs[@]}" ; do
if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then
FOUND_RBENV=1 FOUND_RBENV=1
export RBENV_ROOT=$rbenvdir if [[ $RBENV_ROOT = '' ]]; then
RBENV_ROOT=$rbenvdir
fi
export RBENV_ROOT
export PATH=${rbenvdir}/bin:$PATH export PATH=${rbenvdir}/bin:$PATH
eval "$(rbenv init --no-rehash - zsh)" eval "$(rbenv init --no-rehash - zsh)"

122
plugins/scd/README.md Normal file
View file

@ -0,0 +1,122 @@
# scd - smart change of directory
Define `scd` shell function for changing to any directory with
a few keystrokes.
`scd` keeps history of the visited directories, which serves as an index of
the known paths. The directory index is updated after every `cd` command in
the shell and can be also filled manually by running `scd -a`. To switch to
some directory, `scd` needs few fragments of the desired path to match with
the index. A selection menu is displayed in case of several matches, with a
preference given to recently visited paths. `scd` can create permanent
directory aliases, which appear as named directories in zsh session.
## INSTALLATION
For oh-my-zsh, add `scd` to the `plugins` array in the ~/.zshrc file as in the
[template file](../../templates/zshrc.zsh-template#L45).
Besides zsh, `scd` can be used with *bash*, *dash* or *tcsh*
shells and is also available as [Vim](http://www.vim.org/) plugin and
[IPython](http://ipython.org/) extension. For installation details, see
https://github.com/pavoljuhas/smart-change-directory.
## SYNOPSIS
```sh
scd [options] [pattern1 pattern2 ...]
```
## OPTIONS
<dl><dt>
-a, --add</dt><dd>
add specified directories to the directory index.</dd><dt>
--unindex</dt><dd>
remove specified directories from the index.</dd><dt>
-r, --recursive</dt><dd>
apply options <em>--add</em> or <em>--unindex</em> recursively.</dd><dt>
--alias=ALIAS</dt><dd>
create alias for the current or specified directory and save it to
<em>~/.scdalias.zsh</em>.</dd><dt>
--unalias</dt><dd>
remove ALIAS definition for the current or specified directory from
<em>~/.scdalias.zsh</em>.</dd><dt>
--list</dt><dd>
show matching directories and exit.</dd><dt>
-v, --verbose</dt><dd>
display directory rank in the selection menu.</dd><dt>
-h, --help</dt><dd>
display this options summary and exit.</dd>
</dl>
## Examples
```sh
# Index recursively some paths for the very first run
scd -ar ~/Documents/
# Change to a directory path matching "doc"
scd doc
# Change to a path matching all of "a", "b" and "c"
scd a b c
# Change to a directory path that ends with "ts"
scd "ts(#e)"
# Show selection menu and ranking of 20 most likely directories
scd -v
# Alias current directory as "xray"
scd --alias=xray
# Jump to a previously defined aliased directory
scd xray
```
# FILES
<dl><dt>
~/.scdhistory</dt><dd>
time-stamped index of visited directories.</dd><dt>
~/.scdalias.zsh</dt><dd>
scd-generated definitions of directory aliases.</dd>
</dl>
# ENVIRONMENT
<dl><dt>
SCD_HISTFILE</dt><dd>
path to the scd index file (by default ~/.scdhistory).</dd><dt>
SCD_HISTSIZE</dt><dd>
maximum number of entries in the index (5000). Index is trimmed when it
exceeds <em>SCD_HISTSIZE</em> by more than 20%.</dd><dt>
SCD_MENUSIZE</dt><dd>
maximum number of items for directory selection menu (20).</dd><dt>
SCD_MEANLIFE</dt><dd>
mean lifetime in seconds for exponential decay of directory
likelihood (86400).</dd><dt>
SCD_THRESHOLD</dt><dd>
threshold for cumulative directory likelihood. Directories with
a lower likelihood compared to the best match are excluded (0.005).
</dd><dt>
SCD_SCRIPT</dt><dd>
command script file where scd writes the final <code>cd</code>
command. This variable must be defined when scd runs in its own
process rather than as a shell function. It is up to the
scd caller to use the output in <em>SCD_SCRIPT</em>.</dd>
</dl>

353
plugins/scd/scd Executable file
View file

@ -0,0 +1,353 @@
#!/bin/zsh -f
emulate -L zsh
local EXIT=return
if [[ $(whence -w $0) == *:' 'command ]]; then
emulate -R zsh
local RUNNING_AS_COMMAND=1
EXIT=exit
fi
local DOC='scd -- smart change to a recently used directory
usage: scd [options] [pattern1 pattern2 ...]
Go to a directory path that contains all fixed string patterns. Prefer
recently visited directories and directories with patterns in their tail
component. Display a selection menu in case of multiple matches.
Options:
-a, --add add specified directories to the directory index
--unindex remove specified directories from the index
-r, --recursive apply options --add or --unindex recursively
--alias=ALIAS create alias for the current or specified directory and
store it in ~/.scdalias.zsh
--unalias remove ALIAS definition for the current or specified
directory from ~/.scdalias.zsh
--list show matching directories and exit
-v, --verbose display directory rank in the selection menu
-h, --help display this message and exit
'
local SCD_HISTFILE=${SCD_HISTFILE:-${HOME}/.scdhistory}
local SCD_HISTSIZE=${SCD_HISTSIZE:-5000}
local SCD_MENUSIZE=${SCD_MENUSIZE:-20}
local SCD_MEANLIFE=${SCD_MEANLIFE:-86400}
local SCD_THRESHOLD=${SCD_THRESHOLD:-0.005}
local SCD_SCRIPT=${RUNNING_AS_COMMAND:+$SCD_SCRIPT}
local SCD_ALIAS=~/.scdalias.zsh
local ICASE a d m p i tdir maxrank threshold
local opt_help opt_add opt_unindex opt_recursive opt_verbose
local opt_alias opt_unalias opt_list
local -A drank dalias
local dmatching
local last_directory
setopt extendedhistory extendedglob noautonamedirs brace_ccl
# If SCD_SCRIPT is defined make sure the file exists and is empty.
# This removes any previous old commands.
[[ -n "$SCD_SCRIPT" ]] && [[ -s $SCD_SCRIPT || ! -f $SCD_SCRIPT ]] && (
umask 077
: >| $SCD_SCRIPT
)
# process command line options
zmodload -i zsh/zutil
zmodload -i zsh/datetime
zparseopts -D -- a=opt_add -add=opt_add -unindex=opt_unindex \
r=opt_recursive -recursive=opt_recursive \
-alias:=opt_alias -unalias=opt_unalias -list=opt_list \
v=opt_verbose -verbose=opt_verbose h=opt_help -help=opt_help \
|| $EXIT $?
if [[ -n $opt_help ]]; then
print $DOC
$EXIT
fi
# load directory aliases if they exist
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
# works faster than the (:a) modifier and is compatible with zsh 4.2.6
_scd_Y19oug_abspath() {
set -A $1 ${(ps:\0:)"$(
unfunction -m "*"; shift
for d; do
cd $d && print -Nr -- $PWD && cd $OLDPWD
done
)"}
}
# define directory alias
if [[ -n $opt_alias ]]; then
if [[ -n $1 && ! -d $1 ]]; then
print -u2 "'$1' is not a directory."
$EXIT 1
fi
a=${opt_alias[-1]#=}
_scd_Y19oug_abspath d ${1:-$PWD}
# alias in the current shell, update alias file if successful
hash -d -- $a=$d &&
(
umask 077
hash -dr
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
hash -d -- $a=$d
hash -dL >| $SCD_ALIAS
)
$EXIT $?
fi
# undefine directory alias
if [[ -n $opt_unalias ]]; then
if [[ -n $1 && ! -d $1 ]]; then
print -u2 "'$1' is not a directory."
$EXIT 1
fi
_scd_Y19oug_abspath a ${1:-$PWD}
a=$(print -rD ${a})
if [[ $a != [~][^/]## ]]; then
$EXIT
fi
a=${a#[~]}
# unalias in the current shell, update alias file if successful
if unhash -d -- $a 2>/dev/null && [[ -r $SCD_ALIAS ]]; then
(
umask 077
hash -dr
source $SCD_ALIAS
unhash -d -- $a 2>/dev/null &&
hash -dL >| $SCD_ALIAS
)
fi
$EXIT $?
fi
# Rewrite directory index if it is at least 20% oversized
if [[ -s $SCD_HISTFILE ]] && \
(( $(wc -l <$SCD_HISTFILE) > 1.2 * $SCD_HISTSIZE )); then
m=( ${(f)"$(<$SCD_HISTFILE)"} )
print -lr -- ${m[-$SCD_HISTSIZE,-1]} >| ${SCD_HISTFILE}
fi
# Determine the last recorded directory
if [[ -s ${SCD_HISTFILE} ]]; then
last_directory=${"$(tail -1 ${SCD_HISTFILE})"#*;}
fi
# Internal functions are prefixed with "_scd_Y19oug_".
# The "record" function adds its arguments to the directory index.
_scd_Y19oug_record() {
while [[ -n $last_directory && $1 == $last_directory ]]; do
shift
done
if [[ $# -gt 0 ]]; then
( umask 077
p=": ${EPOCHSECONDS}:0;"
print -lr -- ${p}${^*} >>| $SCD_HISTFILE )
fi
}
if [[ -n $opt_add ]]; then
for d; do
if [[ ! -d $d ]]; then
print -u2 "Directory '$d' does not exist."
$EXIT 2
fi
done
_scd_Y19oug_abspath m ${*:-$PWD}
_scd_Y19oug_record $m
if [[ -n $opt_recursive ]]; then
for d in $m; do
print -n "scanning ${d} ... "
_scd_Y19oug_record ${d}/**/*(-/N)
print "[done]"
done
fi
$EXIT
fi
# take care of removing entries from the directory index
if [[ -n $opt_unindex ]]; then
if [[ ! -s $SCD_HISTFILE ]]; then
$EXIT
fi
# expand existing directories in the argument list
for i in {1..$#}; do
if [[ -d ${argv[i]} ]]; then
_scd_Y19oug_abspath d ${argv[i]}
argv[i]=${d}
fi
done
m="$(awk -v recursive=${opt_recursive} '
BEGIN {
for (i = 2; i < ARGC; ++i) {
argset[ARGV[i]] = 1;
delete ARGV[i];
}
}
1 {
d = $0; sub(/^[^;]*;/, "", d);
if (d in argset) next;
}
recursive {
for (a in argset) {
if (substr(d, 1, length(a) + 1) == a"/") next;
}
}
{ print $0 }
' $SCD_HISTFILE ${*:-$PWD} )" || $EXIT $?
: >| ${SCD_HISTFILE}
[[ ${#m} == 0 ]] || print -r -- $m >> ${SCD_HISTFILE}
$EXIT
fi
# The "action" function is called when there is just one target directory.
_scd_Y19oug_action() {
cd $1 || return $?
if [[ -z $SCD_SCRIPT && -n $RUNNING_AS_COMMAND ]]; then
print -u2 "Warning: running as command with SCD_SCRIPT undefined."
fi
if [[ -n $SCD_SCRIPT ]]; then
print -r "cd ${(q)1}" >| $SCD_SCRIPT
fi
}
# Match and rank patterns to the index file
# set global arrays dmatching and drank
_scd_Y19oug_match() {
## single argument that is an existing directory or directory alias
if [[ $# == 1 ]] && \
[[ -d ${d::=$1} || -d ${d::=${nameddirs[$1]}} ]] && [[ -x $d ]];
then
_scd_Y19oug_abspath dmatching $d
drank[${dmatching[1]}]=1
return
fi
# ignore case unless there is an argument with an uppercase letter
[[ "$*" == *[[:upper:]]* ]] || ICASE='(#i)'
# calculate rank of all directories in the SCD_HISTFILE and keep it as drank
# include a dummy entry for splitting of an empty string is buggy
[[ -s $SCD_HISTFILE ]] && drank=( ${(f)"$(
print -l /dev/null -10
<$SCD_HISTFILE \
awk -v epochseconds=$EPOCHSECONDS -v meanlife=$SCD_MEANLIFE '
BEGIN { FS = "[:;]"; }
length($0) < 4096 && $2 > 0 {
tau = 1.0 * ($2 - epochseconds) / meanlife;
if (tau < -4.61) tau = -4.61;
prec = exp(tau);
sub(/^[^;]*;/, "");
if (NF) ptot[$0] += prec;
}
END { for (di in ptot) { print di; print ptot[di]; } }'
)"}
)
unset "drank[/dev/null]"
# filter drank to the entries that match all arguments
for a; do
p=${ICASE}"*${a}*"
drank=( ${(kv)drank[(I)${~p}]} )
done
# build a list of matching directories reverse-sorted by their probabilities
dmatching=( ${(f)"$(
for d p in ${(kv)drank}; do
print -r -- "$p $d";
done | sort -grk1 | cut -d ' ' -f 2-
)"}
)
# if some directory paths match all patterns in order, discard all others
p=${ICASE}"*${(j:*:)argv}*"
m=( ${(M)dmatching:#${~p}} )
[[ -d ${m[1]} ]] && dmatching=( $m )
# if some directory names match last pattern, discard all others
p=${ICASE}"*${(j:*:)argv}[^/]#"
m=( ${(M)dmatching:#${~p}} )
[[ -d ${m[1]} ]] && dmatching=( $m )
# if some directory names match all patterns, discard all others
m=( $dmatching )
for a; do
p=${ICASE}"*/[^/]#${a}[^/]#"
m=( ${(M)m:#${~p}} )
done
[[ -d ${m[1]} ]] && dmatching=( $m )
# if some directory names match all patterns in order, discard all others
p=${ICASE}"/*${(j:[^/]#:)argv}[^/]#"
m=( ${(M)dmatching:#${~p}} )
[[ -d ${m[1]} ]] && dmatching=( $m )
# do not match $HOME or $PWD when run without arguments
if [[ $# == 0 ]]; then
dmatching=( ${dmatching:#(${HOME}|${PWD})} )
fi
# keep at most SCD_MENUSIZE of matching and valid directories
m=( )
for d in $dmatching; do
[[ ${#m} == $SCD_MENUSIZE ]] && break
[[ -d $d && -x $d ]] && m+=$d
done
dmatching=( $m )
# find the maximum rank
maxrank=0.0
for d in $dmatching; do
[[ ${drank[$d]} -lt maxrank ]] || maxrank=${drank[$d]}
done
# discard all directories below the rank threshold
threshold=$(( maxrank * SCD_THRESHOLD ))
dmatching=( ${^dmatching}(Ne:'(( ${drank[$REPLY]} >= threshold ))':) )
}
_scd_Y19oug_match $*
## process whatever directories that remained
if [[ ${#dmatching} == 0 ]]; then
print -u2 "No matching directory."
$EXIT 1
fi
## build formatted directory aliases for selection menu or list display
for d in $dmatching; do
if [[ -n ${opt_verbose} ]]; then
dalias[$d]=$(printf "%.3g %s" ${drank[$d]} $d)
else
dalias[$d]=$(print -Dr -- $d)
fi
done
## process the --list option
if [[ -n $opt_list ]]; then
for d in $dmatching; do
print -r -- "# ${dalias[$d]}"
print -r -- $d
done
$EXIT
fi
## process single directory match
if [[ ${#dmatching} == 1 ]]; then
_scd_Y19oug_action $dmatching
$EXIT $?
fi
## here we have multiple matches - display selection menu
a=( {a-z} {A-Z} )
p=( )
for i in {1..${#dmatching}}; do
[[ -n ${a[i]} ]] || break
p+="${a[i]}) ${dalias[${dmatching[i]}]}"
done
print -c -r -- $p
if read -s -k 1 d && [[ ${i::=${a[(I)$d]}} -gt 0 ]]; then
_scd_Y19oug_action ${dmatching[i]}
$EXIT $?
fi

View file

@ -0,0 +1,19 @@
## The scd script should autoload as a shell function.
autoload scd
## If the scd function exists, define a change-directory-hook function
## to record visited directories in the scd index.
if [[ ${+functions[scd]} == 1 ]]; then
scd_chpwd_hook() { scd --add $PWD }
autoload add-zsh-hook
add-zsh-hook chpwd scd_chpwd_hook
fi
## Allow scd usage with unquoted wildcard characters such as "*" or "?".
alias scd='noglob scd'
## Load the directory aliases created by scd if any.
if [[ -s ~/.scdalias.zsh ]]; then source ~/.scdalias.zsh; fi

View file

@ -27,7 +27,7 @@
# Florent Thoumie and Jonas Pfenniger # Florent Thoumie and Jonas Pfenniger
# #
local _plugin__ssh_env=$HOME/.ssh/environment-$HOST local _plugin__ssh_env
local _plugin__forwarding local _plugin__forwarding
function _plugin__start_agent() function _plugin__start_agent()
@ -48,6 +48,14 @@ function _plugin__start_agent()
/usr/bin/ssh-add $HOME/.ssh/${^identities} /usr/bin/ssh-add $HOME/.ssh/${^identities}
} }
# Get the filename to store/lookup the environment from
if (( $+commands[scutil] )); then
# It's OS X!
_plugin__ssh_env="$HOME/.ssh/environment-$(scutil --get ComputerName)"
else
_plugin__ssh_env="$HOME/.ssh/environment-$HOST"
fi
# test if agent-forwarding is enabled # test if agent-forwarding is enabled
zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding
if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then

View file

@ -1,25 +1,32 @@
# Sublime Text 2 Aliases # 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 [[ $('uname') == 'Linux' ]]; then
if [ -f '/usr/bin/sublime_text' ]; then local _sublime_linux_paths > /dev/null 2>&1
st_run() { nohup /usr/bin/sublime_text $@ > /dev/null & } _sublime_linux_paths=(
else "$HOME/bin/sublime_text"
st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & } "/opt/sublime_text/sublime_text"
fi "/usr/bin/sublime_text"
alias st=st_run "/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 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 for _sublime_path in $_sublime_darwin_paths; do
if [[ -a $_sublime_path ]]; then if [[ -a $_sublime_path ]]; then

View file

@ -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
}

View file

@ -9,7 +9,7 @@ function svn_prompt_info() {
_DISPLAY=$(svn_get_repo_name) _DISPLAY=$(svn_get_repo_name)
fi fi
echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\
$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" $ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$(svn_dirty_pwd)$ZSH_PROMPT_BASE_COLOR"
unset _DISPLAY unset _DISPLAY
fi fi
} }
@ -74,3 +74,22 @@ function svn_dirty_choose() {
function svn_dirty() { function svn_dirty() {
svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN
} }
function svn_dirty_choose_pwd () {
if in_svn; then
root=`pwd`
if $(svn status $root 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'); then
# Grep exits with 0 when "One or more lines were selected", return "dirty".
echo $1
else
# Otherwise, no lines were found, or an error occurred. Return clean.
echo $2
fi
fi
}
function svn_dirty_pwd () {
svn_dirty_choose_pwd $ZSH_THEME_SVN_PROMPT_DIRTY_PWD $ZSH_THEME_SVN_PROMPT_CLEAN_PWD
}

View file

@ -25,7 +25,7 @@ case $state in
args) args)
case $line[1] in case $line[1] in
start|open|copy|delete) 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 _values 'configs' $_configs
ret=0 ret=0
;; ;;

View file

@ -44,7 +44,7 @@ __task_list ()
__box_list () __box_list ()
{ {
_wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g') _wanted application expl 'command' compadd $(command vagrant box list | sed -e 's/ /\\ /g')
} }
__vm_list () __vm_list ()

View file

@ -17,9 +17,15 @@ function zle-keymap-select zle-line-init zle-line-finish {
zle -N zle-line-init zle -N zle-line-init
zle -N zle-line-finish zle -N zle-line-finish
zle -N zle-keymap-select zle -N zle-keymap-select
zle -N edit-command-line
bindkey -v bindkey -v
# allow v to edit the command line (standard behaviour)
autoload -Uz edit-command-line
bindkey -M vicmd 'v' edit-command-line
# if mode indicator wasn't setup by theme, define default # if mode indicator wasn't setup by theme, define default
if [[ "$MODE_INDICATOR" == "" ]]; then if [[ "$MODE_INDICATOR" == "" ]]; then
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}" MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"

View file

@ -0,0 +1,82 @@
# Vim Interaction #
The plugin presents a function called `callvim` whose usage is:
usage: callvim [-b cmd] [-a cmd] [file ... fileN]
-b cmd Run this command in GVIM before editing the first file
-a cmd Run this command in GVIM after editing the first file
file The file to edit
... fileN The other files to add to the argslist
## Rationale ##
The idea for this script is to give you some decent interaction with a running
GVim session. Normally you'll be running around your filesystem doing any
number of amazing things and you'll need to load some files into GVim for
editing, inspecting, destruction, or other bits of mayhem. This script lets you
do that.
## Aliases ##
There are a few aliases presented as well:
* `v` A shorthand for `callvim`
* `vvsp` Edits the passed in file but first makes a vertical split
* `vhsp` Edits the passed in file but first makes a horizontal split
## Post Callout ##
At the end of the `callvim` function we invoke the `postCallVim` function if it
exists. If you're using MacVim, for example, you could define a function that
brings window focus to it after the file is loaded:
function postCallVim
{
osascript -e 'tell application "MacVim" to activate'
}
This'll be different depending on your OS / Window Manager.
## Examples ##
This will load `/tmp/myfile.scala` into the running GVim session:
> v /tmp/myfile.scala
This will load it after first doing a vertical split:
> vvsp /tmp/myfile.scala
or
> v -b':vsp' /tmp/myfile.scala
This will load it after doing a horizontal split, then moving to the bottom of
the file:
> vhsp -aG /tmp/myfile.scala
or
> v -b':sp' -aG /tmp/myfile.scala
This will load the file and then copy the first line to the end (Why you would
ever want to do this... I dunno):
> v -a':1t$' /tmp/myfile.scala
And this will load all of the `*.txt` files into the args list:
> v *.txt
If you want to load files into areas that are already split, use one of the
aliases for that:
# Do a ':wincmd h' first
> vh /tmp/myfile.scala
# Do a ':wincmd j' first
> vj /tmp/myfile.scala
# Do a ':wincmd k' first
> vk /tmp/myfile.scala
# Do a ':wincmd l' first
> vl /tmp/myfile.scala

View file

@ -0,0 +1,72 @@
#
# See README.md
#
# Derek Wyatt (derek@{myfirstnamemylastname}.org
#
function resolveFile
{
if [ -f "$1" ]; then
echo $(readlink -f "$1")
elif [[ "${1#/}" == "$1" ]]; then
echo "$(pwd)/$1"
else
echo $1
fi
}
function callvim
{
if [[ $# == 0 ]]; then
cat <<EOH
usage: callvim [-b cmd] [-a cmd] [file ... fileN]
-b cmd Run this command in GVIM before editing the first file
-a cmd Run this command in GVIM after editing the first file
file The file to edit
... fileN The other files to add to the argslist
EOH
return 0
fi
local cmd=""
local before="<esc>"
local after=""
while getopts ":b:a:" option
do
case $option in
a) after="$OPTARG"
;;
b) before="$OPTARG"
;;
esac
done
shift $((OPTIND-1))
if [[ ${after#:} != $after && ${after%<cr>} == $after ]]; then
after="$after<cr>"
fi
if [[ ${before#:} != $before && ${before%<cr>} == $before ]]; then
before="$before<cr>"
fi
local files=""
for f in $@
do
files="$files $(resolveFile $f)"
done
if [[ -n $files ]]; then
files=':args! '"$files<cr>"
fi
cmd="$before$files$after"
gvim --remote-send "$cmd"
if typeset -f postCallVim > /dev/null; then
postCallVim
fi
}
alias v=callvim
alias vvsp="callvim -b':vsp'"
alias vhsp="callvim -b':sp'"
alias vk="callvim -b':wincmd k'"
alias vj="callvim -b':wincmd j'"
alias vl="callvim -b':wincmd l'"
alias vh="callvim -b':wincmd h'"

View file

@ -1,4 +1,4 @@
virtualenvwrapper='virtualenvwrapper_lazy.sh' virtualenvwrapper='virtualenvwrapper.sh'
if (( $+commands[$virtualenvwrapper] )); then if (( $+commands[$virtualenvwrapper] )); then
source ${${virtualenvwrapper}:c} source ${${virtualenvwrapper}:c}

View file

@ -1,48 +1,68 @@
#compdef wd.sh #compdef wd
zstyle ":completion:*:descriptions" format "%B%d%b" 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
CONFIG=$HOME/.warprc # Call `_wd()` when when trying to complete the command `wd`
local -a main_commands zmodload zsh/mapfile
main_commands=( function _wd() {
add:'Adds the current working directory to your warp points' local ret=1
#add'\!':'Overwrites existing warp point' # TODO: Fix local CONFIG=$HOME/.warprc
rm:'Removes the given warp point'
ls:'Outputs all stored warp points'
show:'Outputs warp points to current directory'
)
local -a points # Stolen from
while read line # http://stackoverflow.com/questions/9000698/completion-when-program-has-sub-commands
do
points+=$(awk "{ gsub(/\/Users\/$USER|\/home\/$USER/,\"~\"); print }" <<< $line)
done < $CONFIG
_wd() # local curcontext="$curcontext" state line
{ # typeset -A opt_args
# init variables
local curcontext="$curcontext" state line
typeset -A opt_args
# init state local -a commands
_arguments \ local -a warp_points
'1: :->command' \ warp_points=( "${(f)mapfile[$CONFIG]}" )
'2: :->argument' # LIST="${mapfile[$FNAME]}" # Not required unless stuff uses it
case $state in commands=(
command) 'add:Adds the current working directory to your warp points'
compadd "$@" add rm ls show 'add!:Overwrites existing warp point'
_describe -t warp-points 'Warp points:' points && ret=0 'rm:Removes the given warp point'
;; 'ls:Outputs all stored warp points'
argument) 'show:Outputs all warp points that point to the current directory'
case $words[2] in 'help:Show this extremely helpful text'
rm|add!) '..:Go back to last directory'
_describe -t warp-points 'warp points' points && ret=0 )
;;
*) _arguments -C \
esac '1: :->first_arg' \
esac '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 "$@" _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

View file

@ -6,4 +6,6 @@
# #
# @github.com/mfaerevaag/wd # @github.com/mfaerevaag/wd
alias wd='. $ZSH/plugins/wd/wd.sh' wd() {
. $ZSH/plugins/wd/wd.sh
}

View file

@ -50,12 +50,12 @@ wd_warp()
wd_print_msg $YELLOW "Warping to current directory?" wd_print_msg $YELLOW "Warping to current directory?"
else else
(( n = $#1 - 1 )) (( n = $#1 - 1 ))
wd_print_msg $BLUE "Warping..." #wd_print_msg $BLUE "Warping..."
cd -$n > /dev/null cd -$n > /dev/null
fi fi
elif [[ ${points[$1]} != "" ]] elif [[ ${points[$1]} != "" ]]
then then
wd_print_msg $BLUE "Warping..." #wd_print_msg $BLUE "Warping..."
cd ${points[$1]} cd ${points[$1]}
else else
wd_print_msg $RED "Unkown warp point '$1'" wd_print_msg $RED "Unkown warp point '$1'"
@ -64,16 +64,16 @@ wd_warp()
wd_add() wd_add()
{ {
if [[ $1 =~ "^\.+$" ]] if [[ $2 =~ "^\.+$" || $2 =~ "^\s*$" ]]
then then
wd_print_msg $RED "Illeagal warp point (see README)." wd_print_msg $RED "Illegal warp point (see README)."
elif [[ ${points[$1]} == "" ]] || $2 elif [[ ${points[$2]} == "" ]] || $1
then then
wd_remove $1 > /dev/null wd_remove $2 > /dev/null
print "$1:$PWD" >> $CONFIG print "$2:$PWD" >> $CONFIG
wd_print_msg $GREEN "Warp point added" wd_print_msg $GREEN "Warp point added"
else 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 fi
} }
@ -83,7 +83,9 @@ wd_remove()
then then
if wd_tmp=`sed "/^$1:/d" $CONFIG` if wd_tmp=`sed "/^$1:/d" $CONFIG`
then 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" wd_print_msg $GREEN "Warp point removed"
else else
wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!" wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!"
@ -131,9 +133,9 @@ wd_print_usage()
print "\nCommands:" print "\nCommands:"
print "\t add \t Adds the current working directory to your warp points" print "\t add \t Adds the current working directory to your warp points"
print "\t add! \t Overwrites existing warp point" 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 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" print "\t help \t Show this extremely helpful text"
} }
@ -141,7 +143,7 @@ wd_print_usage()
## run ## run
# get opts # 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 # check if no arguments were given
if [[ $? -ne 0 || $#* -eq 0 ]] if [[ $? -ne 0 || $#* -eq 0 ]]
@ -161,49 +163,40 @@ else
for i for i
do do
case "$i" case "$i"
in in
-a|--add|add) -a|--add|add)
wd_add $2 false wd_add false $2
shift
shift
break break
;; ;;
-a!|--add!|add!) -a!|--add!|add!)
wd_add $2 true wd_add true $2
shift
shift
break break
;; ;;
-r|--remove|rm) -r|--remove|rm)
wd_remove $2 wd_remove $2
shift
shift
break break
;; ;;
-l|--list|ls) -l|--list|ls)
wd_list_all wd_list_all
shift
break break
;; ;;
-h|--help|help) -h|--help|help)
wd_print_usage wd_print_usage
shift
break break
;; ;;
-s|--show|show) -s|--show|show)
wd_show wd_show
shift
break break
;; ;;
*) *)
wd_warp $i wd_warp $i
shift
break break
;; ;;
--) --)
shift; break;; break
esac ;;
esac
done done
fi fi
@ -211,6 +204,6 @@ fi
## garbage collection ## garbage collection
# if not, next time warp will pick up variables from this run # if not, next time warp will pick up variables from this run
# remember, there's no sub shell # remember, there's no sub shell
points="" unset points
args="" unset args
unhash -d val &> /dev/null # fixes issue #1 unset val &> /dev/null # fixes issue #1

View file

@ -16,3 +16,4 @@ function xcsel {
alias xcb='xcodebuild' alias xcb='xcodebuild'
alias xcp='xcode-select --print-path' alias xcp='xcode-select --print-path'
alias simulator='open $(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app'

View file

@ -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'

View file

@ -0,0 +1,13 @@
zsh_cache=$HOME/.zsh_cache
mkdir -p $zsh_cache
# reload zshrc
function src()
{
autoload -U compinit zrecompile
compinit -d $zsh_cache/zcomp-$HOST
for f in $HOME/.zshrc $zsh_cache/zcomp-$HOST; do
zrecompile -p $f && rm -f $f.zwc.old
done
source ~/.zshrc
}

View file

@ -1,5 +1,5 @@
# Path to your oh-my-zsh configuration. # Path to your oh-my-zsh installation.
ZSH=$HOME/.oh-my-zsh export ZSH=$HOME/.oh-my-zsh
# Set name of the theme to load. # Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/ # Look in ~/.oh-my-zsh/themes/
@ -11,13 +11,13 @@ ZSH_THEME="mh"
# alias zshconfig="mate ~/.zshrc" # alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh" # alias ohmyzsh="mate ~/.oh-my-zsh"
# Set to this to use case-sensitive completion # Set this to use case-sensitive completion
# CASE_SENSITIVE="true" # CASE_SENSITIVE="true"
# Comment this out to disable weekly auto-update checks # Comment this out to disable weekly auto-update checks
DISABLE_AUTO_UPDATE="true" DISABLE_AUTO_UPDATE="true"
# Uncomment to change how often before auto-updates occur? (in days) # Uncomment to change how often to auto-update? (in days)
# export UPDATE_ZSH_DAYS=13 # export UPDATE_ZSH_DAYS=13
# Uncomment following line if you want to disable colors in ls # Uncomment following line if you want to disable colors in ls
@ -37,11 +37,14 @@ DISABLE_CORRECTION="true"
# much faster. # much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true" # DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment following line if you want to shown in the command execution time stamp # Uncomment following line if you want to the command execution time stamp shown
# in the history command output. The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"| # in the history command output.
# yyyy-mm-dd # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy" # HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse) # Example format: plugins=(rails git textmate ruby lighthouse)
@ -54,6 +57,9 @@ source $ZSH/oh-my-zsh.sh
export PATH=$HOME/bin:/usr/local/bin:$PATH export PATH=$HOME/bin:/usr/local/bin:$PATH
# export MANPATH="/usr/local/man:$MANPATH" # export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# # Preferred editor for local and remote sessions # # Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then # if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim' # export EDITOR='vim'

View file

@ -2,7 +2,7 @@
# # # #
# # #README # # #README
# # # #
# # This theme provides two customizable header functionalities : # # This theme provides two customizable header functionalities:
# # a) displaying a pseudo-random message from a database of quotations # # a) displaying a pseudo-random message from a database of quotations
# # (https://en.wikipedia.org/wiki/Fortune_%28Unix%29) # # (https://en.wikipedia.org/wiki/Fortune_%28Unix%29)
# # b) displaying randomly command line tips from The command line fu # # b) displaying randomly command line tips from The command line fu
@ -26,10 +26,7 @@
# # -OS X: iTerm 2 (http://www.iterm2.com/) # # -OS X: iTerm 2 (http://www.iterm2.com/)
# # -font Source code pro (https://github.com/adobe/source-code-pro) # # -font Source code pro (https://github.com/adobe/source-code-pro)
# # # #
# # Author: Adolfo Benedetti # # This theme's look and feel is based on the Aaron Toponce's zsh theme, more info:
# # email: adolfo.benedetti@gmail.com
# # License: Public Domain
# # This theme's look and feel is based on the Aaron Toponce's zsh theme , more info:
# # http://pthree.org/2008/11/23/727/ # # http://pthree.org/2008/11/23/727/
# # enjoy! # # enjoy!
########## COLOR ########### ########## COLOR ###########

View file

@ -1,14 +1,6 @@
# af-magic.zsh-theme # af-magic.zsh-theme
#
# Author: Andy Fleming
# URL: http://andyfleming.com/
# Repo: https://github.com/andyfleming/oh-my-zsh # Repo: https://github.com/andyfleming/oh-my-zsh
# Direct Link: https://github.com/andyfleming/oh-my-zsh/blob/master/themes/af-magic.zsh-theme # Direct Link: https://github.com/andyfleming/oh-my-zsh/blob/master/themes/af-magic.zsh-theme
#
# Created on: June 19, 2012
# Last modified on: June 20, 2012
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
@ -27,7 +19,12 @@ eval my_gray='$FG[237]'
eval my_orange='$FG[214]' eval my_orange='$FG[214]'
# right prompt # right prompt
PROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%' if type "virtualenv_prompt_info" > /dev/null
then
RPROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%'
else
RPROMPT='$my_gray%n@%m%{$reset_color%}%'
fi
# git settings # git settings
ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:" ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:"

View file

@ -6,7 +6,7 @@
# # README # # README
# #
# In order for this theme to render correctly, you will need a # In order for this theme to render correctly, you will need a
# [Powerline-patched font](https://gist.github.com/1595572). # [Powerline-patched font](https://github.com/Lokaltog/powerline-fonts).
# #
# In addition, I recommend the # In addition, I recommend the
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're # [Solarized theme](https://github.com/altercation/solarized/) and, if you're
@ -88,9 +88,9 @@ prompt_git() {
zstyle ':vcs_info:*' stagedstr '✚' zstyle ':vcs_info:*' stagedstr '✚'
zstyle ':vcs_info:git:*' unstagedstr '●' zstyle ':vcs_info:git:*' unstagedstr '●'
zstyle ':vcs_info:*' formats ' %u%c' zstyle ':vcs_info:*' formats ' %u%c'
zstyle ':vcs_info:*' actionformats '%u%c' zstyle ':vcs_info:*' actionformats ' %u%c'
vcs_info vcs_info
echo -n "${ref/refs\/heads\//± }${vcs_info_msg_0_}" echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_%% }"
fi fi
} }

View file

@ -1,22 +1,4 @@
#
# Author:: Andrew Vit (<andrew@avit.ca>)
#
# AVIT ZSH Theme # AVIT ZSH Theme
#
# Copyright 2011, Andrew Vit
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
PROMPT=' PROMPT='
$(_user_host)${_current_dir} $(git_prompt_info) $(_ruby_version) $(_user_host)${_current_dir} $(git_prompt_info) $(_ruby_version)

View file

@ -101,12 +101,12 @@ _1RIGHT="[%*] "
bureau_precmd () { bureau_precmd () {
_1SPACES=`get_space $_1LEFT $_1RIGHT` _1SPACES=`get_space $_1LEFT $_1RIGHT`
echo print
print -rP "$_1LEFT$_1SPACES$_1RIGHT"
} }
setopt prompt_subst setopt prompt_subst
PROMPT='$_1LEFT$_1SPACES$_1RIGHT PROMPT='> $_LIBERTY '
> $_LIBERTY '
RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)' RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)'
autoload -U add-zsh-hook autoload -U add-zsh-hook

View file

@ -1,11 +1,4 @@
# neuralsanwich.zsh-theme # neuralsanwich.zsh-theme
#
# Author: Sean Jones
# URL: http://www.neuralsandwich.com
# Repo:
# Direct link:
# Create:
# Modified:
if [ "x$OH_MY_ZSH_HG" = "x" ]; then if [ "x$OH_MY_ZSH_HG" = "x" ]; then
OH_MY_ZSH_HG="hg" OH_MY_ZSH_HG="hg"

View file

@ -1,10 +1,4 @@
# ----------------------------------------------------------------------------- # dogenpunk.zsh-theme
# FILE: dogenpunk.zsh-theme
# DESCRIPTION: oh-my-zsh theme file.
# AUTHOR: Matthew Nelson (dogenpunk@gmail.com)
# VERSION: 0.1
# SCREENSHOT: coming soon
# -----------------------------------------------------------------------------
MODE_INDICATOR="%{$fg_bold[red]%}%{$reset_color%}%{$fg[red]%}%{$reset_color%}" MODE_INDICATOR="%{$fg_bold[red]%}%{$reset_color%}%{$fg[red]%}%{$reset_color%}"
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}" local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"

View file

@ -1,4 +1,3 @@
# user, host, full path, and time/date # user, host, full path, and time/date
# on two lines for easier vgrepping # on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888

View file

@ -1,4 +1,4 @@
#RVM settings # RVM settings
if [[ -s ~/.rvm/scripts/rvm ]] ; then if [[ -s ~/.rvm/scripts/rvm ]] ; then
RPS1="%{$fg[yellow]%}rvm:%{$reset_color%}%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt)%{$reset_color%} $EPS1" RPS1="%{$fg[yellow]%}rvm:%{$reset_color%}%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt)%{$reset_color%} $EPS1"
else else
@ -12,7 +12,7 @@ ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_CLEAN=""
#Customized git status, oh-my-zsh currently does not allow render dirty status before branch # Customized git status, oh-my-zsh currently does not allow render dirty status before branch
git_custom_status() { git_custom_status() {
local cb=$(current_branch) local cb=$(current_branch)
if [ -n "$cb" ]; then if [ -n "$cb" ]; then

View file

@ -1,7 +1,6 @@
# Theme with full path names and hostname # Theme with full path names and hostname
# Handy if you work on different servers all the time; # Handy if you work on different servers all the time;
local return_code="%(?..%{$fg_bold[red]%}%? ↵%{$reset_color%})" local return_code="%(?..%{$fg_bold[red]%}%? ↵%{$reset_color%})"
function my_git_prompt_info() { function my_git_prompt_info() {

View file

@ -1,4 +1,4 @@
# Fino-time theme by Aexander Berezovsky (http://berezovsky.me) based on Fino by Max Masnick (http://max.masnick.me) # fino-time.zsh-theme
# Use with a dark background and 256-color terminal! # Use with a dark background and 256-color terminal!
# Meant for people with RVM and git. Tested only on OS X 10.7. # Meant for people with RVM and git. Tested only on OS X 10.7.

View file

@ -1,4 +1,4 @@
# Fino theme by Max Masnick (http://max.masnick.me) # fino.zsh-theme
# Use with a dark background and 256-color terminal! # Use with a dark background and 256-color terminal!
# Meant for people with rbenv and git. Tested only on OS X 10.7. # Meant for people with rbenv and git. Tested only on OS X 10.7.
@ -11,7 +11,6 @@
# #
# Also borrowing from http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/ # Also borrowing from http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/
function prompt_char { function prompt_char {
git branch >/dev/null 2>/dev/null && echo "±" && return git branch >/dev/null 2>/dev/null && echo "±" && return
echo '○' echo '○'

View file

@ -1,4 +1,5 @@
#fox theme # fox.zsh-theme
PROMPT='%{$fg[cyan]%}┌[%{$fg_bold[white]%}%n%{$reset_color%}%{$fg[cyan]%}☮%{$fg_bold[white]%}%M%{$reset_color%}%{$fg[cyan]%}]%{$fg[white]%}-%{$fg[cyan]%}(%{$fg_bold[white]%}%~%{$reset_color%}%{$fg[cyan]%})$(git_prompt_info) PROMPT='%{$fg[cyan]%}┌[%{$fg_bold[white]%}%n%{$reset_color%}%{$fg[cyan]%}☮%{$fg_bold[white]%}%M%{$reset_color%}%{$fg[cyan]%}]%{$fg[white]%}-%{$fg[cyan]%}(%{$fg_bold[white]%}%~%{$reset_color%}%{$fg[cyan]%})$(git_prompt_info)
└> % %{$reset_color%}' └> % %{$reset_color%}'

View file

@ -18,7 +18,11 @@ else
if which rbenv &> /dev/null; then if which rbenv &> /dev/null; then
RPS1='$(git_custom_status)%{$fg[red]%}[`rbenv version | sed -e "s/ (set.*$//"`]%{$reset_color%} $EPS1' RPS1='$(git_custom_status)%{$fg[red]%}[`rbenv version | sed -e "s/ (set.*$//"`]%{$reset_color%} $EPS1'
else else
RPS1='$(git_custom_status) $EPS1' if [[ -n `which chruby_prompt_info` && -n `chruby_prompt_info` ]]; then
RPS1='$(git_custom_status)%{$fg[red]%}[`chruby_prompt_info`]%{$reset_color%} $EPS1'
else
RPS1='$(git_custom_status) $EPS1'
fi
fi fi
fi fi

View file

@ -1,8 +1,3 @@
# Oh-my-Zsh prompt created by gianu
#
# github.com/gianu
# sgianazza@gmail.com
PROMPT='[%{$fg_bold[white]%}%n%{$reset_color%}@%{$fg_bold[red]%}%m%{$reset_color%} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)%{$reset_color%}]$ ' PROMPT='[%{$fg_bold[white]%}%n%{$reset_color%}@%{$fg_bold[red]%}%m%{$reset_color%} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)%{$reset_color%}]$ '
ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[green]%}" ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[green]%}"

View file

@ -6,7 +6,7 @@ autoload -U colors zsh/terminfo # Used in the colour alias below
colors colors
setopt prompt_subst setopt prompt_subst
# make some aliases for the colours: (coud use normal escap.seq's too) # make some aliases for the colours: (could use normal escape sequences too)
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color='%{$fg[${(L)color}]%}' eval PR_$color='%{$fg[${(L)color}]%}'
done done
@ -36,12 +36,12 @@ local return_code="%(?..%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
local user_host='${PR_USER}${PR_CYAN}@${PR_HOST}' local user_host='${PR_USER}${PR_CYAN}@${PR_HOST}'
local current_dir='%{$PR_BOLD$PR_BLUE%}%~%{$PR_NO_COLOR%}' local current_dir='%{$PR_BOLD$PR_BLUE%}%~%{$PR_NO_COLOR%}'
local rvm_ruby='' local rvm_ruby=''
if which rvm-prompt &> /dev/null; then if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect local user rvm installation
rvm_ruby='%{$PR_RED%}$(${HOME}/.rvm/bin/rvm-prompt i v g s)%{$PR_NO_COLOR%}'
elif which rvm-prompt &> /dev/null; then # detect sysem-wide rvm installation
rvm_ruby='%{$PR_RED%}$(rvm-prompt i v g s)%{$PR_NO_COLOR%}' rvm_ruby='%{$PR_RED%}$(rvm-prompt i v g s)%{$PR_NO_COLOR%}'
else elif which rbenv &> /dev/null; then # detect Simple Ruby Version management
if which rbenv &> /dev/null; then rvm_ruby='%{$PR_RED%}$(rbenv version | sed -e "s/ (set.*$//")%{$PR_NO_COLOR%}'
rvm_ruby='%{$PR_RED%}$(rbenv version | sed -e "s/ (set.*$//")%{$PR_NO_COLOR%}'
fi
fi fi
local git_branch='$(git_prompt_info)%{$PR_NO_COLOR%}' local git_branch='$(git_prompt_info)%{$PR_NO_COLOR%}'

Some files were not shown because too many files have changed in this diff Show more