mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-20 03:02:29 +01:00
Merge branch 'master' of https://github.com/robbyrussell/oh-my-zsh
Conflicts: themes/gnzh.zsh-theme
This commit is contained in:
commit
3382b26661
96 changed files with 3296 additions and 436 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,8 +1,8 @@
|
|||
locals.zsh
|
||||
log/.zsh_history
|
||||
projects.zsh
|
||||
custom/*
|
||||
!custom/example
|
||||
custom
|
||||
!custom/plugins/example
|
||||
!custom/example.zsh
|
||||
*.swp
|
||||
!custom/example.zshcache
|
||||
|
|
|
|||
|
|
@ -7,25 +7,26 @@ bq. "OH MY ZSHELL!"
|
|||
h2. Setup
|
||||
|
||||
@oh-my-zsh@ should work with any recent release of "zsh":http://www.zsh.org/, the minimum recommended version is 4.3.9.
|
||||
If not already, install zsh using the command line first.
|
||||
|
||||
h3. The automatic installer... (do you trust me?)
|
||||
|
||||
You can install this via the command line with either `curl` or `wget`.
|
||||
You can install this via the command line with either @curl@ or @wget@.
|
||||
|
||||
h4. via `curl`
|
||||
h4. via @curl@
|
||||
|
||||
@curl -L http://install.ohmyz.sh | sh@
|
||||
|
||||
h4. via `wget`
|
||||
h4. via @wget@
|
||||
|
||||
@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).
|
||||
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
|
||||
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@
|
||||
|
|
@ -37,7 +38,7 @@ h3. The manual way
|
|||
|
||||
@git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh@
|
||||
|
||||
2. *OPTIONAL* Backup your existing ~/.zshrc file
|
||||
2. *OPTIONAL* Backup your existing @~/.zshrc@ file
|
||||
|
||||
@cp ~/.zshrc ~/.zshrc.orig@
|
||||
|
||||
|
|
@ -53,13 +54,13 @@ h3. The manual way
|
|||
|
||||
h3. Problems?
|
||||
|
||||
You _might_ need to modify your PATH in ~/.zshrc if you're not able to find some commands after switching to _Oh My Zsh_.
|
||||
You _might_ need to modify your @PATH@ in @~/.zshrc@ if you're not able to find some commands after switching to _Oh My Zsh_.
|
||||
|
||||
If you installed manually or changed the install location, check ZSH in ~/.zshrc
|
||||
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)
|
||||
* enable the plugins you want in your @~/.zshrc@ (take a look at the @plugins/@ directory and the "wiki":https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins to see what's possible)
|
||||
** example: @plugins=(git osx ruby)@
|
||||
* Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@.
|
||||
** Take a look at the "current themes":https://wiki.github.com/robbyrussell/oh-my-zsh/themes that come bundled with _Oh My Zsh_.
|
||||
|
|
@ -72,16 +73,16 @@ the "refcard":http://www.bash2zsh.com/zsh_refcard/refcard.pdf is pretty tasty fo
|
|||
h3. Customization
|
||||
|
||||
If you want to override any of the default behavior, just add a new file (ending in @.zsh@) into the @custom/@ directory.
|
||||
If you have many functions which go well together you can put them as a *.plugin.zsh file in the @custom/plugins/@ directory and then enable this plugin.
|
||||
If you have many functions which go well together you can put them as a @*.plugin.zsh@ file in the @custom/plugins/@ directory and then enable this plugin.
|
||||
If you would like to override the functionality of a plugin distributed with oh-my-zsh, create a plugin of the same name in the @custom/plugins/@ directory and it will be loaded instead of the one in @plugins/@.
|
||||
|
||||
h3. Updates
|
||||
|
||||
By default you will be prompted to check for updates. If you would like oh-my-zsh to automatically update itself without prompting you, set the following in your ~/.zshrc
|
||||
By default you will be prompted to check for updates. If you would like oh-my-zsh to automatically update itself without prompting you, set the following in your @~/.zshrc@
|
||||
|
||||
@DISABLE_UPDATE_PROMPT=true@
|
||||
|
||||
To disable updates entirely, put this in your ~/.zshrc
|
||||
To disable updates entirely, put this in your @~/.zshrc@
|
||||
|
||||
@DISABLE_AUTO_UPDATE=true@
|
||||
|
||||
|
|
|
|||
|
|
@ -37,13 +37,14 @@ 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,13 +1,13 @@
|
|||
alias man='nocorrect man'
|
||||
alias mv='nocorrect mv'
|
||||
alias mysql='nocorrect mysql'
|
||||
alias mkdir='nocorrect mkdir'
|
||||
alias gist='nocorrect gist'
|
||||
alias heroku='nocorrect heroku'
|
||||
alias ebuild='nocorrect ebuild'
|
||||
alias hpodder='nocorrect hpodder'
|
||||
alias sudo='nocorrect sudo'
|
||||
|
||||
if [[ "$ENABLE_CORRECTION" == "true" ]]; then
|
||||
alias ebuild='nocorrect ebuild'
|
||||
alias gist='nocorrect gist'
|
||||
alias heroku='nocorrect heroku'
|
||||
alias hpodder='nocorrect hpodder'
|
||||
alias man='nocorrect man'
|
||||
alias mkdir='nocorrect mkdir'
|
||||
alias mv='nocorrect mv'
|
||||
alias mysql='nocorrect mysql'
|
||||
alias sudo='nocorrect sudo'
|
||||
|
||||
setopt correct_all
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
function zsh_stats() {
|
||||
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n20
|
||||
fc -l 1 | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n20
|
||||
}
|
||||
|
||||
function uninstall_oh_my_zsh() {
|
||||
|
|
|
|||
14
lib/git.zsh
14
lib/git.zsh
|
|
@ -1,8 +1,8 @@
|
|||
# get the name of the branch we are on
|
||||
function git_prompt_info() {
|
||||
if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then
|
||||
if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" != "1" ]]; then
|
||||
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
|
||||
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return
|
||||
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0
|
||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||
fi
|
||||
}
|
||||
|
|
@ -54,11 +54,19 @@ git_remote_status() {
|
|||
|
||||
# Checks if there are commits ahead from remote
|
||||
function git_prompt_ahead() {
|
||||
if $(echo "$(command git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
||||
if $(echo "$(command git log @{upstream}..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
||||
echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
|
||||
fi
|
||||
}
|
||||
|
||||
# Gets the number of commits ahead from remote
|
||||
function git_commits_ahead() {
|
||||
if $(echo "$(command git log @{upstream}..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
||||
COMMITS=$(command git log @{upstream}..HEAD | grep '^commit' | wc -l | tr -d ' ')
|
||||
echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$COMMITS$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX"
|
||||
fi
|
||||
}
|
||||
|
||||
# Formats prompt string for current git commit short SHA
|
||||
function git_prompt_short_sha() {
|
||||
SHA=$(command git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
|
||||
|
|
|
|||
22
lib/grep.zsh
22
lib/grep.zsh
|
|
@ -2,5 +2,23 @@
|
|||
# Color grep results
|
||||
# Examples: http://rubyurl.com/ZXv
|
||||
#
|
||||
export GREP_OPTIONS='--color=auto'
|
||||
export GREP_COLOR='1;32'
|
||||
|
||||
GREP_OPTIONS="--color=auto"
|
||||
|
||||
# avoid VCS folders (if the necessary grep flags are available)
|
||||
grep-flag-available() {
|
||||
echo | grep $1 "" >/dev/null 2>&1
|
||||
}
|
||||
if grep-flag-available --exclude-dir=.cvs; then
|
||||
for PATTERN in .cvs .git .hg .svn; do
|
||||
GREP_OPTIONS+=" --exclude-dir=$PATTERN"
|
||||
done
|
||||
elif grep-flag-available --exclude=.cvs; then
|
||||
for PATTERN in .cvs .git .hg .svn; do
|
||||
GREP_OPTIONS+=" --exclude=$PATTERN"
|
||||
done
|
||||
fi
|
||||
unfunction grep-flag-available
|
||||
|
||||
export GREP_OPTIONS="$GREP_OPTIONS"
|
||||
export GREP_COLOR='1;32'
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ fi
|
|||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
|
||||
setopt append_history
|
||||
setopt extended_history
|
||||
setopt hist_expire_dups_first
|
||||
setopt hist_ignore_dups # ignore duplication command history list
|
||||
|
|
|
|||
|
|
@ -15,29 +15,49 @@ if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
|||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
bindkey -e # Use emacs key bindings
|
||||
bindkey -e # Use emacs key bindings
|
||||
|
||||
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 '\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.
|
||||
if [[ "${terminfo[kpp]}" != "" ]]; then
|
||||
bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history
|
||||
fi
|
||||
if [[ "${terminfo[knp]}" != "" ]]; then
|
||||
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
|
||||
fi
|
||||
|
||||
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
|
||||
if [[ "${terminfo[kcuu1]}" != "" ]]; then
|
||||
bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
|
||||
fi
|
||||
if [[ "${terminfo[kcud1]}" != "" ]]; then
|
||||
bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
|
||||
fi
|
||||
|
||||
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
|
||||
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
|
||||
if [[ "${terminfo[khome]}" != "" ]]; then
|
||||
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
|
||||
fi
|
||||
if [[ "${terminfo[kend]}" != "" ]]; then
|
||||
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
|
||||
fi
|
||||
|
||||
bindkey ' ' magic-space # [Space] - do history expansion
|
||||
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 '^[[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
|
||||
if [[ "${terminfo[kcbt]}" != "" ]]; then
|
||||
bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards
|
||||
fi
|
||||
|
||||
bindkey '^?' backward-delete-char # [Backspace] - delete backward
|
||||
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
|
||||
bindkey '^?' backward-delete-char # [Backspace] - delete backward
|
||||
if [[ "${terminfo[kdch1]}" != "" ]]; then
|
||||
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
|
||||
else
|
||||
bindkey "^[[3~" delete-char
|
||||
bindkey "^[3;5~" delete-char
|
||||
bindkey "\e[3~" delete-char
|
||||
fi
|
||||
|
||||
# Edit the current command line in $EDITOR
|
||||
autoload -U edit-command-line
|
||||
|
|
|
|||
|
|
@ -19,17 +19,19 @@ for color in {000..255}; do
|
|||
BG[$color]="%{[48;5;${color}m%}"
|
||||
done
|
||||
|
||||
|
||||
ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
|
||||
|
||||
# Show all 256 colors with color number
|
||||
function spectrum_ls() {
|
||||
for code in {000..255}; do
|
||||
print -P -- "$code: %F{$code}Test%f"
|
||||
print -P -- "$code: %F{$code}$ZSH_SPECTRUM_TEXT%f"
|
||||
done
|
||||
}
|
||||
|
||||
# Show all 256 colors where the background is set to specific color
|
||||
function spectrum_bls() {
|
||||
for code in {000..255}; do
|
||||
((cc = code + 1))
|
||||
print -P -- "$BG[$code]$code: Test %{$reset_color%}"
|
||||
print -P -- "$BG[$code]$code: $ZSH_SPECTRUM_TEXT %{$reset_color%}"
|
||||
done
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,8 +26,11 @@ function omz_termsupport_precmd {
|
|||
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
|
||||
|
||||
# cmd name only, or if this is sudo or ssh, the next cmd
|
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]:gs/%/%%}
|
||||
local LINE="${2:gs/%/%%}"
|
||||
|
||||
title '$CMD' '%100>...>$LINE%<<'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,9 @@ else
|
|||
fi
|
||||
|
||||
# Save the location of the current completion dump file.
|
||||
ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
if [ -z "$ZSH_COMPDUMP" ]; then
|
||||
ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
fi
|
||||
|
||||
# Load and run compinit
|
||||
autoload -U compinit
|
||||
|
|
|
|||
|
|
@ -1,4 +1,14 @@
|
|||
#
|
||||
# Your guess is as good as mine. Let's just assume that we will need this...
|
||||
# - For more info visit... http://atom.io/
|
||||
#
|
||||
local _atom_paths > /dev/null 2>&1
|
||||
_atom_paths=(
|
||||
"$HOME/Applications/Atom.app"
|
||||
"/Applications/Atom.app"
|
||||
)
|
||||
|
||||
for _atom_path in $_atom_paths; do
|
||||
if [[ -a $_atom_path ]]; then
|
||||
alias at="open -a '$_atom_path'"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
alias att='at .'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
if [ $commands[autojump] ]; then # check if autojump is installed
|
||||
if [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package
|
||||
if [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation
|
||||
. $HOME/.autojump/etc/profile.d/autojump.zsh
|
||||
elif [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package
|
||||
. /usr/share/autojump/autojump.zsh
|
||||
elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation
|
||||
. /etc/profile.d/autojump.zsh
|
||||
|
|
@ -7,8 +9,6 @@ if [ $commands[autojump] ]; then # check if autojump is installed
|
|||
. /etc/profile.d/autojump.sh
|
||||
elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation
|
||||
. /usr/local/share/autojump/autojump.zsh
|
||||
elif [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation
|
||||
. $HOME/.autojump/etc/profile.d/autojump.zsh
|
||||
elif [ -f /opt/local/etc/profile.d/autojump.zsh ]; then # mac os x with ports
|
||||
. /opt/local/etc/profile.d/autojump.zsh
|
||||
elif [ $commands[brew] -a -f `brew --prefix`/etc/autojump.zsh ]; then # mac os x with brew
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
function plugged_in() {
|
||||
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ]
|
||||
}
|
||||
|
||||
|
||||
function battery_pct_remaining() {
|
||||
if plugged_in ; then
|
||||
echo "External Power"
|
||||
|
|
@ -31,10 +31,14 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
}
|
||||
|
||||
function battery_time_remaining() {
|
||||
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
|
||||
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
|
||||
if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
|
||||
timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
|
||||
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
|
||||
if [ $timeremaining -gt 720 ] ; then
|
||||
echo "::"
|
||||
else
|
||||
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
|
||||
fi
|
||||
else
|
||||
echo "∞"
|
||||
fi
|
||||
|
|
@ -55,16 +59,28 @@ if [[ $(uname) == "Darwin" ]] ; then
|
|||
echo "∞"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function battery_is_charging() {
|
||||
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
|
||||
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
|
||||
}
|
||||
|
||||
elif [[ $(uname) == "Linux" ]] ; then
|
||||
|
||||
function battery_is_charging() {
|
||||
! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
|
||||
}
|
||||
|
||||
function battery_pct() {
|
||||
if (( $+commands[acpi] )) ; then
|
||||
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
|
||||
fi
|
||||
}
|
||||
|
||||
function battery_pct_remaining() {
|
||||
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
|
||||
if [ ! $(battery_is_charging) ] ; then
|
||||
battery_pct
|
||||
else
|
||||
echo "External Power"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -89,15 +105,6 @@ elif [[ $(uname) == "Linux" ]] ; then
|
|||
echo "∞"
|
||||
fi
|
||||
}
|
||||
|
||||
function battery_pct() {
|
||||
# todo for on linux
|
||||
}
|
||||
|
||||
function battery_is_charging() {
|
||||
# todo on linux
|
||||
false
|
||||
}
|
||||
|
||||
else
|
||||
# Empty functions so we don't cause errors in prompts
|
||||
|
|
@ -131,7 +138,7 @@ function battery_level_gauge() {
|
|||
if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then
|
||||
local filled=$(((( $battery_remaining_percentage + $gauge_slots - 1) / $gauge_slots)));
|
||||
local empty=$(($gauge_slots - $filled));
|
||||
|
||||
|
||||
if [[ $filled -gt $green_threshold ]]; then local gauge_color=$color_green;
|
||||
elif [[ $filled -gt $yellow_threshold ]]; then local gauge_color=$color_yellow;
|
||||
else local gauge_color=$color_red;
|
||||
|
|
@ -139,10 +146,9 @@ function battery_level_gauge() {
|
|||
else
|
||||
local filled=$gauge_slots;
|
||||
local empty=0;
|
||||
filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'};
|
||||
filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'};
|
||||
fi
|
||||
|
||||
|
||||
local charging=' ' && battery_is_charging && charging=$charging_symbol;
|
||||
|
||||
printf ${charging_color//\%/\%\%}$charging${color_reset//\%/\%\%}${battery_prefix//\%/\%\%}${gauge_color//\%/\%\%}
|
||||
|
|
|
|||
0
plugins/bower/_bower
Executable file → Normal file
0
plugins/bower/_bower
Executable file → Normal file
84
plugins/brew-cask/brew-cask.plugin.zsh
Normal file
84
plugins/brew-cask/brew-cask.plugin.zsh
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
# Autocompletion for homebrew-cask.
|
||||
#
|
||||
# This script intercepts calls to the brew plugin and adds autocompletion
|
||||
# for the cask subcommand.
|
||||
#
|
||||
# Author: https://github.com/pstadler
|
||||
|
||||
compdef _brew-cask brew
|
||||
|
||||
_brew-cask()
|
||||
{
|
||||
local curcontext="$curcontext" state line
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C \
|
||||
':command:->command' \
|
||||
':subcmd:->subcmd' \
|
||||
'*::options:->options'
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
__call_original_brew
|
||||
cask_commands=(
|
||||
'cask:manage casks'
|
||||
)
|
||||
_describe -t commands 'brew cask command' cask_commands ;;
|
||||
|
||||
(subcmd)
|
||||
case "$line[1]" in
|
||||
cask)
|
||||
if (( CURRENT == 3 )); then
|
||||
local -a subcommands
|
||||
subcommands=(
|
||||
"alfred:used to modify Alfred's scope to include the Caskroom"
|
||||
'audit:verifies installability of casks'
|
||||
'checklinks:checks for bad cask links'
|
||||
'cleanup:cleans up cached downloads'
|
||||
'create:creates a cask of the given name and opens it in an editor'
|
||||
'doctor:checks for configuration issues'
|
||||
'edit:edits the cask of the given name'
|
||||
'fetch:downloads Cask resources to local cache'
|
||||
'home:opens the homepage of the cask of the given name'
|
||||
'info:displays information about the cask of the given name'
|
||||
'install:installs the cask of the given name'
|
||||
'list:with no args, lists installed casks; given installed casks, lists installed files'
|
||||
'search:searches all known casks'
|
||||
'uninstall:uninstalls the cask of the given name'
|
||||
"update:a synonym for 'brew update'"
|
||||
)
|
||||
_describe -t commands "brew cask subcommand" subcommands
|
||||
fi ;;
|
||||
|
||||
*)
|
||||
__call_original_brew ;;
|
||||
esac ;;
|
||||
|
||||
(options)
|
||||
local -a casks installed_casks
|
||||
local expl
|
||||
case "$line[2]" in
|
||||
list|uninstall)
|
||||
__brew_installed_casks
|
||||
_wanted installed_casks expl 'installed casks' compadd -a installed_casks ;;
|
||||
audit|edit|home|info|install)
|
||||
__brew_all_casks
|
||||
_wanted casks expl 'all casks' compadd -a casks ;;
|
||||
esac ;;
|
||||
esac
|
||||
}
|
||||
|
||||
__brew_all_casks() {
|
||||
casks=(`brew cask search`)
|
||||
}
|
||||
|
||||
__brew_installed_casks() {
|
||||
installed_casks=(`brew cask list`)
|
||||
}
|
||||
|
||||
__call_original_brew()
|
||||
{
|
||||
local ret=1
|
||||
_call_function ret _brew
|
||||
compdef _brew-cask brew
|
||||
}
|
||||
|
|
@ -1 +1,2 @@
|
|||
alias brews='brew list -1'
|
||||
alias bubu="brew update && brew upgrade && brew cleanup"
|
||||
|
|
|
|||
49
plugins/bundler/README.md
Normal file
49
plugins/bundler/README.md
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# Bundler
|
||||
|
||||
- adds completion for basic bundler commands
|
||||
- adds short aliases for common bundler commands
|
||||
- `be` aliased to `bundle exec`
|
||||
- `bl` aliased to `bundle list`
|
||||
- `bp` aliased to `bundle package`
|
||||
- `bo` aliased to `bundle open`
|
||||
- `bu` aliased to `bundle update`
|
||||
- `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`)
|
||||
- adds a wrapper for common gems:
|
||||
- looks for a binstub under `./bin/` and executes it (if present)
|
||||
- calls `bundle exec <gem executable>` otherwise
|
||||
|
||||
For a full list of *common gems* being wrapped by default please look at the `bundler.plugin.zsh` file.
|
||||
|
||||
## Configuration
|
||||
|
||||
Please use the exact name of the executable and not the gem name.
|
||||
|
||||
### Add additional gems to be wrapped
|
||||
|
||||
Add this before the plugin-list in your `.zshrc`:
|
||||
```sh
|
||||
BUNDLED_COMMANDS=(rubocop)
|
||||
plugins=(... bundler ...)
|
||||
```
|
||||
This will add the wrapper for the `rubocop` gem (i.e. the executable).
|
||||
|
||||
|
||||
### Exclude gems from being wrapped
|
||||
|
||||
Add this before the plugin-list in your `.zshrc`:
|
||||
```sh
|
||||
UNBUNDLED_COMMANDS=(foreman spin)
|
||||
plugins=(... bundler ...)
|
||||
```
|
||||
This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped.
|
||||
|
||||
## Excluded gems
|
||||
|
||||
These gems should not be called with `bundle exec`. Please see the Issues on GitHub for clarification.
|
||||
|
||||
`berks`
|
||||
`foreman`
|
||||
`mailcatcher`
|
||||
`rails`
|
||||
`ruby`
|
||||
`spin`
|
||||
|
|
@ -18,11 +18,13 @@ case $state in
|
|||
"check[Determine whether the requirements for your application are installed]" \
|
||||
"list[Show all of the gems in the current bundle]" \
|
||||
"show[Show the source location of a particular gem in the bundle]" \
|
||||
"outdated[Show all of the outdated gems in the current bundle]" \
|
||||
"console[Start an IRB session in the context of the current bundle]" \
|
||||
"open[Open an installed gem in the editor]" \
|
||||
"viz[Generate a visual representation of your dependencies]" \
|
||||
"init[Generate a simple Gemfile, placed in the current directory]" \
|
||||
"gem[Create a simple gem, suitable for development with bundler]" \
|
||||
"platform[Displays platform compatibility information]" \
|
||||
"clean[Cleans up unused gems in your bundler directory]" \
|
||||
"help[Describe available tasks or one specific task]"
|
||||
ret=0
|
||||
|
|
@ -39,11 +41,13 @@ case $state in
|
|||
'check' \
|
||||
'list' \
|
||||
'show' \
|
||||
'outdated' \
|
||||
'console' \
|
||||
'open' \
|
||||
'viz' \
|
||||
'init' \
|
||||
'gem' \
|
||||
'platform' \
|
||||
'help' && ret=0
|
||||
;;
|
||||
install)
|
||||
|
|
@ -71,6 +75,15 @@ case $state in
|
|||
'(--verbose)--verbose[Enable verbose output mode]'
|
||||
ret=0
|
||||
;;
|
||||
outdated)
|
||||
_arguments \
|
||||
'(--pre)--pre[Check for newer pre-release gems]' \
|
||||
'(--source)--source[Check against a specific source]' \
|
||||
'(--local)--local[Do not attempt to fetch gems remotely and use the gem cache instead]' \
|
||||
'(--no-color)--no-color[Disable colorization in output]' \
|
||||
'(--verbose)--verbose[Enable verbose output mode]'
|
||||
ret=0
|
||||
;;
|
||||
(open|show)
|
||||
_gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') )
|
||||
if [[ $_gems != "" ]]; then
|
||||
|
|
|
|||
|
|
@ -3,19 +3,54 @@ alias bl="bundle list"
|
|||
alias bp="bundle package"
|
||||
alias bo="bundle open"
|
||||
alias bu="bundle update"
|
||||
alias bi="bundle_install"
|
||||
|
||||
# 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
|
||||
cap
|
||||
capify
|
||||
cucumber
|
||||
foodcritic
|
||||
guard
|
||||
irb
|
||||
jekyll
|
||||
kitchen
|
||||
knife
|
||||
middleman
|
||||
nanoc
|
||||
pry
|
||||
puma
|
||||
rackup
|
||||
rainbows
|
||||
rake
|
||||
rspec
|
||||
shotgun
|
||||
sidekiq
|
||||
spec
|
||||
spork
|
||||
spring
|
||||
strainer
|
||||
tailor
|
||||
taps
|
||||
thin
|
||||
thor
|
||||
unicorn
|
||||
unicorn_rails
|
||||
)
|
||||
|
||||
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list
|
||||
for cmd in $UNBUNDLED_COMMANDS; do
|
||||
bundled_commands=(${bundled_commands#$cmd});
|
||||
done
|
||||
|
||||
# Add $BUNDLED_COMMANDS to the bundled_commands list
|
||||
for cmd in $BUNDLED_COMMANDS; do
|
||||
bundled_commands+=($cmd);
|
||||
done
|
||||
|
||||
## Functions
|
||||
|
||||
bi() {
|
||||
bundle_install() {
|
||||
if _bundler-installed && _within-bundled-project; then
|
||||
local bundler_version=`bundle version | cut -d' ' -f3`
|
||||
if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
|
||||
|
|
@ -39,17 +74,25 @@ _bundler-installed() {
|
|||
}
|
||||
|
||||
_within-bundled-project() {
|
||||
local check_dir=$PWD
|
||||
while [ $check_dir != "/" ]; do
|
||||
local check_dir="$PWD"
|
||||
while [ "$check_dir" != "/" ]; do
|
||||
[ -f "$check_dir/Gemfile" ] && return
|
||||
check_dir="$(dirname $check_dir)"
|
||||
done
|
||||
false
|
||||
}
|
||||
|
||||
_binstubbed() {
|
||||
[ -f "./bin/${1}" ]
|
||||
}
|
||||
|
||||
_run-with-bundler() {
|
||||
if _bundler-installed && _within-bundled-project; then
|
||||
bundle exec $@
|
||||
if _binstubbed $1; then
|
||||
./bin/$@
|
||||
else
|
||||
bundle exec $@
|
||||
fi
|
||||
else
|
||||
$@
|
||||
fi
|
||||
|
|
@ -62,7 +105,6 @@ for cmd in $bundled_commands; do
|
|||
alias $cmd=bundled_$cmd
|
||||
|
||||
if which _$cmd > /dev/null 2>&1; then
|
||||
compdef _$cmd bundled_$cmd=$cmd
|
||||
compdef _$cmd bundled_$cmd=$cmd
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -19,4 +19,4 @@ bindkey -a 'N' vi-join
|
|||
bindkey -a 'j' vi-forward-word-end
|
||||
bindkey -a 'J' vi-forward-blank-word-end
|
||||
|
||||
lesskey $ZSH_CUSTOM/plugins/colemak/colemak-less
|
||||
lesskey $ZSH/plugins/colemak/colemak-less
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Plugin for highligthing file content
|
||||
# Plugin for highlighting file content
|
||||
# Plugin highlights file content based on the filename extension.
|
||||
# If no highlighting method supported for given extension then it tries
|
||||
# guess it by looking for file content.
|
||||
|
|
@ -6,9 +6,9 @@
|
|||
alias colorize='colorize_via_pygmentize'
|
||||
|
||||
colorize_via_pygmentize() {
|
||||
if [ ! -x $(which pygmentize) ]; then
|
||||
echo package \'pygmentize\' is not installed!
|
||||
exit -1
|
||||
if [ ! -x "$(which pygmentize)" ]; then
|
||||
echo "package \'pygmentize\' is not installed!"
|
||||
return -1
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
|
|
@ -25,4 +25,4 @@ colorize_via_pygmentize() {
|
|||
pygmentize -g "$FNAME"
|
||||
fi
|
||||
done
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
#
|
||||
|
||||
# ls, the common ones I use a lot shortened for rapid fire usage
|
||||
alias ls='ls --color' #I like color
|
||||
alias l='ls -lFh' #size,show type,human readable
|
||||
alias la='ls -lAFh' #long list,show almost all,show type,human readable
|
||||
alias lr='ls -tRFh' #sorted by date,recursive,show type,human readable
|
||||
|
|
@ -39,7 +38,7 @@ alias -g NE="2> /dev/null"
|
|||
alias -g NUL="> /dev/null 2>&1"
|
||||
alias -g P="2>&1| pygmentize -l pytb"
|
||||
|
||||
alias dud='du --max-depth=1 -h'
|
||||
alias dud='du -d 1 -h'
|
||||
alias duf='du -sh *'
|
||||
alias fd='find . -type d -name'
|
||||
alias ff='find . -type f -name'
|
||||
|
|
@ -71,7 +70,7 @@ if [ ${ZSH_VERSION//\./} -ge 420 ]; then
|
|||
_image_fts=(jpg jpeg png gif mng tiff tif xpm)
|
||||
for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done
|
||||
|
||||
_media_fts=(avi mpg mpeg ogm mp3 wav ogg ape rm mov mkv)
|
||||
_media_fts=(ape avi flv mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
|
||||
for ft in $_media_fts ; do alias -s $ft=mplayer ; done
|
||||
|
||||
#read documents
|
||||
|
|
|
|||
|
|
@ -46,3 +46,6 @@ alias cdu='composer dump-autoload'
|
|||
|
||||
# install composer in the current directory
|
||||
alias cget='curl -s https://getcomposer.org/installer | php'
|
||||
|
||||
# Add Composer's global binaries to PATH
|
||||
export PATH=$PATH:~/.composer/vendor/bin
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ fi
|
|||
# Aliases ###################################################################
|
||||
# These are for more obscure uses of apt-get and aptitude that aren't covered
|
||||
# below.
|
||||
alias ag='apt-get'
|
||||
alias ap='aptitude'
|
||||
alias age='apt-get'
|
||||
alias api='aptitude'
|
||||
|
||||
# Some self-explanatory aliases
|
||||
alias acs="apt-cache search"
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -1,39 +1,19 @@
|
|||
#!/bin/zsh
|
||||
#
|
||||
# Make the dirstack more persistant
|
||||
#
|
||||
# Add dirpersist to $plugins in ~/.zshrc to load
|
||||
#
|
||||
# Save dirstack history to .zdirs
|
||||
# adapted from:
|
||||
# github.com/grml/grml-etc-core/blob/master/etc/zsh/zshrc#L1547
|
||||
|
||||
# $zdirstore is the file used to persist the stack
|
||||
zdirstore=~/.zdirstore
|
||||
DIRSTACKSIZE=${DIRSTACKSIZE:-20}
|
||||
dirstack_file=${dirstack_file:-${HOME}/.zdirs}
|
||||
|
||||
dirpersistinstall () {
|
||||
if grep 'dirpersiststore' ~/.zlogout > /dev/null; then
|
||||
else
|
||||
if read -q \?"Would you like to set up your .zlogout file for use with dirspersist? (y/n) "; then
|
||||
echo "# Store dirs stack\n# See $ZSH/plugins/dirspersist.plugin.zsh\ndirpersiststore" >> ~/.zlogout
|
||||
else
|
||||
echo "If you don't want this message to appear, remove dirspersist from \$plugins"
|
||||
fi
|
||||
fi
|
||||
if [[ -f ${dirstack_file} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
|
||||
dirstack=( ${(f)"$(< $dirstack_file)"} )
|
||||
# "cd -" won't work after login by just setting $OLDPWD, so
|
||||
[[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD
|
||||
fi
|
||||
|
||||
chpwd() {
|
||||
if (( $DIRSTACKSIZE <= 0 )) || [[ -z $dirstack_file ]]; then return; fi
|
||||
local -ax my_stack
|
||||
my_stack=( ${PWD} ${dirstack} )
|
||||
builtin print -l ${(u)my_stack} >! ${dirstack_file}
|
||||
}
|
||||
|
||||
dirpersiststore () {
|
||||
dirs -p | perl -e 'foreach (reverse <STDIN>) {chomp;s/([& ])/\\$1/g ;print "if [ -d $_ ]; then pushd -q $_; fi\n"}' > $zdirstore
|
||||
}
|
||||
|
||||
dirpersistrestore () {
|
||||
if [ -f $zdirstore ]; then
|
||||
source $zdirstore
|
||||
fi
|
||||
}
|
||||
|
||||
DIRSTACKSIZE=10
|
||||
setopt autopushd pushdminus pushdsilent pushdtohome pushdignoredups
|
||||
|
||||
dirpersistinstall
|
||||
dirpersistrestore
|
||||
|
||||
# Make popd changes permanent without having to wait for logout
|
||||
alias popd="popd;dirpersiststore"
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ _managepy-sqlinitialdata(){}
|
|||
_managepy-sqlreset(){}
|
||||
_managepy-sqlsequencereset(){}
|
||||
_managepy-startapp(){}
|
||||
_managepy-startproject(){}
|
||||
|
||||
_managepy-syncdb() {
|
||||
_arguments -s : \
|
||||
|
|
@ -198,6 +199,7 @@ _managepy-commands() {
|
|||
'sqlreset:Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s).'
|
||||
'sqlsequencereset:Prints the SQL statements for resetting sequences for the given app name(s).'
|
||||
"startapp:Creates a Django app directory structure for the given app name in this project's directory."
|
||||
"startproject:Creates a Django project directory structure for the given project name in this current directory."
|
||||
"syncdb:Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
|
||||
'test:Runs the test suite for the specified applications, or the entire site if no apps are specified.'
|
||||
'testserver:Runs a development server with data from the given fixture(s).'
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
# Docker autocompletion for oh-my-zsh
|
||||
# Requires: Docker installed
|
||||
# Author : Azaan (@aeonazaan)
|
||||
# Author: Azaan (@aeonazaan)
|
||||
# Updates: Bob Maerten (@bobmaerten) for Docker v0.9+
|
||||
|
||||
|
||||
# ----- Helper functions
|
||||
|
|
@ -24,21 +25,30 @@ __docker_images() {
|
|||
# Seperate function for each command, makes extension easier later
|
||||
# ---------------------------
|
||||
__attach() {
|
||||
_arguments \
|
||||
'--no-stdin[Do not attach stdin]' \
|
||||
'--sig-proxy[Proxify all received signal to the process (even in non-tty mode)]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__build() {
|
||||
_arguments \
|
||||
'-q=false[Suppress verbose build output]' \
|
||||
'-t="[fuck to be applied to the resulting image in case of success]' \
|
||||
'--no-cache[Do not use cache when building the image]' \
|
||||
'(-q,--quiet)'{-q,--quiet}'[Suppress the verbose output generated by the containers]' \
|
||||
'--rm[Remove intermediate containers after a successful build]' \
|
||||
'(-t,--tag=)'{-t,--tag=}'[Repository name (and optionally a tag) to be applied to the resulting image in case of success]' \
|
||||
'*:files:_files'
|
||||
}
|
||||
|
||||
__commit() {
|
||||
_arguments \
|
||||
'-author="[Author]' \
|
||||
'-m="[Commit message]' \
|
||||
'-run="[Config automatically applied when the image is run.\n]'
|
||||
'(-a,--author=)'{-a,--author=}'[Author (eg. "John Hannibal Smith <hannibal@a-team.com>"]' \
|
||||
'(-m,--message=)'{-m,--message=}'[Commit message]' \
|
||||
'--run=[Config automatically applied when the image is run.]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__cp() {
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
|
|
@ -46,21 +56,29 @@ __diff() {
|
|||
__docker_containers
|
||||
}
|
||||
|
||||
__events() {
|
||||
_arguments \
|
||||
'--since=[Show previously created events and then stream.]'
|
||||
}
|
||||
|
||||
__export() {
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
|
||||
__history() {
|
||||
_arguments \
|
||||
'--no-trunc=[Don''t truncate output]' \
|
||||
'(-q,--quiet)'{-q,--quiet}'[Only show numeric IDs]'
|
||||
__docker_images
|
||||
}
|
||||
|
||||
__images() {
|
||||
_arguments \
|
||||
'-a[show all images]' \
|
||||
'-notrunc[dont truncate output]' \
|
||||
'-q[only show numeric IDs]' \
|
||||
'-viz[output graph in graphviz format]'
|
||||
'(-a,--all)'{-a,--all}'[Show all images (by default filter out the intermediate images used to build)]' \
|
||||
'--no-trunc[Don''t truncate output]' \
|
||||
'(-q,--quiet=)'{-q,--quiet=}'[Only show numeric IDs]' \
|
||||
'(-t,--tree=)'{-t,--tree=}'[Output graph in tree format]' \
|
||||
'(-v,--viz=)'{-v,--viz=}'[Output graph in graphviz format]'
|
||||
__docker_images
|
||||
}
|
||||
|
||||
|
|
@ -86,14 +104,20 @@ __kill() {
|
|||
__docker_containers
|
||||
}
|
||||
|
||||
__load() {
|
||||
_arguments '*:files:_files'
|
||||
}
|
||||
|
||||
__login() {
|
||||
_arguments \
|
||||
'-e="[email]' \
|
||||
'-p="[password]' \
|
||||
'-u="[username]' \
|
||||
'(-e,--email=)'{-e,-email=}'[Email]' \
|
||||
'(-p,--password=)'{-p,-password=}'[Password]' \
|
||||
'(-u,--username=)'{-u,-username=}'[Username]'
|
||||
}
|
||||
|
||||
__logs() {
|
||||
_arguments \
|
||||
'(-f,--follow)'{-f,-follow}'[Follow log output]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
|
|
@ -107,77 +131,107 @@ __top() {
|
|||
|
||||
__ps() {
|
||||
_arguments \
|
||||
'-a[Show all containers. Only running containers are shown by default.]' \
|
||||
'-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.]' \
|
||||
'-notrunc[Dont truncate output]' \
|
||||
'-q[Only display numeric IDs]' \
|
||||
'-s[Display sizes]' \
|
||||
'-sinceId="[Show only containers created since Id, include non-running ones.]'
|
||||
'(-a,--all)'{-a,--all}'[Show all containers. Only running containers are shown by default.]' \
|
||||
'--before-id=[Show only container created before Id, include non-running ones.]' \
|
||||
'(-l,--latest)'{-l,--latest}'[Show only the latest created container, include non-running ones.]' \
|
||||
'-n=[Show n last created containers, include non-running ones. default=-1.]' \
|
||||
'--no-trunc[Don''t truncate output]' \
|
||||
'(-q,--quiet)'{-q,--quiet}'[Only display numeric IDs]' \
|
||||
'(-s,--size)'{-s,--size}'[Display sizes]' \
|
||||
'--since-id=[Show only containers created since Id, include non-running ones.]'
|
||||
}
|
||||
|
||||
__pull() {
|
||||
_arguments '-t="[Download tagged image in repository]'
|
||||
_arguments \
|
||||
'(-t,--tag=)'{-t,--tag=}'[Download tagged image in repository]'
|
||||
}
|
||||
|
||||
__push() {
|
||||
|
||||
# no arguments
|
||||
}
|
||||
|
||||
__restart() {
|
||||
_arguments '-t=[number of seconds to try to stop before killing]'
|
||||
_arguments \
|
||||
'(-t,--time=)'{-t,--time=}'[Number of seconds to try to stop for before killing the container. Once killed it will then be restarted. Default=10]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__rm() {
|
||||
_arguments '-v[Remove the volumes associated to the container]'
|
||||
_arguments \
|
||||
'(-f,--force=)'{-f,--force=}'[Force removal of running container]' \
|
||||
'(-l,--link=)'{-l,--link=}'[Remove the specified link and not the underlying container]' \
|
||||
'(-v,--volumes=)'{-v,--volumes=}'[Remove the volumes associated to the container]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__rmi() {
|
||||
_arguments \
|
||||
'(-f,--force=)'{-f,--force=}'[Force]'
|
||||
__docker_images
|
||||
}
|
||||
|
||||
__run() {
|
||||
_arguments \
|
||||
'-a=[Attach to stdin, stdout or stderr.]' \
|
||||
'-c=[CPU shares (relative weight)]' \
|
||||
'-d[Detached mode: leave the container running in the background]' \
|
||||
'-dns=[Set custom dns servers]' \
|
||||
'-e=[Set environment variables]' \
|
||||
'-entrypoint="[Overwrite the default entrypoint of the image]' \
|
||||
'-h="[Container host name]' \
|
||||
'-i[Keep stdin open even if not attached]' \
|
||||
'-m=[Memory limit (in bytes)]' \
|
||||
'-p=[Expose a containers port to the host (use docker port to see the actual mapping)]' \
|
||||
'-t[Allocate a pseudo-tty]' \
|
||||
'-u="[Username or UID]' \
|
||||
'-v=[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
|
||||
'-volumes-from="[Mount volumes from the specified container]'
|
||||
'(-P,--publish-all=)'{-P,--publish-all=}'[Publish all exposed ports to the host interfaces]' \
|
||||
'(-a,--attach=)'{-a,--attach=}'[Attach to stdin, stdout or stderr.]' \
|
||||
'(-c,--cpu-shares=)'{-c,--cpu-shares=}': CPU shares (relative weight)]' \
|
||||
'--cidfile=[Write the container ID to the file]' \
|
||||
'(-d,--detach=)'{-d,--detach=}'[Detached mode: Run container in the background, print new container id]' \
|
||||
'--dns=[Set custom dns servers]' \
|
||||
'(-e,--env=)'{-e,--env=}'[Set environment variables]' \
|
||||
'--entrypoint=[Overwrite the default entrypoint of the image]' \
|
||||
'--expose=[Expose a port from the container without publishing it to your host]' \
|
||||
'(-h,--hostname=)'{-h,--hostname=}'[Container host name]' \
|
||||
'(-i,--interactive=)'{-i,--interactive=}'[Keep stdin open even if not attached]' \
|
||||
'--link=[Add link to another container (name:alias)]' \
|
||||
'--lxc-conf=[Add custom lxc options -lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"]' \
|
||||
'(-m,--memory=)'{-m,--memory=}'[Memory limit (format: <number><optional unit>, where unit = b, k, m or g)]' \
|
||||
'(-n,--networking=)'{-n,--networking=}'[Enable networking for this container]' \
|
||||
'--name=[Assign a name to the container]' \
|
||||
'(-p,--publish=)'{-p,--publish=}'[Publish a container''s port to the host (format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort) (use "docker port" to see the actual mapping)]' \
|
||||
'--privileged=[Give extended privileges to this container]' \
|
||||
'--rm=[Automatically remove the container when it exits (incompatible with -d)]' \
|
||||
'--sig-proxy=[Proxify all received signal to the process (even in non-tty mode)]' \
|
||||
'(-t,--tty=)'{-t,--tty=}'[Allocate a pseudo-tty]' \
|
||||
'(-u,--user=)'{-u,--user=}'[Username or UID]' \
|
||||
'(-v,--volume=)'{-v,--volume=}'[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
|
||||
'--volumes-from=[Mount volumes from the specified container(s)]' \
|
||||
'(-w,--workdir=)'{-w,--workdir=}'[Working directory inside the container]'
|
||||
__docker_images
|
||||
}
|
||||
|
||||
__search() {
|
||||
_arguments '-notrunc[Dont truncate output]'
|
||||
_arguments \
|
||||
'--no-trunc=[Don''t truncate output]' \
|
||||
'-s,--stars=)'{-s,--stars=}'[Only displays with at least xxx stars]' \
|
||||
'-t,--trusted=)'{-t,--trusted=}'[Only show trusted builds]'
|
||||
}
|
||||
|
||||
__save() {
|
||||
__docker_images
|
||||
}
|
||||
|
||||
__start() {
|
||||
_arguments \
|
||||
'(-a,--attach=)'{-a,--attach=}'[Attach container''s stdout/stderr and forward all signals to the process]' \
|
||||
'(-i,--interactive=)'{-i,--interactive=}'[Attach container''s stdin]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__stop() {
|
||||
_arguments '-t=[number of seconds to try to stop before killing]'
|
||||
_arguments \
|
||||
'(-t,--time=)'{-t,--time=}'[Number of seconds to wait for the container to stop before killing it.]'
|
||||
__docker_containers
|
||||
}
|
||||
|
||||
__tag() {
|
||||
_arguments '-f[Force]'
|
||||
_arguments \
|
||||
'(-f,--force=)'{-f,--force=}'[Force]'
|
||||
__docker_images
|
||||
}
|
||||
|
||||
__version() {
|
||||
|
||||
# no arguments
|
||||
}
|
||||
|
||||
__wait() {
|
||||
|
|
@ -192,7 +246,9 @@ _1st_arguments=(
|
|||
"attach":"Attach to a running container"
|
||||
"build":"Build a container from a Dockerfile"
|
||||
"commit":"Create a new image from a container's changes"
|
||||
"cp":"Copy files/folders from the containers filesystem to the host path"
|
||||
"diff":"Inspect changes on a container's filesystem"
|
||||
"events":"Get real time events from the server"
|
||||
"export":"Stream the contents of a container as a tar archive"
|
||||
"history":"Show the history of an image"
|
||||
"images":"List images"
|
||||
|
|
@ -201,10 +257,10 @@ _1st_arguments=(
|
|||
"insert":"Insert a file in an image"
|
||||
"inspect":"Return low-level information on a container"
|
||||
"kill":"Kill a running container"
|
||||
"load":"Load an image from a tar archive"
|
||||
"login":"Register or Login to the docker registry server"
|
||||
"logs":"Fetch the logs of a container"
|
||||
"port":"Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"
|
||||
"top":"Lookup the running processes of a container"
|
||||
"ps":"List containers"
|
||||
"pull":"Pull an image or a repository from the docker registry server"
|
||||
"push":"Push an image or a repository to the docker registry server"
|
||||
|
|
@ -212,10 +268,12 @@ _1st_arguments=(
|
|||
"rm":"Remove one or more containers"
|
||||
"rmi":"Remove one or more images"
|
||||
"run":"Run a command in a new container"
|
||||
"save":"Save an image to a tar archive"
|
||||
"search":"Search for an image in the docker index"
|
||||
"start":"Start a stopped container"
|
||||
"stop":"Stop a running container"
|
||||
"tag":"Tag an image into a repository"
|
||||
"top":"Lookup the running processes of a container"
|
||||
"version":"Show the docker version information"
|
||||
"wait":"Block until a container stops, then print its exit code"
|
||||
)
|
||||
|
|
@ -230,13 +288,17 @@ fi
|
|||
local -a _command_args
|
||||
case "$words[1]" in
|
||||
attach)
|
||||
__docker_containers ;;
|
||||
__attach ;;
|
||||
build)
|
||||
__build ;;
|
||||
commit)
|
||||
__commit ;;
|
||||
cp)
|
||||
__cp ;;
|
||||
diff)
|
||||
__diff ;;
|
||||
events)
|
||||
__events ;;
|
||||
export)
|
||||
__export ;;
|
||||
history)
|
||||
|
|
@ -253,14 +315,14 @@ case "$words[1]" in
|
|||
__inspect ;;
|
||||
kill)
|
||||
__kill ;;
|
||||
load)
|
||||
__load ;;
|
||||
login)
|
||||
__login ;;
|
||||
logs)
|
||||
__logs ;;
|
||||
port)
|
||||
__port ;;
|
||||
top)
|
||||
__top ;;
|
||||
ps)
|
||||
__ps ;;
|
||||
pull)
|
||||
|
|
@ -275,6 +337,8 @@ case "$words[1]" in
|
|||
__rmi ;;
|
||||
run)
|
||||
__run ;;
|
||||
save)
|
||||
__save ;;
|
||||
search)
|
||||
__search ;;
|
||||
start)
|
||||
|
|
@ -283,6 +347,8 @@ case "$words[1]" in
|
|||
__stop ;;
|
||||
tag)
|
||||
__tag ;;
|
||||
top)
|
||||
__top ;;
|
||||
version)
|
||||
__version ;;
|
||||
wait)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# get list of available X windows.
|
||||
x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
|
||||
|
||||
if [ -z "$x" ] ;then
|
||||
if [ -z "$x" ] || [ "$x" = "nil" ] ;then
|
||||
# Create one if there is no X window yet.
|
||||
emacsclient --alternate-editor "" --create-frame "$@"
|
||||
else
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function extract() {
|
|||
(*.xz) unxz "$1" ;;
|
||||
(*.lzma) unlzma "$1" ;;
|
||||
(*.Z) uncompress "$1" ;;
|
||||
(*.zip|*.war|*.jar) unzip "$1" -d $extract_dir ;;
|
||||
(*.zip|*.war|*.jar|*.sublime-package) unzip "$1" -d $extract_dir ;;
|
||||
(*.rar) unrar x -ad "$1" ;;
|
||||
(*.7z) 7za x "$1" ;;
|
||||
(*.deb)
|
||||
|
|
|
|||
82
plugins/frontend-search/README.md
Normal file
82
plugins/frontend-search/README.md
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
## Rationale ##
|
||||
|
||||
The idea for this script is to help searches in important doc contents from frontend.
|
||||
|
||||
## Instalation ##
|
||||
|
||||
I will send a Pull Request with this plugin for .oh-my-zsh official repository. If accept them, it's only add in plugins list that exists in ```.zshrc``` file.
|
||||
|
||||
For now, you can clone this repository and add in ```custom/plugins``` folder
|
||||
|
||||
```bash
|
||||
$ git clone git://github.com/willmendesneto/frontend-search.git ~/.oh-my-zsh/custom/plugins/frontend-search
|
||||
```
|
||||
|
||||
After this, restart your terminal and frontend-search plugin is configurated in you CLI.
|
||||
|
||||
```bash
|
||||
...
|
||||
plugins=( <your-plugins-list>... frontend-search)
|
||||
...
|
||||
```
|
||||
|
||||
## Commands ##
|
||||
|
||||
All command searches are accept only in format
|
||||
|
||||
* `frontend <search-content> <search-term>`
|
||||
|
||||
The search content are
|
||||
|
||||
* `jquery <api.jquery.com>`
|
||||
* `mdn <developer.mozilla.org>`
|
||||
* `compass <compass-style.org>`
|
||||
* `html5please <html5please.com>`
|
||||
* `caniuse <caniuse.com>`
|
||||
* `aurajs <aurajs.com>`
|
||||
* `dartlang <api.dartlang.org/apidocs/channels/stable/dartdoc-viewer>`
|
||||
* `lodash <search>`
|
||||
* `qunit <api.qunitjs.com>`
|
||||
* `fontello <fontello.com>`
|
||||
* `bootsnipp <bootsnipp.com>`
|
||||
* `cssflow <cssflow.com>`
|
||||
* `codepen <codepen.io>`
|
||||
* `unheap <www.unheap.com>`
|
||||
* `bem <google.com/search?as_q=<search-term>&as_sitesearch=bem.info>`
|
||||
* `smacss <google.com/search?as_q=<search-term>&as_sitesearch=smacss.com>`
|
||||
* `angularjs <google.com/search?as_q=<search-term>&as_sitesearch=angularjs.org>`
|
||||
* `reactjs <google.com/search?as_q=<search-term>&as_sitesearch=facebook.github.io/react>`
|
||||
* `emberjs <emberjs.com>`
|
||||
|
||||
|
||||
## Aliases ##
|
||||
|
||||
There are a few aliases presented as well:
|
||||
|
||||
* `jquery` A shorthand for `frontend jquery`
|
||||
* `mdn` A shorthand for `frontend mdn`
|
||||
* `compass` A shorthand for `frontend compass`
|
||||
* `html5please` A shorthand for `frontend html5please`
|
||||
* `caniuse` A shorthand for `frontend caniuse`
|
||||
* `aurajs` A shorthand for `frontend aurajs`
|
||||
* `dartlang` A shorthand for `frontend dartlang`
|
||||
* `lodash` A shorthand for `frontend lodash`
|
||||
* `qunit` A shorthand for `frontend qunit`
|
||||
* `fontello` A shorthand for `frontend fontello`
|
||||
* `bootsnipp` A shorthand for `frontend bootsnipp`
|
||||
* `cssflow` A shorthand for `frontend cssflow`
|
||||
* `codepen` A shorthand for `frontend codepen`
|
||||
* `unheap` A shorthand for `frontend unheap`
|
||||
* `bem` A shorthand for `frontend bem`
|
||||
* `smacss` A shorthand for `frontend smacss`
|
||||
* `angularjs` A shorthand for `frontend angularjs`
|
||||
* `reactjs` A shorthand for `frontend reactjs`
|
||||
* `emberjs` A shorthand for `frontend emberjs`
|
||||
|
||||
## Author
|
||||
|
||||
**Wilson Mendes (willmendesneto)**
|
||||
+ <https://twitter.com/willmendesneto>
|
||||
+ <http://github.com/willmendesneto>
|
||||
|
||||
New features comming soon.
|
||||
151
plugins/frontend-search/frontend-search.plugin.zsh
Normal file
151
plugins/frontend-search/frontend-search.plugin.zsh
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
# frontend from terminal
|
||||
|
||||
function frontend() {
|
||||
|
||||
# get the open command
|
||||
local open_cmd
|
||||
if [[ $(uname -s) == 'Darwin' ]]; then
|
||||
open_cmd='open'
|
||||
else
|
||||
open_cmd='xdg-open'
|
||||
fi
|
||||
|
||||
# no keyword provided, simply show how call methods
|
||||
if [[ $# -le 1 ]]; then
|
||||
echo "Please provide a search-content and a search-term for app.\nEx:\nfrontend <search-content> <search-term>\n"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check whether the search engine is supported
|
||||
if [[ ! $1 =~ '(jquery|mdn|compass|html5please|caniuse|aurajs|dartlang|qunit|fontello|bootsnipp|cssflow|codepen|unheap|bem|smacss|angularjs|reactjs|emberjs)' ]];
|
||||
then
|
||||
echo "Search valid search content $1 not supported."
|
||||
echo "Valid contents: (formats 'frontend <search-content>' or '<search-content>')"
|
||||
echo "* jquery"
|
||||
echo "* mdn"
|
||||
echo "* compass"
|
||||
echo "* html5please"
|
||||
echo "* caniuse"
|
||||
echo "* aurajs"
|
||||
echo "* dartlang"
|
||||
echo "* lodash"
|
||||
echo "* qunit"
|
||||
echo "* fontello"
|
||||
echo "* bootsnipp"
|
||||
echo "* cssflow"
|
||||
echo "* codepen"
|
||||
echo "* unheap"
|
||||
echo "* bem"
|
||||
echo "* smacss"
|
||||
echo "* angularjs"
|
||||
echo "* reactjs"
|
||||
echo "* emberjs"
|
||||
echo ""
|
||||
|
||||
return 1
|
||||
fi
|
||||
|
||||
local url="http://"
|
||||
local query=""
|
||||
|
||||
case "$1" in
|
||||
"jquery")
|
||||
url="${url}api.jquery.com"
|
||||
url="${url}/?s=$2" ;;
|
||||
"mdn")
|
||||
url="${url}developer.mozilla.org"
|
||||
url="${url}/search?q=$2" ;;
|
||||
"compass")
|
||||
url="${url}compass-style.org"
|
||||
url="${url}/search?q=$2" ;;
|
||||
"html5please")
|
||||
url="${url}html5please.com"
|
||||
url="${url}/#$2" ;;
|
||||
"caniuse")
|
||||
url="${url}caniuse.com"
|
||||
url="${url}/#search=$2" ;;
|
||||
"aurajs")
|
||||
url="${url}aurajs.com"
|
||||
url="${url}/api/#stq=$2" ;;
|
||||
"dartlang")
|
||||
url="${url}api.dartlang.org/apidocs/channels/stable/dartdoc-viewer"
|
||||
url="${url}/dart-$2" ;;
|
||||
"qunit")
|
||||
url="${url}api.qunitjs.com"
|
||||
url="${url}/?s=$2" ;;
|
||||
"fontello")
|
||||
url="${url}fontello.com"
|
||||
url="${url}/#search=$2" ;;
|
||||
"bootsnipp")
|
||||
url="${url}bootsnipp.com"
|
||||
url="${url}/search?q=$2" ;;
|
||||
"cssflow")
|
||||
url="${url}cssflow.com"
|
||||
url="${url}/search?q=$2" ;;
|
||||
"codepen")
|
||||
url="${url}codepen.io"
|
||||
url="${url}/search?q=$2" ;;
|
||||
"unheap")
|
||||
url="${url}www.unheap.com"
|
||||
url="${url}/?s=$2" ;;
|
||||
"bem")
|
||||
url="${url}google.com"
|
||||
url="${url}/search?as_q=$2&as_sitesearch=bem.info" ;;
|
||||
"smacss")
|
||||
url="${url}google.com"
|
||||
url="${url}/search?as_q=$2&as_sitesearch=smacss.com" ;;
|
||||
"angularjs")
|
||||
url="${url}google.com"
|
||||
url="${url}/search?as_q=$2&as_sitesearch=angularjs.org" ;;
|
||||
"reactjs")
|
||||
url="${url}google.com"
|
||||
url="${url}/search?as_q=$2&as_sitesearch=facebook.github.io/react" ;;
|
||||
"emberjs")
|
||||
url="${url}emberjs.com"
|
||||
url="${url}/api/#stq=$2&stp=1" ;;
|
||||
*) echo "INVALID PARAM!"
|
||||
return ;;
|
||||
esac
|
||||
|
||||
echo "$url"
|
||||
|
||||
$open_cmd "$url"
|
||||
|
||||
}
|
||||
|
||||
# javascript
|
||||
alias jquery='frontend jquery'
|
||||
alias mdn='frontend mdn'
|
||||
|
||||
# pre processors frameworks
|
||||
alias compass='frontend compass'
|
||||
|
||||
# important links
|
||||
alias html5please='frontend html5please'
|
||||
alias caniuse='frontend caniuse'
|
||||
|
||||
# components and libraries
|
||||
alias aurajs='frontend aurajs'
|
||||
alias dartlang='frontend dartlang'
|
||||
alias lodash='frontend lodash'
|
||||
|
||||
#tests
|
||||
alias qunit='frontend qunit'
|
||||
|
||||
#fonts
|
||||
alias fontello='frontend fontello'
|
||||
|
||||
# snippets
|
||||
alias bootsnipp='frontend bootsnipp'
|
||||
alias cssflow='frontend cssflow'
|
||||
alias codepen='frontend codepen'
|
||||
alias unheap='frontend unheap'
|
||||
|
||||
# css architecture
|
||||
alias bem='frontend bem'
|
||||
alias smacss='frontend smacss'
|
||||
|
||||
# frameworks
|
||||
alias angularjs='frontend angularjs'
|
||||
alias reactjs='frontend reactjs'
|
||||
alias emberjs='frontend emberjs'
|
||||
|
|
@ -13,6 +13,7 @@ case $state in
|
|||
cmds=(
|
||||
"version:Prints Gas's version"
|
||||
"use:Uses author"
|
||||
"ssh:Creates a new ssh key for an existing gas author"
|
||||
"show:Shows your current user"
|
||||
"list:Lists your authors"
|
||||
"import:Imports current user to gasconfig"
|
||||
|
|
@ -25,8 +26,12 @@ case $state in
|
|||
args)
|
||||
case $line[1] in
|
||||
(use|delete)
|
||||
_values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0
|
||||
;;
|
||||
VERSION=$(gas -v)
|
||||
if [[ $VERSION == <1->.*.* ]] || [[ $VERSION == 0.<2->.* ]] || [[ $VERSION == 0.1.<6-> ]] then
|
||||
_values -S , 'authors' $(cat ~/.gas/gas.authors | sed -n -e 's/^.*\[\(.*\)\]/\1/p') && ret=0
|
||||
else
|
||||
_values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0
|
||||
fi
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
|
|
|||
|
|
@ -56,6 +56,9 @@ if (( CURRENT == 1 )); then
|
|||
fi
|
||||
|
||||
case "$words[1]" in
|
||||
build)
|
||||
_files -g "*.gemspec"
|
||||
;;
|
||||
list)
|
||||
if [[ "$state" == forms ]]; then
|
||||
_gem_installed
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: UTF-8 -*-
|
||||
from subprocess import Popen, PIPE
|
||||
import re
|
||||
|
|
@ -16,7 +16,7 @@ symbols = {
|
|||
}
|
||||
|
||||
output, error = Popen(
|
||||
['git', 'status'], stdout=PIPE, stderr=PIPE).communicate()
|
||||
['git', 'status'], stdout=PIPE, stderr=PIPE, universal_newlines=True).communicate()
|
||||
|
||||
if error:
|
||||
import sys
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ function work_in_progress() {
|
|||
fi
|
||||
}
|
||||
# these alias commit and uncomit wip branches
|
||||
alias gwip='git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "--wip--"'
|
||||
alias gwip='git add -A; git ls-files --deleted -z | xargs -r0 git rm; git commit -m "--wip--"'
|
||||
alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
|
||||
|
||||
# these alias ignore changes to file
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ fi
|
|||
#
|
||||
# Use this when creating a new repo from scratch.
|
||||
empty_gh() { # [NAME_OF_REPO]
|
||||
repo = $1
|
||||
repo=$1
|
||||
ghuser=$( git config github.user )
|
||||
|
||||
mkdir "$repo"
|
||||
|
|
|
|||
1150
plugins/glassfish/_asadmin
Normal file
1150
plugins/glassfish/_asadmin
Normal file
File diff suppressed because it is too large
Load diff
3
plugins/glassfish/glassfish.plugin.zsh
Normal file
3
plugins/glassfish/glassfish.plugin.zsh
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# if there is a user named 'glassfish' on the system, we'll assume
|
||||
# that is the user asadmin should be run as
|
||||
# grep -e '^glassfish' /etc/passwd > /dev/null && alias asadmin='sudo -u glassfish asadmin'
|
||||
|
|
@ -158,3 +158,6 @@ __go_tool_complete() {
|
|||
}
|
||||
|
||||
compdef __go_tool_complete go
|
||||
|
||||
# aliases
|
||||
alias gfa='go fmt . ./...'
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ function in_gradle() {
|
|||
############################################################################
|
||||
_gradle_does_task_list_need_generating () {
|
||||
[ ! -f .gradletasknamecache ] && return 0;
|
||||
[ .gradletasknamecache -nt build.gradle ] && return 0;
|
||||
[ build.gradle -nt .gradletasknamecache ] && return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
0
plugins/grails/grails.plugin.zsh
Executable file → Normal file
0
plugins/grails/grails.plugin.zsh
Executable file → Normal file
|
|
@ -163,8 +163,13 @@ function history-substring-search-down() {
|
|||
zle -N history-substring-search-up
|
||||
zle -N history-substring-search-down
|
||||
|
||||
bindkey '\e[A' history-substring-search-up
|
||||
bindkey '\e[B' history-substring-search-down
|
||||
zmodload zsh/terminfo
|
||||
if [[ -n "$terminfo[kcuu1]" ]]; then
|
||||
bindkey "$terminfo[kcuu1]" history-substring-search-up
|
||||
fi
|
||||
if [[ -n "$terminfo[kcud1]" ]]; then
|
||||
bindkey "$terminfo[kcud1]" history-substring-search-down
|
||||
fi
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# implementation details
|
||||
|
|
|
|||
|
|
@ -29,15 +29,23 @@ open_jira_issue () {
|
|||
return 0
|
||||
fi
|
||||
|
||||
if [ -f .jira-prefix ]; then
|
||||
jira_prefix=$(cat .jira-prefix)
|
||||
elif [ -f ~/.jira-prefix ]; then
|
||||
jira_prefix=$(cat ~/.jira-prefix)
|
||||
else
|
||||
jira_prefix=""
|
||||
fi
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Opening new issue"
|
||||
$open_cmd "$jira_url/secure/CreateIssue!default.jspa"
|
||||
else
|
||||
echo "Opening issue #$1"
|
||||
if [[ "x$JIRA_RAPID_BOARD" = "xtrue" ]]; then
|
||||
$open_cmd "$jira_url/issues/$1"
|
||||
$open_cmd "$jira_url/issues/$jira_prefix$1"
|
||||
else
|
||||
$open_cmd "$jira_url/browse/$1"
|
||||
$open_cmd "$jira_url/browse/$jira_prefix$1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
0
plugins/jruby/jruby.plugin.zsh
Executable file → Normal file
0
plugins/jruby/jruby.plugin.zsh
Executable file → Normal file
42
plugins/jsontools/README.md
Normal file
42
plugins/jsontools/README.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# jsontools
|
||||
|
||||
Handy command line tools for dealing with json data.
|
||||
|
||||
## Tools
|
||||
|
||||
- **pp_json** - pretty prints json
|
||||
- **is_json** - returns true if valid json; false otherwise
|
||||
- **urlencode_json** - returns a url encoded string for the given json
|
||||
- **urldecode_json** - returns decoded json for the given url encoded string
|
||||
|
||||
## Usage
|
||||
Usage is simple...just take your json data and pipe it into the appropriate jsontool.
|
||||
```sh
|
||||
<json data> | <jsontools tool>
|
||||
```
|
||||
## Examples
|
||||
|
||||
##### pp_json
|
||||
|
||||
```sh
|
||||
# curl json data and pretty print the results
|
||||
curl https://coderwall.com/bobwilliams.json | pp_json
|
||||
```
|
||||
|
||||
##### is_json
|
||||
```sh
|
||||
# pretty print the contents of an existing json file
|
||||
less data.json | is_json
|
||||
```
|
||||
|
||||
##### urlencode_json
|
||||
```sh
|
||||
# json data directly from the command line
|
||||
echo '{"b":2, "a":1}' | urlencode_json
|
||||
```
|
||||
|
||||
##### urldecode_json
|
||||
```sh
|
||||
# url encoded string to decode
|
||||
echo '%7B%22b%22:2,%20%22a%22:1%7D%0A' | urldecode_json
|
||||
```
|
||||
39
plugins/jsontools/jsontools.plugin.zsh
Normal file
39
plugins/jsontools/jsontools.plugin.zsh
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# JSON Tools
|
||||
# Adds command line aliases useful for dealing with JSON
|
||||
|
||||
if [[ $(whence $JSONTOOLS_METHOD) = "" ]]; then
|
||||
JSONTOOLS_METHOD=""
|
||||
fi
|
||||
|
||||
if [[ $(whence node) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xnode" ) ]]; then
|
||||
alias pp_json='xargs -0 node -e "console.log(JSON.stringify(JSON.parse(process.argv[1]), null, 4));"'
|
||||
alias is_json='xargs -0 node -e "try {json = JSON.parse(process.argv[1]);} catch (e) { console.log(false); json = null; } if(json) { console.log(true); }"'
|
||||
alias urlencode_json='xargs -0 node -e "console.log(encodeURIComponent(process.argv[1]))"'
|
||||
alias urldecode_json='xargs -0 node -e "console.log(decodeURIComponent(process.argv[1]))"'
|
||||
elif [[ $(whence python) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xpython" ) ]]; then
|
||||
alias pp_json='python -mjson.tool'
|
||||
alias is_json='python -c "
|
||||
import json, sys;
|
||||
try:
|
||||
json.loads(sys.stdin.read())
|
||||
except ValueError, e:
|
||||
print False
|
||||
else:
|
||||
print True
|
||||
sys.exit(0)"'
|
||||
alias urlencode_json='python -c "
|
||||
import urllib, json, sys;
|
||||
print urllib.quote_plus(sys.stdin.read())
|
||||
sys.exit(0)"'
|
||||
alias urldecode_json='python -c "
|
||||
import urllib, json, sys;
|
||||
print urllib.unquote_plus(sys.stdin.read())
|
||||
sys.exit(0)"'
|
||||
elif [[ $(whence ruby) != "" && ( "x$JSONTOOLS_METHOD" = "x" || "x$JSONTOOLS_METHOD" = "xruby" ) ]]; then
|
||||
alias pp_json='ruby -e "require \"json\"; require \"yaml\"; puts JSON.parse(STDIN.read).to_yaml"'
|
||||
alias is_json='ruby -e "require \"json\"; begin; JSON.parse(STDIN.read); puts true; rescue Exception => e; puts false; end"'
|
||||
alias urlencode_json='ruby -e "require \"uri\"; puts URI.escape(STDIN.read)"'
|
||||
alias urldecode_json='ruby -e "require \"uri\"; puts URI.unescape(STDIN.read)"'
|
||||
fi
|
||||
|
||||
unset JSONTOOLS_METHOD
|
||||
|
|
@ -39,7 +39,7 @@ marks() {
|
|||
|
||||
_completemarks() {
|
||||
if [[ $(ls "${MARKPATH}" | wc -l) -gt 1 ]]; then
|
||||
reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
|
||||
reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_a-zA-Z0-9\.\-]*):$/\2/g'))
|
||||
else
|
||||
if readlink -e "${MARKPATH}"/* &>/dev/null; then
|
||||
reply=($(ls "${MARKPATH}"))
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ _knife() {
|
|||
|
||||
case $state in
|
||||
knifecmd)
|
||||
compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search ssh status upload windows $cloudproviders
|
||||
compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search ssh status upload vault windows $cloudproviders
|
||||
;;
|
||||
knifesubcmd)
|
||||
case $words[2] in
|
||||
|
|
@ -65,6 +65,9 @@ _knife() {
|
|||
upload)
|
||||
_arguments '*:file or directory:_files -g "*"'
|
||||
;;
|
||||
vault)
|
||||
compadd -Q "$@" create decrypt delete edit remove "rotate all keys" "rotate keys" show update
|
||||
;;
|
||||
windows)
|
||||
compadd "$@" bootstrap
|
||||
;;
|
||||
|
|
|
|||
20
plugins/laravel4/laravel4.plugin.zsh
Normal file
20
plugins/laravel4/laravel4.plugin.zsh
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Laravel4 basic command completion
|
||||
_laravel4_get_command_list () {
|
||||
php artisan --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
||||
}
|
||||
|
||||
_laravel4 () {
|
||||
if [ -f artisan ]; then
|
||||
compadd `_laravel4_get_command_list`
|
||||
fi
|
||||
}
|
||||
|
||||
compdef _laravel4 artisan
|
||||
compdef _laravel4 la4
|
||||
|
||||
#Alias
|
||||
alias la4='php artisan'
|
||||
|
||||
alias la4dump='php artisan dump-autoload'
|
||||
alias la4cache='php artisan cache:clear'
|
||||
alias la4routes='php artisan routes'
|
||||
|
|
@ -16,6 +16,8 @@ alias hgs='hg status'
|
|||
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'
|
||||
# list unresolved files (since hg does not list unmerged files in the status command)
|
||||
alias hgun='hg resolve --list'
|
||||
|
||||
function in_hg() {
|
||||
if [[ -d .hg ]] || $(hg summary > /dev/null 2>&1); then
|
||||
|
|
|
|||
|
|
@ -44,19 +44,22 @@ mvn-color()
|
|||
# aliases
|
||||
alias mvncie='mvn clean install eclipse:eclipse'
|
||||
alias mvnci='mvn clean install'
|
||||
alias mvncist='mvn clean install -DskipTests'
|
||||
alias mvne='mvn eclipse:eclipse'
|
||||
alias mvnce='mvn clean eclipse:clean eclipse:eclipse'
|
||||
alias mvnd='mvn deploy'
|
||||
alias mvnp='mvn package'
|
||||
alias mvnc='mvn clean'
|
||||
alias mvncom='mvn compile'
|
||||
alias mvnct='mvn clean test'
|
||||
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'
|
||||
|
||||
alias mvndt='mvn dependency:tree'
|
||||
alias mvns='mvn site'
|
||||
|
||||
function listMavenCompletions {
|
||||
reply=(
|
||||
|
|
@ -126,6 +129,8 @@ function listMavenCompletions {
|
|||
tomcat6:run tomcat6:run-war tomcat6:run-war-only tomcat6:stop tomcat6:deploy tomcat6:undeploy
|
||||
# tomcat7
|
||||
tomcat7:run tomcat7:run-war tomcat7:run-war-only tomcat7:deploy
|
||||
# spring-boot
|
||||
spring-boot:run spring-boot:repackage
|
||||
# exec
|
||||
exec:exec exec:java
|
||||
# versions
|
||||
|
|
|
|||
|
|
@ -174,20 +174,23 @@ function itunes() {
|
|||
next|previous)
|
||||
opt="$opt track"
|
||||
;;
|
||||
vol)
|
||||
opt="set sound volume to $1" #$1 Due to the shift
|
||||
;;
|
||||
""|-h|--help)
|
||||
echo "Usage: itunes <option>"
|
||||
echo "option:"
|
||||
echo "\tlaunch|play|pause|stop|rewind|resume|quit"
|
||||
echo "\tmute|unmute\tcontrol volume set"
|
||||
echo "\tnext|previous\tplay next or previous track"
|
||||
echo "\tvol\tSet the volume, takes an argument from 0 to 100"
|
||||
echo "\thelp\tshow this message and exit"
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
print "Unkonwn option: $opt"
|
||||
print "Unknown option: $opt"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
osascript -e "tell application \"iTunes\" to $opt"
|
||||
}
|
||||
|
||||
|
|
|
|||
56
plugins/per-directory-history/README.md
Normal file
56
plugins/per-directory-history/README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
[Per-Directory-History][6]
|
||||
=========================
|
||||
|
||||
Per directory history for zsh, as well as global history, and the
|
||||
ability to toggle between them with ^G.
|
||||
|
||||
This is a implementation of per directory history for zsh, some
|
||||
implementations of which exist in bash[1][],[2][]. It also implements
|
||||
a per-directory-history-toggle-history function to change from using the
|
||||
directory history to using the global history. In both cases the history is
|
||||
always saved to both the global history and the directory history, so the
|
||||
toggle state will not effect the saved histories. Being able to switch
|
||||
between global and directory histories on the fly is a novel feature as far
|
||||
as I am aware.
|
||||
|
||||
This is a standalone repository for the script, however it is also included in
|
||||
[oh-my-zsh][4] as a plugin.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Usage
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
1. Load this script into your interactive ZSH session:
|
||||
|
||||
% source zsh-per-directory-history.zsh
|
||||
|
||||
2. The default mode if per directory history, interact with your history as normal.
|
||||
|
||||
3. Press ^G (the Control and G keys simultaneously) to toggle between local
|
||||
and global histories.
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Configuration
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* HISTORY_BASE a global variable that defines the base directory in which the
|
||||
directory histories are stored
|
||||
* per-directory-history-toggle-history is the function to toggle the history
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
History
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The idea/inspiration for a per directory history is from [Stewart MacArthur][1]
|
||||
and [Dieter][2], the implementation idea is from [Bart Schaefer][3]. The
|
||||
implementation is by [Jim Hester][5] in September 2012.
|
||||
|
||||
[1]: http://www.compbiome.com/2010/07/bash-per-directory-bash-history.html
|
||||
[2]: http://dieter.plaetinck.be/per_directory_bash
|
||||
[3]: http://www.zsh.org/mla/users/1997/msg00226.html
|
||||
[4]: https://github.com/robbyrussell/oh-my-zsh
|
||||
[5]: http://jimhester.com
|
||||
[6]: http://github.com/jimhester/per-directory-history
|
||||
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
#
|
||||
# This is a implementation of per directory history for zsh, some
|
||||
# implementations of which exist in bash[1,2]. It also implements
|
||||
# a per-directory-history-toggle-history function to change from using the
|
||||
# directory history to using the global history. In both cases the history is
|
||||
# always saved to both the global history and the directory history, so the
|
||||
# toggle state will not effect the saved histories. Being able to switch
|
||||
# between global and directory histories on the fly is a novel feature as far
|
||||
# as I am aware.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
# Configuration
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# HISTORY_BASE a global variable that defines the base directory in which the
|
||||
# directory histories are stored
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
# History
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# The idea/inspiration for a per directory history is from Stewart MacArthur[1]
|
||||
# and Dieter[2], the implementation idea is from Bart Schaefer on the the zsh
|
||||
# mailing list[3]. The implementation is by Jim Hester in September 2012.
|
||||
#
|
||||
# [1]: http://www.compbiome.com/2010/07/bash-per-directory-bash-history.html
|
||||
# [2]: http://dieter.plaetinck.be/per_directory_bash
|
||||
# [3]: http://www.zsh.org/mla/users/1997/msg00226.html
|
||||
#
|
||||
################################################################################
|
||||
#
|
||||
# Copyright (c) 2012 Jim Hester
|
||||
#
|
||||
# This software is provided 'as-is', without any express or implied warranty.
|
||||
# In no event will the authors be held liable for any damages arising from the
|
||||
# use of this software.
|
||||
#
|
||||
# Permission is granted to anyone to use this software for any purpose,
|
||||
# including commercial applications, and to alter it and redistribute it
|
||||
# freely, subject to the following restrictions:
|
||||
#
|
||||
# 1. The origin of this software must not be misrepresented; you must not claim
|
||||
# that you wrote the original software. If you use this software in a product,
|
||||
# an acknowledgment in the product documentation would be appreciated but is
|
||||
# not required.
|
||||
#
|
||||
# 2. Altered source versions must be plainly marked as such, and must not be
|
||||
# misrepresented as being the original software.
|
||||
#
|
||||
# 3. This notice may not be removed or altered from any source distribution..
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# configuration, the base under which the directory histories are stored
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
[[ -z $HISTORY_BASE ]] && HISTORY_BASE="$HOME/.directory_history"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# toggle global/directory history used for searching - ctrl-G by default
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
function per-directory-history-toggle-history() {
|
||||
if [[ $_per_directory_history_is_global == true ]]; then
|
||||
_per-directory-history-set-directory-history
|
||||
print "\nusing local history\n"
|
||||
else
|
||||
_per-directory-history-set-global-history
|
||||
print "\nusing global history\n"
|
||||
fi
|
||||
zle .push-line
|
||||
zle .accept-line
|
||||
}
|
||||
|
||||
autoload per-directory-history-toggle-history
|
||||
zle -N per-directory-history-toggle-history
|
||||
bindkey '^G' per-directory-history-toggle-history
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# implementation details
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
|
||||
|
||||
function _per-directory-history-change-directory() {
|
||||
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
|
||||
mkdir -p ${_per_directory_history_directory:h}
|
||||
if [[ $_per_directory_history_is_global == false ]]; then
|
||||
#save to the global history
|
||||
fc -AI $HISTFILE
|
||||
#save history to previous file
|
||||
local prev="$HISTORY_BASE${OLDPWD:A}/history"
|
||||
mkdir -p ${prev:h}
|
||||
fc -AI $prev
|
||||
|
||||
#discard previous directory's history
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
|
||||
#read history in new file
|
||||
if [[ -e $_per_directory_history_directory ]]; then
|
||||
fc -R $_per_directory_history_directory
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function _per-directory-history-addhistory() {
|
||||
print -sr -- ${1%%$'\n'}
|
||||
fc -p $_per_directory_history_directory
|
||||
}
|
||||
|
||||
|
||||
function _per-directory-history-set-directory-history() {
|
||||
if [[ $_per_directory_history_is_global == true ]]; then
|
||||
fc -AI $HISTFILE
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
if [[ -e "$_per_directory_history_directory" ]]; then
|
||||
fc -R "$_per_directory_history_directory"
|
||||
fi
|
||||
fi
|
||||
_per_directory_history_is_global=false
|
||||
}
|
||||
function _per-directory-history-set-global-history() {
|
||||
if [[ $_per_directory_history_is_global == false ]]; then
|
||||
fc -AI $_per_directory_history_directory
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
if [[ -e "$HISTFILE" ]]; then
|
||||
fc -R "$HISTFILE"
|
||||
fi
|
||||
fi
|
||||
_per_directory_history_is_global=true
|
||||
}
|
||||
|
||||
|
||||
#add functions to the exec list for chpwd and zshaddhistory
|
||||
chpwd_functions=(${chpwd_functions[@]} "_per-directory-history-change-directory")
|
||||
zshaddhistory_functions=(${zshaddhistory_functions[@]} "_per-directory-history-addhistory")
|
||||
|
||||
#start in directory mode
|
||||
mkdir -p ${_per_directory_history_directory:h}
|
||||
_per_directory_history_is_global=true
|
||||
_per-directory-history-set-directory-history
|
||||
1
plugins/per-directory-history/per-directory-history.plugin.zsh
Symbolic link
1
plugins/per-directory-history/per-directory-history.plugin.zsh
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
per-directory-history.zsh
|
||||
149
plugins/per-directory-history/per-directory-history.zsh
Normal file
149
plugins/per-directory-history/per-directory-history.zsh
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
#!/usr/bin/env zsh
|
||||
#
|
||||
# This is a implementation of per directory history for zsh, some
|
||||
# implementations of which exist in bash[1,2]. It also implements
|
||||
# a per-directory-history-toggle-history function to change from using the
|
||||
# directory history to using the global history. In both cases the history is
|
||||
# always saved to both the global history and the directory history, so the
|
||||
# toggle state will not effect the saved histories. Being able to switch
|
||||
# between global and directory histories on the fly is a novel feature as far
|
||||
# as I am aware.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
# Configuration
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# HISTORY_BASE a global variable that defines the base directory in which the
|
||||
# directory histories are stored
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
# History
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# The idea/inspiration for a per directory history is from Stewart MacArthur[1]
|
||||
# and Dieter[2], the implementation idea is from Bart Schaefer on the the zsh
|
||||
# mailing list[3]. The implementation is by Jim Hester in September 2012.
|
||||
#
|
||||
# [1]: http://www.compbiome.com/2010/07/bash-per-directory-bash-history.html
|
||||
# [2]: http://dieter.plaetinck.be/per_directory_bash
|
||||
# [3]: http://www.zsh.org/mla/users/1997/msg00226.html
|
||||
#
|
||||
################################################################################
|
||||
#
|
||||
# Copyright (c) 2012 Jim Hester
|
||||
#
|
||||
# This software is provided 'as-is', without any express or implied warranty.
|
||||
# In no event will the authors be held liable for any damages arising from the
|
||||
# use of this software.
|
||||
#
|
||||
# Permission is granted to anyone to use this software for any purpose,
|
||||
# including commercial applications, and to alter it and redistribute it
|
||||
# freely, subject to the following restrictions:
|
||||
#
|
||||
# 1. The origin of this software must not be misrepresented; you must not claim
|
||||
# that you wrote the original software. If you use this software in a product,
|
||||
# an acknowledgment in the product documentation would be appreciated but is
|
||||
# not required.
|
||||
#
|
||||
# 2. Altered source versions must be plainly marked as such, and must not be
|
||||
# misrepresented as being the original software.
|
||||
#
|
||||
# 3. This notice may not be removed or altered from any source distribution..
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# configuration, the base under which the directory histories are stored
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
[[ -z $HISTORY_BASE ]] && HISTORY_BASE="$HOME/.directory_history"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# toggle global/directory history used for searching - ctrl-G by default
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
function per-directory-history-toggle-history() {
|
||||
if [[ $_per_directory_history_is_global == true ]]; then
|
||||
_per-directory-history-set-directory-history
|
||||
print -n "\nusing local history"
|
||||
else
|
||||
_per-directory-history-set-global-history
|
||||
print -n "\nusing global history"
|
||||
fi
|
||||
zle .push-line
|
||||
zle .accept-line
|
||||
}
|
||||
|
||||
autoload per-directory-history-toggle-history
|
||||
zle -N per-directory-history-toggle-history
|
||||
bindkey '^G' per-directory-history-toggle-history
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# implementation details
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
|
||||
|
||||
function _per-directory-history-change-directory() {
|
||||
_per_directory_history_directory="$HISTORY_BASE${PWD:A}/history"
|
||||
mkdir -p ${_per_directory_history_directory:h}
|
||||
if [[ $_per_directory_history_is_global == false ]]; then
|
||||
#save to the global history
|
||||
fc -AI $HISTFILE
|
||||
#save history to previous file
|
||||
local prev="$HISTORY_BASE${OLDPWD:A}/history"
|
||||
mkdir -p ${prev:h}
|
||||
fc -AI $prev
|
||||
|
||||
#discard previous directory's history
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
|
||||
#read history in new file
|
||||
if [[ -e $_per_directory_history_directory ]]; then
|
||||
fc -R $_per_directory_history_directory
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function _per-directory-history-addhistory() {
|
||||
print -Sr -- ${1%%$'\n'}
|
||||
fc -p $_per_directory_history_directory
|
||||
}
|
||||
|
||||
|
||||
function _per-directory-history-set-directory-history() {
|
||||
if [[ $_per_directory_history_is_global == true ]]; then
|
||||
fc -AI $HISTFILE
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
if [[ -e "$_per_directory_history_directory" ]]; then
|
||||
fc -R "$_per_directory_history_directory"
|
||||
fi
|
||||
fi
|
||||
_per_directory_history_is_global=false
|
||||
}
|
||||
function _per-directory-history-set-global-history() {
|
||||
if [[ $_per_directory_history_is_global == false ]]; then
|
||||
fc -AI $_per_directory_history_directory
|
||||
local original_histsize=$HISTSIZE
|
||||
HISTSIZE=0
|
||||
HISTSIZE=$original_histsize
|
||||
if [[ -e "$HISTFILE" ]]; then
|
||||
fc -R "$HISTFILE"
|
||||
fi
|
||||
fi
|
||||
_per_directory_history_is_global=true
|
||||
}
|
||||
|
||||
|
||||
#add functions to the exec list for chpwd and zshaddhistory
|
||||
chpwd_functions=(${chpwd_functions[@]} "_per-directory-history-change-directory")
|
||||
zshaddhistory_functions=(${zshaddhistory_functions[@]} "_per-directory-history-addhistory")
|
||||
|
||||
#start in directory mode
|
||||
mkdir -p ${_per_directory_history_directory:h}
|
||||
_per_directory_history_is_global=true
|
||||
_per-directory-history-set-directory-history
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#compdef pip
|
||||
#compdef pip pip2 pip-2.7 pip3 pip-3.2 pip-3.3 pip-3.4
|
||||
#autoload
|
||||
|
||||
# pip zsh completion, based on homebrew completion
|
||||
|
|
@ -59,6 +59,7 @@ case "$words[1]" in
|
|||
_arguments \
|
||||
'(-U --upgrade)'{-U,--upgrade}'[upgrade all packages to the newest available version]' \
|
||||
'(-f --find-links)'{-f,--find-links}'[URL for finding packages]' \
|
||||
'(-r --requirement)'{-r,--requirement}'[Requirements file for packages to install]:File:_files' \
|
||||
'(--no-deps --no-dependencies)'{--no-deps,--no-dependencies}'[iIgnore package dependencies]' \
|
||||
'(--no-install)--no-install[only download packages]' \
|
||||
'(--no-download)--no-download[only install downloaded packages]' \
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
# Aliases to stop, start and restart Postgres
|
||||
# Paths noted below are for Postgress installed via Homebrew on OSX
|
||||
# Aliases to control Postgres
|
||||
# Paths noted below are for Postgres installed via Homebrew on OSX
|
||||
|
||||
alias startpost='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
|
||||
alias stoppost='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
|
||||
alias restartpost='stoppost && sleep 1 && startpost'
|
||||
alias restartpost='stoppost && sleep 1 && startpost'
|
||||
alias reloadpost='pg_ctl reload -D /usr/local/var/postgres -s'
|
||||
alias statuspost='pg_ctl status -D /usr/local/var/postgres -s'
|
||||
|
|
@ -8,21 +8,21 @@
|
|||
# Supports command completion.
|
||||
#
|
||||
# If you are not already using completion you might need to enable it with
|
||||
#
|
||||
#
|
||||
# autoload -U compinit compinit
|
||||
#
|
||||
# Changes:
|
||||
#
|
||||
# Defaults to the current application, and will walk up the tree to find
|
||||
# Defaults to the current application, and will walk up the tree to find
|
||||
# a config.ru file and restart the corresponding app
|
||||
#
|
||||
# Will Detect if a app does not exist in pow and print a (slightly) helpful
|
||||
# Will Detect if a app does not exist in pow and print a (slightly) helpful
|
||||
# error message
|
||||
|
||||
rack_root_detect(){
|
||||
rack_root(){
|
||||
setopt chaselinks
|
||||
local orgdir=$(pwd)
|
||||
local basedir=$(pwd)
|
||||
local orgdir="$(pwd)"
|
||||
local basedir="$(pwd)"
|
||||
|
||||
while [[ $basedir != '/' ]]; do
|
||||
test -e "$basedir/config.ru" && break
|
||||
|
|
@ -30,8 +30,13 @@ rack_root_detect(){
|
|||
basedir="$(pwd)"
|
||||
done
|
||||
|
||||
builtin cd $orgdir 2>/dev/null
|
||||
builtin cd "$orgdir" 2>/dev/null
|
||||
[[ ${basedir} == "/" ]] && return 1
|
||||
echo $basedir
|
||||
}
|
||||
|
||||
rack_root_detect(){
|
||||
basedir=$(rack_root)
|
||||
echo `basename $basedir | sed -E "s/.(com|net|org)//"`
|
||||
}
|
||||
|
||||
|
|
@ -51,16 +56,30 @@ kapow(){
|
|||
compctl -W ~/.pow -/ kapow
|
||||
|
||||
powit(){
|
||||
local basedir=$(pwd)
|
||||
local basedir="$(pwd)"
|
||||
local vhost=$1
|
||||
[ ! -n "$vhost" ] && vhost=$(rack_root_detect)
|
||||
if [ ! -h ~/.pow/$vhost ]
|
||||
then
|
||||
echo "pow: Symlinking your app with pow. ${vhost}"
|
||||
[ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost
|
||||
then
|
||||
echo "pow: Symlinking your app with pow. ${vhost}"
|
||||
[ ! -d ~/.pow/${vhost} ] && ln -s "$basedir" ~/.pow/$vhost
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
powed(){
|
||||
local basedir="$(rack_root)"
|
||||
find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \;
|
||||
}
|
||||
|
||||
# Restart pow process
|
||||
# taken from http://www.matthewratzloff.com/blog/2011/12/23/restarting-pow-when-dns-stops-responding
|
||||
repow(){
|
||||
lsof | grep 20560 | awk '{print $2}' | xargs kill -9
|
||||
launchctl unload ~/Library/LaunchAgents/cx.pow.powd.plist
|
||||
launchctl load ~/Library/LaunchAgents/cx.pow.powd.plist
|
||||
echo "restarted pow"
|
||||
}
|
||||
|
||||
# View the standard out (puts) from any pow app
|
||||
alias kaput="tail -f ~/Library/Logs/Pow/apps/*"
|
||||
|
|
|
|||
23
plugins/rake-fast/README.md
Normal file
23
plugins/rake-fast/README.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# rake-fast
|
||||
|
||||
Fast rake autocompletion plugin.
|
||||
|
||||
This script caches the output for later usage and significantly speeds it up. It generates a .rake_tasks cache file in parallel to the Rakefile. It also checks the file modification dates to see if it needs to regenerate the cache file.
|
||||
|
||||
This is entirely based on [this pull request by Ullrich Schäfer](https://github.com/robb/.dotfiles/pull/10/), which is inspired by [this Ruby on Rails trick from 2006](http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh/).
|
||||
|
||||
Think about that. 2006.
|
||||
|
||||
## Installation
|
||||
|
||||
Just add the plugin to your `.zshrc`:
|
||||
|
||||
```bash
|
||||
plugins=(foo bar rake-fast)
|
||||
```
|
||||
|
||||
You might consider adding `.rake_tasks` to your [global .gitignore](https://help.github.com/articles/ignoring-files#global-gitignore)
|
||||
|
||||
## Usage
|
||||
|
||||
`rake`, then press tab
|
||||
39
plugins/rake-fast/rake-fast.plugin.zsh
Normal file
39
plugins/rake-fast/rake-fast.plugin.zsh
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
_rake_refresh () {
|
||||
if [ -f .rake_tasks ]; then
|
||||
rm .rake_tasks
|
||||
fi
|
||||
echo "Generating .rake_tasks..." > /dev/stderr
|
||||
_rake_generate
|
||||
cat .rake_tasks
|
||||
}
|
||||
|
||||
_rake_does_task_list_need_generating () {
|
||||
if [ ! -f .rake_tasks ]; then return 0;
|
||||
else
|
||||
if [[ $(uname -s) == 'Darwin' ]]; then
|
||||
accurate=$(stat -f%m .rake_tasks)
|
||||
changed=$(stat -f%m Rakefile)
|
||||
else
|
||||
accurate=$(stat -c%Y .rake_tasks)
|
||||
changed=$(stat -c%Y Rakefile)
|
||||
fi
|
||||
return $(expr $accurate '>=' $changed)
|
||||
fi
|
||||
}
|
||||
|
||||
_rake_generate () {
|
||||
rake --silent --tasks | cut -d " " -f 2 > .rake_tasks
|
||||
}
|
||||
|
||||
_rake () {
|
||||
if [ -f Rakefile ]; then
|
||||
if _rake_does_task_list_need_generating; then
|
||||
echo "\nGenerating .rake_tasks..." > /dev/stderr
|
||||
_rake_generate
|
||||
fi
|
||||
compadd `cat .rake_tasks`
|
||||
fi
|
||||
}
|
||||
|
||||
compdef _rake rake
|
||||
alias rake_refresh='_rake_refresh'
|
||||
|
|
@ -7,12 +7,9 @@ _rbenv-from-homebrew-installed() {
|
|||
}
|
||||
|
||||
FOUND_RBENV=0
|
||||
rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv")
|
||||
rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" "/usr/local/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
|
||||
|
|
|
|||
|
|
@ -10,3 +10,9 @@ compdef _repo rs='repo sync'
|
|||
|
||||
alias rsrra='repo sync ; repo rebase --auto-stash'
|
||||
compdef _repo rsrra='repo sync ; repo rebase --auto-stash'
|
||||
|
||||
alias ru='repo upload'
|
||||
compdef _repo ru='repo upload'
|
||||
|
||||
alias rst='repo status'
|
||||
compdef _repo rst='repo status'
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
alias rsync-copy="rsync -av --progress -h"
|
||||
alias rsync-move="rsync -av --progress -h --remove-source-files"
|
||||
alias rsync-update="rsync -avu --progress -h"
|
||||
alias rsync-synchronize="rsync -avu --delete --progress -h"
|
||||
alias rsync-copy="rsync -avz --progress -h"
|
||||
alias rsync-move="rsync -avz --progress -h --remove-source-files"
|
||||
alias rsync-update="rsync -avzu --progress -h"
|
||||
alias rsync-synchronize="rsync -avzu --delete --progress -h"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ alias gemsets='rvm gemset list'
|
|||
local ruby18='ruby-1.8.7'
|
||||
local ruby19='ruby-1.9.3'
|
||||
local ruby20='ruby-2.0.0'
|
||||
local ruby21='ruby-2.1.2'
|
||||
|
||||
function rb18 {
|
||||
if [ -z "$1" ]; then
|
||||
|
|
@ -40,6 +41,17 @@ function rb20 {
|
|||
_rb20() {compadd `ls -1 $rvm_path/gems | grep "^$ruby20@" | sed -e "s/^$ruby20@//" | awk '{print $1}'`}
|
||||
compdef _rb20 rb20
|
||||
|
||||
function rb21 {
|
||||
if [ -z "$1" ]; then
|
||||
rvm use "$ruby21"
|
||||
else
|
||||
rvm use "$ruby21@$1"
|
||||
fi
|
||||
}
|
||||
|
||||
_rb21() {compadd `ls -1 $rvm_path/gems | grep "^$ruby21@" | sed -e "s/^$ruby21@//" | awk '{print $1}'`}
|
||||
compdef _rb21 rb21
|
||||
|
||||
function rvm-update {
|
||||
rvm get head
|
||||
}
|
||||
|
|
|
|||
122
plugins/scd/README.md
Normal file
122
plugins/scd/README.md
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# scd - smart change of directory
|
||||
|
||||
Define `scd` shell function for changing to any directory with
|
||||
a few keystrokes.
|
||||
|
||||
`scd` keeps history of the visited directories, which serves as an index of
|
||||
the known paths. The directory index is updated after every `cd` command in
|
||||
the shell and can be also filled manually by running `scd -a`. To switch to
|
||||
some directory, `scd` needs few fragments of the desired path to match with
|
||||
the index. A selection menu is displayed in case of several matches, with a
|
||||
preference given to recently visited paths. `scd` can create permanent
|
||||
directory aliases, which appear as named directories in zsh session.
|
||||
|
||||
## INSTALLATION
|
||||
|
||||
For oh-my-zsh, add `scd` to the `plugins` array in the ~/.zshrc file as in the
|
||||
[template file](../../templates/zshrc.zsh-template#L45).
|
||||
|
||||
Besides zsh, `scd` can be used with *bash*, *dash* or *tcsh*
|
||||
shells and is also available as [Vim](http://www.vim.org/) plugin and
|
||||
[IPython](http://ipython.org/) extension. For installation details, see
|
||||
https://github.com/pavoljuhas/smart-change-directory.
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
```sh
|
||||
scd [options] [pattern1 pattern2 ...]
|
||||
```
|
||||
|
||||
## OPTIONS
|
||||
|
||||
<dl><dt>
|
||||
-a, --add</dt><dd>
|
||||
add specified directories to the directory index.</dd><dt>
|
||||
|
||||
--unindex</dt><dd>
|
||||
remove specified directories from the index.</dd><dt>
|
||||
|
||||
-r, --recursive</dt><dd>
|
||||
apply options <em>--add</em> or <em>--unindex</em> recursively.</dd><dt>
|
||||
|
||||
--alias=ALIAS</dt><dd>
|
||||
create alias for the current or specified directory and save it to
|
||||
<em>~/.scdalias.zsh</em>.</dd><dt>
|
||||
|
||||
--unalias</dt><dd>
|
||||
remove ALIAS definition for the current or specified directory from
|
||||
<em>~/.scdalias.zsh</em>.</dd><dt>
|
||||
|
||||
--list</dt><dd>
|
||||
show matching directories and exit.</dd><dt>
|
||||
|
||||
-v, --verbose</dt><dd>
|
||||
display directory rank in the selection menu.</dd><dt>
|
||||
|
||||
-h, --help</dt><dd>
|
||||
display this options summary and exit.</dd>
|
||||
</dl>
|
||||
|
||||
## Examples
|
||||
|
||||
```sh
|
||||
# Index recursively some paths for the very first run
|
||||
scd -ar ~/Documents/
|
||||
|
||||
# Change to a directory path matching "doc"
|
||||
scd doc
|
||||
|
||||
# Change to a path matching all of "a", "b" and "c"
|
||||
scd a b c
|
||||
|
||||
# Change to a directory path that ends with "ts"
|
||||
scd "ts(#e)"
|
||||
|
||||
# Show selection menu and ranking of 20 most likely directories
|
||||
scd -v
|
||||
|
||||
# Alias current directory as "xray"
|
||||
scd --alias=xray
|
||||
|
||||
# Jump to a previously defined aliased directory
|
||||
scd xray
|
||||
```
|
||||
|
||||
# FILES
|
||||
|
||||
<dl><dt>
|
||||
~/.scdhistory</dt><dd>
|
||||
time-stamped index of visited directories.</dd><dt>
|
||||
|
||||
~/.scdalias.zsh</dt><dd>
|
||||
scd-generated definitions of directory aliases.</dd>
|
||||
</dl>
|
||||
|
||||
# ENVIRONMENT
|
||||
|
||||
<dl><dt>
|
||||
SCD_HISTFILE</dt><dd>
|
||||
path to the scd index file (by default ~/.scdhistory).</dd><dt>
|
||||
|
||||
SCD_HISTSIZE</dt><dd>
|
||||
maximum number of entries in the index (5000). Index is trimmed when it
|
||||
exceeds <em>SCD_HISTSIZE</em> by more than 20%.</dd><dt>
|
||||
|
||||
SCD_MENUSIZE</dt><dd>
|
||||
maximum number of items for directory selection menu (20).</dd><dt>
|
||||
|
||||
SCD_MEANLIFE</dt><dd>
|
||||
mean lifetime in seconds for exponential decay of directory
|
||||
likelihood (86400).</dd><dt>
|
||||
|
||||
SCD_THRESHOLD</dt><dd>
|
||||
threshold for cumulative directory likelihood. Directories with
|
||||
a lower likelihood compared to the best match are excluded (0.005).
|
||||
</dd><dt>
|
||||
|
||||
SCD_SCRIPT</dt><dd>
|
||||
command script file where scd writes the final <code>cd</code>
|
||||
command. This variable must be defined when scd runs in its own
|
||||
process rather than as a shell function. It is up to the
|
||||
scd caller to use the output in <em>SCD_SCRIPT</em>.</dd>
|
||||
</dl>
|
||||
353
plugins/scd/scd
Executable file
353
plugins/scd/scd
Executable file
|
|
@ -0,0 +1,353 @@
|
|||
#!/bin/zsh -f
|
||||
|
||||
emulate -L zsh
|
||||
local EXIT=return
|
||||
if [[ $(whence -w $0) == *:' 'command ]]; then
|
||||
emulate -R zsh
|
||||
local RUNNING_AS_COMMAND=1
|
||||
EXIT=exit
|
||||
fi
|
||||
|
||||
local DOC='scd -- smart change to a recently used directory
|
||||
usage: scd [options] [pattern1 pattern2 ...]
|
||||
Go to a directory path that contains all fixed string patterns. Prefer
|
||||
recently visited directories and directories with patterns in their tail
|
||||
component. Display a selection menu in case of multiple matches.
|
||||
|
||||
Options:
|
||||
-a, --add add specified directories to the directory index
|
||||
--unindex remove specified directories from the index
|
||||
-r, --recursive apply options --add or --unindex recursively
|
||||
--alias=ALIAS create alias for the current or specified directory and
|
||||
store it in ~/.scdalias.zsh
|
||||
--unalias remove ALIAS definition for the current or specified
|
||||
directory from ~/.scdalias.zsh
|
||||
--list show matching directories and exit
|
||||
-v, --verbose display directory rank in the selection menu
|
||||
-h, --help display this message and exit
|
||||
'
|
||||
|
||||
local SCD_HISTFILE=${SCD_HISTFILE:-${HOME}/.scdhistory}
|
||||
local SCD_HISTSIZE=${SCD_HISTSIZE:-5000}
|
||||
local SCD_MENUSIZE=${SCD_MENUSIZE:-20}
|
||||
local SCD_MEANLIFE=${SCD_MEANLIFE:-86400}
|
||||
local SCD_THRESHOLD=${SCD_THRESHOLD:-0.005}
|
||||
local SCD_SCRIPT=${RUNNING_AS_COMMAND:+$SCD_SCRIPT}
|
||||
local SCD_ALIAS=~/.scdalias.zsh
|
||||
|
||||
local ICASE a d m p i tdir maxrank threshold
|
||||
local opt_help opt_add opt_unindex opt_recursive opt_verbose
|
||||
local opt_alias opt_unalias opt_list
|
||||
local -A drank dalias
|
||||
local dmatching
|
||||
local last_directory
|
||||
|
||||
setopt extendedhistory extendedglob noautonamedirs brace_ccl
|
||||
|
||||
# If SCD_SCRIPT is defined make sure the file exists and is empty.
|
||||
# This removes any previous old commands.
|
||||
[[ -n "$SCD_SCRIPT" ]] && [[ -s $SCD_SCRIPT || ! -f $SCD_SCRIPT ]] && (
|
||||
umask 077
|
||||
: >| $SCD_SCRIPT
|
||||
)
|
||||
|
||||
# process command line options
|
||||
zmodload -i zsh/zutil
|
||||
zmodload -i zsh/datetime
|
||||
zparseopts -D -- a=opt_add -add=opt_add -unindex=opt_unindex \
|
||||
r=opt_recursive -recursive=opt_recursive \
|
||||
-alias:=opt_alias -unalias=opt_unalias -list=opt_list \
|
||||
v=opt_verbose -verbose=opt_verbose h=opt_help -help=opt_help \
|
||||
|| $EXIT $?
|
||||
|
||||
if [[ -n $opt_help ]]; then
|
||||
print $DOC
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# load directory aliases if they exist
|
||||
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
|
||||
|
||||
# works faster than the (:a) modifier and is compatible with zsh 4.2.6
|
||||
_scd_Y19oug_abspath() {
|
||||
set -A $1 ${(ps:\0:)"$(
|
||||
unfunction -m "*"; shift
|
||||
for d; do
|
||||
cd $d && print -Nr -- $PWD && cd $OLDPWD
|
||||
done
|
||||
)"}
|
||||
}
|
||||
|
||||
# define directory alias
|
||||
if [[ -n $opt_alias ]]; then
|
||||
if [[ -n $1 && ! -d $1 ]]; then
|
||||
print -u2 "'$1' is not a directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
a=${opt_alias[-1]#=}
|
||||
_scd_Y19oug_abspath d ${1:-$PWD}
|
||||
# alias in the current shell, update alias file if successful
|
||||
hash -d -- $a=$d &&
|
||||
(
|
||||
umask 077
|
||||
hash -dr
|
||||
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
|
||||
hash -d -- $a=$d
|
||||
hash -dL >| $SCD_ALIAS
|
||||
)
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
# undefine directory alias
|
||||
if [[ -n $opt_unalias ]]; then
|
||||
if [[ -n $1 && ! -d $1 ]]; then
|
||||
print -u2 "'$1' is not a directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
_scd_Y19oug_abspath a ${1:-$PWD}
|
||||
a=$(print -rD ${a})
|
||||
if [[ $a != [~][^/]## ]]; then
|
||||
$EXIT
|
||||
fi
|
||||
a=${a#[~]}
|
||||
# unalias in the current shell, update alias file if successful
|
||||
if unhash -d -- $a 2>/dev/null && [[ -r $SCD_ALIAS ]]; then
|
||||
(
|
||||
umask 077
|
||||
hash -dr
|
||||
source $SCD_ALIAS
|
||||
unhash -d -- $a 2>/dev/null &&
|
||||
hash -dL >| $SCD_ALIAS
|
||||
)
|
||||
fi
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
# Rewrite directory index if it is at least 20% oversized
|
||||
if [[ -s $SCD_HISTFILE ]] && \
|
||||
(( $(wc -l <$SCD_HISTFILE) > 1.2 * $SCD_HISTSIZE )); then
|
||||
m=( ${(f)"$(<$SCD_HISTFILE)"} )
|
||||
print -lr -- ${m[-$SCD_HISTSIZE,-1]} >| ${SCD_HISTFILE}
|
||||
fi
|
||||
|
||||
# Determine the last recorded directory
|
||||
if [[ -s ${SCD_HISTFILE} ]]; then
|
||||
last_directory=${"$(tail -1 ${SCD_HISTFILE})"#*;}
|
||||
fi
|
||||
|
||||
# Internal functions are prefixed with "_scd_Y19oug_".
|
||||
# The "record" function adds its arguments to the directory index.
|
||||
_scd_Y19oug_record() {
|
||||
while [[ -n $last_directory && $1 == $last_directory ]]; do
|
||||
shift
|
||||
done
|
||||
if [[ $# -gt 0 ]]; then
|
||||
( umask 077
|
||||
p=": ${EPOCHSECONDS}:0;"
|
||||
print -lr -- ${p}${^*} >>| $SCD_HISTFILE )
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ -n $opt_add ]]; then
|
||||
for d; do
|
||||
if [[ ! -d $d ]]; then
|
||||
print -u2 "Directory '$d' does not exist."
|
||||
$EXIT 2
|
||||
fi
|
||||
done
|
||||
_scd_Y19oug_abspath m ${*:-$PWD}
|
||||
_scd_Y19oug_record $m
|
||||
if [[ -n $opt_recursive ]]; then
|
||||
for d in $m; do
|
||||
print -n "scanning ${d} ... "
|
||||
_scd_Y19oug_record ${d}/**/*(-/N)
|
||||
print "[done]"
|
||||
done
|
||||
fi
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# take care of removing entries from the directory index
|
||||
if [[ -n $opt_unindex ]]; then
|
||||
if [[ ! -s $SCD_HISTFILE ]]; then
|
||||
$EXIT
|
||||
fi
|
||||
# expand existing directories in the argument list
|
||||
for i in {1..$#}; do
|
||||
if [[ -d ${argv[i]} ]]; then
|
||||
_scd_Y19oug_abspath d ${argv[i]}
|
||||
argv[i]=${d}
|
||||
fi
|
||||
done
|
||||
m="$(awk -v recursive=${opt_recursive} '
|
||||
BEGIN {
|
||||
for (i = 2; i < ARGC; ++i) {
|
||||
argset[ARGV[i]] = 1;
|
||||
delete ARGV[i];
|
||||
}
|
||||
}
|
||||
1 {
|
||||
d = $0; sub(/^[^;]*;/, "", d);
|
||||
if (d in argset) next;
|
||||
}
|
||||
recursive {
|
||||
for (a in argset) {
|
||||
if (substr(d, 1, length(a) + 1) == a"/") next;
|
||||
}
|
||||
}
|
||||
{ print $0 }
|
||||
' $SCD_HISTFILE ${*:-$PWD} )" || $EXIT $?
|
||||
: >| ${SCD_HISTFILE}
|
||||
[[ ${#m} == 0 ]] || print -r -- $m >> ${SCD_HISTFILE}
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# The "action" function is called when there is just one target directory.
|
||||
_scd_Y19oug_action() {
|
||||
cd $1 || return $?
|
||||
if [[ -z $SCD_SCRIPT && -n $RUNNING_AS_COMMAND ]]; then
|
||||
print -u2 "Warning: running as command with SCD_SCRIPT undefined."
|
||||
fi
|
||||
if [[ -n $SCD_SCRIPT ]]; then
|
||||
print -r "cd ${(q)1}" >| $SCD_SCRIPT
|
||||
fi
|
||||
}
|
||||
|
||||
# Match and rank patterns to the index file
|
||||
# set global arrays dmatching and drank
|
||||
_scd_Y19oug_match() {
|
||||
## single argument that is an existing directory or directory alias
|
||||
if [[ $# == 1 ]] && \
|
||||
[[ -d ${d::=$1} || -d ${d::=${nameddirs[$1]}} ]] && [[ -x $d ]];
|
||||
then
|
||||
_scd_Y19oug_abspath dmatching $d
|
||||
drank[${dmatching[1]}]=1
|
||||
return
|
||||
fi
|
||||
|
||||
# ignore case unless there is an argument with an uppercase letter
|
||||
[[ "$*" == *[[:upper:]]* ]] || ICASE='(#i)'
|
||||
|
||||
# calculate rank of all directories in the SCD_HISTFILE and keep it as drank
|
||||
# include a dummy entry for splitting of an empty string is buggy
|
||||
[[ -s $SCD_HISTFILE ]] && drank=( ${(f)"$(
|
||||
print -l /dev/null -10
|
||||
<$SCD_HISTFILE \
|
||||
awk -v epochseconds=$EPOCHSECONDS -v meanlife=$SCD_MEANLIFE '
|
||||
BEGIN { FS = "[:;]"; }
|
||||
length($0) < 4096 && $2 > 0 {
|
||||
tau = 1.0 * ($2 - epochseconds) / meanlife;
|
||||
if (tau < -4.61) tau = -4.61;
|
||||
prec = exp(tau);
|
||||
sub(/^[^;]*;/, "");
|
||||
if (NF) ptot[$0] += prec;
|
||||
}
|
||||
END { for (di in ptot) { print di; print ptot[di]; } }'
|
||||
)"}
|
||||
)
|
||||
unset "drank[/dev/null]"
|
||||
|
||||
# filter drank to the entries that match all arguments
|
||||
for a; do
|
||||
p=${ICASE}"*${a}*"
|
||||
drank=( ${(kv)drank[(I)${~p}]} )
|
||||
done
|
||||
|
||||
# build a list of matching directories reverse-sorted by their probabilities
|
||||
dmatching=( ${(f)"$(
|
||||
for d p in ${(kv)drank}; do
|
||||
print -r -- "$p $d";
|
||||
done | sort -grk1 | cut -d ' ' -f 2-
|
||||
)"}
|
||||
)
|
||||
|
||||
# if some directory paths match all patterns in order, discard all others
|
||||
p=${ICASE}"*${(j:*:)argv}*"
|
||||
m=( ${(M)dmatching:#${~p}} )
|
||||
[[ -d ${m[1]} ]] && dmatching=( $m )
|
||||
# if some directory names match last pattern, discard all others
|
||||
p=${ICASE}"*${(j:*:)argv}[^/]#"
|
||||
m=( ${(M)dmatching:#${~p}} )
|
||||
[[ -d ${m[1]} ]] && dmatching=( $m )
|
||||
# if some directory names match all patterns, discard all others
|
||||
m=( $dmatching )
|
||||
for a; do
|
||||
p=${ICASE}"*/[^/]#${a}[^/]#"
|
||||
m=( ${(M)m:#${~p}} )
|
||||
done
|
||||
[[ -d ${m[1]} ]] && dmatching=( $m )
|
||||
# if some directory names match all patterns in order, discard all others
|
||||
p=${ICASE}"/*${(j:[^/]#:)argv}[^/]#"
|
||||
m=( ${(M)dmatching:#${~p}} )
|
||||
[[ -d ${m[1]} ]] && dmatching=( $m )
|
||||
|
||||
# do not match $HOME or $PWD when run without arguments
|
||||
if [[ $# == 0 ]]; then
|
||||
dmatching=( ${dmatching:#(${HOME}|${PWD})} )
|
||||
fi
|
||||
|
||||
# keep at most SCD_MENUSIZE of matching and valid directories
|
||||
m=( )
|
||||
for d in $dmatching; do
|
||||
[[ ${#m} == $SCD_MENUSIZE ]] && break
|
||||
[[ -d $d && -x $d ]] && m+=$d
|
||||
done
|
||||
dmatching=( $m )
|
||||
|
||||
# find the maximum rank
|
||||
maxrank=0.0
|
||||
for d in $dmatching; do
|
||||
[[ ${drank[$d]} -lt maxrank ]] || maxrank=${drank[$d]}
|
||||
done
|
||||
|
||||
# discard all directories below the rank threshold
|
||||
threshold=$(( maxrank * SCD_THRESHOLD ))
|
||||
dmatching=( ${^dmatching}(Ne:'(( ${drank[$REPLY]} >= threshold ))':) )
|
||||
}
|
||||
|
||||
_scd_Y19oug_match $*
|
||||
|
||||
## process whatever directories that remained
|
||||
if [[ ${#dmatching} == 0 ]]; then
|
||||
print -u2 "No matching directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
|
||||
## build formatted directory aliases for selection menu or list display
|
||||
for d in $dmatching; do
|
||||
if [[ -n ${opt_verbose} ]]; then
|
||||
dalias[$d]=$(printf "%.3g %s" ${drank[$d]} $d)
|
||||
else
|
||||
dalias[$d]=$(print -Dr -- $d)
|
||||
fi
|
||||
done
|
||||
|
||||
## process the --list option
|
||||
if [[ -n $opt_list ]]; then
|
||||
for d in $dmatching; do
|
||||
print -r -- "# ${dalias[$d]}"
|
||||
print -r -- $d
|
||||
done
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
## process single directory match
|
||||
if [[ ${#dmatching} == 1 ]]; then
|
||||
_scd_Y19oug_action $dmatching
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
## here we have multiple matches - display selection menu
|
||||
a=( {a-z} {A-Z} )
|
||||
p=( )
|
||||
for i in {1..${#dmatching}}; do
|
||||
[[ -n ${a[i]} ]] || break
|
||||
p+="${a[i]}) ${dalias[${dmatching[i]}]}"
|
||||
done
|
||||
|
||||
print -c -r -- $p
|
||||
|
||||
if read -s -k 1 d && [[ ${i::=${a[(I)$d]}} -gt 0 ]]; then
|
||||
_scd_Y19oug_action ${dmatching[i]}
|
||||
$EXIT $?
|
||||
fi
|
||||
19
plugins/scd/scd.plugin.zsh
Normal file
19
plugins/scd/scd.plugin.zsh
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
## The scd script should autoload as a shell function.
|
||||
autoload scd
|
||||
|
||||
|
||||
## If the scd function exists, define a change-directory-hook function
|
||||
## to record visited directories in the scd index.
|
||||
if [[ ${+functions[scd]} == 1 ]]; then
|
||||
scd_chpwd_hook() { scd --add $PWD }
|
||||
autoload add-zsh-hook
|
||||
add-zsh-hook chpwd scd_chpwd_hook
|
||||
fi
|
||||
|
||||
|
||||
## Allow scd usage with unquoted wildcard characters such as "*" or "?".
|
||||
alias scd='noglob scd'
|
||||
|
||||
|
||||
## Load the directory aliases created by scd if any.
|
||||
if [[ -s ~/.scdalias.zsh ]]; then source ~/.scdalias.zsh; fi
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# INSTRUCTIONS
|
||||
#
|
||||
# To enabled agent forwarding support add the following to
|
||||
# To enable agent forwarding support add the following to
|
||||
# your .zshrc file:
|
||||
#
|
||||
# zstyle :omz:plugins:ssh-agent agent-forwarding on
|
||||
|
|
@ -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()
|
||||
|
|
@ -42,12 +42,20 @@ function _plugin__start_agent()
|
|||
. ${_plugin__ssh_env} > /dev/null
|
||||
|
||||
# load identies
|
||||
zstyle -a :omz:plugins:ssh-agent identities identities
|
||||
zstyle -a :omz:plugins:ssh-agent identities identities
|
||||
echo starting ssh-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
plugins/sublime/sublime.plugin.zsh
Executable file → Normal file
1
plugins/sublime/sublime.plugin.zsh
Executable file → Normal file
|
|
@ -7,6 +7,7 @@ if [[ $('uname') == 'Linux' ]]; then
|
|||
"/opt/sublime_text/sublime_text"
|
||||
"/usr/bin/sublime_text"
|
||||
"/usr/local/bin/sublime_text"
|
||||
"/usr/bin/subl"
|
||||
)
|
||||
for _sublime_path in $_sublime_linux_paths; do
|
||||
if [[ -a $_sublime_path ]]; then
|
||||
|
|
|
|||
|
|
@ -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,21 +1,23 @@
|
|||
# Symfony2 basic command completion
|
||||
|
||||
_symfony2_get_command_list () {
|
||||
php app/console --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
||||
php $(find . -maxdepth 2 -mindepth 1 -name 'console') --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
||||
}
|
||||
|
||||
_symfony2 () {
|
||||
if [ -f app/console ]; then
|
||||
if [ -f $(find . -maxdepth 2 -mindepth 1 -name 'console') ]; then
|
||||
compadd `_symfony2_get_command_list`
|
||||
fi
|
||||
}
|
||||
|
||||
compdef _symfony2 app/console
|
||||
compdef _symfony2 $(find . -maxdepth 2 -mindepth 1 -name 'console')
|
||||
compdef _symfony2 sf
|
||||
|
||||
#Alias
|
||||
alias sf='php app/console'
|
||||
alias sfcl='php app/console cache:clear'
|
||||
alias sfroute='php app/console router:debug'
|
||||
alias sfgb='php app/console generate:bundle'
|
||||
alias sf='php $(find . -maxdepth 2 -mindepth 1 -name 'console') '
|
||||
alias sfcl='php $(find . -maxdepth 2 -mindepth 1 -name 'console') cache:clear'
|
||||
alias sfcw='php $(find . -maxdepth 2 -mindepth 1 -name 'console') cache:warmup'
|
||||
alias sfroute='php $(find . -maxdepth 2 -mindepth 1 -name 'console') router:debug'
|
||||
alias sfcontainer='php $(find . -maxdepth 2 -mindepth 1 -name 'console') container:debug'
|
||||
alias sfgb='php $(find . -maxdepth 2 -mindepth 1 -name 'console') generate:bundle'
|
||||
|
||||
|
|
|
|||
|
|
@ -6,19 +6,26 @@
|
|||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'box:Box commands'
|
||||
'connect:Connects to a shared, remote Vagrant environment'
|
||||
'destroy:Destroys the vagrant environment'
|
||||
'docker-logs:Shows Docker logs'
|
||||
'docker-run:Run one-off commands against a Docker container'
|
||||
'global-status:Reports the status of all active Vagrant environments on the system'
|
||||
'halt:Halts the currently running vagrant environment'
|
||||
'init:[box_name] [box_url] Initializes current folder for Vagrant usage'
|
||||
'login:Authenticates against a Vagrant Cloud server to access protected boxes'
|
||||
'package:Packages a vagrant environment for distribution'
|
||||
'plugin:Plugin commands'
|
||||
'provision:Run the provisioner'
|
||||
'reload:Reload the vagrant environment'
|
||||
'resume:Resumes a suspend vagrant environment'
|
||||
'share:Shares the Vagrant environment and allows remote access'
|
||||
'ssh:SSH into the currently running environment'
|
||||
'ssh-config:outputs .ssh/config valid syntax for connecting to this environment via ssh.'
|
||||
'status:Shows the status of the current Vagrant environment.'
|
||||
'ssh-config:outputs .ssh/config valid syntax for connecting to this environment via ssh'
|
||||
'status:Shows the status of the current Vagrant environment'
|
||||
'suspend:Suspends the currently running vagrant environment'
|
||||
'up:Creates the vagrant environment'
|
||||
'version:Prints the currently installed Vagrant version and checks for new updates'
|
||||
'--help:[TASK] Describe available tasks or one specific task'
|
||||
'--version:Prints the Vagrant version information'
|
||||
)
|
||||
|
|
@ -44,7 +51,7 @@ __task_list ()
|
|||
|
||||
__box_list ()
|
||||
{
|
||||
_wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g')
|
||||
_wanted application expl 'command' compadd $(command vagrant box list | sed -e 's/ /\\ /g')
|
||||
}
|
||||
|
||||
__vm_list ()
|
||||
|
|
|
|||
|
|
@ -17,9 +17,15 @@ function zle-keymap-select zle-line-init zle-line-finish {
|
|||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
zle -N zle-keymap-select
|
||||
zle -N edit-command-line
|
||||
|
||||
|
||||
bindkey -v
|
||||
|
||||
# allow v to edit the command line (standard behaviour)
|
||||
autoload -Uz edit-command-line
|
||||
bindkey -M vicmd 'v' edit-command-line
|
||||
|
||||
# if mode indicator wasn't setup by theme, define default
|
||||
if [[ "$MODE_INDICATOR" == "" ]]; then
|
||||
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
|
||||
|
|
|
|||
82
plugins/vim-interaction/README.md
Normal file
82
plugins/vim-interaction/README.md
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# Vim Interaction #
|
||||
|
||||
The plugin presents a function called `callvim` whose usage is:
|
||||
|
||||
usage: callvim [-b cmd] [-a cmd] [file ... fileN]
|
||||
|
||||
-b cmd Run this command in GVIM before editing the first file
|
||||
-a cmd Run this command in GVIM after editing the first file
|
||||
file The file to edit
|
||||
... fileN The other files to add to the argslist
|
||||
|
||||
## Rationale ##
|
||||
|
||||
The idea for this script is to give you some decent interaction with a running
|
||||
GVim session. Normally you'll be running around your filesystem doing any
|
||||
number of amazing things and you'll need to load some files into GVim for
|
||||
editing, inspecting, destruction, or other bits of mayhem. This script lets you
|
||||
do that.
|
||||
|
||||
## Aliases ##
|
||||
|
||||
There are a few aliases presented as well:
|
||||
|
||||
* `v` A shorthand for `callvim`
|
||||
* `vvsp` Edits the passed in file but first makes a vertical split
|
||||
* `vhsp` Edits the passed in file but first makes a horizontal split
|
||||
|
||||
## Post Callout ##
|
||||
|
||||
At the end of the `callvim` function we invoke the `postCallVim` function if it
|
||||
exists. If you're using MacVim, for example, you could define a function that
|
||||
brings window focus to it after the file is loaded:
|
||||
|
||||
function postCallVim
|
||||
{
|
||||
osascript -e 'tell application "MacVim" to activate'
|
||||
}
|
||||
|
||||
This'll be different depending on your OS / Window Manager.
|
||||
|
||||
## Examples ##
|
||||
|
||||
This will load `/tmp/myfile.scala` into the running GVim session:
|
||||
|
||||
> v /tmp/myfile.scala
|
||||
|
||||
This will load it after first doing a vertical split:
|
||||
|
||||
> vvsp /tmp/myfile.scala
|
||||
or
|
||||
> v -b':vsp' /tmp/myfile.scala
|
||||
|
||||
This will load it after doing a horizontal split, then moving to the bottom of
|
||||
the file:
|
||||
|
||||
> vhsp -aG /tmp/myfile.scala
|
||||
or
|
||||
> v -b':sp' -aG /tmp/myfile.scala
|
||||
|
||||
This will load the file and then copy the first line to the end (Why you would
|
||||
ever want to do this... I dunno):
|
||||
|
||||
> v -a':1t$' /tmp/myfile.scala
|
||||
|
||||
And this will load all of the `*.txt` files into the args list:
|
||||
|
||||
> v *.txt
|
||||
|
||||
If you want to load files into areas that are already split, use one of the
|
||||
aliases for that:
|
||||
|
||||
# Do a ':wincmd h' first
|
||||
> vh /tmp/myfile.scala
|
||||
|
||||
# Do a ':wincmd j' first
|
||||
> vj /tmp/myfile.scala
|
||||
|
||||
# Do a ':wincmd k' first
|
||||
> vk /tmp/myfile.scala
|
||||
|
||||
# Do a ':wincmd l' first
|
||||
> vl /tmp/myfile.scala
|
||||
72
plugins/vim-interaction/vim-interaction.plugin.zsh
Normal file
72
plugins/vim-interaction/vim-interaction.plugin.zsh
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#
|
||||
# See README.md
|
||||
#
|
||||
# Derek Wyatt (derek@{myfirstnamemylastname}.org
|
||||
#
|
||||
|
||||
function resolveFile
|
||||
{
|
||||
if [ -f "$1" ]; then
|
||||
echo $(readlink -f "$1")
|
||||
elif [[ "${1#/}" == "$1" ]]; then
|
||||
echo "$(pwd)/$1"
|
||||
else
|
||||
echo $1
|
||||
fi
|
||||
}
|
||||
|
||||
function callvim
|
||||
{
|
||||
if [[ $# == 0 ]]; then
|
||||
cat <<EOH
|
||||
usage: callvim [-b cmd] [-a cmd] [file ... fileN]
|
||||
|
||||
-b cmd Run this command in GVIM before editing the first file
|
||||
-a cmd Run this command in GVIM after editing the first file
|
||||
file The file to edit
|
||||
... fileN The other files to add to the argslist
|
||||
EOH
|
||||
return 0
|
||||
fi
|
||||
|
||||
local cmd=""
|
||||
local before="<esc>"
|
||||
local after=""
|
||||
while getopts ":b:a:" option
|
||||
do
|
||||
case $option in
|
||||
a) after="$OPTARG"
|
||||
;;
|
||||
b) before="$OPTARG"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
if [[ ${after#:} != $after && ${after%<cr>} == $after ]]; then
|
||||
after="$after<cr>"
|
||||
fi
|
||||
if [[ ${before#:} != $before && ${before%<cr>} == $before ]]; then
|
||||
before="$before<cr>"
|
||||
fi
|
||||
local files=""
|
||||
for f in $@
|
||||
do
|
||||
files="$files $(resolveFile $f)"
|
||||
done
|
||||
if [[ -n $files ]]; then
|
||||
files=':args! '"$files<cr>"
|
||||
fi
|
||||
cmd="$before$files$after"
|
||||
gvim --remote-send "$cmd"
|
||||
if typeset -f postCallVim > /dev/null; then
|
||||
postCallVim
|
||||
fi
|
||||
}
|
||||
|
||||
alias v=callvim
|
||||
alias vvsp="callvim -b':vsp'"
|
||||
alias vhsp="callvim -b':sp'"
|
||||
alias vk="callvim -b':wincmd k'"
|
||||
alias vj="callvim -b':wincmd j'"
|
||||
alias vl="callvim -b':wincmd l'"
|
||||
alias vh="callvim -b':wincmd h'"
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
virtualenvwrapper='virtualenvwrapper_lazy.sh'
|
||||
virtualenvwrapper='virtualenvwrapper.sh'
|
||||
if (( $+commands[$virtualenvwrapper] )); then
|
||||
source ${${virtualenvwrapper}:c}
|
||||
|
||||
|
|
@ -17,7 +17,7 @@ if (( $+commands[$virtualenvwrapper] )); then
|
|||
# Check for virtualenv name override
|
||||
if [[ -f "$PROJECT_ROOT/.venv" ]]; then
|
||||
ENV_NAME=`cat "$PROJECT_ROOT/.venv"`
|
||||
elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then
|
||||
elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then
|
||||
ENV_NAME="$PROJECT_ROOT/.venv"
|
||||
elif [[ "$PROJECT_ROOT" != "." ]]; then
|
||||
ENV_NAME=`basename "$PROJECT_ROOT"`
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ function vundle-init () {
|
|||
mkdir -p ~/.vim/bundle/vundle/
|
||||
fi
|
||||
|
||||
if [ ! -d ~/.vim/bundle/vundle/.git/ ]
|
||||
if [ ! -d ~/.vim/bundle/vundle/.git ] && [ ! -f ~/.vim/bundle/vundle/.git ]
|
||||
then
|
||||
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
|
||||
echo "\n\tRead about vim configuration for vundle at https://github.com/gmarik/vundle\n"
|
||||
|
|
|
|||
0
plugins/wd/wd.plugin.zsh
Executable file → Normal file
0
plugins/wd/wd.plugin.zsh
Executable file → Normal file
|
|
@ -58,7 +58,7 @@ wd_warp()
|
|||
#wd_print_msg $BLUE "Warping..."
|
||||
cd ${points[$1]}
|
||||
else
|
||||
wd_print_msg $RED "Unkown warp point '$1'"
|
||||
wd_print_msg $RED "Unknown warp point '$1'"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#xc function courtesy of http://gist.github.com/subdigital/5420709
|
||||
function xc {
|
||||
xcode_proj=`find . -name "*.xc*" -d 1 | sort -r | head -1`
|
||||
xcode_proj=`ls | grep "\.xc" | sort -r | head -1`
|
||||
if [[ `echo -n $xcode_proj | wc -m` == 0 ]]
|
||||
then
|
||||
echo "No xcworkspace/xcodeproj file found in the current directory."
|
||||
|
|
|
|||
12
plugins/zsh_reload/zsh_reload.plugin.zsh
Normal file
12
plugins/zsh_reload/zsh_reload.plugin.zsh
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# reload zshrc
|
||||
function src()
|
||||
{
|
||||
autoload -U compinit zrecompile
|
||||
compinit -d "$ZSH/cache/zcomp-$HOST"
|
||||
|
||||
for f in ~/.zshrc "$ZSH/cache/zcomp-$HOST"; do
|
||||
zrecompile -p $f && command rm -f $f.zwc.old
|
||||
done
|
||||
|
||||
source ~/.zshrc
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
# Path to your oh-my-zsh configuration.
|
||||
ZSH=$HOME/.oh-my-zsh
|
||||
# Path to your oh-my-zsh installation.
|
||||
export ZSH=$HOME/.oh-my-zsh
|
||||
|
||||
# Set name of the theme to load.
|
||||
# Look in ~/.oh-my-zsh/themes/
|
||||
|
|
@ -7,44 +7,44 @@ ZSH=$HOME/.oh-my-zsh
|
|||
# time that oh-my-zsh is loaded.
|
||||
ZSH_THEME="robbyrussell"
|
||||
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
||||
# Set this to use case-sensitive completion
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment this to disable bi-weekly auto-update checks
|
||||
# Uncomment the following line to disable bi-weekly auto-update checks.
|
||||
# DISABLE_AUTO_UPDATE="true"
|
||||
|
||||
# Uncomment to change how often to auto-update? (in days)
|
||||
# Uncomment the following line 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
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment following line if you want to disable autosetting terminal title.
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment following line if you want to disable command autocorrection
|
||||
# DISABLE_CORRECTION="true"
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment following line if you want to disable marking untracked files under
|
||||
# VCS as dirty. This makes repository status check for large repositories much,
|
||||
# much faster.
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment following line if you want to the command execution time stamp shown
|
||||
# in the history command output.
|
||||
# Uncomment the following line if you want to change 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"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
|
@ -54,7 +54,10 @@ source $ZSH/oh-my-zsh.sh
|
|||
export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# # Preferred editor for local and remote sessions
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
|
|
@ -66,3 +69,12 @@ export PATH=$HOME/bin:/usr/local/bin:$PATH
|
|||
|
||||
# ssh
|
||||
# export SSH_KEY_PATH="~/.ssh/dsa_id"
|
||||
|
||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
|
|
|||
|
|
@ -32,11 +32,12 @@ function check_git_prompt_info() {
|
|||
|
||||
# Determine if we are using a gemset.
|
||||
function rvm_gemset() {
|
||||
GEMSET=`rvm gemset list | grep '=>' | cut -b4-`
|
||||
if [[ -n $GEMSET ]]; then
|
||||
echo "%{$fg[yellow]%}$GEMSET%{$reset_color%}|"
|
||||
fi
|
||||
|
||||
if hash rvm 2>/dev/null; then
|
||||
GEMSET=`rvm gemset list | grep '=>' | cut -b4-`
|
||||
if [[ -n $GEMSET ]]; then
|
||||
echo "%{$fg[yellow]%}$GEMSET%{$reset_color%}|"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Determine the time since last commit. If branch is clean,
|
||||
|
|
|
|||
|
|
@ -69,7 +69,9 @@ prompt_context() {
|
|||
|
||||
# Git: branch/detached head, dirty status
|
||||
prompt_git() {
|
||||
local ref dirty
|
||||
local ref dirty mode repo_path
|
||||
repo_path=$(git rev-parse --git-dir 2>/dev/null)
|
||||
|
||||
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
|
||||
dirty=$(parse_git_dirty)
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
|
||||
|
|
@ -79,6 +81,14 @@ prompt_git() {
|
|||
prompt_segment green black
|
||||
fi
|
||||
|
||||
if [[ -e "${repo_path}/BISECT_LOG" ]]; then
|
||||
mode=" <B>"
|
||||
elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then
|
||||
mode=" >M<"
|
||||
elif [[ -e "${repo_path}/rebase" || -e "${repo_path}/rebase-apply" || -e "${repo_path}/rebase-merge" || -e "${repo_path}/../.dotest" ]]; then
|
||||
mode=" >R>"
|
||||
fi
|
||||
|
||||
setopt promptsubst
|
||||
autoload -Uz vcs_info
|
||||
|
||||
|
|
@ -90,7 +100,7 @@ prompt_git() {
|
|||
zstyle ':vcs_info:*' formats ' %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_%% }${mode}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ bureau_git_prompt () {
|
|||
|
||||
_PATH="%{$fg_bold[white]%}%~%{$reset_color%}"
|
||||
|
||||
if [[ "%#" == "#" ]]; then
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
_USERNAME="%{$fg_bold[red]%}%n"
|
||||
_LIBERTY="%{$fg[red]%}#"
|
||||
else
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ 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
|
||||
if [[ -n `which chruby_prompt_info` && -n `chruby_prompt_info` ]]; then
|
||||
RPS1='$(git_custom_status)%{$fg[red]%}[`chruby_prompt_info`]%{$reset_color%} $EPS1'
|
||||
else
|
||||
RPS1='$(git_custom_status) $EPS1'
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ autoload -U colors zsh/terminfo # Used in the colour alias below
|
|||
colors
|
||||
setopt prompt_subst
|
||||
|
||||
# make some aliases for the colours: (coud use normal escap.seq's too)
|
||||
# make some aliases for the colours: (could use normal escape sequences too)
|
||||
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
|
||||
eval PR_$color='%{$fg[${(L)color}]%}'
|
||||
done
|
||||
|
|
@ -14,18 +14,18 @@ eval PR_NO_COLOR="%{$terminfo[sgr0]%}"
|
|||
eval PR_BOLD="%{$terminfo[bold]%}"
|
||||
|
||||
# Check the UID
|
||||
if [[ $UID -ge 1000 ]]; then # normal user
|
||||
if [[ $UID -ne 0 ]]; then # normal user
|
||||
eval PR_USER='${PR_GREEN}%n${PR_NO_COLOR}'
|
||||
eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}'
|
||||
local PR_PROMPT='$PR_NO_COLOR➤ $PR_NO_COLOR'
|
||||
elif [[ $UID -eq 0 ]]; then # root
|
||||
else # root
|
||||
eval PR_USER='${PR_RED}%n${PR_NO_COLOR}'
|
||||
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}'
|
||||
local PR_PROMPT='$PR_RED➤ $PR_NO_COLOR'
|
||||
fi
|
||||
|
||||
# Check if we are on SSH or not
|
||||
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
|
||||
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
|
||||
eval PR_HOST='${PR_YELLOW}%M${PR_NO_COLOR}' #SSH
|
||||
else
|
||||
eval PR_HOST='${PR_GREEN}%M${PR_NO_COLOR}' # no SSH
|
||||
|
|
@ -63,7 +63,9 @@ zle -N zle-line-init
|
|||
local user_host='${PR_USER}${PR_CYAN}@${PR_HOST}'
|
||||
local current_dir='%{$PR_BOLD$PR_BLUE%}%~%{$PR_NO_COLOR%}'
|
||||
local rvm_ruby=''
|
||||
if which rvm-prompt &> /dev/null; then
|
||||
if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect local user rvm installation
|
||||
rvm_ruby='%{$PR_RED%}‹$(${HOME}/.rvm/bin/rvm-prompt i v g s)›%{$PR_NO_COLOR%}'
|
||||
elif which rvm-prompt &> /dev/null; then # detect sysem-wide rvm installation
|
||||
rvm_ruby='%{$PR_RED%}‹$(rvm-prompt i v g s)›%{$PR_NO_COLOR%}'
|
||||
elif which rbenv &> /dev/null; then
|
||||
rvm_ruby='%{$PR_RED%}‹$(rbenv version | sed -e "s/ (set.*$//")›%{$PR_NO_COLOR%}'
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ add-zsh-hook chpwd steeef_chpwd
|
|||
function steeef_precmd {
|
||||
if [[ -n "$PR_GIT_UPDATE" ]] ; then
|
||||
# check for untracked files or updated submodules, since vcs_info doesn't
|
||||
if git ls-files --other --exclude-standard --directory 2> /dev/null | grep -q "."; then
|
||||
if git ls-files --other --exclude-standard 2> /dev/null | grep -q "."; then
|
||||
PR_GIT_UPDATE=1
|
||||
FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})"
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PROMPT='%{$fg[green]%} %% '
|
||||
PROMPT='%(?,%{$fg[green]%},%{$fg[red]%}) %% '
|
||||
# RPS1='%{$fg[blue]%}%~%{$reset_color%} '
|
||||
RPS1='%{$fg[white]%}%2~$(git_prompt_info) %{$fg_bold[blue]%}%m%{$reset_color%}'
|
||||
|
||||
|
|
@ -6,4 +6,3 @@ ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[yellow]%}("
|
|||
ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%} ⚡%{$fg[yellow]%}"
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ function _current_epoch() {
|
|||
}
|
||||
|
||||
function _update_zsh_update() {
|
||||
echo "LAST_EPOCH=$(_current_epoch)" > ~/.zsh-update
|
||||
echo "LAST_EPOCH=$(_current_epoch)" >! ~/.zsh-update
|
||||
}
|
||||
|
||||
function _upgrade_zsh() {
|
||||
|
|
@ -22,6 +22,10 @@ fi
|
|||
|
||||
[ -f ~/.profile ] && source ~/.profile
|
||||
|
||||
# Cancel upgrade if the current user doesn't have write permissions for the
|
||||
# oh-my-zsh directory.
|
||||
[[ -w "$ZSH" ]] || return 0
|
||||
|
||||
if [ -f ~/.zsh-update ]
|
||||
then
|
||||
. ~/.zsh-update
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ if [ -d "$ZSH" ]; then
|
|||
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 $ZSH || {
|
||||
hash git >/dev/null 2>&1 && /usr/bin/env git clone https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
|
||||
echo "git not installed"
|
||||
exit
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue