Merge branch 'master' of https://github.com/robbyrussell/oh-my-zsh
commit
ef96b6c16e
14 changed files with 531 additions and 7 deletions
@ -0,0 +1,6 @@ |
||||
n forw-line |
||||
e back-line |
||||
k repeat-search |
||||
\ek repeat-search-all |
||||
K reverse-search |
||||
\eK reverse-search-all |
||||
@ -0,0 +1,22 @@ |
||||
# ctrl-j newline |
||||
bindkey '^n' accept-line |
||||
bindkey -a '^n' accept-line |
||||
|
||||
# another rotation to match qwerty |
||||
bindkey -a 'n' down-line-or-history |
||||
bindkey -a 'e' up-line-or-history |
||||
bindkey -a 'i' vi-forward-char |
||||
|
||||
# make qwerty |
||||
bindkey -a 'k' vi-repeat-search |
||||
bindkey -a 'K' vi-rev-repeat-search |
||||
bindkey -a 'u' vi-insert |
||||
bindkey -a 'U' vi-insert-bol |
||||
bindkey -a 'l' vi-undo-change |
||||
bindkey -a 'N' vi-join |
||||
|
||||
# spare |
||||
bindkey -a 'j' vi-forward-word-end |
||||
bindkey -a 'J' vi-forward-blank-word-end |
||||
|
||||
lesskey $ZSH_CUSTOM/plugins/colemak/colemak-less |
||||
@ -0,0 +1,40 @@ |
||||
#compdef artisan |
||||
|
||||
# Laravel autocompletion |
||||
# Author: John Hamelink <john@johnhamelink.com> |
||||
# |
||||
# This plugin does the following: |
||||
# - Adds aliases and autocompletion for artisan |
||||
# - Adds aliases and autocompletion for bob |
||||
|
||||
local curcontext="$curcontext" state line _opts _bundles ret=1 |
||||
_arguments -C \ |
||||
'1: :->cmds' \ |
||||
'*:: :->args' && ret=0 |
||||
|
||||
case $state in |
||||
cmds) |
||||
|
||||
_values "Artisan command" \ |
||||
'session\:install[Create a session table]' \ |
||||
'migrate[Manage Migrations]' \ |
||||
'test[Run a test]' \ |
||||
'route\:\:call[Call a route in the CLI]' \ |
||||
'key\:\:generate[Generate a key]' |
||||
ret=0 |
||||
;; |
||||
args) |
||||
case $line[1] in |
||||
migrate) |
||||
_values \ |
||||
'install[Create the Laravel migration table' \ |
||||
'make[Create a migration]' \ |
||||
'rollback[Roll back to the last migration operation]' \ |
||||
'reset[Roll back all migrations that have ever run]' |
||||
ret=0 |
||||
;; |
||||
esac |
||||
;; |
||||
esac |
||||
|
||||
return ret |
||||
@ -0,0 +1,3 @@ |
||||
#!zsh |
||||
alias artisan='php artisan' |
||||
alias bob='php artisan bob::build' |
||||
@ -0,0 +1,148 @@ |
||||
#!/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 |
||||
echo "using local history\n" |
||||
else |
||||
_per-directory-history-set-global-history |
||||
echo "using global history\n" |
||||
fi |
||||
zle reset-prompt |
||||
} |
||||
|
||||
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 |
||||
@ -0,0 +1,136 @@ |
||||
#compdef supervisorctl |
||||
|
||||
typeset -A opt_args |
||||
local context state line |
||||
|
||||
_supervisorctl() { |
||||
_arguments -s -S \ |
||||
{--configuration,-c}"[configuration file path (default /etc/supervisor.conf)]:FILENAME:_files" \ |
||||
{--help,-h}"[print usage message and exit]:" \ |
||||
{--interactive,-i}"[start an interactive shell after executing commands]" \ |
||||
{--serverurl,-s}"[URL on which supervisord server is listening (default "http://localhost:9001").]" \ |
||||
{--username,-u}"[username to use for authentication with server]:USERNAME:_users" \ |
||||
{--password,-p}"[password to use for authentication with server]:PASSWORD:" \ |
||||
{--history-file,-r}"[keep a readline history (if readline is available)]:FILENAME:_files" \ |
||||
"*::supervisorctl commands:_supervisorctl_command" |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_command] )) || |
||||
_supervisorctl_command() { |
||||
local cmd ret=1 |
||||
|
||||
(( $+supervisorctl_cmds )) || _supervisorctl_cmds=( |
||||
"add:Activates any updates in config for process/group" \ |
||||
"avail:Display all configured processes" \ |
||||
"clear:Clear process/multiple-process/all-process log files" \ |
||||
"exit:Exit the supervisor shell." \ |
||||
"fg:Connect to a process in foreground mode" \ |
||||
"maintail:tail of supervisor main log file" \ |
||||
"open:Connect to a remote supervisord process. (for UNIX domain socket, use unix:///socket/path)" \ |
||||
"pid:Get the PID of supervisord." \ |
||||
"quit:Exit the supervisor shell." \ |
||||
"reload:Restart the remote supervisord." \ |
||||
"remove:Removes process/group from active config" \ |
||||
"reread:Reload the daemon's configuration files" \ |
||||
"restart:Restart process or group." \ |
||||
"shutdown:Shut the remote supervisord down." \ |
||||
"start:Start process or groups." \ |
||||
"status:Get process status info." \ |
||||
"stop:Stop process or group." \ |
||||
"tail:tail of process stdout" \ |
||||
"update:Reload config and add/remove as necessary" \ |
||||
"version:Show the version of the remote supervisord process" \ |
||||
"help:Show help" \ |
||||
) |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands 'supervisorctl subcommand' _supervisorctl_cmds \ |
||||
|| compadd "$@" - ${(s.:.)${(j.:.)_supervisorctl_syns}} |
||||
else |
||||
local curcontext="$curcontext" |
||||
|
||||
cmd="${${_supervisorctl_cmds[(r)$words[1]:*]%%:*}:-${(k)_supervisorctl_syns[(r)(*:|)$words[1](:*|)]}}" |
||||
if (( $#cmd )); then |
||||
curcontext="${curcontext%:*:*}:supervisorctl-${cmd}:" |
||||
_call_function ret _supervisorctl_$cmd || _message 'no more arguments' |
||||
else |
||||
_message "unknown supervisorctl command: $words[1]" |
||||
fi |
||||
return ret |
||||
fi |
||||
} |
||||
|
||||
# get supervisor contoroll processes |
||||
(( $+functions[_get_supervisor_procs] )) || |
||||
_get_supervisor_procs() { |
||||
local cache_policy |
||||
zstyle -s ":completion:${curcontext}:" cache-policy cache_policy |
||||
if [[ -z "$cache_policy" ]]; then |
||||
zstyle ":completion:${curcontext}:" cache-policy _supervisor_procs_caching_policy |
||||
fi |
||||
|
||||
if ( [[ ${+_supervisor_procs} -eq 0 ]] || _cache_invalid supervisor_procs ) \ |
||||
&& ! _retrieve_cache supervisor_procs; then |
||||
|
||||
_supervisor_procs=(${${(f)"$(supervisorctl status >/dev/null 2>&1 | awk -F' ' '{print $1}')"}}) |
||||
_store_cache supervisor_procs _supervisor_procs |
||||
fi |
||||
|
||||
local expl |
||||
_wanted supervisor_procs expl 'supervisor processes' compadd -a _supervisor_procs |
||||
} |
||||
|
||||
_supervisor_procs_caching_policy() { |
||||
local -a oldp |
||||
oldp=( "$1"(Nmw+1) ) |
||||
(( $#oldp )) |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_add] )) || |
||||
_supervisorctl_add() { |
||||
_arguments -s \ |
||||
"--help[use help system]" \ |
||||
"*::supervisorctl commands:_supervisorctl" |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_help] )) || |
||||
_supervisorctl_help() { |
||||
_arguments -s \ |
||||
"*:supervisorctl commands:_supervisorctl" |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_maintail] )) || |
||||
_supervisorctl_maintail() { |
||||
_arguments -s \ |
||||
'-f[Continuous tail of supervisor main log file (Ctrl-C to exit)]' |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_start] )) || |
||||
_supervisorctl_start() { |
||||
# TODO: add 'all' |
||||
_arguments -s \ |
||||
'*::supvervisor process:_get_supervisor_procs' |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_status] )) || |
||||
_supervisorctl_status() { |
||||
_arguments \ |
||||
'*::supvervisor process:_get_supervisor_procs' |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_stop] )) || |
||||
_supervisorctl_stop() { |
||||
# TODO: add 'all' |
||||
_arguments -s \ |
||||
'*::supvervisor process:_get_supervisor_procs' |
||||
} |
||||
|
||||
(( $+functions[_supervisorctl_tail] )) || |
||||
_supervisorctl_tail() { |
||||
# TODO: add 'stderr' |
||||
_arguments -s \ |
||||
'-f[Continuous tail of named process stdout Ctrl-C to exit.]' \ |
||||
'*::supvervisor process:_get_supervisor_procs' |
||||
} |
||||
|
||||
_supervisorctl "$@" |
||||
@ -0,0 +1,32 @@ |
||||
#compdef supervisord |
||||
|
||||
typeset -A opt_args |
||||
local context state line |
||||
|
||||
_arguments \ |
||||
{--configuration,-c}"[configuration file]:FILENAME:_files" \ |
||||
{--nodaemon,-n}"[run in the foreground (same as 'nodaemon true' in config file)]" \ |
||||
{--help,-h}"[print this usage message and exit]:" \ |
||||
{--user,-u}"[run supervisord as this user]:USER:_users" \ |
||||
{--umask,-m}"[use this umask for daemon subprocess (default is 022)]" \ |
||||
{--directory,-d}"[directory to chdir to when daemonized]" \ |
||||
{--logfile,-l}"[use FILENAME as logfile path]:FILENAME:_files" \ |
||||
{--logfile_maxbytes,-y}"[use BYTES to limit the max size of logfile]" \ |
||||
{--logfile_backups,-z}"[number of backups to keep when max bytes reached]" \ |
||||
{--loglevel,-e}"[use LEVEL as log level (debug,info,warn,error,critical)]:level:->levels" \ |
||||
{--pidfile,-j}"[write a pid file for the daemon process to FILENAME]:FILENAME:_files" \ |
||||
{--identifier,-i}"[identifier used for this instance of supervisord]" \ |
||||
{--childlogdir,-q}"[the log directory for child process logs]:child log directory:_files -/" \ |
||||
{--nocleanup,-k}"[prevent the process from performing cleanup (removal of old automatic child log files) at startup.]" \ |
||||
{--minfds,-a}"[the minimum number of file descriptors for start success]" \ |
||||
{--strip_ansi,-t}"[strip ansi escape codes from process output]" \ |
||||
"--minprocs[the minimum number of processes available for start success]" \ |
||||
"--profile_options[run supervisord under profiler and output results based on OPTIONS, which is a comma-sep'd list of 'cumulative', 'calls', and/or 'callers', e.g. 'cumulative,callers')]" \ |
||||
"*::args:_gnu_generic" |
||||
|
||||
case $state in |
||||
levels) |
||||
levels=("debug" "info" "warn" "error" "critical") |
||||
_describe -t levels 'supervisord levels' levels && return 0 |
||||
;; |
||||
esac |
||||
@ -0,0 +1 @@ |
||||
# DECLARION: This plugin was created by hhatto. What I did is just making a portal from https://bitbucket.org/hhatto/zshcompfunc4supervisor. |
||||
@ -0,0 +1,7 @@ |
||||
PROMPT=$'%{$fg[white]%}$(~/.rvm/bin/rvm-prompt) %{$fg_bold[cyan]%}%~%{$reset_color%}$(git_prompt_info) %{$fg[cyan]%}%D{[%I:%M:%S]}\ |
||||
%{$fg_bold[green]%}%n$%{$reset_color%} ' |
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[white]%}(" |
||||
ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_DIRTY="*" |
||||
ZSH_THEME_GIT_PROMPT_CLEAN="" |
||||
@ -0,0 +1,115 @@ |
||||
# vim:ft=zsh ts=2 sw=2 sts=2 |
||||
# |
||||
# agnoster's Theme - https://gist.github.com/3712874 |
||||
# A Powerline-inspired theme for ZSH |
||||
# |
||||
# # README |
||||
# |
||||
# In order for this theme to render correctly, you will need a |
||||
# [Powerline-patched font](https://gist.github.com/1595572). |
||||
# |
||||
# In addition, I recommend the |
||||
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're |
||||
# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app - |
||||
# it has significantly better color fidelity. |
||||
# |
||||
# # Goals |
||||
# |
||||
# The aim of this theme is to only show you *relevant* information. Like most |
||||
# prompts, it will only show git information when in a git working directory. |
||||
# However, it goes a step further: everything from the current user and |
||||
# hostname to whether the last call exited with an error to whether background |
||||
# jobs are running in this shell will all be displayed automatically when |
||||
# appropriate. |
||||
|
||||
### Segment drawing |
||||
# A few utility functions to make it easy and re-usable to draw segmented prompts |
||||
|
||||
CURRENT_BG='NONE' |
||||
SEGMENT_SEPARATOR='⮀' |
||||
|
||||
# Begin a segment |
||||
# Takes two arguments, background and foreground. Both can be omitted, |
||||
# rendering default background/foreground. |
||||
prompt_segment() { |
||||
local bg fg |
||||
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" |
||||
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" |
||||
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then |
||||
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " |
||||
else |
||||
echo -n "%{$bg%}%{$fg%} " |
||||
fi |
||||
CURRENT_BG=$1 |
||||
[[ -n $3 ]] && echo -n $3 |
||||
} |
||||
|
||||
# End the prompt, closing any open segments |
||||
prompt_end() { |
||||
if [[ -n $CURRENT_BG ]]; then |
||||
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" |
||||
else |
||||
echo -n "%{%k%}" |
||||
fi |
||||
echo -n "%{%f%}" |
||||
CURRENT_BG='' |
||||
} |
||||
|
||||
### Prompt components |
||||
# Each component will draw itself, and hide itself if no information needs to be shown |
||||
|
||||
# Context: user@hostname (who am I and where am I) |
||||
prompt_context() { |
||||
local user=`whoami` |
||||
|
||||
if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then |
||||
prompt_segment black default "%(!.%{%F{yellow}%}.)$user@%m" |
||||
fi |
||||
} |
||||
|
||||
# Git: branch/detached head, dirty status |
||||
prompt_git() { |
||||
local ref dirty |
||||
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then |
||||
ZSH_THEME_GIT_PROMPT_DIRTY='±' |
||||
dirty=$(parse_git_dirty) |
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" |
||||
if [[ -n $dirty ]]; then |
||||
prompt_segment yellow black |
||||
else |
||||
prompt_segment green black |
||||
fi |
||||
echo -n "${ref/refs\/heads\//⭠ }$dirty" |
||||
fi |
||||
} |
||||
|
||||
# Dir: current working directory |
||||
prompt_dir() { |
||||
prompt_segment blue black '%~' |
||||
} |
||||
|
||||
# Status: |
||||
# - was there an error |
||||
# - am I root |
||||
# - are there background jobs? |
||||
prompt_status() { |
||||
local symbols |
||||
symbols=() |
||||
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" |
||||
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" |
||||
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" |
||||
|
||||
[[ -n "$symbols" ]] && prompt_segment black default "$symbols" |
||||
} |
||||
|
||||
## Main prompt |
||||
build_prompt() { |
||||
RETVAL=$? |
||||
prompt_status |
||||
prompt_context |
||||
prompt_dir |
||||
prompt_git |
||||
prompt_end |
||||
} |
||||
|
||||
PROMPT='%{%f%b%k%}$(build_prompt) ' |
||||
Loading…
Reference in new issue