mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-25 15:20:08 +00:00
Merge branch 'master' of https://github.com/robbyrussell/oh-my-zsh
This commit is contained in:
commit
6952105bfe
83 changed files with 1488 additions and 958 deletions
|
@ -1,6 +1,6 @@
|
|||
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
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -14,15 +14,25 @@ You can install this via the command line with either `curl` or `wget`.
|
|||
|
||||
h4. via `curl`
|
||||
|
||||
@curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh@
|
||||
@curl -L http://install.ohmyz.sh | sh@
|
||||
|
||||
h4. via `wget`
|
||||
|
||||
@wget --no-check-certificate https://raw.github.com/robbyrussell/oh-my-zsh/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
|
||||
|
||||
|
||||
1. Clone the repository
|
||||
|
||||
@git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh@
|
||||
|
@ -35,7 +45,6 @@ h3. The manual way
|
|||
|
||||
@cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc@
|
||||
|
||||
|
||||
4. Set zsh as your default shell:
|
||||
|
||||
@chsh -s /bin/zsh@
|
||||
|
@ -46,6 +55,8 @@ 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 @plugins/@ to see what's possible)
|
||||
|
|
|
@ -27,9 +27,9 @@ else
|
|||
fi
|
||||
# List direcory contents
|
||||
alias lsa='ls -lah'
|
||||
alias l='ls -la'
|
||||
alias ll='ls -l'
|
||||
alias la='ls -lA'
|
||||
alias l='ls -lah'
|
||||
alias ll='ls -lh'
|
||||
alias la='ls -lAh'
|
||||
alias sl=ls # often screw this up
|
||||
|
||||
alias afind='ack-grep -il'
|
||||
|
|
|
@ -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
|
||||
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
|
||||
zstyle ':completion::complete:*' use-cache 1
|
||||
zstyle ':completion::complete:*' cache-path $ZSH/cache/
|
||||
|
||||
# Don't complete uninteresting users
|
||||
zstyle ':completion:*:*:*:users' ignored-patterns \
|
||||
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
|
||||
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
|
||||
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
|
||||
mailman mailnull mldonkey mysql nagios \
|
||||
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
|
||||
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
|
||||
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
|
||||
adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \
|
||||
clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \
|
||||
gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \
|
||||
ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \
|
||||
named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \
|
||||
operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \
|
||||
rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \
|
||||
usbmux uucp vcsa wwwrun xfs
|
||||
|
||||
# ... unless we really want to.
|
||||
zstyle '*' single-ignored show
|
||||
|
|
|
@ -1,34 +1,43 @@
|
|||
# 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
|
||||
bindkey '\ew' kill-region
|
||||
bindkey -s '\el' "ls\n"
|
||||
bindkey '^r' history-incremental-search-backward
|
||||
bindkey "^[[5~" up-line-or-history
|
||||
bindkey "^[[6~" down-line-or-history
|
||||
# Make sure that the terminal is in application mode when zle is active, since
|
||||
# only then values from $terminfo are valid
|
||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||
function zle-line-init() {
|
||||
echoti smkx
|
||||
}
|
||||
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 '^[[A' up-line-or-search
|
||||
bindkey '^[[B' down-line-or-search
|
||||
bindkey -e # Use emacs key bindings
|
||||
|
||||
bindkey "^[[H" beginning-of-line
|
||||
bindkey "^[[1~" beginning-of-line
|
||||
bindkey "^[OH" beginning-of-line
|
||||
bindkey "^[[F" end-of-line
|
||||
bindkey "^[[4~" end-of-line
|
||||
bindkey "^[OF" end-of-line
|
||||
bindkey ' ' magic-space # also do history expansion on space
|
||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
||||
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 "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history
|
||||
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
|
||||
bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
|
||||
|
||||
bindkey '^[[Z' reverse-menu-complete
|
||||
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
|
||||
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
|
||||
|
||||
# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~
|
||||
bindkey '^?' backward-delete-char
|
||||
bindkey "^[[3~" delete-char
|
||||
bindkey "^[3;5~" delete-char
|
||||
bindkey "\e[3~" delete-char
|
||||
bindkey ' ' magic-space # [Space] - do history expansion
|
||||
|
||||
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
|
||||
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
|
||||
|
||||
bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards
|
||||
|
||||
bindkey '^?' backward-delete-char # [Backspace] - delete backward
|
||||
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
|
||||
|
||||
# Edit the current command line in $EDITOR
|
||||
autoload -U edit-command-line
|
||||
|
|
33
lib/prompt_info_functions.zsh
Normal file
33
lib/prompt_info_functions.zsh
Normal 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)
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
# using the rbenv plugin will override this with a real implementation
|
||||
function rbenv_prompt_info() {}
|
|
@ -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:=)}"
|
||||
}
|
|
@ -27,9 +27,8 @@ function omz_termsupport_preexec {
|
|||
emulate -L zsh
|
||||
setopt extended_glob
|
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
|
||||
local LINE="${2:gs/$/\\$}"
|
||||
LINE="${LINE:gs/%/%%}"
|
||||
title "$CMD" "%100>...>$LINE%<<"
|
||||
local LINE="${2:gs/%/%%}"
|
||||
title '$CMD' '%100>...>$LINE%<<'
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
|
|
4
plugins/atom/atom.plugin.zsh
Normal file
4
plugins/atom/atom.plugin.zsh
Normal file
|
@ -0,0 +1,4 @@
|
|||
#
|
||||
# Your guess is as good as mine. Let's just assume that we will need this...
|
||||
# - For more info visit... http://atom.io/
|
||||
#
|
17
plugins/aws/aws.plugin.zsh
Normal file
17
plugins/aws/aws.plugin.zsh
Normal 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`
|
|
@ -18,11 +18,15 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
echo $i
|
||||
}
|
||||
|
||||
function plugged_in() {
|
||||
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ]
|
||||
}
|
||||
|
||||
function battery_pct_remaining() {
|
||||
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
|
||||
battery_pct
|
||||
else
|
||||
if plugged_in ; then
|
||||
echo "External Power"
|
||||
else
|
||||
battery_pct
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -30,7 +34,11 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
|
||||
if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
|
||||
timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
|
||||
if [ $timeremaining -gt 720 ] ; then
|
||||
echo "::"
|
||||
else
|
||||
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
|
||||
fi
|
||||
else
|
||||
echo "∞"
|
||||
fi
|
||||
|
@ -58,9 +66,19 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
|
||||
elif [[ $(uname) == "Linux" ]] ; then
|
||||
|
||||
function battery_pct_remaining() {
|
||||
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
function battery_is_charging() {
|
||||
! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
|
||||
}
|
||||
|
||||
function battery_pct() {
|
||||
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
|
||||
}
|
||||
|
||||
function battery_pct_remaining() {
|
||||
if [ ! $(battery_is_charging) ] ; then
|
||||
battery_pct
|
||||
else
|
||||
echo "External Power"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -86,15 +104,6 @@ elif [[ $(uname) == "Linux" ]] ; then
|
|||
fi
|
||||
}
|
||||
|
||||
function battery_pct() {
|
||||
# todo for on linux
|
||||
}
|
||||
|
||||
function battery_is_charging() {
|
||||
# todo on linux
|
||||
false
|
||||
}
|
||||
|
||||
else
|
||||
# Empty functions so we don't cause errors in prompts
|
||||
function battery_pct_remaining() {
|
||||
|
|
|
@ -11,10 +11,25 @@ _brew_installed_formulae() {
|
|||
installed_formulae=(`brew list`)
|
||||
}
|
||||
|
||||
_brew_installed_taps() {
|
||||
installed_taps=(`brew tap`)
|
||||
}
|
||||
|
||||
_brew_outdated_formulae() {
|
||||
outdated_formulae=(`brew outdated`)
|
||||
}
|
||||
|
||||
_brew_running_services() {
|
||||
running_services=(`brew services list | awk '{print $1}'`)
|
||||
}
|
||||
|
||||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'audit:check formulae for Homebrew coding style'
|
||||
'bundle:look for a Brewfile and run each line as a brew command'
|
||||
'cat:display formula file for a formula'
|
||||
'cleanup:uninstall unused and old versions of packages'
|
||||
'commands:show a list of commands'
|
||||
'create:create a new formula'
|
||||
'deps:list dependencies and dependants of a formula'
|
||||
'doctor:audits your installation for common issues'
|
||||
|
@ -22,26 +37,38 @@ _1st_arguments=(
|
|||
'home:visit the homepage of a formula or the brew project'
|
||||
'info:information about a formula'
|
||||
'install:install a formula'
|
||||
'reinstall:install a formula anew; re-using its current options'
|
||||
'link:link a formula'
|
||||
'list:list files in a formula or not-installed formulae'
|
||||
'log:git commit log for a formula'
|
||||
'missing:check all installed formuale for missing dependencies.'
|
||||
'options:display install options specific to formula.'
|
||||
'outdated:list formulas for which a newer version is available'
|
||||
'outdated:list formulae for which a newer version is available'
|
||||
'pin:pin specified formulae'
|
||||
'prune:remove dead links'
|
||||
'reinstall:reinstall a formula'
|
||||
'remove:remove a formula'
|
||||
'search:search for a formula (/regex/ or string)'
|
||||
'server:start a local web app that lets you browse formulae (requires Sinatra)'
|
||||
'services:small wrapper around `launchctl` for supported formulae'
|
||||
'tap:tap a new formula repository from GitHub, or list existing taps'
|
||||
'unlink:unlink a formula'
|
||||
'unpin:unpin specified formulae'
|
||||
'untap:remove a tapped repository'
|
||||
'update:freshen up links'
|
||||
'upgrade:upgrade outdated formulae'
|
||||
'uses:show formulas which depend on a formula'
|
||||
'versions:show all available formula versions'
|
||||
'uses:show formulae which depend on a formula'
|
||||
)
|
||||
|
||||
local -a _service_arguments
|
||||
_service_arguments=(
|
||||
'cleanup:get rid of stale services and unused plists'
|
||||
'list:list all services managed by `brew services`'
|
||||
'restart:gracefully restart selected service'
|
||||
'start:start selected service'
|
||||
'stop:stop selected service'
|
||||
)
|
||||
|
||||
local expl
|
||||
local -a formulae installed_formulae
|
||||
local -a formulae installed_formulae installed_taps outdated_formulae running_services
|
||||
|
||||
_arguments \
|
||||
'(-v)-v[verbose]' \
|
||||
|
@ -60,13 +87,13 @@ if (( CURRENT == 1 )); then
|
|||
fi
|
||||
|
||||
case "$words[1]" in
|
||||
search|-S)
|
||||
_arguments \
|
||||
'(--macports)--macports[search the macports repository]' \
|
||||
'(--fink)--fink[search the fink repository]' ;;
|
||||
install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|edit|options)
|
||||
_brew_all_formulae
|
||||
_wanted formulae expl 'all formulae' compadd -a formulae ;;
|
||||
list|ls)
|
||||
_arguments \
|
||||
'(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
|
||||
'(--pinned)--pinned[list all versions of pinned formulae]' \
|
||||
'(--versions)--versions[list all installed versions of a formula]' \
|
||||
'1: :->forms' && return 0
|
||||
|
||||
|
@ -74,10 +101,27 @@ case "$words[1]" in
|
|||
_brew_installed_formulae
|
||||
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
|
||||
fi ;;
|
||||
install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions)
|
||||
_brew_all_formulae
|
||||
_wanted formulae expl 'all formulae' compadd -a formulae ;;
|
||||
reinstall|remove|rm|uninstall|unlink|cleanup|link|ln)
|
||||
remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin)
|
||||
_brew_installed_formulae
|
||||
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
|
||||
search|-S)
|
||||
_arguments \
|
||||
'(--macports)--macports[search the macports repository]' \
|
||||
'(--fink)--fink[search the fink repository]' ;;
|
||||
services)
|
||||
if [[ -n "$words[2]" ]]; then
|
||||
case "$words[2]" in
|
||||
restart|start|stop)
|
||||
_brew_running_services
|
||||
_wanted running_services expl 'running services' compadd -a running_services ;;
|
||||
esac
|
||||
else
|
||||
_describe -t commands "brew services subcommand" _service_arguments
|
||||
fi ;;
|
||||
untap)
|
||||
_brew_installed_taps
|
||||
_wanted installed_taps expl 'installed taps' compadd -a installed_taps ;;
|
||||
upgrade)
|
||||
_brew_outdated_formulae
|
||||
_wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae ;;
|
||||
esac
|
||||
|
|
|
@ -6,7 +6,7 @@ alias bu="bundle update"
|
|||
|
||||
# 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 jekyll kitchen knife mailcatcher middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma)
|
||||
|
||||
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list
|
||||
for cmd in $UNBUNDLED_COMMANDS; do
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
function cabal_sandbox_info() {
|
||||
cabal_files=(*.cabal(N))
|
||||
if [ $#cabal_files -gt 0 ]; then
|
||||
if [ -f cabal.sandbox.config ]; then
|
||||
echo "%{$fg[green]%}sandboxed%{$reset_color%}"
|
||||
else
|
||||
echo "%{$fg[red]%}not sandboxed%{$reset_color%}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function _cabal_commands() {
|
||||
local ret=1 state
|
||||
_arguments ':subcommand:->subcommand' && ret=0
|
||||
|
|
17
plugins/catimg/catimg.plugin.zsh
Normal file
17
plugins/catimg/catimg.plugin.zsh
Normal 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
88
plugins/catimg/catimg.sh
Executable 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
BIN
plugins/catimg/colors.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 353 B |
|
@ -217,3 +217,11 @@ kerndeb () {
|
|||
"$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}'
|
||||
}
|
||||
|
||||
|
|
132
plugins/dirhistory/dirhistory.plugin.zsh
Normal file
132
plugins/dirhistory/dirhistory.plugin.zsh
Normal 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
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ __ps() {
|
|||
'-beforeId="[Show only container created before Id, 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.]' \
|
||||
'-notrurrrrnc[Dont truncate output]' \
|
||||
'-notrunc[Dont truncate output]' \
|
||||
'-q[Only display numeric IDs]' \
|
||||
'-s[Display sizes]' \
|
||||
'-sinceId="[Show only containers created since Id, include non-running ones.]'
|
||||
|
|
56
plugins/emacs/emacs.plugin.zsh
Normal file
56
plugins/emacs/emacs.plugin.zsh
Normal 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
12
plugins/emacs/emacsclient.sh
Executable 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
|
7
plugins/gem/gem.plugin.zsh
Normal file
7
plugins/gem/gem.plugin.zsh
Normal 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
|
||||
}
|
|
@ -1,20 +1,30 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
from subprocess import Popen, PIPE
|
||||
import re
|
||||
|
||||
# change those symbols to whatever you prefer
|
||||
symbols = {'ahead of': '↑', 'behind': '↓', 'staged':'♦', 'changed':'‣', 'untracked':'…', 'clean':'⚡', 'unmerged':'≠', 'sha1':':'}
|
||||
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:
|
||||
import sys
|
||||
sys.exit(0)
|
||||
lines = output.splitlines()
|
||||
|
||||
import re
|
||||
behead_re = re.compile(r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
|
||||
behead_re = re.compile(
|
||||
r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
|
||||
diverge_re = re.compile(r"^# and have (\d+) and (\d+) different")
|
||||
|
||||
status = ''
|
||||
|
@ -23,6 +33,7 @@ changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE)
|
|||
untracked = re.compile(r'^# Untracked files:$', re.MULTILINE)
|
||||
unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE)
|
||||
|
||||
|
||||
def execute(*command):
|
||||
out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate()
|
||||
if not err:
|
||||
|
@ -32,17 +43,16 @@ def execute(*command):
|
|||
return nb
|
||||
|
||||
if staged.search(output):
|
||||
nb = execute(['git','diff','--staged','--name-only','--diff-filter=ACDMRT'])
|
||||
nb = execute(
|
||||
['git', 'diff', '--staged', '--name-only', '--diff-filter=ACDMRT'])
|
||||
status += '%s%s' % (symbols['staged'], nb)
|
||||
if unmerged.search(output):
|
||||
nb = execute(['git','diff', '--staged','--name-only', '--diff-filter=U'])
|
||||
nb = execute(['git', 'diff', '--staged', '--name-only', '--diff-filter=U'])
|
||||
status += '%s%s' % (symbols['unmerged'], nb)
|
||||
if changed.search(output):
|
||||
nb = execute(['git','diff','--name-only', '--diff-filter=ACDMRT'])
|
||||
nb = execute(['git', 'diff', '--name-only', '--diff-filter=ACDMRT'])
|
||||
status += '%s%s' % (symbols['changed'], nb)
|
||||
if untracked.search(output):
|
||||
## nb = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines())
|
||||
## status += "%s" % (symbols['untracked']*(nb//3 + 1), )
|
||||
status += symbols['untracked']
|
||||
if status == '':
|
||||
status = symbols['clean']
|
||||
|
@ -51,9 +61,13 @@ remote = ''
|
|||
|
||||
bline = lines[0]
|
||||
if bline.find('Not currently on any branch') != -1:
|
||||
branch = symbols['sha1']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1]
|
||||
branch = symbols['sha1'] + Popen([
|
||||
'git',
|
||||
'rev-parse',
|
||||
'--short',
|
||||
'HEAD'], stdout=PIPE).communicate()[0][:-1]
|
||||
else:
|
||||
branch = bline.split(' ')[3]
|
||||
branch = bline.split(' ')[-1]
|
||||
bstatusline = lines[1]
|
||||
match = behead_re.match(bstatusline)
|
||||
if match:
|
||||
|
@ -62,7 +76,7 @@ else:
|
|||
elif lines[2:]:
|
||||
div_match = diverge_re.match(lines[2])
|
||||
if div_match:
|
||||
remote = "{behind}{1}{ahead of}{0}".format(*div_match.groups(), **symbols)
|
||||
|
||||
print '\n'.join([branch,remote,status])
|
||||
remote = "{behind}{1}{ahead of}{0}".format(
|
||||
*div_match.groups(), **symbols)
|
||||
|
||||
print('\n'.join([branch, remote, status]))
|
||||
|
|
|
@ -62,8 +62,10 @@ alias glgg='git log --graph --max-count=10'
|
|||
compdef _git glgg=git-log
|
||||
alias glgga='git log --graph --decorate --all'
|
||||
compdef _git glgga=git-log
|
||||
alias glo='git log --oneline'
|
||||
alias glo='git log --oneline --decorate --color'
|
||||
compdef _git glo=git-log
|
||||
alias glog='git log --oneline --decorate --color --graph'
|
||||
compdef _git glog=git-log
|
||||
alias gss='git status -s'
|
||||
compdef _git gss=git-status
|
||||
alias ga='git add'
|
||||
|
|
|
@ -2,18 +2,19 @@
|
|||
|
||||
# zsh completion wrapper for git
|
||||
#
|
||||
# You need git's bash completion script installed somewhere, by default on the
|
||||
# same directory as this script.
|
||||
# Copyright (c) 2012-2013 Felipe Contreras <felipe.contreras@gmail.com>
|
||||
#
|
||||
# If your script is on ~/.git-completion.sh instead, you can configure it on
|
||||
# your ~/.zshrc:
|
||||
# You need git's bash completion script installed somewhere, by default it
|
||||
# would be the location bash-completion uses.
|
||||
#
|
||||
# If your script is somewhere else, you can configure it on your ~/.zshrc:
|
||||
#
|
||||
# zstyle ':completion:*:*:git:*' script ~/.git-completion.sh
|
||||
#
|
||||
# The recommended way to install this script is to copy to
|
||||
# '~/.zsh/completion/_git', and then add the following to your ~/.zshrc file:
|
||||
# The recommended way to install this script is to copy to '~/.zsh/_git', and
|
||||
# then add the following to your ~/.zshrc file:
|
||||
#
|
||||
# fpath=(~/.zsh/completion $fpath)
|
||||
# fpath=(~/.zsh $fpath)
|
||||
|
||||
complete ()
|
||||
{
|
||||
|
@ -21,8 +22,23 @@ complete ()
|
|||
return 0
|
||||
}
|
||||
|
||||
zstyle -T ':completion:*:*:git:*' tag-order && \
|
||||
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
|
||||
|
||||
zstyle -s ":completion:*:*:git:*" script script
|
||||
test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
|
||||
if [ -z "$script" ]; then
|
||||
local -a locations
|
||||
local e
|
||||
locations=(
|
||||
'/etc/bash_completion.d/git' # fedora, old debian
|
||||
'/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
|
||||
'/usr/share/bash-completion/git' # gentoo
|
||||
$(dirname ${funcsourcetrace[1]%:*})/git-completion.bash
|
||||
)
|
||||
for e in $locations; do
|
||||
test -f $e && script="$e" && break
|
||||
done
|
||||
fi
|
||||
ZSH_VERSION='' . "$script"
|
||||
|
||||
__gitcomp ()
|
||||
|
@ -69,18 +85,131 @@ __gitcomp_file ()
|
|||
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_bash_func ()
|
||||
{
|
||||
emulate -L ksh
|
||||
|
||||
local command=$1
|
||||
|
||||
local completion_func="_git_${command//-/_}"
|
||||
declare -f $completion_func >/dev/null && $completion_func && return
|
||||
|
||||
local expansion=$(__git_aliased_command "$command")
|
||||
if [ -n "$expansion" ]; then
|
||||
completion_func="_git_${expansion//-/_}"
|
||||
declare -f $completion_func >/dev/null && $completion_func
|
||||
fi
|
||||
}
|
||||
|
||||
__git_zsh_cmd_common ()
|
||||
{
|
||||
local -a list
|
||||
list=(
|
||||
add:'add file contents to the index'
|
||||
bisect:'find by binary search the change that introduced a bug'
|
||||
branch:'list, create, or delete branches'
|
||||
checkout:'checkout a branch or paths to the working tree'
|
||||
clone:'clone a repository into a new directory'
|
||||
commit:'record changes to the repository'
|
||||
diff:'show changes between commits, commit and working tree, etc'
|
||||
fetch:'download objects and refs from another repository'
|
||||
grep:'print lines matching a pattern'
|
||||
init:'create an empty Git repository or reinitialize an existing one'
|
||||
log:'show commit logs'
|
||||
merge:'join two or more development histories together'
|
||||
mv:'move or rename a file, a directory, or a symlink'
|
||||
pull:'fetch from and merge with another repository or a local branch'
|
||||
push:'update remote refs along with associated objects'
|
||||
rebase:'forward-port local commits to the updated upstream head'
|
||||
reset:'reset current HEAD to the specified state'
|
||||
rm:'remove files from the working tree and from the index'
|
||||
show:'show various types of objects'
|
||||
status:'show the working tree status'
|
||||
tag:'create, list, delete or verify a tag object signed with GPG')
|
||||
_describe -t common-commands 'common commands' list && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_cmd_alias ()
|
||||
{
|
||||
local -a list
|
||||
list=(${${${(0)"$(git config -z --get-regexp '^alias\.')"}#alias.}%$'\n'*})
|
||||
_describe -t alias-commands 'aliases' list $* && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_cmd_all ()
|
||||
{
|
||||
local -a list
|
||||
emulate ksh -c __git_compute_all_commands
|
||||
list=( ${=__git_all_commands} )
|
||||
_describe -t all-commands 'all commands' list && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_main ()
|
||||
{
|
||||
local curcontext="$curcontext" state state_descr line
|
||||
typeset -A opt_args
|
||||
local -a orig_words
|
||||
|
||||
orig_words=( ${words[@]} )
|
||||
|
||||
_arguments -C \
|
||||
'(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
|
||||
'(-p --paginate)--no-pager[do not pipe git output into a pager]' \
|
||||
'--git-dir=-[set the path to the repository]: :_directories' \
|
||||
'--bare[treat the repository as a bare repository]' \
|
||||
'(- :)--version[prints the git suite version]' \
|
||||
'--exec-path=-[path to where your core git programs are installed]:: :_directories' \
|
||||
'--html-path[print the path where git''s HTML documentation is installed]' \
|
||||
'--info-path[print the path where the Info files are installed]' \
|
||||
'--man-path[print the manpath (see `man(1)`) for the man pages]' \
|
||||
'--work-tree=-[set the path to the working tree]: :_directories' \
|
||||
'--namespace=-[set the git namespace]' \
|
||||
'--no-replace-objects[do not use replacement refs to replace git objects]' \
|
||||
'(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \
|
||||
'(-): :->command' \
|
||||
'(-)*:: :->arg' && return
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
_alternative \
|
||||
'alias-commands:alias:__git_zsh_cmd_alias' \
|
||||
'common-commands:common:__git_zsh_cmd_common' \
|
||||
'all-commands:all:__git_zsh_cmd_all' && _ret=0
|
||||
;;
|
||||
(arg)
|
||||
local command="${words[1]}" __git_dir
|
||||
|
||||
if (( $+opt_args[--bare] )); then
|
||||
__git_dir='.'
|
||||
else
|
||||
__git_dir=${opt_args[--git-dir]}
|
||||
fi
|
||||
|
||||
(( $+opt_args[--help] )) && command='help'
|
||||
|
||||
words=( ${orig_words[@]} )
|
||||
|
||||
__git_zsh_bash_func $command
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_git ()
|
||||
{
|
||||
local _ret=1
|
||||
() {
|
||||
emulate -L ksh
|
||||
local cur cword prev
|
||||
cur=${words[CURRENT-1]}
|
||||
prev=${words[CURRENT-2]}
|
||||
|
||||
cur=${words[CURRENT]}
|
||||
prev=${words[CURRENT-1]}
|
||||
let cword=CURRENT-1
|
||||
__${service}_main
|
||||
}
|
||||
let _ret && _default -S '' && _ret=0
|
||||
|
||||
if (( $+functions[__${service}_zsh_main] )); then
|
||||
__${service}_zsh_main
|
||||
else
|
||||
emulate ksh -c __${service}_main
|
||||
fi
|
||||
|
||||
let _ret && _default && _ret=0
|
||||
return _ret
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ esac
|
|||
# returns location of .git repo
|
||||
__gitdir ()
|
||||
{
|
||||
# Note: this function is duplicated in git-prompt.sh
|
||||
# When updating it, make sure you update the other one to match.
|
||||
if [ -z "${1-}" ]; then
|
||||
if [ -n "${__git_dir-}" ]; then
|
||||
echo "$__git_dir"
|
||||
|
@ -53,19 +51,6 @@ __gitdir ()
|
|||
fi
|
||||
}
|
||||
|
||||
__gitcomp_1 ()
|
||||
{
|
||||
local c IFS=$' \t\n'
|
||||
for c in $1; do
|
||||
c="$c$2"
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
printf '%s\n' "$c"
|
||||
done
|
||||
}
|
||||
|
||||
# The following function is based on code from:
|
||||
#
|
||||
# bash_completion - programmable completion functions for bash 3.2+
|
||||
|
@ -195,8 +180,18 @@ _get_comp_words_by_ref ()
|
|||
}
|
||||
fi
|
||||
|
||||
# Generates completion reply with compgen, appending a space to possible
|
||||
# completion words, if necessary.
|
||||
__gitcompadd ()
|
||||
{
|
||||
local i=0
|
||||
for x in $1; do
|
||||
if [[ "$x" == "$3"* ]]; then
|
||||
COMPREPLY[i++]="$2$x$4"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Generates completion reply, appending a space to possible completion words,
|
||||
# if necessary.
|
||||
# It accepts 1 to 4 arguments:
|
||||
# 1: List of possible completion words.
|
||||
# 2: A prefix to be added to each possible completion word (optional).
|
||||
|
@ -208,19 +203,25 @@ __gitcomp ()
|
|||
|
||||
case "$cur_" in
|
||||
--*=)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
*)
|
||||
local IFS=$'\n'
|
||||
COMPREPLY=($(compgen -P "${2-}" \
|
||||
-W "$(__gitcomp_1 "${1-}" "${4-}")" \
|
||||
-- "$cur_"))
|
||||
local c i=0 IFS=$' \t\n'
|
||||
for c in $1; do
|
||||
c="$c${4-}"
|
||||
if [[ $c == "$cur_"* ]]; then
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
COMPREPLY[i++]="${2-}$c"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Generates completion reply with compgen from newline-separated possible
|
||||
# completion words by appending a space to all of them.
|
||||
# Generates completion reply from newline-separated possible completion words
|
||||
# by appending a space to all of them.
|
||||
# It accepts 1 to 4 arguments:
|
||||
# 1: List of possible completion words, separated by a single newline.
|
||||
# 2: A prefix to be added to each possible completion word (optional).
|
||||
|
@ -231,7 +232,7 @@ __gitcomp ()
|
|||
__gitcomp_nl ()
|
||||
{
|
||||
local IFS=$'\n'
|
||||
COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}"))
|
||||
__gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }"
|
||||
}
|
||||
|
||||
# Generates completion reply with compgen from newline-separated possible
|
||||
|
@ -249,106 +250,50 @@ __gitcomp_file ()
|
|||
# since tilde expansion is not applied.
|
||||
# This means that COMPREPLY will be empty and Bash default
|
||||
# completion will be used.
|
||||
COMPREPLY=($(compgen -P "${2-}" -W "$1" -- "${3-$cur}"))
|
||||
__gitcompadd "$1" "${2-}" "${3-$cur}" ""
|
||||
|
||||
# Tell Bash that compspec generates filenames.
|
||||
compopt -o filenames 2>/dev/null
|
||||
# use a hack to enable file mode in bash < 4
|
||||
compopt -o filenames +o nospace 2>/dev/null ||
|
||||
compgen -f /non-existing-dir/ > /dev/null
|
||||
}
|
||||
|
||||
__git_index_file_list_filter_compat ()
|
||||
{
|
||||
local path
|
||||
|
||||
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.
|
||||
# Execute 'git ls-files', unless the --committable option is specified, in
|
||||
# which case it runs 'git diff-index' to find out the files that can be
|
||||
# committed. It return paths relative to the directory specified in the first
|
||||
# argument, and using the options specified in the second argument.
|
||||
__git_ls_files_helper ()
|
||||
{
|
||||
(
|
||||
test -n "${CDPATH+set}" && unset CDPATH
|
||||
cd "$1"
|
||||
if [ "$2" == "--committable" ]; then
|
||||
git diff-index --name-only --relative HEAD
|
||||
else
|
||||
# NOTE: $2 is not quoted in order to support multiple options
|
||||
cd "$1" && git ls-files --exclude-standard $2
|
||||
git ls-files --exclude-standard $2
|
||||
fi
|
||||
) 2>/dev/null
|
||||
}
|
||||
|
||||
|
||||
# Execute git diff-index, returning paths relative to the directory
|
||||
# specified in the first argument, and using the tree object id
|
||||
# specified in the second argument.
|
||||
__git_diff_index_helper ()
|
||||
{
|
||||
(
|
||||
test -n "${CDPATH+set}" && unset CDPATH
|
||||
cd "$1" && git diff-index --name-only --relative "$2"
|
||||
) 2>/dev/null
|
||||
}
|
||||
|
||||
# __git_index_files accepts 1 or 2 arguments:
|
||||
# 1: Options to pass to ls-files (required).
|
||||
# Supported options are --cached, --modified, --deleted, --others,
|
||||
# and --directory.
|
||||
# 2: A directory path (optional).
|
||||
# If provided, only files within the specified directory are listed.
|
||||
# Sub directories are never recursed. Path must have a trailing
|
||||
# slash.
|
||||
__git_index_files ()
|
||||
{
|
||||
local dir="$(__gitdir)" root="${2-.}"
|
||||
local dir="$(__gitdir)" root="${2-.}" file
|
||||
|
||||
if [ -d "$dir" ]; then
|
||||
__git_ls_files_helper "$root" "$1" | __git_index_file_list_filter |
|
||||
sort | uniq
|
||||
fi
|
||||
}
|
||||
|
||||
# __git_diff_index_files accepts 1 or 2 arguments:
|
||||
# 1) The id of a tree object.
|
||||
# 2) A directory path (optional).
|
||||
# If provided, only files within the specified directory are listed.
|
||||
# Sub directories are never recursed. Path must have a trailing
|
||||
# slash.
|
||||
__git_diff_index_files ()
|
||||
{
|
||||
local dir="$(__gitdir)" root="${2-.}"
|
||||
|
||||
if [ -d "$dir" ]; then
|
||||
__git_diff_index_helper "$root" "$1" | __git_index_file_list_filter |
|
||||
sort | uniq
|
||||
__git_ls_files_helper "$root" "$1" |
|
||||
while read -r file; do
|
||||
case "$file" in
|
||||
?*/*) echo "${file%%/*}" ;;
|
||||
*) echo "$file" ;;
|
||||
esac
|
||||
done | sort | uniq
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -424,14 +369,8 @@ __git_refs ()
|
|||
done
|
||||
;;
|
||||
*)
|
||||
git ls-remote "$dir" HEAD ORIG_HEAD 'refs/tags/*' 'refs/heads/*' 'refs/remotes/*' 2>/dev/null | \
|
||||
while read -r hash i; do
|
||||
case "$i" in
|
||||
*^{}) ;;
|
||||
refs/*) echo "${i#refs/*/}" ;;
|
||||
*) echo "$i" ;;
|
||||
esac
|
||||
done
|
||||
echo "HEAD"
|
||||
git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
@ -549,44 +488,23 @@ __git_complete_revlist_file ()
|
|||
}
|
||||
|
||||
|
||||
# __git_complete_index_file requires 1 argument: the options to pass to
|
||||
# ls-file
|
||||
# __git_complete_index_file requires 1 argument:
|
||||
# 1: the options to pass to ls-file
|
||||
#
|
||||
# The exception is --committable, which finds the files appropriate commit.
|
||||
__git_complete_index_file ()
|
||||
{
|
||||
local pfx cur_="$cur"
|
||||
local pfx="" cur_="$cur"
|
||||
|
||||
case "$cur_" in
|
||||
?*/*)
|
||||
pfx="${cur_%/*}"
|
||||
cur_="${cur_##*/}"
|
||||
pfx="${pfx}/"
|
||||
;;
|
||||
esac
|
||||
|
||||
__gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
|
||||
;;
|
||||
*)
|
||||
__gitcomp_file "$(__git_index_files "$1")" "" "$cur_"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# __git_complete_diff_index_file requires 1 argument: the id of a tree
|
||||
# object
|
||||
__git_complete_diff_index_file ()
|
||||
{
|
||||
local pfx cur_="$cur"
|
||||
|
||||
case "$cur_" in
|
||||
?*/*)
|
||||
pfx="${cur_%/*}"
|
||||
cur_="${cur_##*/}"
|
||||
pfx="${pfx}/"
|
||||
|
||||
__gitcomp_file "$(__git_diff_index_files "$1" "$pfx")" "$pfx" "$cur_"
|
||||
;;
|
||||
*)
|
||||
__gitcomp_file "$(__git_diff_index_files "$1")" "" "$cur_"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
__git_complete_file ()
|
||||
|
@ -614,7 +532,6 @@ __git_complete_remote_or_refspec ()
|
|||
case "$cmd" in
|
||||
push) no_complete_refspec=1 ;;
|
||||
fetch)
|
||||
COMPREPLY=()
|
||||
return
|
||||
;;
|
||||
*) ;;
|
||||
|
@ -630,7 +547,6 @@ __git_complete_remote_or_refspec ()
|
|||
return
|
||||
fi
|
||||
if [ $no_complete_refspec = 1 ]; then
|
||||
COMPREPLY=()
|
||||
return
|
||||
fi
|
||||
[ "$remote" = "." ] && remote=
|
||||
|
@ -732,6 +648,7 @@ __git_list_porcelain_commands ()
|
|||
cat-file) : plumbing;;
|
||||
check-attr) : plumbing;;
|
||||
check-ignore) : plumbing;;
|
||||
check-mailmap) : plumbing;;
|
||||
check-ref-format) : plumbing;;
|
||||
checkout-index) : plumbing;;
|
||||
commit-tree) : plumbing;;
|
||||
|
@ -951,7 +868,6 @@ _git_am ()
|
|||
"
|
||||
return
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_apply ()
|
||||
|
@ -971,7 +887,6 @@ _git_apply ()
|
|||
"
|
||||
return
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_add ()
|
||||
|
@ -1031,7 +946,6 @@ _git_bisect ()
|
|||
__gitcomp_nl "$(__git_refs)"
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
@ -1124,9 +1038,14 @@ _git_cherry ()
|
|||
|
||||
_git_cherry_pick ()
|
||||
{
|
||||
local dir="$(__gitdir)"
|
||||
if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
|
||||
__gitcomp "--continue --quit --abort"
|
||||
return
|
||||
fi
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp "--edit --no-commit"
|
||||
__gitcomp "--edit --no-commit --signoff --strategy= --mainline"
|
||||
;;
|
||||
*)
|
||||
__gitcomp_nl "$(__git_refs)"
|
||||
|
@ -1170,7 +1089,6 @@ _git_clone ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_commit ()
|
||||
|
@ -1182,13 +1100,6 @@ _git_commit ()
|
|||
;;
|
||||
esac
|
||||
|
||||
case "$prev" in
|
||||
-c|-C)
|
||||
__gitcomp_nl "$(__git_refs)" "" "${cur}"
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$cur" in
|
||||
--cleanup=*)
|
||||
__gitcomp "default strip verbatim whitespace
|
||||
|
@ -1218,7 +1129,7 @@ _git_commit ()
|
|||
esac
|
||||
|
||||
if git rev-parse --verify --quiet HEAD >/dev/null; then
|
||||
__git_complete_diff_index_file "HEAD"
|
||||
__git_complete_index_file "--committable"
|
||||
else
|
||||
# This is the first commit
|
||||
__git_complete_index_file "--cached"
|
||||
|
@ -1251,7 +1162,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
|
|||
--no-prefix --src-prefix= --dst-prefix=
|
||||
--inter-hunk-context=
|
||||
--patience --histogram --minimal
|
||||
--raw
|
||||
--raw --word-diff
|
||||
--dirstat --dirstat= --dirstat-by-file
|
||||
--dirstat-by-file= --cumulative
|
||||
--diff-algorithm=
|
||||
|
@ -1299,7 +1210,7 @@ _git_difftool ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
__git_complete_file
|
||||
__git_complete_revlist_file
|
||||
}
|
||||
|
||||
__git_fetch_options="
|
||||
|
@ -1319,11 +1230,12 @@ _git_fetch ()
|
|||
}
|
||||
|
||||
__git_format_patch_options="
|
||||
--stdout --attach --no-attach --thread --thread= --output-directory
|
||||
--stdout --attach --no-attach --thread --thread= --no-thread
|
||||
--numbered --start-number --numbered-files --keep-subject --signoff
|
||||
--signature --no-signature --in-reply-to= --cc= --full-index --binary
|
||||
--not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
|
||||
--inline --suffix= --ignore-if-in-upstream --subject-prefix=
|
||||
--output-directory --reroll-count --to= --quiet --notes
|
||||
"
|
||||
|
||||
_git_format_patch ()
|
||||
|
@ -1354,7 +1266,6 @@ _git_fsck ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_gc ()
|
||||
|
@ -1365,7 +1276,6 @@ _git_gc ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_gitk ()
|
||||
|
@ -1442,7 +1352,6 @@ _git_init ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_ls_files ()
|
||||
|
@ -1578,7 +1487,6 @@ _git_mergetool ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
_git_merge_base ()
|
||||
|
@ -1819,7 +1727,7 @@ __git_config_get_set_variables ()
|
|||
_git_config ()
|
||||
{
|
||||
case "$prev" in
|
||||
branch.*.remote)
|
||||
branch.*.remote|branch.*.pushremote)
|
||||
__gitcomp_nl "$(__git_remotes)"
|
||||
return
|
||||
;;
|
||||
|
@ -1827,11 +1735,19 @@ _git_config ()
|
|||
__gitcomp_nl "$(__git_refs)"
|
||||
return
|
||||
;;
|
||||
branch.*.rebase)
|
||||
__gitcomp "false true"
|
||||
return
|
||||
;;
|
||||
remote.pushdefault)
|
||||
__gitcomp_nl "$(__git_remotes)"
|
||||
return
|
||||
;;
|
||||
remote.*.fetch)
|
||||
local remote="${prev#remote.}"
|
||||
remote="${remote%.fetch}"
|
||||
if [ -z "$cur" ]; then
|
||||
COMPREPLY=("refs/heads/")
|
||||
__gitcomp_nl "refs/heads/" "" "" ""
|
||||
return
|
||||
fi
|
||||
__gitcomp_nl "$(__git_refs_remotes "$remote")"
|
||||
|
@ -1866,6 +1782,10 @@ _git_config ()
|
|||
"
|
||||
return
|
||||
;;
|
||||
diff.submodule)
|
||||
__gitcomp "log short"
|
||||
return
|
||||
;;
|
||||
help.format)
|
||||
__gitcomp "man info web html"
|
||||
return
|
||||
|
@ -1891,7 +1811,6 @@ _git_config ()
|
|||
return
|
||||
;;
|
||||
*.*)
|
||||
COMPREPLY=()
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
@ -1908,7 +1827,7 @@ _git_config ()
|
|||
;;
|
||||
branch.*.*)
|
||||
local pfx="${cur%.*}." cur_="${cur##*.}"
|
||||
__gitcomp "remote merge mergeoptions rebase" "$pfx" "$cur_"
|
||||
__gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
|
||||
return
|
||||
;;
|
||||
branch.*)
|
||||
|
@ -2039,7 +1958,6 @@ _git_config ()
|
|||
core.fileMode
|
||||
core.fsyncobjectfiles
|
||||
core.gitProxy
|
||||
core.ignoreCygwinFSTricks
|
||||
core.ignoreStat
|
||||
core.ignorecase
|
||||
core.logAllRefUpdates
|
||||
|
@ -2061,13 +1979,14 @@ _git_config ()
|
|||
core.whitespace
|
||||
core.worktree
|
||||
diff.autorefreshindex
|
||||
diff.statGraphWidth
|
||||
diff.external
|
||||
diff.ignoreSubmodules
|
||||
diff.mnemonicprefix
|
||||
diff.noprefix
|
||||
diff.renameLimit
|
||||
diff.renames
|
||||
diff.statGraphWidth
|
||||
diff.submodule
|
||||
diff.suppressBlankEmpty
|
||||
diff.tool
|
||||
diff.wordRegex
|
||||
|
@ -2202,6 +2121,7 @@ _git_config ()
|
|||
receive.fsckObjects
|
||||
receive.unpackLimit
|
||||
receive.updateserverinfo
|
||||
remote.pushdefault
|
||||
remotes.
|
||||
repack.usedeltabaseoffset
|
||||
rerere.autoupdate
|
||||
|
@ -2272,7 +2192,6 @@ _git_remote ()
|
|||
__gitcomp "$c"
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
@ -2356,7 +2275,7 @@ _git_show ()
|
|||
return
|
||||
;;
|
||||
esac
|
||||
__git_complete_file
|
||||
__git_complete_revlist_file
|
||||
}
|
||||
|
||||
_git_show_branch ()
|
||||
|
@ -2388,8 +2307,6 @@ _git_stash ()
|
|||
*)
|
||||
if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
|
||||
__gitcomp "$subcommands"
|
||||
else
|
||||
COMPREPLY=()
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -2402,14 +2319,12 @@ _git_stash ()
|
|||
__gitcomp "--index --quiet"
|
||||
;;
|
||||
show,--*|drop,--*|branch,--*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
show,*|apply,*|drop,*|pop,*|branch,*)
|
||||
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
||||
| sed -n -e 's/:.*//p')"
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
@ -2419,7 +2334,7 @@ _git_submodule ()
|
|||
{
|
||||
__git_has_doubledash && return
|
||||
|
||||
local subcommands="add status init update summary foreach sync"
|
||||
local subcommands="add status init deinit update summary foreach sync"
|
||||
if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
|
||||
case "$cur" in
|
||||
--*)
|
||||
|
@ -2451,7 +2366,7 @@ _git_svn ()
|
|||
--no-metadata --use-svm-props --use-svnsync-props
|
||||
--log-window-size= --no-checkout --quiet
|
||||
--repack-flags --use-log-author --localtime
|
||||
--ignore-paths= $remote_opts
|
||||
--ignore-paths= --include-paths= $remote_opts
|
||||
"
|
||||
local init_opts="
|
||||
--template= --shared= --trunk= --tags=
|
||||
|
@ -2526,7 +2441,6 @@ _git_svn ()
|
|||
__gitcomp "--revision= --parent"
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
@ -2551,13 +2465,10 @@ _git_tag ()
|
|||
|
||||
case "$prev" in
|
||||
-m|-F)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
-*|tag)
|
||||
if [ $f = 1 ]; then
|
||||
__gitcomp_nl "$(__git_tags)"
|
||||
else
|
||||
COMPREPLY=()
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
|
@ -2579,9 +2490,10 @@ __git_main ()
|
|||
i="${words[c]}"
|
||||
case "$i" in
|
||||
--git-dir=*) __git_dir="${i#--git-dir=}" ;;
|
||||
--git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
|
||||
--bare) __git_dir="." ;;
|
||||
--help) command="help"; break ;;
|
||||
-c) c=$((++c)) ;;
|
||||
-c|--work-tree|--namespace) ((c++)) ;;
|
||||
-*) ;;
|
||||
*) command="$i"; break ;;
|
||||
esac
|
||||
|
@ -2599,6 +2511,7 @@ __git_main ()
|
|||
--exec-path
|
||||
--exec-path=
|
||||
--html-path
|
||||
--man-path
|
||||
--info-path
|
||||
--work-tree=
|
||||
--namespace=
|
||||
|
@ -2693,35 +2606,19 @@ if [[ -n ${ZSH_VERSION-} ]]; then
|
|||
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_helper ()
|
||||
{
|
||||
emulate -L ksh
|
||||
local cur cword prev
|
||||
cur=${words[CURRENT-1]}
|
||||
prev=${words[CURRENT-2]}
|
||||
let cword=CURRENT-1
|
||||
__${service}_main
|
||||
}
|
||||
|
||||
_git ()
|
||||
{
|
||||
emulate -L zsh
|
||||
local _ret=1
|
||||
__git_zsh_helper
|
||||
let _ret && _default -S '' && _ret=0
|
||||
local _ret=1 cur cword prev
|
||||
cur=${words[CURRENT]}
|
||||
prev=${words[CURRENT-1]}
|
||||
let cword=CURRENT-1
|
||||
emulate ksh -c __${service}_main
|
||||
let _ret && _default && _ret=0
|
||||
return _ret
|
||||
}
|
||||
|
||||
compdef _git git gitk
|
||||
return
|
||||
elif [[ -n ${BASH_VERSION-} ]]; then
|
||||
if ((${BASH_VERSINFO[0]} < 4)); then
|
||||
# compopt is not supported
|
||||
__git_index_file_list_filter ()
|
||||
{
|
||||
__git_index_file_list_filter_compat
|
||||
}
|
||||
fi
|
||||
fi
|
||||
|
||||
__git_func_wrap ()
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
|
||||
# Distributed under the GNU General Public License, version 2.0.
|
||||
#
|
||||
# This script allows you to see the current branch in your prompt.
|
||||
# This script allows you to see repository status in your prompt.
|
||||
#
|
||||
# To enable:
|
||||
#
|
||||
|
@ -13,23 +13,27 @@
|
|||
# 3a) Change your PS1 to call __git_ps1 as
|
||||
# command-substitution:
|
||||
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
|
||||
# ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
|
||||
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
|
||||
# the optional argument will be used as format string.
|
||||
# 3b) Alternatively, if you are using bash, __git_ps1 can be
|
||||
# used for PROMPT_COMMAND with two parameters, <pre> and
|
||||
# <post>, which are strings you would put in $PS1 before
|
||||
# and after the status string generated by the git-prompt
|
||||
# machinery. e.g.
|
||||
# PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
|
||||
# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
|
||||
# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
|
||||
# with two parameters, <pre> and <post>, which are strings
|
||||
# you would put in $PS1 before and after the status string
|
||||
# generated by the git-prompt machinery. e.g.
|
||||
# Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
|
||||
# will show username, at-sign, host, colon, cwd, then
|
||||
# various status string, followed by dollar and SP, as
|
||||
# your prompt.
|
||||
# ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
|
||||
# will show username, pipe, then various status string,
|
||||
# followed by colon, cwd, dollar and SP, as your prompt.
|
||||
# Optionally, you can supply a third argument with a printf
|
||||
# format string to finetune the output of the branch status
|
||||
#
|
||||
# The argument to __git_ps1 will be displayed only if you are currently
|
||||
# in a git repository. The %s token will be the name of the current
|
||||
# branch.
|
||||
# The repository status will be displayed only if you are currently in a
|
||||
# git repository. The %s token is the placeholder for the shown status.
|
||||
#
|
||||
# The prompt status always includes the current branch name.
|
||||
#
|
||||
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
|
||||
# unstaged (*) and staged (+) changes will be shown next to the branch
|
||||
|
@ -77,31 +81,8 @@
|
|||
#
|
||||
# If you would like a colored hint about the current dirty state, set
|
||||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
||||
# the colored output of "git status -sb".
|
||||
|
||||
# __gitdir accepts 0 or 1 arguments (i.e., location)
|
||||
# returns location of .git repo
|
||||
__gitdir ()
|
||||
{
|
||||
# Note: this function is duplicated in git-completion.bash
|
||||
# When updating it, make sure you update the other one to match.
|
||||
if [ -z "${1-}" ]; then
|
||||
if [ -n "${__git_dir-}" ]; then
|
||||
echo "$__git_dir"
|
||||
elif [ -n "${GIT_DIR-}" ]; then
|
||||
test -d "${GIT_DIR-}" || return 1
|
||||
echo "$GIT_DIR"
|
||||
elif [ -d .git ]; then
|
||||
echo .git
|
||||
else
|
||||
git rev-parse --git-dir 2>/dev/null
|
||||
fi
|
||||
elif [ -d "$1/.git" ]; then
|
||||
echo "$1/.git"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
# the colored output of "git status -sb" and are available only when
|
||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
||||
|
||||
# stores the divergence from upstream in $p
|
||||
# used by GIT_PS1_SHOWUPSTREAM
|
||||
|
@ -124,7 +105,7 @@ __git_ps1_show_upstream ()
|
|||
fi
|
||||
;;
|
||||
svn-remote.*.url)
|
||||
svn_remote[ $((${#svn_remote[@]} + 1)) ]="$value"
|
||||
svn_remote[$((${#svn_remote[@]} + 1))]="$value"
|
||||
svn_url_pattern+="\\|$value"
|
||||
upstream=svn+git # default upstream is SVN if available, else git
|
||||
;;
|
||||
|
@ -146,10 +127,11 @@ __git_ps1_show_upstream ()
|
|||
svn*)
|
||||
# get the upstream from the "git-svn-id: ..." in a commit message
|
||||
# (git-svn uses essentially the same procedure internally)
|
||||
local svn_upstream=($(git log --first-parent -1 \
|
||||
local -a svn_upstream
|
||||
svn_upstream=($(git log --first-parent -1 \
|
||||
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
|
||||
if [[ 0 -ne ${#svn_upstream[@]} ]]; then
|
||||
svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]}
|
||||
svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
|
||||
svn_upstream=${svn_upstream%@*}
|
||||
local n_stop="${#svn_remote[@]}"
|
||||
for ((n=1; n <= n_stop; n++)); do
|
||||
|
@ -222,6 +204,51 @@ __git_ps1_show_upstream ()
|
|||
|
||||
}
|
||||
|
||||
# Helper function that is meant to be called from __git_ps1. It
|
||||
# injects color codes into the appropriate gitstring variables used
|
||||
# to build a gitstring.
|
||||
__git_ps1_colorize_gitstring ()
|
||||
{
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
local c_red='%F{red}'
|
||||
local c_green='%F{green}'
|
||||
local c_lblue='%F{blue}'
|
||||
local c_clear='%f'
|
||||
else
|
||||
# Using \[ and \] around colors is necessary to prevent
|
||||
# issues with command line editing/browsing/completion!
|
||||
local c_red='\[\e[31m\]'
|
||||
local c_green='\[\e[32m\]'
|
||||
local c_lblue='\[\e[1;34m\]'
|
||||
local c_clear='\[\e[0m\]'
|
||||
fi
|
||||
local bad_color=$c_red
|
||||
local ok_color=$c_green
|
||||
local flags_color="$c_lblue"
|
||||
|
||||
local branch_color=""
|
||||
if [ $detached = no ]; then
|
||||
branch_color="$ok_color"
|
||||
else
|
||||
branch_color="$bad_color"
|
||||
fi
|
||||
c="$branch_color$c"
|
||||
|
||||
z="$c_clear$z"
|
||||
if [ "$w" = "*" ]; then
|
||||
w="$bad_color$w"
|
||||
fi
|
||||
if [ -n "$i" ]; then
|
||||
i="$ok_color$i"
|
||||
fi
|
||||
if [ -n "$s" ]; then
|
||||
s="$flags_color$s"
|
||||
fi
|
||||
if [ -n "$u" ]; then
|
||||
u="$bad_color$u"
|
||||
fi
|
||||
r="$c_clear$r"
|
||||
}
|
||||
|
||||
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
|
||||
# when called from PS1 using command substitution
|
||||
|
@ -254,24 +281,51 @@ __git_ps1 ()
|
|||
;;
|
||||
esac
|
||||
|
||||
local g="$(__gitdir)"
|
||||
if [ -z "$g" ]; then
|
||||
local repo_info rev_parse_exit_code
|
||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
||||
--is-bare-repository --is-inside-work-tree \
|
||||
--short HEAD 2>/dev/null)"
|
||||
rev_parse_exit_code="$?"
|
||||
|
||||
if [ -z "$repo_info" ]; then
|
||||
if [ $pcmode = yes ]; then
|
||||
#In PC mode PS1 always needs to be set
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
fi
|
||||
else
|
||||
return
|
||||
fi
|
||||
|
||||
local short_sha
|
||||
if [ "$rev_parse_exit_code" = "0" ]; then
|
||||
short_sha="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
fi
|
||||
local inside_worktree="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
local bare_repo="${repo_info##*$'\n'}"
|
||||
repo_info="${repo_info%$'\n'*}"
|
||||
local inside_gitdir="${repo_info##*$'\n'}"
|
||||
local g="${repo_info%$'\n'*}"
|
||||
|
||||
local r=""
|
||||
local b=""
|
||||
local step=""
|
||||
local total=""
|
||||
if [ -d "$g/rebase-merge" ]; then
|
||||
read b 2>/dev/null <"$g/rebase-merge/head-name"
|
||||
read step 2>/dev/null <"$g/rebase-merge/msgnum"
|
||||
read total 2>/dev/null <"$g/rebase-merge/end"
|
||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
||||
r="|REBASE-i"
|
||||
b="$(cat "$g/rebase-merge/head-name")"
|
||||
elif [ -d "$g/rebase-merge" ]; then
|
||||
else
|
||||
r="|REBASE-m"
|
||||
b="$(cat "$g/rebase-merge/head-name")"
|
||||
fi
|
||||
else
|
||||
if [ -d "$g/rebase-apply" ]; then
|
||||
read step 2>/dev/null <"$g/rebase-apply/next"
|
||||
read total 2>/dev/null <"$g/rebase-apply/last"
|
||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
||||
read b 2>/dev/null <"$g/rebase-apply/head-name"
|
||||
r="|REBASE"
|
||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
||||
r="|AM"
|
||||
|
@ -282,11 +336,28 @@ __git_ps1 ()
|
|||
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
|
||||
b="$(
|
||||
case "${GIT_PS1_DESCRIBE_STYLE-}" in
|
||||
|
@ -300,10 +371,14 @@ __git_ps1 ()
|
|||
git describe --tags --exact-match HEAD ;;
|
||||
esac 2>/dev/null)" ||
|
||||
|
||||
b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." ||
|
||||
b="unknown"
|
||||
b="$short_sha..."
|
||||
b="($b)"
|
||||
}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$step" ] && [ -n "$total" ]; then
|
||||
r="$r $step/$total"
|
||||
fi
|
||||
|
||||
local w=""
|
||||
|
@ -313,32 +388,33 @@ __git_ps1 ()
|
|||
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
|
||||
if [ "true" = "$inside_gitdir" ]; then
|
||||
if [ "true" = "$bare_repo" ]; then
|
||||
c="BARE:"
|
||||
else
|
||||
b="GIT_DIR!"
|
||||
fi
|
||||
elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
|
||||
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 git rev-parse --quiet --verify HEAD >/dev/null; then
|
||||
if [ -n "$short_sha" ]; 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="$"
|
||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
||||
[ -r "$g/refs/stash" ]; then
|
||||
s="$"
|
||||
fi
|
||||
|
||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
||||
[ -n "$(git ls-files --others --exclude-standard)" ]
|
||||
git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
|
||||
then
|
||||
u="%%"
|
||||
u="%${ZSH_VERSION+%}"
|
||||
fi
|
||||
|
||||
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
|
||||
|
@ -346,54 +422,24 @@ __git_ps1 ()
|
|||
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
|
||||
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
|
||||
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
|
||||
# NO color option unless in PROMPT_COMMAND mode
|
||||
printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
|
||||
fi
|
||||
printf -- "$printf_format" "$gitstring"
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -84,5 +84,14 @@ exist_gh() { # [DIRECTORY]
|
|||
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 #############################################################
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
function gi() { curl http://gitignore.io/api/$@ ;}
|
||||
function gi() { curl http://www.gitignore.io/api/$@ ;}
|
||||
|
||||
_gitignireio_get_command_list() {
|
||||
curl -s http://gitignore.io/api/list | tr "," "\n"
|
||||
curl -s http://www.gitignore.io/api/list | tr "," "\n"
|
||||
}
|
||||
|
||||
_gitignireio () {
|
||||
|
|
|
@ -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
1
plugins/go/go.plugin.zsh
Symbolic link
|
@ -0,0 +1 @@
|
|||
../golang/golang.plugin.zsh
|
|
@ -1,4 +1,5 @@
|
|||
# From : http://golang.org/misc/zsh/go?m=text
|
||||
# install in /etc/zsh/zshrc or your personal .zshrc
|
||||
|
||||
# gc
|
||||
prefixes=(5 6 8)
|
||||
for p in $prefixes; do
|
||||
|
@ -19,6 +20,7 @@ __go_tool_complete() {
|
|||
'build[compile packages and dependencies]'
|
||||
'clean[remove object files]'
|
||||
'doc[run godoc on package sources]'
|
||||
'env[print Go environment information]'
|
||||
'fix[run go tool fix on packages]'
|
||||
'fmt[run gofmt on package sources]'
|
||||
'get[download and install packages and dependencies]'
|
||||
|
@ -39,12 +41,17 @@ __go_tool_complete() {
|
|||
build_flags=(
|
||||
'-a[force reinstallation of packages that are already up-to-date]'
|
||||
'-n[print the commands but do not run them]'
|
||||
"-p[number of parallel builds]:number"
|
||||
'-p[number of parallel builds]:number'
|
||||
'-race[enable data race detection]'
|
||||
'-x[print the commands]'
|
||||
"-work[print temporary directory name and keep it]"
|
||||
"-gcflags[flags for 5g/6g/8g]:flags"
|
||||
"-ldflags[flags for 5l/6l/8l]:flags"
|
||||
"-gccgoflags[flags for gccgo]:flags"
|
||||
'-work[print temporary directory name and keep it]'
|
||||
'-ccflags[flags for 5c/6c/8c]:flags'
|
||||
'-gcflags[flags for 5g/6g/8g]:flags'
|
||||
'-ldflags[flags for 5l/6l/8l]:flags'
|
||||
'-gccgoflags[flags for gccgo]:flags'
|
||||
'-compiler[name of compiler to use]:name'
|
||||
'-installsuffix[suffix to add to package directory]:suffix'
|
||||
'-tags[list of build tags to consider satisfied]:tags'
|
||||
)
|
||||
__go_list() {
|
||||
local expl importpaths
|
||||
|
@ -87,7 +94,10 @@ __go_tool_complete() {
|
|||
"-cpu[values of GOMAXPROCS to use]:number list" \
|
||||
"-run[run tests and examples matching regexp]:regexp" \
|
||||
"-bench[run benchmarks matching regexp]:regexp" \
|
||||
"-benchtime[run each benchmark during n seconds]:duration" \
|
||||
"-benchmem[print memory allocation stats]" \
|
||||
"-benchtime[run each benchmark until taking this long]:duration" \
|
||||
"-blockprofile[write goroutine blocking profile to file]:file" \
|
||||
"-blockprofilerate[set sampling rate of goroutine blocking profile]:number" \
|
||||
"-timeout[kill test after that duration]:duration" \
|
||||
"-cpuprofile[write CPU profile to file]:file:_files" \
|
||||
"-memprofile[write heap profile to file]:file:_files" \
|
||||
|
@ -97,7 +107,7 @@ __go_tool_complete() {
|
|||
help)
|
||||
_values "${commands[@]}" \
|
||||
'gopath[GOPATH environment variable]' \
|
||||
'importpath[description of import paths]' \
|
||||
'packages[description of package lists]' \
|
||||
'remote[remote import path syntax]' \
|
||||
'testflag[description of testing flags]' \
|
||||
'testfunc[description of testing functions]'
|
||||
|
|
8
plugins/iwhois/iwhois.plugin.zsh
Normal file
8
plugins/iwhois/iwhois.plugin.zsh
Normal 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} "$@" ;
|
||||
}
|
|
@ -36,3 +36,15 @@ alias nomnom='killall'
|
|||
alias byes='exit'
|
||||
alias cya='reboot'
|
||||
alias kthxbai='halt'
|
||||
|
||||
alias pwned='ssh'
|
||||
|
||||
alias hackzor='git init'
|
||||
alias rulz='git push'
|
||||
alias bringz='git pull'
|
||||
alias chicken='git add'
|
||||
alias oanward='git commit -m'
|
||||
alias ooanward='git commit -am'
|
||||
alias letcat='git checkout'
|
||||
alias violenz='git rebase'
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ alias hglr='hg pull --rebase'
|
|||
alias hgo='hg outgoing'
|
||||
alias hgp='hg push'
|
||||
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
|
||||
alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
|
||||
|
||||
|
|
48
plugins/meteor/_meteor
Normal file
48
plugins/meteor/_meteor
Normal 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
|
|
@ -52,6 +52,11 @@ alias mvnc='mvn clean'
|
|||
alias mvncom='mvn compile'
|
||||
alias mvnt='mvn test'
|
||||
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 {
|
||||
reply=(
|
||||
|
|
|
@ -20,6 +20,7 @@ _1st_arguments=(
|
|||
'bundle:create pybundles (archives containing multiple packages)'
|
||||
'freeze:output all currently installed packages (exact versions) to stdout'
|
||||
'help:show available commands'
|
||||
'show:show information about installed packages'
|
||||
'install:install packages'
|
||||
'search:search PyPI'
|
||||
'uninstall:uninstall packages'
|
||||
|
@ -76,4 +77,7 @@ case "$words[1]" in
|
|||
uninstall)
|
||||
_pip_installed
|
||||
_wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
|
||||
show)
|
||||
_pip_installed
|
||||
_wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;;
|
||||
esac
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
function _rails_command () {
|
||||
if [ -e "script/server" ]; then
|
||||
ruby script/$@
|
||||
if [ -e "bin/rails" ]; then
|
||||
bin/rails $@
|
||||
elif [ -e "script/rails" ]; then
|
||||
ruby script/rails $@
|
||||
elif [ -e "bin/rails" ]; then
|
||||
bin/rails $@
|
||||
elif [ -e "script/server" ]; then
|
||||
ruby script/$@
|
||||
else
|
||||
rails $@
|
||||
fi
|
||||
|
@ -51,6 +51,7 @@ alias rds='rake db:seed'
|
|||
alias rdd='rake db:drop'
|
||||
alias rdtc='rake db:test:clone'
|
||||
alias rdtp='rake db:test:prepare'
|
||||
alias rdmtc='rake db:migrate db:test:clone'
|
||||
|
||||
alias rlc='rake log:clear'
|
||||
alias rn='rake notes'
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# Thank you Jim for everything you contributed to the Ruby and open source community
|
||||
# over the years. We will miss you dearly.
|
||||
alias jimweirich="rake"
|
||||
|
||||
alias rake="noglob rake" # allows square brackts for rake task invocation
|
||||
alias brake='noglob bundle exec rake' # execute the bundled rake gem
|
||||
alias srake='noglob sudo rake' # noglob must come before sudo
|
||||
|
|
|
@ -10,12 +10,18 @@ FOUND_RBENV=0
|
|||
rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv")
|
||||
if _homebrew-installed && _rbenv-from-homebrew-installed ; then
|
||||
rbenvdirs=($(brew --prefix rbenv) "${rbenvdirs[@]}")
|
||||
if [[ $RBENV_ROOT = '' ]]; then
|
||||
RBENV_ROOT="$HOME/.rbenv"
|
||||
fi
|
||||
fi
|
||||
|
||||
for rbenvdir in "${rbenvdirs[@]}" ; do
|
||||
if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then
|
||||
FOUND_RBENV=1
|
||||
export RBENV_ROOT=$rbenvdir
|
||||
if [[ $RBENV_ROOT = '' ]]; then
|
||||
RBENV_ROOT=$rbenvdir
|
||||
fi
|
||||
export RBENV_ROOT
|
||||
export PATH=${rbenvdir}/bin:$PATH
|
||||
eval "$(rbenv init --no-rehash - zsh)"
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
# Florent Thoumie and Jonas Pfenniger
|
||||
#
|
||||
|
||||
local _plugin__ssh_env=$HOME/.ssh/environment-$HOST
|
||||
local _plugin__ssh_env
|
||||
local _plugin__forwarding
|
||||
|
||||
function _plugin__start_agent()
|
||||
|
@ -48,6 +48,14 @@ function _plugin__start_agent()
|
|||
/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
|
||||
zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding
|
||||
if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then
|
||||
|
|
|
@ -1,25 +1,32 @@
|
|||
# Sublime Text 2 Aliases
|
||||
|
||||
local _sublime_darwin_paths > /dev/null 2>&1
|
||||
_sublime_darwin_paths=(
|
||||
"/usr/local/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
)
|
||||
|
||||
if [[ $('uname') == 'Linux' ]]; then
|
||||
if [ -f '/usr/bin/sublime_text' ]; then
|
||||
st_run() { nohup /usr/bin/sublime_text $@ > /dev/null & }
|
||||
else
|
||||
st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & }
|
||||
fi
|
||||
local _sublime_linux_paths > /dev/null 2>&1
|
||||
_sublime_linux_paths=(
|
||||
"$HOME/bin/sublime_text"
|
||||
"/opt/sublime_text/sublime_text"
|
||||
"/usr/bin/sublime_text"
|
||||
"/usr/local/bin/sublime_text"
|
||||
)
|
||||
for _sublime_path in $_sublime_linux_paths; do
|
||||
if [[ -a $_sublime_path ]]; then
|
||||
st_run() { $_sublime_path $@ >/dev/null 2>&1 &| }
|
||||
alias st=st_run
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
elif [[ $('uname') == 'Darwin' ]]; then
|
||||
local _sublime_darwin_paths > /dev/null 2>&1
|
||||
_sublime_darwin_paths=(
|
||||
"/usr/local/bin/subl"
|
||||
"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
)
|
||||
|
||||
for _sublime_path in $_sublime_darwin_paths; do
|
||||
if [[ -a $_sublime_path ]]; then
|
||||
|
|
73
plugins/svn-fast-info/svn-fast-info.plugin.zsh
Normal file
73
plugins/svn-fast-info/svn-fast-info.plugin.zsh
Normal 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
|
||||
}
|
|
@ -9,7 +9,7 @@ function svn_prompt_info() {
|
|||
_DISPLAY=$(svn_get_repo_name)
|
||||
fi
|
||||
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
|
||||
fi
|
||||
}
|
||||
|
@ -74,3 +74,22 @@ function svn_dirty_choose() {
|
|||
function svn_dirty() {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
main_commands=(
|
||||
add:'Adds the current working directory to your warp points'
|
||||
#add'\!':'Overwrites existing warp point' # TODO: Fix
|
||||
rm:'Removes the given warp point'
|
||||
ls:'Outputs all stored warp points'
|
||||
show:'Outputs warp points to current directory'
|
||||
)
|
||||
zmodload zsh/mapfile
|
||||
function _wd() {
|
||||
local ret=1
|
||||
local CONFIG=$HOME/.warprc
|
||||
|
||||
local -a points
|
||||
while read line
|
||||
do
|
||||
points+=$(awk "{ gsub(/\/Users\/$USER|\/home\/$USER/,\"~\"); print }" <<< $line)
|
||||
done < $CONFIG
|
||||
# Stolen from
|
||||
# http://stackoverflow.com/questions/9000698/completion-when-program-has-sub-commands
|
||||
|
||||
_wd()
|
||||
{
|
||||
# init variables
|
||||
local curcontext="$curcontext" state line
|
||||
typeset -A opt_args
|
||||
# local curcontext="$curcontext" state line
|
||||
# typeset -A opt_args
|
||||
|
||||
# init state
|
||||
_arguments \
|
||||
'1: :->command' \
|
||||
'2: :->argument'
|
||||
local -a commands
|
||||
local -a warp_points
|
||||
warp_points=( "${(f)mapfile[$CONFIG]}" )
|
||||
# LIST="${mapfile[$FNAME]}" # Not required unless stuff uses it
|
||||
|
||||
commands=(
|
||||
'add:Adds the current working directory to your warp points'
|
||||
'add!:Overwrites existing warp point'
|
||||
'rm:Removes the given warp point'
|
||||
'ls:Outputs all stored warp points'
|
||||
'show:Outputs all warp points that point to the current directory'
|
||||
'help:Show this extremely helpful text'
|
||||
'..:Go back to last directory'
|
||||
)
|
||||
|
||||
_arguments -C \
|
||||
'1: :->first_arg' \
|
||||
'2: :->second_arg' && ret=0
|
||||
|
||||
case $state in
|
||||
command)
|
||||
compadd "$@" add rm ls show
|
||||
_describe -t warp-points 'Warp points:' points && ret=0
|
||||
first_arg)
|
||||
_describe -t warp_points "Warp points" warp_points && ret=0
|
||||
_describe -t commands "Commands" commands && ret=0
|
||||
;;
|
||||
argument)
|
||||
second_arg)
|
||||
case $words[2] in
|
||||
rm|add!)
|
||||
_describe -t warp-points 'warp points' points && ret=0
|
||||
add\!|rm)
|
||||
_describe -t points "Warp points" warp_points && ret=0
|
||||
;;
|
||||
add)
|
||||
_message 'Write the name of your warp point' && ret=0
|
||||
;;
|
||||
*)
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
_wd "$@"
|
||||
|
||||
# Local Variables:
|
||||
# mode: Shell-Script
|
||||
# sh-indentation: 2
|
||||
# indent-tabs-mode: nil
|
||||
# sh-basic-offset: 2
|
||||
# End:
|
||||
# vim: ft=zsh sw=2 ts=2 et
|
||||
|
|
|
@ -6,4 +6,6 @@
|
|||
#
|
||||
# @github.com/mfaerevaag/wd
|
||||
|
||||
alias wd='. $ZSH/plugins/wd/wd.sh'
|
||||
wd() {
|
||||
. $ZSH/plugins/wd/wd.sh
|
||||
}
|
||||
|
|
|
@ -50,12 +50,12 @@ wd_warp()
|
|||
wd_print_msg $YELLOW "Warping to current directory?"
|
||||
else
|
||||
(( n = $#1 - 1 ))
|
||||
wd_print_msg $BLUE "Warping..."
|
||||
#wd_print_msg $BLUE "Warping..."
|
||||
cd -$n > /dev/null
|
||||
fi
|
||||
elif [[ ${points[$1]} != "" ]]
|
||||
then
|
||||
wd_print_msg $BLUE "Warping..."
|
||||
#wd_print_msg $BLUE "Warping..."
|
||||
cd ${points[$1]}
|
||||
else
|
||||
wd_print_msg $RED "Unkown warp point '$1'"
|
||||
|
@ -64,16 +64,16 @@ wd_warp()
|
|||
|
||||
wd_add()
|
||||
{
|
||||
if [[ $1 =~ "^\.+$" ]]
|
||||
if [[ $2 =~ "^\.+$" || $2 =~ "^\s*$" ]]
|
||||
then
|
||||
wd_print_msg $RED "Illeagal warp point (see README)."
|
||||
elif [[ ${points[$1]} == "" ]] || $2
|
||||
wd_print_msg $RED "Illegal warp point (see README)."
|
||||
elif [[ ${points[$2]} == "" ]] || $1
|
||||
then
|
||||
wd_remove $1 > /dev/null
|
||||
print "$1:$PWD" >> $CONFIG
|
||||
wd_remove $2 > /dev/null
|
||||
print "$2:$PWD" >> $CONFIG
|
||||
wd_print_msg $GREEN "Warp point added"
|
||||
else
|
||||
wd_print_msg $YELLOW "Warp point '$1' alredy exists. Use 'add!' to overwrite."
|
||||
wd_print_msg $YELLOW "Warp point '$2' already exists. Use 'add!' to overwrite."
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,9 @@ wd_remove()
|
|||
then
|
||||
if wd_tmp=`sed "/^$1:/d" $CONFIG`
|
||||
then
|
||||
echo $wd_tmp > $CONFIG
|
||||
# `>!` forces overwrite
|
||||
# we need this if people use `setopt NO_CLOBBER`
|
||||
echo $wd_tmp >! $CONFIG
|
||||
wd_print_msg $GREEN "Warp point removed"
|
||||
else
|
||||
wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!"
|
||||
|
@ -131,9 +133,9 @@ wd_print_usage()
|
|||
print "\nCommands:"
|
||||
print "\t add \t Adds the current working directory to your warp points"
|
||||
print "\t add! \t Overwrites existing warp point"
|
||||
print "\t remove Removes the given warp point"
|
||||
print "\t rm \t Removes the given warp point"
|
||||
print "\t show \t Outputs warp points to current directory"
|
||||
print "\t list \t Outputs all stored warp points"
|
||||
print "\t ls \t Outputs all stored warp points"
|
||||
print "\t help \t Show this extremely helpful text"
|
||||
}
|
||||
|
||||
|
@ -141,7 +143,7 @@ wd_print_usage()
|
|||
## run
|
||||
|
||||
# get opts
|
||||
args=`getopt -o a:r:lhs -l add:,remove:,list,help,show -- $*`
|
||||
args=`getopt -o a:r:lhs -l add:,rm:,ls,help,show -- $*`
|
||||
|
||||
# check if no arguments were given
|
||||
if [[ $? -ne 0 || $#* -eq 0 ]]
|
||||
|
@ -164,45 +166,36 @@ else
|
|||
case "$i"
|
||||
in
|
||||
-a|--add|add)
|
||||
wd_add $2 false
|
||||
shift
|
||||
shift
|
||||
wd_add false $2
|
||||
break
|
||||
;;
|
||||
-a!|--add!|add!)
|
||||
wd_add $2 true
|
||||
shift
|
||||
shift
|
||||
wd_add true $2
|
||||
break
|
||||
;;
|
||||
-r|--remove|rm)
|
||||
wd_remove $2
|
||||
shift
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-l|--list|ls)
|
||||
wd_list_all
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-h|--help|help)
|
||||
wd_print_usage
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-s|--show|show)
|
||||
wd_show
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
wd_warp $i
|
||||
shift
|
||||
break
|
||||
;;
|
||||
--)
|
||||
shift; break;;
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
@ -211,6 +204,6 @@ fi
|
|||
## garbage collection
|
||||
# if not, next time warp will pick up variables from this run
|
||||
# remember, there's no sub shell
|
||||
points=""
|
||||
args=""
|
||||
unhash -d val &> /dev/null # fixes issue #1
|
||||
unset points
|
||||
unset args
|
||||
unset val &> /dev/null # fixes issue #1
|
||||
|
|
|
@ -16,3 +16,4 @@ function xcsel {
|
|||
|
||||
alias xcb='xcodebuild'
|
||||
alias xcp='xcode-select --print-path'
|
||||
alias simulator='open $(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app'
|
||||
|
|
17
plugins/yii/yii.plugin.zsh
Normal file
17
plugins/yii/yii.plugin.zsh
Normal 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'
|
|
@ -11,13 +11,13 @@ ZSH_THEME="robbyrussell"
|
|||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
||||
# Set to this to use case-sensitive completion
|
||||
# Set this to use case-sensitive completion
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment this to disable bi-weekly auto-update checks
|
||||
# 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
|
||||
|
||||
# Uncomment following line if you want to disable colors in ls
|
||||
|
@ -37,9 +37,9 @@ ZSH_THEME="robbyrussell"
|
|||
# much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment following line if you want to shown in the command execution time stamp
|
||||
# in the history command output. The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|
|
||||
# yyyy-mm-dd
|
||||
# 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"|"yyyy-mm-dd"
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||
|
@ -66,4 +66,3 @@ export PATH=$HOME/bin:/usr/local/bin:$PATH
|
|||
|
||||
# ssh
|
||||
# export SSH_KEY_PATH="~/.ssh/dsa_id"
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# #
|
||||
# # #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
|
||||
# # (https://en.wikipedia.org/wiki/Fortune_%28Unix%29)
|
||||
# # b) displaying randomly command line tips from The command line fu
|
||||
|
@ -26,10 +26,7 @@
|
|||
# # -OS X: iTerm 2 (http://www.iterm2.com/)
|
||||
# # -font Source code pro (https://github.com/adobe/source-code-pro)
|
||||
# #
|
||||
# # Author: Adolfo Benedetti
|
||||
# # 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:
|
||||
# # This theme's look and feel is based on the Aaron Toponce's zsh theme, more info:
|
||||
# # http://pthree.org/2008/11/23/727/
|
||||
# # enjoy!
|
||||
########## COLOR ###########
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
# af-magic.zsh-theme
|
||||
#
|
||||
# Author: Andy Fleming
|
||||
# URL: http://andyfleming.com/
|
||||
# Repo: https://github.com/andyfleming/oh-my-zsh
|
||||
# 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
|
||||
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
|
||||
|
@ -27,7 +19,12 @@ eval my_gray='$FG[237]'
|
|||
eval my_orange='$FG[214]'
|
||||
|
||||
# right prompt
|
||||
RPROMPT='$(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
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# # README
|
||||
#
|
||||
# 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
|
||||
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're
|
||||
|
@ -88,9 +88,9 @@ prompt_git() {
|
|||
zstyle ':vcs_info:*' stagedstr '✚'
|
||||
zstyle ':vcs_info:git:*' unstagedstr '●'
|
||||
zstyle ':vcs_info:*' formats ' %u%c'
|
||||
zstyle ':vcs_info:*' actionformats '%u%c'
|
||||
zstyle ':vcs_info:*' actionformats ' %u%c'
|
||||
vcs_info
|
||||
echo -n "${ref/refs\/heads\//± }${vcs_info_msg_0_}"
|
||||
echo -n "${ref/refs\/heads\// }${vcs_info_msg_0_%% }"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -1,22 +1,4 @@
|
|||
#
|
||||
# Author:: Andrew Vit (<andrew@avit.ca>)
|
||||
#
|
||||
# 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='
|
||||
$(_user_host)${_current_dir} $(git_prompt_info) $(_ruby_version)
|
||||
|
|
|
@ -101,12 +101,12 @@ _1RIGHT="[%*] "
|
|||
|
||||
bureau_precmd () {
|
||||
_1SPACES=`get_space $_1LEFT $_1RIGHT`
|
||||
echo
|
||||
print
|
||||
print -rP "$_1LEFT$_1SPACES$_1RIGHT"
|
||||
}
|
||||
|
||||
setopt prompt_subst
|
||||
PROMPT='$_1LEFT$_1SPACES$_1RIGHT
|
||||
> $_LIBERTY '
|
||||
PROMPT='> $_LIBERTY '
|
||||
RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)'
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
# neuralsanwich.zsh-theme
|
||||
#
|
||||
# Author: Sean Jones
|
||||
# URL: http://www.neuralsandwich.com
|
||||
# Repo:
|
||||
# Direct link:
|
||||
# Create:
|
||||
# Modified:
|
||||
|
||||
if [ "x$OH_MY_ZSH_HG" = "x" ]; then
|
||||
OH_MY_ZSH_HG="hg"
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
# -----------------------------------------------------------------------------
|
||||
# FILE: dogenpunk.zsh-theme
|
||||
# DESCRIPTION: oh-my-zsh theme file.
|
||||
# AUTHOR: Matthew Nelson (dogenpunk@gmail.com)
|
||||
# VERSION: 0.1
|
||||
# SCREENSHOT: coming soon
|
||||
# -----------------------------------------------------------------------------
|
||||
# dogenpunk.zsh-theme
|
||||
|
||||
MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}"
|
||||
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
# user, host, full path, and time/date
|
||||
# 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#RVM settings
|
||||
# RVM settings
|
||||
if [[ -s ~/.rvm/scripts/rvm ]] ; then
|
||||
RPS1="%{$fg[yellow]%}rvm:%{$reset_color%}%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt)%{$reset_color%} $EPS1"
|
||||
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_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() {
|
||||
local cb=$(current_branch)
|
||||
if [ -n "$cb" ]; then
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# Theme with full path names and hostname
|
||||
# Handy if you work on different servers all the time;
|
||||
|
||||
|
||||
local return_code="%(?..%{$fg_bold[red]%}%? ↵%{$reset_color%})"
|
||||
|
||||
function my_git_prompt_info() {
|
||||
|
|
|
@ -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!
|
||||
# Meant for people with RVM and git. Tested only on OS X 10.7.
|
||||
|
|
|
@ -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!
|
||||
# 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/
|
||||
|
||||
|
||||
function prompt_char {
|
||||
git branch >/dev/null 2>/dev/null && echo "±" && return
|
||||
echo '○'
|
||||
|
|
|
@ -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)
|
||||
└> % %{$reset_color%}'
|
||||
|
||||
|
|
|
@ -17,9 +17,13 @@ if [[ -s ~/.rvm/scripts/rvm ]] ; then
|
|||
else
|
||||
if which rbenv &> /dev/null; then
|
||||
RPS1='$(git_custom_status)%{$fg[red]%}[`rbenv version | sed -e "s/ (set.*$//"`]%{$reset_color%} $EPS1'
|
||||
else
|
||||
if which chruby_prompt_info &> /dev/null; then
|
||||
RPS1='$(git_custom_status)%{$fg[red]%}[`chruby_prompt_info`]%{$reset_color%} $EPS1'
|
||||
else
|
||||
RPS1='$(git_custom_status) $EPS1'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
PROMPT='%{$fg[cyan]%}[%~% ]%(?.%{$fg[green]%}.%{$fg[red]%})%B$%b '
|
||||
|
|
|
@ -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%}]$ '
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[green]%}"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# ZSH theme by James Smith (http://loopj.com)
|
||||
# A multiline prompt with username, hostname, full path, return status, git branch, git dirty status, git remote status
|
||||
|
||||
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# Created by Daniel Bayerlein https://github.com/danielbayerlein
|
||||
# Inspired by http://peepcode.com/blog/2012/my-command-line-prompt
|
||||
|
||||
local smiley="%(?,%{$fg[green]%}☺%{$reset_color%},%{$fg[red]%}☹%{$reset_color%})"
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
# FILE: jaischeema.zsh-theme
|
||||
# DESCRIPTION: oh-my-zsh theme file.
|
||||
# AUTHOR: Jais Cheema
|
||||
# VERSION: 0.0.1
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# jaischeema.zsh-theme
|
||||
|
||||
PROMPT='%{$fg_bold[magenta]%}%m%{$reset_color%} at %{$fg_bold[green]%}%~%{$reset_color%} %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}%{$fg[red]%}❯%{$reset_color%} '
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
# ------------------------------------------------------------------------
|
||||
# Juan G. Hurtado oh-my-zsh theme
|
||||
# (Needs Git plugin for current_branch method)
|
||||
# ------------------------------------------------------------------------
|
||||
# Needs Git plugin for current_branch method
|
||||
|
||||
# Color shortcuts
|
||||
RED=$fg[red]
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
# ------------------------------------------------------------------------
|
||||
# Tyler Cipriani
|
||||
# oh-my-zsh theme
|
||||
# Totally ripped off Dallas theme
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
# Grab the current date (%W) and time (%t):
|
||||
JUNKFOOD_TIME_="%{$fg_bold[red]%}#%{$fg_bold[white]%}( %{$fg_bold[yellow]%}%W%{$reset_color%}@%{$fg_bold[white]%}%t )( %{$reset_color%}"
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
# FILE: kphoen.zsh-theme
|
||||
# DESCRIPTION: oh-my-zsh theme file.
|
||||
# AUTHOR: Kévin Gomez (geek63@gmail.com)
|
||||
# VERSION: 1.0.0
|
||||
# SCREENSHOT:
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# kphoen.zsh-theme
|
||||
|
||||
if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then
|
||||
PROMPT='[%{$fg[red]%}%n%{$reset_color%}@%{$fg[magenta]%}%m%{$reset_color%}:%{$fg[blue]%}%~%{$reset_color%}$(git_prompt_info)]
|
||||
|
|
|
@ -18,28 +18,6 @@
|
|||
# Github: https://github.com/nicoulaj
|
||||
# Twitter: https://twitter.com/nicoulaj
|
||||
#
|
||||
# License
|
||||
#
|
||||
# Copyright (c) 2013 Kasper Kronborg Isager
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Set required options
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
# /|/ Code by Stephen
|
||||
# /|/ "Rixius" Middleton
|
||||
#
|
||||
# name in folder (github)
|
||||
# ± if in github repo, or ≥ if otherwise Time in 24-hour format is on right.
|
||||
function collapse_pwd {
|
||||
|
|
|
@ -18,8 +18,11 @@ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[magenta]%}✂"
|
|||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[grey]%}✈"
|
||||
|
||||
function mygit() {
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$( git_prompt_status )%{$reset_color%}$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||
ref1=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||
ref2=$(git rev-parse HEAD | head -c 6) || return
|
||||
ref="$ref1 %{$fg[grey]%}$ref2"
|
||||
#ref=$(git symbolic-ref HEAD 2> /dev/null) $(git rev-parse HEAD | head -c 6) || return
|
||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$( git_prompt_status )%{$reset_color%}$ZSH_THEME_GIT_PROMPT_SUFFIX "
|
||||
}
|
||||
|
||||
function retcode() {}
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
# -----------------------------------------------------------------------------
|
||||
# FILE: smt.zsh-theme
|
||||
# DESCRIPTION: oh-my-zsh theme file, based on dogenpunk by Matthew Nelson.
|
||||
# AUTHOR: Stephen Tudor (stephen@tudorstudio.com
|
||||
# VERSION: 0.1
|
||||
# SCREENSHOT: coming soon
|
||||
# -----------------------------------------------------------------------------
|
||||
# smt.zsh-theme, based on dogenpunk by Matthew Nelson.
|
||||
|
||||
MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}"
|
||||
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%} "
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
# FILE: sorin.zsh-theme
|
||||
# DESCRIPTION: oh-my-zsh theme file.
|
||||
# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
|
||||
# VERSION: 1.0.2
|
||||
# SCREENSHOT: http://i.imgur.com/aipDQ.png
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# sorin.zsh-theme
|
||||
# screenshot: http://i.imgur.com/aipDQ.png
|
||||
|
||||
if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then
|
||||
MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}"
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt
|
||||
|
||||
function virtualenv_info {
|
||||
[ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '
|
||||
[ $VIRTUAL_ENV ] && echo '('$fg[blue]`basename $VIRTUAL_ENV`%{$reset_color%}') '
|
||||
}
|
||||
PR_GIT_UPDATE=1
|
||||
|
||||
|
@ -87,7 +87,7 @@ function steeef_precmd {
|
|||
else
|
||||
FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})"
|
||||
fi
|
||||
zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}"
|
||||
zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH} "
|
||||
|
||||
vcs_info 'prompt'
|
||||
PR_GIT_UPDATE=
|
||||
|
@ -96,5 +96,5 @@ function steeef_precmd {
|
|||
add-zsh-hook precmd steeef_precmd
|
||||
|
||||
PROMPT=$'
|
||||
%{$purple%}%n%{$reset_color%} at %{$orange%}%m%{$reset_color%} in %{$limegreen%}%~%{$reset_color%} $vcs_info_msg_0_
|
||||
$(virtualenv_info)$ '
|
||||
%{$purple%}%n%{$reset_color%} at %{$orange%}%m%{$reset_color%} in %{$limegreen%}%~%{$reset_color%} $vcs_info_msg_0_$(virtualenv_info)%{$reset_color%}
|
||||
$ '
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Sunrise theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com)
|
||||
# Sunrise theme for oh-my-zsh
|
||||
# Intended to be used with Solarized: http://ethanschoonover.com/solarized
|
||||
# (Needs Git plugin for current_branch method)
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Color shortcuts
|
||||
R=$fg_no_bold[red]
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# Name: trapd00r zsh theme
|
||||
# Author: Magnus Woldrich <m@japh.se>
|
||||
# trapd00r.zsh-theme
|
||||
#
|
||||
# This theme needs a terminal supporting 256 colors as well as unicode. It also
|
||||
# needs the script that splits up the current path and makes it fancy as located
|
||||
|
|
|
@ -32,3 +32,16 @@ PROMPT="
|
|||
${git_info} \
|
||||
%{$fg[white]%}[%*]
|
||||
%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}"
|
||||
|
||||
if [[ "$(whoami)" == "root" ]]; then
|
||||
PROMPT="
|
||||
%{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \
|
||||
%{$bg[yellow]%}%{$fg[cyan]%}%n%{$reset_color%} \
|
||||
%{$fg[white]%}at \
|
||||
%{$fg[green]%}$(box_name) \
|
||||
%{$fg[white]%}in \
|
||||
%{$terminfo[bold]$fg[yellow]%}${current_dir}%{$reset_color%}\
|
||||
${git_info} \
|
||||
%{$fg[white]%}[%*]
|
||||
%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}"
|
||||
fi
|
||||
|
|
|
@ -1,29 +1,31 @@
|
|||
ZSH=`/usr/bin/env|grep 'ZSH='|cut -d '=' -f 2`
|
||||
if [ -d "$ZSH" ]
|
||||
then
|
||||
set -e
|
||||
|
||||
if [ ! -n "$ZSH" ]; then
|
||||
ZSH=~/.oh-my-zsh
|
||||
fi
|
||||
|
||||
if [ -d "$ZSH" ]; then
|
||||
echo "\033[0;33mYou already have Oh My Zsh installed.\033[0m You'll need to remove $ZSH if you want to install"
|
||||
exit
|
||||
elif [ -d ~/.oh-my-zsh ]
|
||||
then
|
||||
echo "\033[0;33mYou already have One Oh My Zsh Directory.\033[0m You'll need to remove ~/.oh-my-zsh if you want to clone"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "\033[0;34mCloning Oh My Zsh...\033[0m"
|
||||
hash git >/dev/null && /usr/bin/env git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh || {
|
||||
hash git >/dev/null && /usr/bin/env git clone https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
|
||||
echo "git not installed"
|
||||
exit
|
||||
}
|
||||
|
||||
echo "\033[0;34mLooking for an existing zsh config...\033[0m"
|
||||
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]
|
||||
then
|
||||
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
|
||||
echo "\033[0;33mFound ~/.zshrc.\033[0m \033[0;32mBacking up to ~/.zshrc.pre-oh-my-zsh\033[0m";
|
||||
mv ~/.zshrc ~/.zshrc.pre-oh-my-zsh;
|
||||
fi
|
||||
|
||||
echo "\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[0m"
|
||||
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
|
||||
cp $ZSH/templates/zshrc.zsh-template ~/.zshrc
|
||||
sed -i -e "/^ZSH=/ c\\
|
||||
ZSH=$ZSH
|
||||
" ~/.zshrc
|
||||
|
||||
echo "\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m"
|
||||
sed -i -e "/export PATH=/ c\\
|
||||
|
@ -38,9 +40,8 @@ echo "\033[0;32m"' ____ / /_ ____ ___ __ __ ____ _____/ /_ '"\033[0m
|
|||
echo "\033[0;32m"' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '"\033[0m"
|
||||
echo "\033[0;32m"'/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '"\033[0m"
|
||||
echo "\033[0;32m"'\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '"\033[0m"
|
||||
echo "\033[0;32m"' /____/ '"\033[0m"
|
||||
|
||||
echo "\n\n \033[0;32m....is now installed.\033[0m"
|
||||
echo "\033[0;32m"' /____/ ....is now installed!'"\033[0m"
|
||||
echo "\n\n \033[0;32mPlease look over the ~/.zshrc file to select plugins, themes, and options.\033[0m"
|
||||
echo "\n\n \033[0;32mp.s. Follow us at http://twitter.com/ohmyzsh.\033[0m"
|
||||
/usr/bin/env zsh
|
||||
source ~/.zshrc
|
||||
. ~/.zshrc
|
||||
|
|
Loading…
Reference in a new issue