Repository: sjl/oh-my-zsh Branch: master Commit: bd003653824b Files: 189 Total size: 260.5 KB Directory structure: gitextract_6idm_390/ ├── .gitignore ├── README.textile ├── functions/ │ └── _hg ├── lib/ │ ├── aliases.zsh │ ├── completion.zsh │ ├── correction.zsh │ ├── directories.zsh │ ├── django.zsh │ ├── edit-command-line.zsh │ ├── functions.zsh │ ├── git.zsh │ ├── history.zsh │ ├── key-bindings.zsh │ ├── misc.zsh │ ├── python.zsh │ ├── redis.zsh │ ├── spectrum.zsh │ ├── supervisord.zsh │ ├── termsupport.zsh │ └── theme-and-appearance.zsh ├── log/ │ └── .easter-egg ├── oh-my-zsh.sh ├── plugins/ │ ├── ant/ │ │ └── ant.plugin.zsh │ ├── apache2-macports/ │ │ └── apache2-macports.plugin.zsh │ ├── archlinux/ │ │ └── archlinux.plugin.zsh │ ├── autojump/ │ │ └── autojump.plugin.zsh │ ├── brew/ │ │ ├── _brew │ │ └── brew.plugin.zsh │ ├── bundler/ │ │ └── bundler.plugin.zsh │ ├── cake/ │ │ └── cake.plugin.zsh │ ├── cap/ │ │ └── cap.plugin.zsh │ ├── cloudapp/ │ │ ├── cloudapp.plugin.zsh │ │ └── cloudapp.rb │ ├── command-coloring/ │ │ └── command-coloring.plugin.zsh │ ├── command-not-found/ │ │ └── command-not-found.plugin.zsh │ ├── compleat/ │ │ └── compleat.plugin.zsh │ ├── cpanm/ │ │ └── _cpanm │ ├── deb/ │ │ └── deb.plugin.zsh │ ├── debian/ │ │ └── debian.plugin.zsh │ ├── dirpersist/ │ │ └── dirpersist.plugin.zsh │ ├── django/ │ │ └── django.plugin.zsh │ ├── extract/ │ │ ├── _extract │ │ └── extract.plugin.zsh │ ├── fabric/ │ │ └── fabric.plugin.zsh │ ├── gas/ │ │ └── _gas │ ├── gem/ │ │ └── _gem │ ├── git/ │ │ └── git.plugin.zsh │ ├── git-flow/ │ │ └── git-flow.plugin.zsh │ ├── github/ │ │ ├── _github │ │ └── github.plugin.zsh │ ├── gpg-agent/ │ │ └── gpg-agent.plugin.zsh │ ├── heroku/ │ │ └── _heroku │ ├── history-substring-search/ │ │ ├── README │ │ ├── history-substring-search.plugin.zsh │ │ └── history-substring-search.zsh │ ├── kate/ │ │ └── kate.plugin.zsh │ ├── knife/ │ │ └── _knife │ ├── lein/ │ │ └── lein.plugin.zsh │ ├── lighthouse/ │ │ └── lighthouse.plugin.zsh │ ├── lol/ │ │ └── lol.plugin.zsh │ ├── macports/ │ │ ├── _port │ │ └── macports.plugin.zsh │ ├── mysql-macports/ │ │ └── mysql-macports.plugin.zsh │ ├── node/ │ │ └── node.plugin.zsh │ ├── npm/ │ │ └── _npm │ ├── osx/ │ │ ├── _man-preview │ │ └── osx.plugin.zsh │ ├── perl/ │ │ └── perl.plugin.zsh │ ├── phing/ │ │ └── phing.plugin.zsh │ ├── pip/ │ │ └── _pip │ ├── pow/ │ │ └── pow.plugin.zsh │ ├── powder/ │ │ └── _powder │ ├── rails/ │ │ └── rails.plugin.zsh │ ├── rails3/ │ │ └── rails3.plugin.zsh │ ├── redis-cli/ │ │ └── _redis-cli │ ├── ruby/ │ │ └── ruby.plugin.zsh │ ├── rvm/ │ │ ├── _rvm │ │ └── rvm.plugin.zsh │ ├── ssh-agent/ │ │ └── ssh-agent.plugin.zsh │ ├── svn/ │ │ └── svn.plugin.zsh │ ├── taskwarrior/ │ │ ├── _task │ │ └── taskwarrior.plugin.zsh │ ├── textmate/ │ │ └── textmate.plugin.zsh │ ├── thor/ │ │ └── _thor │ ├── vagrant/ │ │ └── _vagrant │ ├── vi-mode/ │ │ └── vi-mode.plugin.zsh │ └── yum/ │ └── yum.plugin.zsh ├── templates/ │ └── zshrc.zsh-template ├── themes/ │ ├── Soliah.zsh-theme │ ├── afowler.zsh-theme │ ├── alanpeabody.zsh-theme │ ├── arrow.zsh-theme │ ├── aussiegeek.zsh-theme │ ├── awesomepanda.zsh-theme │ ├── bira.zsh-theme │ ├── blinks.zsh-theme │ ├── candy.zsh-theme │ ├── clean.zsh-theme │ ├── cloud.zsh-theme │ ├── cypher.zsh-theme │ ├── dallas.zsh-theme │ ├── darkblood.zsh-theme │ ├── daveverwer.zsh-theme │ ├── dieter.zsh-theme │ ├── dogenpunk.zsh-theme │ ├── dpoggi.zsh-theme │ ├── dst.zsh-theme │ ├── dstufft.zsh-theme │ ├── duellj.zsh-theme │ ├── eastwood.zsh-theme │ ├── edvardm.zsh-theme │ ├── evan.zsh-theme │ ├── example.zsh-theme │ ├── fishy.zsh-theme │ ├── flazz.zsh-theme │ ├── fletcherm.zsh-theme │ ├── frisk.zsh-theme │ ├── funky.zsh-theme │ ├── fwalch.zsh-theme │ ├── gallifrey.zsh-theme │ ├── gallois.zsh-theme │ ├── garyblessington.zsh-theme │ ├── gentoo.zsh-theme │ ├── geoffgarside.zsh-theme │ ├── gozilla.zsh-theme │ ├── humza.zsh-theme │ ├── imajes.zsh-theme │ ├── jbergantine.zsh-theme │ ├── jispwoso.zsh-theme │ ├── jnrowe.zsh-theme │ ├── jonathan.zsh-theme │ ├── josh.zsh-theme │ ├── jreese.zsh-theme │ ├── jtriley.zsh-theme │ ├── juanghurtado.zsh-theme │ ├── kardan.zsh-theme │ ├── kennethreitz.zsh-theme │ ├── kolo.zsh-theme │ ├── kphoen.zsh-theme │ ├── lambda.zsh-theme │ ├── linuxonly │ ├── lukerandall.zsh-theme │ ├── macovsky-ruby.zsh-theme │ ├── macovsky.zsh-theme │ ├── maran.zsh-theme │ ├── mattcable.zsh-theme │ ├── mgutz.zsh-theme │ ├── mikeh.zsh-theme │ ├── miloshadzic.zsh-theme │ ├── minimal.zsh-theme │ ├── mrtazz.zsh-theme │ ├── murilasso.zsh-theme │ ├── muse.zsh-theme │ ├── nanotech.zsh-theme │ ├── nebirhos.zsh-theme │ ├── nicoulaj.zsh-theme │ ├── obraun.zsh-theme │ ├── philips.zsh-theme │ ├── pmcgee.zsh-theme │ ├── prose.zsh-theme │ ├── re5et.zsh-theme │ ├── rgm.zsh-theme │ ├── risto.zsh-theme │ ├── rixius.zsh-theme │ ├── robbyrussell.zsh-theme │ ├── simple.zsh-theme │ ├── skaro.zsh-theme │ ├── smt.zsh-theme │ ├── sorin.zsh-theme │ ├── sporty_256.zsh-theme │ ├── steeef.zsh-theme │ ├── sunaku.zsh-theme │ ├── sunrise.zsh-theme │ ├── superjarin.zsh-theme │ ├── takashiyoshida.zsh-theme │ ├── terminalparty.zsh-theme │ ├── theunraveler.zsh-theme │ ├── tjkirch.zsh-theme │ ├── tonotdo.zsh-theme │ ├── trapd00r.zsh-theme │ ├── wedisagree.zsh-theme │ ├── wezm+.zsh-theme │ ├── wezm.zsh-theme │ ├── xiong-chiamiov-plus.zsh-theme │ └── xiong-chiamiov.zsh-theme └── tools/ ├── check_for_upgrade.sh ├── install.sh ├── uninstall.sh └── upgrade.sh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ locals.zsh log/.zsh_history projects.zsh custom custom/*.zsh *.un~ cache *.swp .DS_Store ================================================ FILE: README.textile ================================================ A handful of functions, auto-complete helpers, and stuff that makes you shout... bq. "OH MY ZSHELL!" h2. Setup @oh-my-zsh@ should work with any recent release of "zsh":http://www.zsh.org/, the minimum recommended version is 4.3.9. h3. The automatic installer... (do you trust me?) @wget http://github.com/sjl/oh-my-zsh/raw/master/tools/install.sh -O - | sh@ h3. The manual way 1. Clone the repository @git clone git://github.com/sjl/oh-my-zsh.git ~/.oh-my-zsh@ 2. Create a new zsh config by copying the zsh template we've provided. *NOTE*: If you already have a ~/.zshrc file, you should back it up. @cp ~/.zshrc ~/.zshrc.orig@ in case you want to go back to your original settings. @cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc@ 3. Set zsh as your default shell: @chsh -s /bin/zsh@ 4. Start / restart zsh (open a new terminal is easy enough...) h3. Problems? You _might_ need to modify your PATH in ~/.zshrc if you're not able to find some commands after switching to _Oh My Zsh_. h2. Usage * enable the plugins you want in your @~/.zshrc@ (take a look at @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":http://wiki.github.com/sjl/oh-my-zsh/themes that come bundled with _Oh My Zsh_. * much much more... take a look at @lib/@ what _Oh My Zsh_ offers... h2. Useful the "refcard":http://www.bash2zsh.com/zsh_refcard/refcard.pdf is pretty tasty for tips. h3. Customization If you want to override any of the default behavior, just add a new file (ending in @.zsh@) into the @custom/@ directory. If you have many functions which go good 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. Uninstalling If you want to uninstall it, just run @uninstall_oh_my_zsh@ from the command line and it'll remove itself and revert you to bash (or your previous zsh config). h2. Help out! I'm far from being a zsh-expert and suspect there are many ways to improve. If you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests! h3. Send us your theme! I'm hoping to collect a bunch of themes for our command prompts. You can see existing ones in the @themes/@ directory. h2. Contributors This project wouldn't exist without all of our awesome users and contributors. * "View our growing list of contributors":https://github.com/robbyrussell/oh-my-zsh/contributors Thank you so much! ================================================ FILE: functions/_hg ================================================ #compdef hg # Zsh completion script for mercurial. Rename this file to _hg and copy # it into your zsh function path (/usr/share/zsh/site-functions for # instance) # # If you do not want to install it globally, you can copy it somewhere # else and add that directory to $fpath. This must be done before # compinit is called. If the file is copied to ~/.zsh.d, your ~/.zshrc # file could look like this: # # fpath=("$HOME/.zsh.d" $fpath) # autoload -U compinit # compinit # # Copyright (C) 2005, 2006 Steve Borho # Copyright (C) 2006-9 Brendan Cully # # Permission is hereby granted, without written agreement and without # licence or royalty fees, to use, copy, modify, and distribute this # software and to distribute modified versions of this software for any # purpose, provided that the above copyright notice and the following # two paragraphs appear in all copies of this software. # # In no event shall the authors be liable to any party for direct, # indirect, special, incidental, or consequential damages arising out of # the use of this software and its documentation, even if the authors # have been advised of the possibility of such damage. # # The authors specifically disclaim any warranties, including, but not # limited to, the implied warranties of merchantability and fitness for # a particular purpose. The software provided hereunder is on an "as # is" basis, and the authors have no obligation to provide maintenance, # support, updates, enhancements, or modifications. emulate -LR zsh setopt extendedglob local curcontext="$curcontext" state line typeset -A _hg_cmd_globals _hg() { local cmd _hg_root integer i=2 _hg_cmd_globals=() while (( i < $#words )) do case "$words[$i]" in -R|--repository) eval _hg_root="$words[$i+1]" _hg_cmd_globals+=("$words[$i]" "$_hg_root") (( i += 2 )) continue ;; -R*) _hg_cmd_globals+="$words[$i]" eval _hg_root="${words[$i]#-R}" (( i++ )) continue ;; --cwd|--config) # pass along arguments to hg completer _hg_cmd_globals+=("$words[$i]" "$words[$i+1]") (( i += 2 )) continue ;; -*) # skip option (( i++ )) continue ;; esac if [[ -z "$cmd" ]] then cmd="$words[$i]" words[$i]=() (( CURRENT-- )) fi (( i++ )) done if [[ -z "$cmd" ]] then _arguments -s -w : $_hg_global_opts \ ':mercurial command:_hg_commands' return fi # resolve abbreviations and aliases if ! (( $+functions[_hg_cmd_${cmd}] )) then local cmdexp (( $#_hg_cmd_list )) || _hg_get_commands cmdexp=$_hg_cmd_list[(r)${cmd}*] if [[ $cmdexp == $_hg_cmd_list[(R)${cmd}*] ]] then # might be nice to rewrite the command line with the expansion cmd="$cmdexp" fi if [[ -n $_hg_alias_list[$cmd] ]] then cmd=$_hg_alias_list[$cmd] fi fi curcontext="${curcontext%:*:*}:hg-${cmd}:" zstyle -s ":completion:$curcontext:" cache-policy update_policy if [[ -z "$update_policy" ]] then zstyle ":completion:$curcontext:" cache-policy _hg_cache_policy fi if (( $+functions[_hg_cmd_${cmd}] )) then _hg_cmd_${cmd} else # complete unknown commands normally _arguments -s -w : $_hg_global_opts \ '*:files:_hg_files' fi } _hg_cache_policy() { typeset -a old # cache for a minute old=( "$1"(mm+10) ) (( $#old )) && return 0 return 1 } _hg_get_commands() { typeset -ga _hg_cmd_list typeset -gA _hg_alias_list local hline cmd cmdalias _call_program hg hg debugcomplete -v | while read -A hline do cmd=$hline[1] _hg_cmd_list+=($cmd) for cmdalias in $hline[2,-1] do _hg_cmd_list+=($cmdalias) _hg_alias_list+=($cmdalias $cmd) done done } _hg_commands() { (( $#_hg_cmd_list )) || _hg_get_commands _describe -t commands 'mercurial command' _hg_cmd_list } _hg_revrange() { compset -P 1 '*:' _hg_tags "$@" } _hg_tags() { typeset -a tags local tag rev _hg_cmd tags | while read tag do tags+=(${tag/ # [0-9]#:*}) done (( $#tags )) && _describe -t tags 'tags' tags } # likely merge candidates _hg_mergerevs() { typeset -a heads local myrev heads=(${(f)"$(_hg_cmd heads --template '{rev}\\n')"}) # exclude own revision myrev=$(_hg_cmd log -r . --template '{rev}\\n') heads=(${heads:#$myrev}) (( $#heads )) && _describe -t heads 'heads' heads } _hg_files() { if [[ -n "$_hg_root" ]] then [[ -d "$_hg_root/.hg" ]] || return case "$_hg_root" in /*) _files -W $_hg_root ;; *) _files -W $PWD/$_hg_root ;; esac else _files fi } _hg_status() { [[ -d $PREFIX ]] || PREFIX=$PREFIX:h status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 ./$PREFIX)"}) } _hg_unknown() { typeset -a status_files _hg_status u _wanted files expl 'unknown files' _multi_parts / status_files } _hg_missing() { typeset -a status_files _hg_status d _wanted files expl 'missing files' _multi_parts / status_files } _hg_modified() { typeset -a status_files _hg_status m _wanted files expl 'modified files' _multi_parts / status_files } _hg_resolve() { local rstate rpath [[ -d $PREFIX ]] || PREFIX=$PREFIX:h _hg_cmd resolve -l ./$PREFIX | while read rstate rpath do [[ $rstate == 'R' ]] && resolved_files+=($rpath) [[ $rstate == 'U' ]] && unresolved_files+=($rpath) done } _hg_resolved() { typeset -a resolved_files unresolved_files _hg_resolve _wanted files expl 'resolved files' _multi_parts / resolved_files } _hg_unresolved() { typeset -a resolved_files unresolved_files _hg_resolve _wanted files expl 'unresolved files' _multi_parts / unresolved_files } _hg_config() { typeset -a items items=(${${(%f)"$(_call_program hg hg showconfig)"}%%\=*}) (( $#items )) && _describe -t config 'config item' items } _hg_addremove() { _alternative 'files:unknown files:_hg_unknown' \ 'files:missing files:_hg_missing' } _hg_ssh_urls() { if [[ -prefix */ ]] then if zstyle -T ":completion:${curcontext}:files" remote-access then local host=${PREFIX%%/*} typeset -a remdirs compset -p $(( $#host + 1 )) local rempath=${(M)PREFIX##*/} local cacheid="hg:${host}-${rempath//\//_}" cacheid=${cacheid%[-_]} compset -P '*/' if _cache_invalid "$cacheid" || ! _retrieve_cache "$cacheid" then remdirs=(${${(M)${(f)"$(_call_program files ssh -a -x $host ls -1FL "${(q)rempath}")"}##*/}%/}) _store_cache "$cacheid" remdirs fi _describe -t directories 'remote directory' remdirs -S/ else _message 'remote directory' fi else if compset -P '*@' then _hosts -S/ else _alternative 'hosts:remote host name:_hosts -S/' \ 'users:user:_users -S@' fi fi } _hg_urls() { if compset -P bundle:// then _files elif compset -P ssh:// then _hg_ssh_urls elif [[ -prefix *: ]] then _urls else local expl compset -S '[^:]*' _wanted url-schemas expl 'URL schema' compadd -S '' - \ http:// https:// ssh:// bundle:// fi } _hg_paths() { typeset -a paths pnames _hg_cmd paths | while read -A pnames do paths+=($pnames[1]) done (( $#paths )) && _describe -t path-aliases 'repository alias' paths } _hg_remote() { _alternative 'path-aliases:repository alias:_hg_paths' \ 'directories:directory:_files -/' \ 'urls:URL:_hg_urls' } _hg_clone_dest() { _alternative 'directories:directory:_files -/' \ 'urls:URL:_hg_urls' } # Common options _hg_global_opts=( '(--repository -R)'{-R+,--repository}'[repository root directory]:repository:_files -/' '--cwd[change working directory]:new working directory:_files -/' '(--noninteractive -y)'{-y,--noninteractive}'[do not prompt, assume yes for any required answers]' '(--verbose -v)'{-v,--verbose}'[enable additional output]' '*--config[set/override config option]:defined config items:_hg_config' '(--quiet -q)'{-q,--quiet}'[suppress output]' '(--help -h)'{-h,--help}'[display help and exit]' '--debug[debug mode]' '--debugger[start debugger]' '--encoding[set the charset encoding (default: UTF8)]' '--encodingmode[set the charset encoding mode (default: strict)]' '--lsprof[print improved command execution profile]' '--traceback[print traceback on exception]' '--time[time how long the command takes]' '--profile[profile]' '--version[output version information and exit]' ) _hg_pat_opts=( '*'{-I+,--include}'[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/' '*'{-X+,--exclude}'[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/') _hg_diff_opts=( '(--text -a)'{-a,--text}'[treat all files as text]' '(--git -g)'{-g,--git}'[use git extended diff format]' "--nodates[omit dates from diff headers]") _hg_dryrun_opts=( '(--dry-run -n)'{-n,--dry-run}'[do not perform actions, just print output]') _hg_style_opts=( '--style[display using template map file]:' '--template[display with template]:') _hg_commit_opts=( '(-m --message -l --logfile --edit -e)'{-e,--edit}'[edit commit message]' '(-e --edit -l --logfile --message -m)'{-m+,--message}'[use as commit message]:message:' '(-e --edit -m --message --logfile -l)'{-l+,--logfile}'[read the commit message from ]:log file:_files') _hg_remote_opts=( '(--ssh -e)'{-e+,--ssh}'[specify ssh command to use]:' '--remotecmd[specify hg command to run on the remote side]:') _hg_cmd() { _call_program hg hg --config ui.verbose=0 --config defaults."$1"= \ "$_hg_cmd_globals[@]" "$@" 2> /dev/null } _hg_cmd_add() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ '*:unknown files:_hg_unknown' } _hg_cmd_addremove() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ '(--similarity -s)'{-s+,--similarity}'[guess renamed files by similarity (0<=s<=100)]:' \ '*:unknown or missing files:_hg_addremove' } _hg_cmd_annotate() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--rev -r)'{-r+,--rev}'[annotate the specified revision]:revision:_hg_tags' \ '(--follow -f)'{-f,--follow}'[follow file copies and renames]' \ '(--text -a)'{-a,--text}'[treat all files as text]' \ '(--user -u)'{-u,--user}'[list the author]' \ '(--date -d)'{-d,--date}'[list the date]' \ '(--number -n)'{-n,--number}'[list the revision number (default)]' \ '(--changeset -c)'{-c,--changeset}'[list the changeset]' \ '*:files:_hg_files' } _hg_cmd_archive() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '--no-decode[do not pass files through decoders]' \ '(--prefix -p)'{-p+,--prefix}'[directory prefix for files in archive]:' \ '(--rev -r)'{-r+,--rev}'[revision to distribute]:revision:_hg_tags' \ '(--type -t)'{-t+,--type}'[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \ '*:destination:_files' } _hg_cmd_backout() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '--merge[merge with old dirstate parent after backout]' \ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \ '--parent[parent to choose when backing out merge]' \ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \ '(--message -m)'{-m+,--message}'[use as commit message]:text:' \ '(--logfile -l)'{-l+,--logfile}'[read commit message from ]:log file:_files -g \*.txt' } _hg_cmd_bisect() { _arguments -s -w : $_hg_global_opts \ '(-)'{-r,--reset}'[reset bisect state]' \ '(--good -g --bad -b --skip -s --reset -r)'{-g,--good}'[mark changeset good]'::revision:_hg_tags \ '(--good -g --bad -b --skip -s --reset -r)'{-b,--bad}'[mark changeset bad]'::revision:_hg_tags \ '(--good -g --bad -b --skip -s --reset -r)'{-s,--skip}'[skip testing changeset]' \ '(--command -c --noupdate -U)'{-c+,--command}'[use command to check changeset state]':commands:_command_names \ '(--command -c --noupdate -U)'{-U,--noupdate}'[do not update to target]' } _hg_cmd_branch() { _arguments -s -w : $_hg_global_opts \ '(--force -f)'{-f,--force}'[set branch name even if it shadows an existing branch]' \ '(--clean -C)'{-C,--clean}'[reset branch name to parent branch name]' } _hg_cmd_branches() { _arguments -s -w : $_hg_global_opts \ '(--active -a)'{-a,--active}'[show only branches that have unmerge heads]' } _hg_cmd_bundle() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ '(--force -f)'{-f,--force}'[run even when remote repository is unrelated]' \ '(2)*--base[a base changeset to specify instead of a destination]:revision:_hg_tags' \ ':output file:_files' \ ':destination repository:_files -/' } _hg_cmd_cat() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--output -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \ '*:file:_hg_files' } _hg_cmd_clone() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ '(--noupdate -U)'{-U,--noupdate}'[do not update the new working directory]' \ '(--rev -r)'{-r+,--rev}'[a changeset you would like to have after cloning]:' \ '--uncompressed[use uncompressed transfer (fast over LAN)]' \ ':source repository:_hg_remote' \ ':destination:_hg_clone_dest' } _hg_cmd_commit() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--addremove -A)'{-A,--addremove}'[mark new/missing files as added/removed before committing]' \ '(--message -m)'{-m+,--message}'[use as commit message]:text:' \ '(--logfile -l)'{-l+,--logfile}'[read commit message from ]:log file:_files -g \*.txt' \ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \ '*:file:_hg_files' } _hg_cmd_copy() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ '(--after -A)'{-A,--after}'[record a copy that has already occurred]' \ '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \ '*:file:_hg_files' } _hg_cmd_diff() { typeset -A opt_args _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts \ '*'{-r,--rev}'+[revision]:revision:_hg_revrange' \ '(--show-function -p)'{-p,--show-function}'[show which function each change is in]' \ '(--ignore-all-space -w)'{-w,--ignore-all-space}'[ignore white space when comparing lines]' \ '(--ignore-space-change -b)'{-b,--ignore-space-change}'[ignore changes in the amount of white space]' \ '(--ignore-blank-lines -B)'{-B,--ignore-blank-lines}'[ignore changes whose lines are all blank]' \ '*:file:->diff_files' if [[ $state == 'diff_files' ]] then if [[ -n $opt_args[-r] ]] then _hg_files else _hg_modified fi fi } _hg_cmd_export() { _arguments -s -w : $_hg_global_opts $_hg_diff_opts \ '(--outout -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \ '--switch-parent[diff against the second parent]' \ '*:revision:_hg_tags' } _hg_cmd_grep() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--print0 -0)'{-0,--print0}'[end filenames with NUL]' \ '--all[print all revisions with matches]' \ '(--follow -f)'{-f,--follow}'[follow changeset or file history]' \ '(--ignore-case -i)'{-i,--ignore-case}'[ignore case when matching]' \ '(--files-with-matches -l)'{-l,--files-with-matches}'[print only filenames and revs that match]' \ '(--line-number -n)'{-n,--line-number}'[print matching line numbers]' \ '*'{-r+,--rev}'[search in given revision range]:revision:_hg_revrange' \ '(--user -u)'{-u,--user}'[print user who committed change]' \ '1:search pattern:' \ '*:files:_hg_files' } _hg_cmd_heads() { _arguments -s -w : $_hg_global_opts $_hg_style_opts \ '(--rev -r)'{-r+,--rev}'[show only heads which are descendants of rev]:revision:_hg_tags' } _hg_cmd_help() { _arguments -s -w : $_hg_global_opts \ '*:mercurial command:_hg_commands' } _hg_cmd_identify() { _arguments -s -w : $_hg_global_opts \ '(--rev -r)'{-r+,--rev}'[identify the specified rev]:revision:_hg_tags' \ '(--num -n)'{-n+,--num}'[show local revision number]' \ '(--id -i)'{-i+,--id}'[show global revision id]' \ '(--branch -b)'{-b+,--branch}'[show branch]' \ '(--tags -t)'{-t+,--tags}'[show tags]' } _hg_cmd_import() { _arguments -s -w : $_hg_global_opts \ '(--strip -p)'{-p+,--strip}'[directory strip option for patch (default: 1)]:count:' \ '(--message -m)'{-m+,--message}'[use as commit message]:text:' \ '(--force -f)'{-f,--force}'[skip check for outstanding uncommitted changes]' \ '*:patch:_files' } _hg_cmd_incoming() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \ '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \ '(--patch -p)'{-p,--patch}'[show patch]' \ '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:_hg_tags' \ '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \ '--bundle[file to store the bundles into]:bundle file:_files' \ ':source:_hg_remote' } _hg_cmd_init() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ ':dir:_files -/' } _hg_cmd_locate() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--rev -r)'{-r+,--rev}'[search repository as it stood at revision]:revision:_hg_tags' \ '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \ '(--fullpath -f)'{-f,--fullpath}'[print complete paths]' \ '*:search pattern:_hg_files' } _hg_cmd_log() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \ '(--follow --follow-first -f)'{-f,--follow}'[follow changeset or history]' \ '(-f --follow)--follow-first[only follow the first parent of merge changesets]' \ '(--copies -C)'{-C,--copies}'[show copied files]' \ '(--keyword -k)'{-k+,--keyword}'[search for a keyword]:' \ '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \ '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_revrange' \ '(--no-merges -M)'{-M,--no-merges}'[do not show merges]' \ '(--only-merges -m)'{-m,--only-merges}'[show only merges]' \ '(--patch -p)'{-p,--patch}'[show patch]' \ '(--prune -P)'{-P+,--prune}'[do not display revision or any of its ancestors]:revision:_hg_tags' \ '*:files:_hg_files' } _hg_cmd_manifest() { _arguments -s -w : $_hg_global_opts \ ':revision:_hg_tags' } _hg_cmd_merge() { _arguments -s -w : $_hg_global_opts \ '(--force -f)'{-f,--force}'[force a merge with outstanding changes]' \ '(--rev -r 1)'{-r,--rev}'[revision to merge]:revision:_hg_mergerevs' \ '(--preview -P)'{-P,--preview}'[review revisions to merge (no merge is performed)]' \ ':revision:_hg_mergerevs' } _hg_cmd_outgoing() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \ '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \ '(--patch -p)'{-p,--patch}'[show patch]' \ '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]' \ '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \ ':destination:_hg_remote' } _hg_cmd_parents() { _arguments -s -w : $_hg_global_opts $_hg_style_opts \ '(--rev -r)'{-r+,--rev}'[show parents of the specified rev]:revision:_hg_tags' \ ':last modified file:_hg_files' } _hg_cmd_paths() { _arguments -s -w : $_hg_global_opts \ ':path:_hg_paths' } _hg_cmd_pull() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \ '(--update -u)'{-u,--update}'[update to new tip if changesets were pulled]' \ '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:' \ ':source:_hg_remote' } _hg_cmd_push() { _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ '(--force -f)'{-f,--force}'[force push]' \ '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]:revision:_hg_tags' \ ':destination:_hg_remote' } _hg_cmd_remove() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--after -A)'{-A,--after}'[record remove that has already occurred]' \ '(--force -f)'{-f,--force}'[remove file even if modified]' \ '*:file:_hg_files' } _hg_cmd_rename() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ '(--after -A)'{-A,--after}'[record a rename that has already occurred]' \ '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \ '*:file:_hg_files' } _hg_cmd_resolve() { local context state line typeset -A opt_args _arguments -s -w : $_hg_global_opts \ '(--list -l --mark -m --unmark -u)'{-l,--list}'[list state of files needing merge]:*:merged files:->resolve_files' \ '(--mark -m --list -l --unmark -u)'{-m,--mark}'[mark files as resolved]:*:unresolved files:_hg_unresolved' \ '(--unmark -u --list -l --mark -m)'{-u,--unmark}'[unmark files as resolved]:*:resolved files:_hg_resolved' \ '*:file:_hg_unresolved' if [[ $state == 'resolve_files' ]] then _alternative 'files:resolved files:_hg_resolved' \ 'files:unresolved files:_hg_unresolved' fi } _hg_cmd_revert() { local context state line typeset -A opt_args _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ '(--all -a :)'{-a,--all}'[revert all changes when no arguments given]' \ '(--rev -r)'{-r+,--rev}'[revision to revert to]:revision:_hg_tags' \ '--no-backup[do not save backup copies of files]' \ '*:file:->diff_files' if [[ $state == 'diff_files' ]] then if [[ -n $opt_args[-r] ]] then _hg_files else typeset -a status_files _hg_status mard _wanted files expl 'modified, added, removed or deleted file' _multi_parts / status_files fi fi } _hg_cmd_serve() { _arguments -s -w : $_hg_global_opts \ '(--accesslog -A)'{-A+,--accesslog}'[name of access log file]:log file:_files' \ '(--errorlog -E)'{-E+,--errorlog}'[name of error log file]:log file:_files' \ '(--daemon -d)'{-d,--daemon}'[run server in background]' \ '(--port -p)'{-p+,--port}'[listen port]:listen port:' \ '(--address -a)'{-a+,--address}'[interface address]:interface address:' \ '(--name -n)'{-n+,--name}'[name to show in web pages]:repository name:' \ '(--templates -t)'{-t,--templates}'[web template directory]:template dir:_files -/' \ '--style[web template style]:style' \ '--stdio[for remote clients]' \ '(--ipv6 -6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]' } _hg_cmd_showconfig() { _arguments -s -w : $_hg_global_opts \ '(--untrusted -u)'{-u+,--untrusted}'[show untrusted configuration options]' \ ':config item:_hg_config' } _hg_cmd_status() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '(--all -A)'{-A,--all}'[show status of all files]' \ '(--modified -m)'{-m,--modified}'[show only modified files]' \ '(--added -a)'{-a,--added}'[show only added files]' \ '(--removed -r)'{-r,--removed}'[show only removed files]' \ '(--deleted -d)'{-d,--deleted}'[show only deleted (but tracked) files]' \ '(--clean -c)'{-c,--clean}'[show only files without changes]' \ '(--unknown -u)'{-u,--unknown}'[show only unknown files]' \ '(--ignored -i)'{-i,--ignored}'[show ignored files]' \ '(--no-status -n)'{-n,--no-status}'[hide status prefix]' \ '(--copies -C)'{-C,--copies}'[show source of copied files]' \ '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \ '--rev[show difference from revision]:revision:_hg_tags' \ '*:files:_files' } _hg_cmd_summary() { _arguments -s -w : $_hg_global_opts \ '--remote[check for push and pull]' } _hg_cmd_tag() { _arguments -s -w : $_hg_global_opts \ '(--local -l)'{-l,--local}'[make the tag local]' \ '(--message -m)'{-m+,--message}'[message for tag commit log entry]:message:' \ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \ '(--rev -r)'{-r+,--rev}'[revision to tag]:revision:_hg_tags' \ ':tag name:' } _hg_cmd_tip() { _arguments -s -w : $_hg_global_opts $_hg_style_opts \ '(--patch -p)'{-p,--patch}'[show patch]' } _hg_cmd_unbundle() { _arguments -s -w : $_hg_global_opts \ '(--update -u)'{-u,--update}'[update to new tip if changesets were unbundled]' \ ':files:_files' } _hg_cmd_update() { _arguments -s -w : $_hg_global_opts \ '(--clean -C)'{-C,--clean}'[overwrite locally modified files]' \ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \ ':revision:_hg_tags' } # HGK _hg_cmd_view() { _arguments -s -w : $_hg_global_opts \ '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \ ':revision range:_hg_tags' } # MQ _hg_qseries() { typeset -a patches patches=(${(f)"$(_hg_cmd qseries)"}) (( $#patches )) && _describe -t hg-patches 'patches' patches } _hg_qapplied() { typeset -a patches patches=(${(f)"$(_hg_cmd qapplied)"}) if (( $#patches )) then patches+=(qbase qtip) _describe -t hg-applied-patches 'applied patches' patches fi } _hg_qunapplied() { typeset -a patches patches=(${(f)"$(_hg_cmd qunapplied)"}) (( $#patches )) && _describe -t hg-unapplied-patches 'unapplied patches' patches } # unapplied, including guarded patches _hg_qdeletable() { typeset -a unapplied unapplied=(${(f)"$(_hg_cmd qseries)"}) for p in $(_hg_cmd qapplied) do unapplied=(${unapplied:#$p}) done (( $#unapplied )) && _describe -t hg-allunapplied-patches 'all unapplied patches' unapplied } _hg_qguards() { typeset -a guards local guard compset -P "+|-" _hg_cmd qselect -s | while read guard do guards+=(${guard#(+|-)}) done (( $#guards )) && _describe -t hg-guards 'guards' guards } _hg_qseries_opts=( '(--summary -s)'{-s,--summary}'[print first line of patch header]') _hg_cmd_qapplied() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts } _hg_cmd_qdelete() { _arguments -s -w : $_hg_global_opts \ '(--keep -k)'{-k,--keep}'[keep patch file]' \ '*'{-r+,--rev}'[stop managing a revision]:applied patch:_hg_revrange' \ '*:unapplied patch:_hg_qdeletable' } _hg_cmd_qdiff() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ '*:pattern:_hg_files' } _hg_cmd_qfold() { _arguments -s -w : $_hg_global_opts $_h_commit_opts \ '(--keep,-k)'{-k,--keep}'[keep folded patch files]' \ '*:unapplied patch:_hg_qunapplied' } _hg_cmd_qgoto() { _arguments -s -w : $_hg_global_opts \ '(--force -f)'{-f,--force}'[overwrite any local changes]' \ ':patch:_hg_qseries' } _hg_cmd_qguard() { _arguments -s -w : $_hg_global_opts \ '(--list -l)'{-l,--list}'[list all patches and guards]' \ '(--none -n)'{-n,--none}'[drop all guards]' \ ':patch:_hg_qseries' \ '*:guards:_hg_qguards' } _hg_cmd_qheader() { _arguments -s -w : $_hg_global_opts \ ':patch:_hg_qseries' } _hg_cmd_qimport() { _arguments -s -w : $_hg_global_opts \ '(--existing -e)'{-e,--existing}'[import file in patch dir]' \ '(--name -n 2)'{-n+,--name}'[patch file name]:name:' \ '(--force -f)'{-f,--force}'[overwrite existing files]' \ '*'{-r+,--rev}'[place existing revisions under mq control]:revision:_hg_revrange' \ '*:patch:_files' } _hg_cmd_qnew() { _arguments -s -w : $_hg_global_opts $_hg_commit_opts \ '(--force -f)'{-f,--force}'[import uncommitted changes into patch]' \ ':patch:' } _hg_cmd_qnext() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts } _hg_cmd_qpop() { _arguments -s -w : $_hg_global_opts \ '(--all -a :)'{-a,--all}'[pop all patches]' \ '(--name -n)'{-n+,--name}'[queue name to pop]:' \ '(--force -f)'{-f,--force}'[forget any local changes]' \ ':patch:_hg_qapplied' } _hg_cmd_qprev() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts } _hg_cmd_qpush() { _arguments -s -w : $_hg_global_opts \ '(--all -a :)'{-a,--all}'[apply all patches]' \ '(--list -l)'{-l,--list}'[list patch name in commit text]' \ '(--merge -m)'{-m+,--merge}'[merge from another queue]:' \ '(--name -n)'{-n+,--name}'[merge queue name]:' \ '(--force -f)'{-f,--force}'[apply if the patch has rejects]' \ ':patch:_hg_qunapplied' } _hg_cmd_qrefresh() { _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \ '(--git -g)'{-g,--git}'[use git extended diff format]' \ '(--short -s)'{-s,--short}'[short refresh]' \ '*:files:_hg_files' } _hg_cmd_qrename() { _arguments -s -w : $_hg_global_opts \ ':patch:_hg_qseries' \ ':destination:' } _hg_cmd_qselect() { _arguments -s -w : $_hg_global_opts \ '(--none -n :)'{-n,--none}'[disable all guards]' \ '(--series -s :)'{-s,--series}'[list all guards in series file]' \ '--pop[pop to before first guarded applied patch]' \ '--reapply[pop and reapply patches]' \ '*:guards:_hg_qguards' } _hg_cmd_qseries() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts \ '(--missing -m)'{-m,--missing}'[print patches not in series]' } _hg_cmd_qunapplied() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts } _hg_cmd_qtop() { _arguments -s -w : $_hg_global_opts $_hg_qseries_opts } _hg_cmd_strip() { _arguments -s -w : $_hg_global_opts \ '(--force -f)'{-f,--force}'[force multi-head removal]' \ '(--backup -b)'{-b,--backup}'[bundle unrelated changesets]' \ '(--nobackup -n)'{-n,--nobackup}'[no backups]' \ ':revision:_hg_tags' } _hg "$@" ================================================ FILE: lib/aliases.zsh ================================================ # Push and pop directories on directory stack alias pu='pushd' alias po='popd' # Basic directory operations alias ...='cd ../..' alias -- -='cd -' # Super user alias _='sudo' #alias g='grep -in' # Show history alias history='fc -l 1' # List direcory contents alias lsa='ls -lah' alias l='ls -la' alias ll='ls -l' alias sl=ls # often screw this up alias afind='ack-grep -il' ================================================ FILE: lib/completion.zsh ================================================ # fixme - the load process here seems a bit bizarre unsetopt noautomenu setopt complete_in_word unsetopt always_to_end WORDCHARS='' zmodload -i zsh/complist # case-insensitive (all), partial-word and then substring completion if [ "x$CASE_SENSITIVE" = "xtrue" ]; then zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' unset CASE_SENSITIVE else zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' fi zstyle ':completion:*' list-colors '' # should this be in keybindings? bindkey -M menuselect '^o' accept-and-infer-next-history zstyle ':completion:*:*:*:*:*' menu select zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm -w -w" # disable named-directories autocompletion zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories cdpath=(.) # use /etc/hosts and known_hosts for hostname completion [ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=() [ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$( $1/models.py echo "from django.contrib import admin\nfrom $1.models import *\n\n" > $1/admin.py echo "from django.conf.urls.defaults import *\n\n" > $1/urls.py } ================================================ FILE: lib/edit-command-line.zsh ================================================ autoload -U edit-command-line zle -N edit-command-line bindkey '\C-x\C-e' edit-command-line ================================================ FILE: lib/functions.zsh ================================================ function zsh_stats() { history | awk '{print $2}' | sort | uniq -c | sort -rn | head } function uninstall_oh_my_zsh() { /bin/sh $ZSH/tools/uninstall.sh } function upgrade_oh_my_zsh() { /bin/sh $ZSH/tools/upgrade.sh } function extract() { unset REMOVE_ARCHIVE if test "$1" = "-r"; then REMOVE=1 shift fi if [[ -f $1 ]]; then case $1 in *.tar.bz2) tar xvjf $1;; *.tar.gz) tar xvzf $1;; *.tar.xz) tar xvJf $1;; *.tar.lzma) tar --lzma -xvf $1;; *.bz2) bunzip $1;; *.rar) unrar x $1;; *.gz) gunzip $1;; *.tar) tar xvf $1;; *.tbz2) tar xvjf $1;; *.tgz) tar xvzf $1;; *.zip) unzip $1;; *.Z) uncompress $1;; *.7z) 7z x $1;; *) echo "'$1' cannot be extracted via >extract<";; esac if [[ $REMOVE_ARCHIVE -eq 1 ]]; then echo removing "$1"; /bin/rm "$1"; fi else echo "'$1' is not a valid file" fi } ================================================ FILE: lib/git.zsh ================================================ # get the name of the branch we are on function git_prompt_info() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" } parse_git_dirty () { gitstat=$(git status 2>/dev/null | grep '\(# Untracked\|# Changes\|# Changed but not updated:\)') if [[ $(echo ${gitstat} | grep -c "^# Changes to be committed:$") > 0 ]]; then echo -n "$ZSH_THEME_GIT_PROMPT_DIRTY" fi if [[ $(echo ${gitstat} | grep -c "^\(# Untracked files:\|# Changed but not updated:\|# Changes not staged for commit:\)$") > 0 ]]; then echo -n "$ZSH_THEME_GIT_PROMPT_UNTRACKED" fi if [[ $(echo ${gitstat} | grep -v '^$' | wc -l | tr -d ' ') == 0 ]]; then echo -n "$ZSH_THEME_GIT_PROMPT_CLEAN" fi } # Checks if there are commits ahead from remote function git_prompt_ahead() { if $(echo "$(git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then echo "$ZSH_THEME_GIT_PROMPT_AHEAD" fi } # # Will return the current branch name # Usage example: git pull origin $(current_branch) # function current_branch() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return echo ${ref#refs/heads/} } # Formats prompt string for current git commit short SHA function git_prompt_short_sha() { SHA=$(git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" } # Formats prompt string for current git commit long SHA function git_prompt_long_sha() { SHA=$(git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" } # Get the status of the working tree git_prompt_status() { INDEX=$(git status --porcelain 2> /dev/null) STATUS="" if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" fi if $(echo "$INDEX" | grep '^A ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" fi if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" fi if $(echo "$INDEX" | grep '^R ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" fi if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" fi if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" fi echo $STATUS } ================================================ FILE: lib/history.zsh ================================================ ## Command history configuration HISTFILE=$HOME/.zsh_history HISTSIZE=10000 SAVEHIST=10000 setopt hist_ignore_dups # ignore duplication command history list setopt share_history # share command history data setopt hist_verify setopt inc_append_history setopt extended_history setopt hist_expire_dups_first setopt hist_ignore_space setopt SHARE_HISTORY setopt APPEND_HISTORY ================================================ FILE: lib/key-bindings.zsh ================================================ # TODO: Explain what some of this does.. bindkey -e bindkey '\ew' kill-region bindkey -s '\el' "ls\n" bindkey -s '\e.' "..\n" bindkey '^r' history-incremental-search-backward bindkey "^[[5~" up-line-or-history bindkey "^[[6~" down-line-or-history # make search up and down work, so partially type and hit up/down to find relevant stuff bindkey '^[[A' up-line-or-search bindkey '^[[B' down-line-or-search bindkey '^p' up-line-or-search bindkey '^n' down-line-or-search bindkey "^[[H" beginning-of-line bindkey "^[[1~" beginning-of-line bindkey "^[[F" end-of-line bindkey "^[[4~" end-of-line bindkey ' ' magic-space # also do history expansion on space bindkey '^[[Z' reverse-menu-complete # Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~ bindkey '^?' backward-delete-char bindkey "^[[3~" delete-char bindkey "^[3;5~" delete-char bindkey "\e[3~" delete-char ## Fix weird sequence that rxvt produces #bindkey -s '^[[Z' '\t' # ================================================ FILE: lib/misc.zsh ================================================ ## smart urls autoload -U url-quote-magic zle -N self-insert url-quote-magic ## file rename magick autoload -U zmv bindkey "^[m" copy-prev-shell-word ## jobs setopt long_list_jobs ## pager export PAGER='less -R' export LC_CTYPE=$LANG ## pretty man pages function pman() { man $1 -t | open -f -a Preview } # ## pretty JSON function pj() { python -mjson.tool } ## Open current directory alias oo='open .' ## Quick-look a file (^C to close) alias ql='qlmanage -p 2>/dev/null' ## Start a local SMTP server and dump emails sent to it to the console alias smtpconsole='python -m smtpd -n -c DebuggingServer localhost:1025' ## Serve the current folder on port 80 alias serve_this='python -m SimpleHTTPServer' ## Highlight-aware less command alias hl='less -R' ## Show history alias history='fc -l 1' ## Color grep results ## Examples: http://rubyurl.com/ZXv export GREP_OPTIONS='--color=auto' export GREP_COLOR='1;32' # Quick and dirty encryption function encrypt() { openssl des3 -a -in $1 -out $1.des3 } function decrypt() { openssl des3 -d -a -in $1 -out ${1%.des3} } ================================================ FILE: lib/python.zsh ================================================ function wo() { [ "$VEW_SOURCED" ] || source "$VEW_PATH" [ -f './.venv' ] && workon `cat ./.venv` || workon $1 export VEW_SOURCED=1 } alias deact='deactivate' alias cdv='cd $WORKON_HOME' function cdp () { cd "$(python -c "import os.path as _, ${1}; \ print _.dirname(_.realpath(${1}.__file__[:-1]))" )" } ================================================ FILE: lib/redis.zsh ================================================ alias res='./redis-server' alias rec='./redis-cli' ================================================ FILE: lib/spectrum.zsh ================================================ #! /bin/zsh # A script to make using 256 colors in zsh less painful. # P.C. Shyamshankar # Copied from http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/ typeset -Ag FX FG BG FX=( reset "%{%}" bold "%{%}" no-bold "%{%}" italic "%{%}" no-italic "%{%}" underline "%{%}" no-underline "%{%}" blink "%{%}" no-blink "%{%}" reverse "%{%}" no-reverse "%{%}" ) for color in {000..255}; do FG[$color]="%{[38;5;${color}m%}" BG[$color]="%{[48;5;${color}m%}" done # Show all 256 colors with color number function spectrum_ls() { for code in {000..255}; do print -P -- "$code: %F{$code}Test%f" done } ================================================ FILE: lib/supervisord.zsh ================================================ alias ssd='sudo supervisord' alias ssc='sudo supervisorctl' ================================================ FILE: lib/termsupport.zsh ================================================ #usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title #http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 #Fully support screen, iterm, and probably most modern xterm and rxvt #Limited support for Apple Terminal (Terminal can't set window or tab separately) function title { [ "$DISABLE_AUTO_TITLE" != "true" ] || return if [[ "$TERM" == screen* ]]; then print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then print -Pn "\e]2;$2:q\a" #set window name print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal) fi } ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" #Appears when you have the prompt function precmd { title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE } #Appears at the beginning of (and during) of command execution function preexec { emulate -L zsh setopt extended_glob local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd title "$CMD" "%100>...>$2%<<" } ================================================ FILE: lib/theme-and-appearance.zsh ================================================ # ls colors autoload colors; colors; export LSCOLORS="Gxfxcxdxbxegedabagacad" # Enable ls colors if [ "$DISABLE_LS_COLORS" != "true" ] then # Find the option for using colors in ls, depending on the version: Linux or BSD ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G' fi #setopt no_beep setopt auto_cd setopt multios setopt cdablevarS if [[ x$WINDOW != x ]] then SCREEN_NO="%B$WINDOW%b " else SCREEN_NO="" fi # Apply theming defaults PS1="%n@%m:%~%# " # git theming default: Variables for theming the git info prompt ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean # Setup the prompt with pretty colors setopt prompt_subst ================================================ FILE: log/.easter-egg ================================================ This file is only here so that Git will keep a log directory as .gitignore is ignoring all the log files within it. feel free to add love notes for people here. ================================================ FILE: oh-my-zsh.sh ================================================ # Check for updates on initial load... if [ "$DISABLE_AUTO_UPDATE" != "true" ] then /usr/bin/env zsh $ZSH/tools/check_for_upgrade.sh fi # Initializes Oh My Zsh # add a function path fpath=($ZSH/functions $ZSH/completions $fpath) # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore for config_file ($ZSH/lib/*.zsh) source $config_file # Add all defined plugins to fpath plugin=${plugin:=()} for plugin ($plugins) fpath=($ZSH/plugins/$plugin $fpath) # Load and run compinit autoload -U compinit compinit -i # Load all of the plugins that were defined in ~/.zshrc for plugin ($plugins); do if [ -f $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh ]; then source $ZSH/custom/plugins/$plugin/$plugin.plugin.zsh elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then source $ZSH/plugins/$plugin/$plugin.plugin.zsh fi done # Load all of your custom configurations from custom/ if [ -d "$ZSH/custom" ]; then for config_file ($ZSH/custom/*.zsh) source $config_file fi # Load the theme if [ "$ZSH_THEME" = "random" ] then themes=($ZSH/themes/*zsh-theme) N=${#themes[@]} ((N=(RANDOM%N)+1)) RANDOM_THEME=${themes[$N]} source "$RANDOM_THEME" echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." else if [ ! "$ZSH_THEME" = "" ] then source "$ZSH/themes/$ZSH_THEME.zsh-theme" fi fi ================================================ FILE: plugins/ant/ant.plugin.zsh ================================================ stat -f%m . > /dev/null 2>&1 if [ "$?" = 0 ]; then stat_cmd=(stat -f%m) else stat_cmd=(stat -L --format=%Y) fi _ant_does_target_list_need_generating () { if [ ! -f .ant_targets ]; then return 0; else accurate=$($stat_cmd .ant_targets) changed=$($stat_cmd build.xml) return $(expr $accurate '>=' $changed) fi } _ant () { if [ -f build.xml ]; then if _ant_does_target_list_need_generating; then sed -n '/ .ant_targets fi compadd `cat .ant_targets` fi } compdef _ant ant ================================================ FILE: plugins/apache2-macports/apache2-macports.plugin.zsh ================================================ # commands to control local apache2 server installation # paths are for osx installation via macports alias apache2start='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start' alias apache2stop='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop' alias apache2restart='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart' ================================================ FILE: plugins/archlinux/archlinux.plugin.zsh ================================================ # Archlinux zsh aliases and functions # Usage is also described at https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins # Look for yaourt, and add some useful functions if we have it. if [[ -x `which yaourt` ]]; then upgrade () { yaourt -Syu } alias yaconf='yaourt -C' # Fix all configuration files with vimdiff # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips alias yaupg='yaourt -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias yain='yaourt -S' # Install specific package(s) from the repositories alias yains='yaourt -U' # Install specific package not from the repositories but from a file alias yare='yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies alias yarem='yaourt -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies alias yarep='yaourt -Si' # Display information about a given package in the repositories alias yareps='yaourt -Ss' # Search for package(s) in the repositories alias yaloc='yaourt -Qi' # Display information about a given package in the local database alias yalocs='yaourt -Qs' # Search for package(s) in the local database # Additional yaourt alias examples if [[ -x `which abs` ]]; then alias yaupd='yaourt -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories else alias yaupd='yaourt -Sy' # Update and refresh the local package and ABS databases against repositories fi alias yainsd='yaourt -S --asdeps' # Install given package(s) as dependencies of another package alias yamir='yaourt -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist else upgrade() { sudo pacman -Syu } fi # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias pacin='sudo pacman -S' # Install specific package(s) from the repositories alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies alias pacrep='pacman -Si' # Display information about a given package in the repositories alias pacreps='pacman -Ss' # Search for package(s) in the repositories alias pacloc='pacman -Qi' # Display information about a given package in the local database alias paclocs='pacman -Qs' # Search for package(s) in the local database # Additional pacman alias examples if [[ -x `which abs` ]]; then alias pacupd='sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories else alias pacupd='sudo pacman -Sy' # Update and refresh the local package and ABS databases against repositories fi alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist # https://bbs.archlinux.org/viewtopic.php?id=93683 paclist() { sudo pacman -Qei $(pacman -Qu|cut -d" " -f 1)|awk ' BEGIN {FS=":"}/^Name/{printf("\033[1;36m%s\033[1;37m", $2)}/^Description/{print $2}' } alias paclsorphans='sudo pacman -Qdt' alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' pacdisowned() { tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ db=$tmp/db fs=$tmp/fs mkdir "$tmp" trap 'rm -rf "$tmp"' EXIT pacman -Qlq | sort -u > "$db" find /bin /etc /lib /sbin /usr \ ! -name lost+found \ \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" comm -23 "$fs" "$db" } ================================================ FILE: plugins/autojump/autojump.plugin.zsh ================================================ if [ -f `brew --prefix`/etc/autojump ]; then . `brew --prefix`/etc/autojump fi ================================================ FILE: plugins/brew/_brew ================================================ #compdef brew #autoload # imported from the latest homebrew contributions _brew_all_formulae() { formulae=(`brew search`) } _brew_installed_formulae() { installed_formulae=(`brew list`) } local -a _1st_arguments _1st_arguments=( 'cat:display formula file for a formula' 'cleanup:uninstall unused and old versions of packages' 'create:create a new formula' 'deps:list dependencies and dependants of a formula' 'doctor:audits your installation for common issues' 'edit:edit a formula' 'home:visit the homepage of a formula or the brew project' 'info:information about a formula' 'install:install a formula' 'link:link a formula' 'list:list files in a formula or not-installed formulae' 'log:git commit log for a formula' 'missing:check all installed formuale for missing dependencies.' 'outdated:list formulas for which a newer version is available' 'prune:remove dead links' 'remove:remove a formula' 'search:search for a formula (/regex/ or string)' 'server:start a local web app that lets you browse formulae (requires Sinatra)' 'unlink:unlink a formula' 'update:freshen up links' 'upgrade:upgrade outdated formulae' 'uses:show formulas which depend on a formula' ) local expl local -a formulae installed_formulae _arguments \ '(-v)-v[verbose]' \ '(--cellar)--cellar[brew cellar]' \ '(--config)--config[brew configuration]' \ '(--env)--env[brew environment]' \ '(--repository)--repository[brew repository]' \ '(--version)--version[version information]' \ '(--prefix)--prefix[where brew lives on this system]' \ '(--cache)--cache[brew cache]' \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "brew subcommand" _1st_arguments return fi case "$words[1]" in search|-S) _arguments \ '(--macports)--macports[search the macports repository]' \ '(--fink)--fink[search the fink repository]' ;; list|ls) _arguments \ '(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \ '(--versions)--versions[list all installed versions of a formula]' \ '1: :->forms' && return 0 if [[ "$state" == forms ]]; then _brew_installed_formulae _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae fi ;; install|home|homepage|log|info|abv|uses|cat|deps|edit|options) _brew_all_formulae _wanted formulae expl 'all formulae' compadd -a formulae ;; remove|rm|uninstall|unlink|cleanup|link|ln) _brew_installed_formulae _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;; esac ================================================ FILE: plugins/brew/brew.plugin.zsh ================================================ alias brews='brew list -1' ================================================ FILE: plugins/bundler/bundler.plugin.zsh ================================================ alias be="bundle exec" alias bi="bundle install" alias bl="bundle list" alias bu="bundle update" alias bp="bundle package" # The following is based on https://github.com/gma/bundler-exec bundled_commands=(cap capify cucumber guard heroku rackup rails rake rspec ruby shotgun spec spork thin unicorn unicorn_rails) ## Functions _bundler-installed() { which bundle > /dev/null 2>&1 } _within-bundled-project() { local check_dir=$PWD while [ "$(dirname $check_dir)" != "/" ]; do [ -f "$check_dir/Gemfile" ] && return check_dir="$(dirname $check_dir)" done false } _run-with-bundler() { if _bundler-installed && _within-bundled-project; then bundle exec $@ else $@ fi } ## Main program for cmd in $bundled_commands; do alias $cmd="_run-with-bundler $cmd" done ================================================ FILE: plugins/cake/cake.plugin.zsh ================================================ # Set this to 1 if you want to cache the tasks cache_task_list=1 # Cache filename cache_file='.cake_task_cache' _cake_does_target_list_need_generating () { if [ $cache_task_list -eq 0 ]; then return 1; fi if [ ! -f $cache_file ]; then return 0; else accurate=$(stat -f%m $cache_file) changed=$(stat -f%m Cakefile) return $(expr $accurate '>=' $changed) fi } _cake () { if [ -f Cakefile ]; then if _cake_does_target_list_need_generating; then cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cache_file compadd `cat $cache_file` else compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'` fi fi } compdef _cake cake ================================================ FILE: plugins/cap/cap.plugin.zsh ================================================ function _cap_does_task_list_need_generating () { if [ ! -f .cap_tasks~ ]; then return 0; else accurate=$(stat -f%m .cap_tasks~) changed=$(stat -f%m config/deploy.rb) return $(expr $accurate '>=' $changed) fi } function _cap () { if [ -f config/deploy.rb ]; then if _cap_does_task_list_need_generating; then echo "\nGenerating .cap_tasks~..." > /dev/stderr cap show_tasks -q | cut -d " " -f 1 | sed -e '/^ *$/D' -e '1,2D' > .cap_tasks~ fi compadd `cat .cap_tasks~` fi } compctl -K _cap cap ================================================ FILE: plugins/cloudapp/cloudapp.plugin.zsh ================================================ #!/bin/zsh alias cloudapp=$ZSH/plugins/cloudapp/cloudapp.rb ================================================ FILE: plugins/cloudapp/cloudapp.rb ================================================ #!/usr/bin/env ruby # # cloudapp # Zach Holman / @holman # # Uploads a file from the command line to CloudApp, drops it into your # clipboard (on a Mac, at least). # # Example: # # cloudapp drunk-blake.png # # This requires Aaron Russell's cloudapp_api gem: # # gem install cloudapp_api # # Requires you set your CloudApp credentials in ~/.cloudapp as a simple file of: # # email # password require 'rubygems' begin require 'cloudapp_api' rescue LoadError puts "You need to install cloudapp_api: gem install cloudapp_api" exit!(1) end config_file = "#{ENV['HOME']}/.cloudapp" unless File.exist?(config_file) puts "You need to type your email and password (one per line) into "+ "`~/.cloudapp`" exit!(1) end email,password = File.read(config_file).split("\n") class HTTParty::Response # Apparently HTTPOK.ok? IS NOT OKAY WTFFFFFFFFFFUUUUUUUUUUUUUU # LETS MONKEY PATCH IT I FEEL OKAY ABOUT IT def ok? ; true end end if ARGV[0].nil? puts "You need to specify a file to upload." exit!(1) end CloudApp.authenticate(email,password) url = CloudApp::Item.create(:upload, {:file => ARGV[0]}).url # Say it for good measure. puts "Uploaded to #{url}." # Get the embed link. url = "#{url}/#{ARGV[0].split('/').last}" # Copy it to your (Mac's) clipboard. `echo '#{url}' | tr -d "\n" | pbcopy` ================================================ FILE: plugins/command-coloring/command-coloring.plugin.zsh ================================================ #!/usr/bin/env zsh # Copyleft 2010 zsh-syntax-highlighting contributors # http://github.com/nicoulaj/zsh-syntax-highlighting # All wrongs reserved. # Token types styles. # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135 ZLE_RESERVED_WORD_STYLE='fg=yellow,bold' ZLE_ALIAS_STYLE='fg=green,bold' ZLE_BUILTIN_STYLE='fg=green,bold' ZLE_FUNCTION_STYLE='fg=green,bold' ZLE_COMMAND_STYLE='fg=green,bold' ZLE_PATH_STYLE='fg=white,underline' ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold' ZLE_HYPHEN_CLI_OPTION='fg=yellow,bold' ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=yellow,bold' ZLE_SINGLE_QUOTED='fg=magenta,bold' ZLE_DOUBLE_QUOTED='fg=magenta,bold' ZLE_BACK_QUOTED='fg=cyan,bold' ZLE_GLOBING='fg=blue,bold' ZLE_DEFAULT='fg=white,normal' ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' 'noglob' 'command' 'builtin') _check_path() { [[ -z $arg ]] && return 1 [[ -e $arg ]] && return 0 [[ ! -e ${arg:h} ]] && return 1 [[ ${#BUFFER} == $end_pos && -n $(print $arg*(N)) ]] && return 0 return 1 } # Recolorize the current ZLE buffer. colorize-zle-buffer() { setopt localoptions extendedglob region_highlight=() colorize=true start_pos=0 for arg in ${(z)BUFFER}; do ((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]##[[:space:]]#}})) ((end_pos=$start_pos+${#arg})) if $colorize; then colorize=false res=$(LC_ALL=C builtin type -w $arg 2>/dev/null) case $res in *': reserved') style=$ZLE_RESERVED_WORD_STYLE;; *': alias') style=$ZLE_ALIAS_STYLE;; *': builtin') style=$ZLE_BUILTIN_STYLE;; *': function') style=$ZLE_FUNCTION_STYLE;; *': command') style=$ZLE_COMMAND_STYLE;; *) if _check_path; then style=$ZLE_PATH_STYLE else style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE fi ;; esac else case $arg in '--'*) style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;; '-'*) style=$ZLE_HYPHEN_CLI_OPTION;; "'"*"'") style=$ZLE_SINGLE_QUOTED;; '"'*'"') style=$ZLE_DOUBLE_QUOTED;; '`'*'`') style=$ZLE_BACK_QUOTED;; *"*"*) style=$ZLE_GLOBING;; *) style=$ZLE_DEFAULT _check_path && style=$ZLE_PATH_STYLE ;; esac fi region_highlight+=("$start_pos $end_pos $style") [[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]:-}:+yes} = 'yes' ]] && colorize=true start_pos=$end_pos done } # Bind the function to ZLE events. ZLE_COLORED_FUNCTIONS=( self-insert delete-char backward-delete-char kill-word backward-kill-word up-line-or-history down-line-or-history beginning-of-history end-of-history undo redo yank ) for f in $ZLE_COLORED_FUNCTIONS; do eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f" done # Expand or complete hack # create an expansion widget which mimics the original "expand-or-complete" (you can see the default setup using "zle -l -L") zle -C orig-expand-or-complete .expand-or-complete _main_complete # use the orig-expand-or-complete inside the colorize function (for some reason, using the ".expand-or-complete" widget doesn't work the same) expand-or-complete() { builtin zle orig-expand-or-complete && colorize-zle-buffer } zle -N expand-or-complete ================================================ FILE: plugins/command-not-found/command-not-found.plugin.zsh ================================================ # Uses the command-not-found package zsh support # as seen in http://www.porcheron.info/command-not-found-for-zsh/ # this is installed in Ubuntu source /etc/zsh_command_not_found ================================================ FILE: plugins/compleat/compleat.plugin.zsh ================================================ # ------------------------------------------------------------------------------ # FILE: compleat.plugin.zsh # DESCRIPTION: oh-my-zsh plugin file. # AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) # VERSION: 1.0.0 # ------------------------------------------------------------------------------ if (( ${+commands[compleat]} )); then local prefix="${commands[compleat]:h:h}" local setup="${prefix}/share/compleat-1.0/compleat_setup" if [[ -f "$setup" ]]; then if ! bashcompinit >/dev/null 2>&1; then autoload -U bashcompinit bashcompinit -i fi source "$setup" fi fi ================================================ FILE: plugins/cpanm/_cpanm ================================================ #compdef cpanm ## # cpanminus Z Shell completion script ## # # Current supported cpanm version: 1.4000 (Tue Mar 8 01:00:49 PST 2011) # # The latest code is always located at: # https://github.com/rshhh/cpanminus/blob/master/etc/_cpanm # local arguments curcontext="$curcontext" typeset -A opt_args arguments=( # Commands # '(--install -i)'{--install,-i}'[Installs the modules]' '(- :)--self-upgrade[Upgrades itself]' '(- :)--info[Displays distribution info on CPAN]' '(--installdeps)--installdeps[Only install dependencies]' '(--look)--look[Download/unpack the distribution and then open the directory with your shell]' '(- :)'{--help,-h}'[Displays help information]' '(- :)'{--version,-V}'[Displays software version]' # Options {--force,-f}'[Force install]' {--notest,-n}'[Do not run unit tests]' {--sudo,-S}'[sudo to run install commands]' '(-v --verbose --quiet -q)'{--verbose,-v}'[Turns on chatty output]' '(-q --quiet --verbose -v)'{--quiet,-q}'[Turns off all output]' {--local-lib,-l}'[Specify the install base to install modules]' {--local-lib-contained,-L}'[Specify the install base to install all non-core modules]' '--mirror[Specify the base URL for the mirror (e.g. http://cpan.cpantesters.org/)]:URLs:_urls' '--mirror-only[Use the mirror\''s index file instead of the CPAN Meta DB]' '--prompt[Prompt when configure/build/test fails]' '--reinstall[Reinstall the distribution even if you already have the latest version installed]' '--interactive[Turn on interactive configure]' '--scandeps[Scan the depencencies of given modules and output the tree in a text format]' '--format[Specify what format to display the scanned dependency tree]:scandeps format:(tree json yaml dists)' '--save-dists[Specify the optional directory path to copy downloaded tarballs]' # '--uninst-shadows[Uninstalls the shadow files of the distribution that you\''re installing]' '--auto-cleanup[Number of days that cpanm\''s work directories expire in. Defaults to 7]' '(--no-man-pages)--man-pages[Generates man pages for executables (man1) and libraries (man3)]' '(--man-pages)--no-man-pages[Do not generate man pages]' # Note: Normally with "--lwp", "--wget" and "--curl" options set to true (which is the default) cpanm tries LWP, # Wget, cURL and HTTP::Tiny (in that order) and uses the first one available. # (So that the exclusions are not enabled here for the completion) '(--lwp)--lwp[Use LWP module to download stuff]' '(--wget)--wget[Use GNU Wget (if available) to download stuff]' '(--curl)--curl[Use cURL (if available) to download stuff]' # Other completions '*:Local directory or archive:_files -/ -g "*.(tar.gz|tgz|tar.bz2|zip)(-.)"' # '*::args: _normal' # this looks for default files (any files) ) _arguments -s $arguments \ && return 0 return 1 ================================================ FILE: plugins/deb/deb.plugin.zsh ================================================ # Aliases alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" \ --no-gui --disable-columns search" # search package alias ad="sudo apt-get update" # update packages lists alias au="sudo apt-get update && \ sudo apt-get dselect-upgrade" # upgrade packages alias ai="sudo apt-get install" # install package alias ar="sudo apt-get remove --purge && \ sudo apt-get autoremove --purge" # remove package alias ap="apt-cache policy" # apt policy alias av="apt-cache show" # show package info alias acs="apt-cache search" # search package alias ac="sudo apt-get clean && sudo apt-get autoclean" # clean apt cache ================================================ FILE: plugins/debian/debian.plugin.zsh ================================================ # https://github.com/dbbolton/ # # Debian-related zsh aliases and functions for zsh # Aliases ################################################################### # Some self-explanatory aliases alias afs='apt-file search --regexp' alias aps='aptitude search' alias apsrc='apt-get source' alias apv='apt-cache policy' alias apdg='su -c "aptitude update && aptitude safe-upgrade"' alias apud='su -c "aptitude update"' alias apug='su -c "aptitude safe-upgrade"' # print all installed packages alias allpkgs='aptitude search -F "%p" --disable-columns ~i' # Install all .deb files in the current directory. # Warning: you will need to put the glob in single quotes if you use: # glob_subst alias di='su -c "dpkg -i ./*.deb"' # Create a basic .deb package alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc' # Remove ALL kernel images and headers EXCEPT the one in use alias kclean='su -c '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root' # Functions ################################################################# # create a simple script that can be used to 'duplicate' a system apt-copy() { print '#!/bin/sh'"\n" > apt-copy.sh list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;') print 'aptitude install '"$list\n" >> apt-copy.sh chmod +x apt-copy.sh } # Kernel-package building shortcut dbb-build () { MAKEFLAGS='' # temporarily unset MAKEFLAGS ( '-j3' will fail ) appendage='-custom' # this shows up in $ (uname -r ) revision=$(date +"%Y%m%d") # this shows up in the .deb file name make-kpkg clean time fakeroot make-kpkg --append-to-version "$appendage" --revision \ "$revision" kernel_image kernel_headers } ================================================ FILE: plugins/dirpersist/dirpersist.plugin.zsh ================================================ #!/bin/zsh # # Make the dirstack more persistant # # Add dirpersist to $plugins in ~/.zshrc to load # # $zdirstore is the file used to persist the stack zdirstore=~/.zdirstore 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 ~/.oh-my-zsh/plugins/dirspersist.plugin.zsh\ndirpersiststore" >> ~/.zlogout else echo "If you don't want this message to appear, remove dirspersist from \$plugins" fi fi } dirpersiststore () { dirs -p | perl -e 'foreach (reverse ) {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" ================================================ FILE: plugins/django/django.plugin.zsh ================================================ #compdef manage.py typeset -ga nul_args nul_args=( '--settings=-[the Python path to a settings module.]:file:_files' '--pythonpath=-[a directory to add to the Python path.]::directory:_directories' '--traceback[print traceback on exception.]' "--version[show program's version number and exit.]" {-h,--help}'[show this help message and exit.]' ) _managepy-adminindex(){ _arguments -s : \ $nul_args \ '*::directory:_directories' && ret=0 } _managepy-createcachetable(){ _arguments -s : \ $nul_args && ret=0 } _managepy-dbshell(){ _arguments -s : \ $nul_args && ret=0 } _managepy-diffsettings(){ _arguments -s : \ $nul_args && ret=0 } _managepy-dumpdata(){ _arguments -s : \ '--format=-[specifies the output serialization format for fixtures.]:format:(json yaml xml)' \ '--indent=-[specifies the indent level to use when pretty-printing output.]:' \ $nul_args \ '*::appname:_applist' && ret=0 } _managepy-flush(){ _arguments -s : \ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \ $nul_args && ret=0 } _managepy-help(){ _arguments -s : \ '*:command:_managepy_cmds' \ $nul_args && ret=0 } _managepy_cmds(){ local line local -a cmd _call_program help-command ./manage.py help \ |& sed -n '/^ /s/[(), ]/ /gp' \ | while read -A line; do cmd=($line $cmd) done _describe -t managepy-command 'manage.py command' cmd } _managepy-inspectdb(){ _arguments -s : \ $nul_args && ret=0 } _managepy-loaddata(){ _arguments -s : \ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \ '*::file:_files' \ $nul_args && ret=0 } _managepy-reset(){ _arguments -s : \ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \ '*::appname:_applist' \ $nul_args && ret=0 } _managepy-runfcgi(){ local state local fcgi_opts fcgi_opts=( 'protocol[fcgi, scgi, ajp, ... (default fcgi)]:protocol:(fcgi scgi ajp)' 'host[hostname to listen on..]:' 'port[port to listen on.]:' 'socket[UNIX socket to listen on.]::file:_files' 'method[prefork or threaded (default prefork)]:method:(prefork threaded)' 'maxrequests[number of requests a child handles before it is killed and a new child is forked (0 = no limit).]:' 'maxspare[max number of spare processes / threads.]:' 'minspare[min number of spare processes / threads.]:' 'maxchildren[hard limit number of processes / threads.]:' 'daemonize[whether to detach from terminal.]:boolean:(False True)' 'pidfile[write the spawned process-id to this file.]:file:_files' 'workdir[change to this directory when daemonizing.]:directory:_files' 'outlog[write stdout to this file.]:file:_files' 'errlog[write stderr to this file.]:file:_files' ) _arguments -s : \ $nul_args \ '*: :_values "FCGI Setting" $fcgi_opts' && ret=0 } _managepy-runserver(){ _arguments -s : \ '--noreload[tells Django to NOT use the auto-reloader.]' \ '--adminmedia[specifies the directory from which to serve admin media.]:directory:_files' \ $nul_args && ret=0 } _managepy-shell(){ _arguments -s : \ '--plain[tells Django to use plain Python, not IPython.]' \ $nul_args && ret=0 } _managepy-sql(){} _managepy-sqlall(){} _managepy-sqlclear(){} _managepy-sqlcustom(){} _managepy-sqlflush(){} _managepy-sqlindexes(){} _managepy-sqlinitialdata(){} _managepy-sqlreset(){} _managepy-sqlsequencereset(){} _managepy-startapp(){} _managepy-syncdb() { _arguments -s : \ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \ $nul_args && ret=0 } _managepy-test() { _arguments -s : \ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \ '*::appname:_applist' \ $nul_args && ret=0 } _managepy-testserver() { _arguments -s : \ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \ '--addrport=-[port number or ipaddr:port to run the server on.]' \ '*::fixture:_files' \ $nul_args && ret=0 } _managepy-validate() { _arguments -s : \ $nul_args && ret=0 } _managepy-commands() { local -a commands commands=( 'adminindex:prints the admin-index template snippet for the given app name(s).' 'createcachetable:creates the table needed to use the SQL cache backend.' 'dbshell:runs the command-line client for the current DATABASE_ENGINE.' "diffsettings:displays differences between the current settings.py and Django's default settings." 'dumpdata:Output the contents of the database as a fixture of the given format.' 'flush:Executes ``sqlflush`` on the current database.' 'help:manage.py help.' 'inspectdb:Introspects the database tables in the given database and outputs a Django model module.' 'loaddata:Installs the named fixture(s) in the database.' 'reset:Executes ``sqlreset`` for the given app(s) in the current database.' 'runfcgi:Run this project as a fastcgi (or some other protocol supported by flup) application,' 'runserver:Starts a lightweight Web server for development.' 'shell:Runs a Python interactive interpreter.' 'sql:Prints the CREATE TABLE SQL statements for the given app name(s).' 'sqlall:Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).' 'sqlclear:Prints the DROP TABLE SQL statements for the given app name(s).' 'sqlcustom:Prints the custom table modifying SQL statements for the given app name(s).' 'sqlflush:Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed.' 'sqlindexes:Prints the CREATE INDEX SQL statements for the given model module name(s).' "sqlinitialdata:RENAMED: see 'sqlcustom'" '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." "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).' 'validate:Validates all installed models.' ) _describe -t commands 'manage.py command' commands && ret=0 } _applist() { local line local -a apps _call_program help-command "python -c \"import os.path as op, re, django.conf, sys;\\ bn=op.basename(op.abspath(op.curdir));[sys\\ .stdout.write(str(re.sub(r'^%s\.(.*?)$' % bn, r'\1', i)) + '\n') for i in django.conf.settings.\\ INSTALLED_APPS if re.match(r'^%s' % bn, i)]\"" \ | while read -A line; do apps=($line $apps) done _values 'Application' $apps && ret=0 } _managepy() { local curcontext=$curcontext ret=1 if ((CURRENT == 2)); then _managepy-commands else shift words (( CURRENT -- )) curcontext="${curcontext%:*:*}:managepy-$words[1]:" _call_function ret _managepy-$words[1] fi } compdef _managepy manage.py compdef _managepy django ================================================ FILE: plugins/extract/_extract ================================================ #compdef extract #autoload _arguments \ '(-r --remove)'{-r,--remove}'[Remove archive.]' \ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0 ================================================ FILE: plugins/extract/extract.plugin.zsh ================================================ # ------------------------------------------------------------------------------ # FILE: extract.plugin.zsh # DESCRIPTION: oh-my-zsh plugin file. # AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) # VERSION: 1.0.1 # ------------------------------------------------------------------------------ function extract() { local remove_archive local success local file_name local extract_dir if (( $# == 0 )); then echo "Usage: extract [-option] [file ...]" echo echo Options: echo " -r, --remove Remove archive." echo echo "Report bugs to ." fi remove_archive=1 if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then remove_archive=0 shift fi while (( $# > 0 )); do if [[ ! -f "$1" ]]; then echo "extract: '$1' is not a valid file" 1>&2 shift continue fi success=0 file_name="$( basename "$1" )" extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )" case "$1" in (*.tar.gz|*.tgz) tar xvzf "$1" ;; (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;; (*.tar.xz|*.txz) tar --xz --help &> /dev/null \ && tar --xz -xvf "$1" \ || xzcat "$1" | tar xvf - ;; (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ && tar --lzma -xvf "$1" \ || lzcat "$1" | tar xvf - ;; (*.tar) tar xvf "$1" ;; (*.gz) gunzip "$1" ;; (*.bz2) bunzip2 "$1" ;; (*.xz) unxz "$1" ;; (*.lzma) unlzma "$1" ;; (*.Z) uncompress "$1" ;; (*.zip) unzip "$1" -d $extract_dir ;; (*.rar) unrar e -ad "$1" ;; (*.7z) 7za x "$1" ;; (*.deb) mkdir -p "$extract_dir/control" mkdir -p "$extract_dir/data" cd "$extract_dir"; ar vx "../${1}" > /dev/null cd control; tar xzvf ../control.tar.gz cd ../data; tar xzvf ../data.tar.gz cd ..; rm *.tar.gz debian-binary cd .. ;; (*) echo "extract: '$1' cannot be extracted" 1>&2 success=1 ;; esac (( success = $success > 0 ? $success : $? )) (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1" shift done } alias x=extract # add extract completion function to path fpath=($ZSH/plugins/extract $fpath) autoload -U compinit compinit -i ================================================ FILE: plugins/fabric/fabric.plugin.zsh ================================================ #!zsh # # Installation # ------------ # # To achieve fabfile completion nirvana: # # Copy this file somewhere (e.g. ~/.fab-comletion.zsh) and put the following line in your .zshrc: # # source ~/.fab-comletion.zsh # # Or, use this file as a oh-my-zsh plugin. # _fab_list() { reply=(`fab --shortlist`) } compctl -K _fab_list fab ================================================ FILE: plugins/gas/_gas ================================================ #compdef gas local curcontext="$curcontext" state line cmds ret=1 _arguments -C \ '(- 1 *)'{-v,--version}'[display version information]' \ '(-h|--help)'{-h,--help}'[show help information]' \ '1: :->cmds' \ '*: :->args' && ret=0 case $state in cmds) cmds=( "version:Prints Gas's version" "use:Uses author" "show:Shows your current user" "list:Lists your authors" "import:Imports current user to gasconfig" "help:Describe available tasks or one specific task" "delete:Deletes author" "add:Adds author to gasconfig" ) _describe -t commands 'gas command' cmds && ret=0 ;; args) case $line[1] in (use|delete) _values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0 ;; esac ;; esac return ret ================================================ FILE: plugins/gem/_gem ================================================ #compdef gem #autoload # gem zsh completion, based on homebrew completion _gem_installed() { installed_gems=(`gem list --local --no-versions`) } local -a _1st_arguments _1st_arguments=( 'cert:Manage RubyGems certificates and signing settings' 'check:Check installed gems' 'cleanup:Clean up old versions of installed gems in the local repository' 'contents:Display the contents of the installed gems' 'dependency:Show the dependencies of an installed gem' 'environment:Display information about the RubyGems environment' 'fetch:Download a gem and place it in the current directory' 'generate_index:Generates the index files for a gem server directory' 'help:Provide help on the `gem` command' 'install:Install a gem into the local repository' 'list:Display gems whose name starts with STRING' 'lock:Generate a lockdown list of gems' 'mirror:Mirror a gem repository' 'outdated:Display all gems that need updates' 'owner:Manage gem owners on RubyGems.org.' 'pristine:Restores installed gems to pristine condition from files located in the gem cache' 'push:Push a gem up to RubyGems.org' 'query:Query gem information in local or remote repositories' 'rdoc:Generates RDoc for pre-installed gems' 'search:Display all gems whose name contains STRING' 'server:Documentation and gem repository HTTP server' 'sources:Manage the sources and cache file RubyGems uses to search for gems' 'specification:Display gem specification (in yaml)' 'stale:List gems along with access times' 'uninstall:Uninstall gems from the local repository' 'unpack:Unpack an installed gem to the current directory' 'update:Update the named gems (or all installed gems) in the local repository' 'which:Find the location of a library file you can require' ) local expl local -a gems installed_gems _arguments \ '(-v --version)'{-v,--version}'[show version]' \ '(-h --help)'{-h,--help}'[show help]' \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "gem subcommand" _1st_arguments return fi case "$words[1]" in list) if [[ "$state" == forms ]]; then _gem_installed _requested installed_gems expl 'installed gems' compadd -a installed_gems fi ;; uninstall|update) _gem_installed _wanted installed_gems expl 'installed gems' compadd -a installed_gems ;; esac ================================================ FILE: plugins/git/git.plugin.zsh ================================================ # Aliases alias g='git' compdef g=git alias gst='git status' compdef _git gst=git-status alias gl='git pull' compdef _git gl=git-pull alias gup='git fetch && git rebase' compdef _git gup=git-fetch alias gp='git push' compdef _git gp=git-push gdv() { git-diff -w "$@" | view - } compdef _git gdv=git-diff alias gc='git commit -v' compdef _git gc=git-commit alias gca='git commit -v -a' compdef _git gca=git-commit alias gco='git checkout' compdef _git gco=git-checkout alias gb='git branch' compdef _git gb=git-branch alias gba='git branch -a' compdef _git gba=git-branch alias gcount='git shortlog -sn' compdef gcount=git alias gcp='git cherry-pick' compdef _git gcp=git-cherry-pick alias glg='git log --stat --max-count=5' compdef _git glg=git-log alias glgg='git log --graph --max-count=5' compdef _git glgg=git-log # Git and svn mix alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk' compdef git-svn-dcommit-push=git alias gsr='git svn rebase' alias gsd='git svn dcommit' # # Will return the current branch name # Usage example: git pull origin $(current_branch) # function current_branch() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return echo ${ref#refs/heads/} } # these aliases take advantage of the previous function alias ggpull='git pull origin $(current_branch)' compdef ggpull=git alias ggpush='git push origin $(current_branch)' compdef ggpush=git alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)' compdef ggpnp=git ================================================ FILE: plugins/git-flow/git-flow.plugin.zsh ================================================ #!zsh # # Installation # ------------ # # To achieve git-flow completion nirvana: # # 0. Update your zsh's git-completion module to the newest verion. # From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD # # 1. Install this file. Either: # # a. Place it in your .zshrc: # # b. Or, copy it somewhere (e.g. ~/.git-flow-completion.zsh) and put the following line in # your .zshrc: # # source ~/.git-flow-completion.zsh # # c. Or, use this file as a oh-my-zsh plugin. # _git-flow () { local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) local -a subcommands subcommands=( 'init:Initialize a new git repo with support for the branching model.' 'feature:Manage your feature branches.' 'release:Manage your release branches.' 'hotfix:Manage your hotfix branches.' 'support:Manage your support branches.' 'version:Shows version information.' ) _describe -t commands 'git flow' subcommands ;; (options) case $line[1] in (init) _arguments \ -f'[Force setting of gitflow branches, even if already configured]' ;; (version) ;; (hotfix) __git-flow-hotfix ;; (release) __git-flow-release ;; (feature) __git-flow-feature ;; esac ;; esac } __git-flow-release () { local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) local -a subcommands subcommands=( 'start:Start a new release branch.' 'finish:Finish a release branch.' 'list:List all your release branches. (Alias to `git flow release`)' ) _describe -t commands 'git flow release' subcommands _arguments \ -v'[Verbose (more) output]' ;; (options) case $line[1] in (start) _arguments \ -F'[Fetch from origin before performing finish]'\ ':version:__git_flow_version_list' ;; (finish) _arguments \ -F'[Fetch from origin before performing finish]' \ -s'[Sign the release tag cryptographically]'\ -u'[Use the given GPG-key for the digital signature (implies -s)]'\ -m'[Use the given tag message]'\ -p'[Push to $ORIGIN after performing finish]'\ ':version:__git_flow_version_list' ;; *) _arguments \ -v'[Verbose (more) output]' ;; esac ;; esac } __git-flow-hotfix () { local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) local -a subcommands subcommands=( 'start:Start a new hotfix branch.' 'finish:Finish a hotfix branch.' 'list:List all your hotfix branches. (Alias to `git flow hotfix`)' ) _describe -t commands 'git flow hotfix' subcommands _arguments \ -v'[Verbose (more) output]' ;; (options) case $line[1] in (start) _arguments \ -F'[Fetch from origin before performing finish]'\ ':hotfix:__git_flow_version_list'\ ':branch-name:__git_branch_names' ;; (finish) _arguments \ -F'[Fetch from origin before performing finish]' \ -s'[Sign the release tag cryptographically]'\ -u'[Use the given GPG-key for the digital signature (implies -s)]'\ -m'[Use the given tag message]'\ -p'[Push to $ORIGIN after performing finish]'\ ':hotfix:__git_flow_hotfix_list' ;; *) _arguments \ -v'[Verbose (more) output]' ;; esac ;; esac } __git-flow-feature () { local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) local -a subcommands subcommands=( 'start:Start a new feature branch.' 'finish:Finish a feature branch.' 'list:List all your feature branches. (Alias to `git flow feature`)' 'publish: public' 'track: track' 'diff: diff' 'rebase: rebase' 'checkout: checkout' 'pull: pull' ) _describe -t commands 'git flow feature' subcommands _arguments \ -v'[Verbose (more) output]' ;; (options) case $line[1] in (start) _arguments \ -F'[Fetch from origin before performing finish]'\ ':feature:__git_flow_feature_list'\ ':branch-name:__git_branch_names' ;; (finish) _arguments \ -F'[Fetch from origin before performing finish]' \ -r'[Rebase instead of merge]'\ ':feature:__git_flow_feature_list' ;; (publish) _arguments \ ':feature:__git_flow_feature_list'\ ;; (track) _arguments \ ':feature:__git_flow_feature_list'\ ;; (diff) _arguments \ ':branch:__git_branch_names'\ ;; (rebase) _arguments \ -i'[Do an interactive rebase]' \ ':branch:__git_branch_names' ;; (checkout) _arguments \ ':branch:__git_flow_feature_list'\ ;; (pull) _arguments \ ':remote:__git_remotes'\ ':branch:__git_branch_names' ;; *) _arguments \ -v'[Verbose (more) output]' ;; esac ;; esac } __git_flow_version_list () { local expl declare -a versions versions=(${${(f)"$(_call_program versions git flow release list 2> /dev/null | tr -d ' |*')"}}) __git_command_successful || return _wanted versions expl 'version' compadd $versions } __git_flow_feature_list () { local expl declare -a features features=(${${(f)"$(_call_program features git flow feature list 2> /dev/null | tr -d ' |*')"}}) __git_command_successful || return _wanted features expl 'feature' compadd $features } __git_remotes () { local expl gitdir remotes gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null) __git_command_successful || return remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]}) __git_command_successful || return # TODO: Should combine the two instead of either or. if (( $#remotes > 0 )); then _wanted remotes expl remote compadd $* - $remotes else _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*" fi } __git_flow_hotfix_list () { local expl declare -a hotfixes hotfixes=(${${(f)"$(_call_program hotfixes git flow hotfix list 2> /dev/null | tr -d ' |*')"}}) __git_command_successful || return _wanted hotfixes expl 'hotfix' compadd $hotfixes } __git_branch_names () { local expl declare -a branch_names branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) __git_command_successful || return _wanted branch-names expl branch-name compadd $* - $branch_names } __git_command_successful () { if (( ${#pipestatus:#0} > 0 )); then _message 'not a git repository' return 1 fi return 0 } zstyle ':completion:*:*:git:*' user-commands flow:'description for foo' ================================================ FILE: plugins/github/_github ================================================ #compdef github #autoload # in order to make this work, you will need to have the github gem installed # http://github.com/defunkt/github-gem # github zsh completion, based on homebrew completion local -a _1st_arguments _1st_arguments=( 'browse:Open this repo in a web browser' 'clone:Clone a repo' 'config:Automatically set configuration info, or pass args to specify' 'create-from-local:Create a new GitHub repository from the current local repository' 'create:Create a new empty GitHub repository' 'fetch:Fetch from a remote to a local branch' 'fetch_all:Fetch all refs from a user' 'fork:Forks a GitHub repository' 'home:Open this repos master branch in a web browser' 'ignore:Ignore a SHA from github network commits' 'info:Info about this project' 'issues:Project issues tools' 'network:Project network tools - sub-commands : web [user], list, fetch, commits' 'open:Open the given user/project in a web browser' 'pull-request:Generate the text for a pull request' 'pull:Pull from a remote' 'search:Search GitHub for the given repository name' 'track:Track another users repository' ) local expl local -a pkgs installed_pkgs _arguments \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "github subcommand" _1st_arguments return fi ================================================ FILE: plugins/github/github.plugin.zsh ================================================ # hub alias from defunkt # https://github.com/defunkt/hub if [ "$commands[(I)hub]" ]; then # eval `hub alias -s zsh` function git(){hub "$@"} fi ================================================ FILE: plugins/gpg-agent/gpg-agent.plugin.zsh ================================================ # Based on ssh-agent code local GPG_ENV=$HOME/.gnupg/gpg-agent.env function start_agent { /usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV} > /dev/null chmod 600 ${GPG_ENV} . ${GPG_ENV} > /dev/null } # Source GPG agent settings, if applicable if [ -f "${GPG_ENV}" ]; then . ${GPG_ENV} > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || { start_agent; } else start_agent; fi export GPG_AGENT_INFO export SSH_AUTH_SOCK export SSH_AGENT_PID GPG_TTY=$(tty) export GPG_TTY ================================================ FILE: plugins/heroku/_heroku ================================================ #compdef heroku # Heroku Autocomplete plugin for Oh-My-Zsh # Requires: The Heroku client gem (https://github.com/heroku/heroku) # Author: Ali B. (http://awhitebox.com) local -a _1st_arguments _1st_arguments=( "account\:confirm_billing":"Confirm that your account can be billed at the end of the month" "addons":"list installed addons" "addons\:list":"list all available addons" "addons\:add":"install an addon" "addons\:upgrade":"upgrade an existing addon" "addons\:downgrade":"downgrade an existing addon" "addons\:remove":"uninstall an addon" "addons\:open":"open an addon's dashboard in your browser" "apps":"list your apps" "apps\:info":"show detailed app information" "apps\:create":"create a new app" "apps\:rename":"rename the app" "apps\:open":"open the app in a web browser" "apps\:destroy":"permanently destroy an app" "auth\:login":"log in with your heroku credentials" "auth\:logout":"clear local authentication credentials" "config":"display the config vars for an app" "config\:add":"add one or more config vars" "config\:remove":"remove a config var" "db\:push":"push local data up to your app" "db\:pull":"pull heroku data down into your local database" "domains":"list custom domains for an app" "domains\:add":"add a custom domain to an app" "domains\:remove":"remove a custom domain from an app" "domains\:clear":"remove all custom domains from an app" "help":"list available commands or display help for a specific command" "keys":"display keys for the current user" "keys\:add":"add a key for the current user" "keys\:remove":"remove a key from the current user" "keys\:clear":"remove all authentication keys from the current user" "logs":"display recent log output" "logs\:cron":"DEPRECATED: display cron logs from legacy logging" "logs\:drains":"manage syslog drains" "maintenance\:on":"put the app into maintenance mode" "maintenance\:off":"take the app out of maintenance mode" "pg\:info":"display database information" "pg\:ingress":"allow direct connections to the database from this IP for one minute" "pg\:promote":"sets DATABASE as your DATABASE_URL" "pg\:psql":"open a psql shell to the database" "pg\:reset":"delete all data in DATABASE" "pg\:unfollow":"stop a replica from following and make it a read/write database" "pg\:wait":"monitor database creation, exit when complete" "pgbackups":"list captured backups" "pgbackups\:url":"get a temporary URL for a backup" "pgbackups\:capture":"capture a backup from a database id" "pgbackups\:restore":"restore a backup to a database" "pgbackups\:destroy":"destroys a backup" "plugins":"list installed plugins" "plugins\:install":"install a plugin" "plugins\:uninstall":"uninstall a plugin" "ps\:dynos":"scale to QTY web processes" "ps\:workers":"scale to QTY background processes" "ps":"list processes for an app" "ps\:restart":"restart an app process" "ps\:scale":"scale processes by the given amount" "releases":"list releases" "releases\:info":"view detailed information for a release" "rollback":"roll back to an older release" "run":"run an attached process" "run\:rake":"remotely execute a rake command" "run\:console":"open a remote console session" "sharing":"list collaborators on an app" "sharing\:add":"add a collaborator to an app" "sharing\:remove":"remove a collaborator from an app" "sharing\:transfer":"transfer an app to a new owner" "ssl":"list certificates for an app" "ssl\:add":"add an ssl certificate to an app" "ssl\:remove":"remove an ssl certificate from an app" "ssl\:clear":"remove all ssl certificates from an app" "stack":"show the list of available stacks" "stack\:migrate":"prepare migration of this app to a new stack" "version":"show heroku client version" ) _arguments '*:: :->command' if (( CURRENT == 1 )); then _describe -t commands "heroku command" _1st_arguments return fi local -a _command_args case "$words[1]" in apps:info) _command_args=( '(-r|--raw)'{-r,--raw}'[output info as raw key/value pairs]' \ ) ;; apps:create) _command_args=( '(-a|--addons)'{-a,--addons}'[a list of addons to install]' \ '(-r|--remote)'{-r,--remote}'[the git remote to create, default "heroku"]' \ '(-s|--stack)'{-s,--stack}'[the stack on which to create the app]' \ ) ;; config) _command_args=( '(-s|--shell)'{-s,--shell}'[output config vars in shell format]' \ ) ;; db:push) _command_args=( '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \ '(-d|--debug)'{-d,--debug}'[enable debugging output]' \ '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the push]' \ '(-f|--filter)'{-f,--filter}'[only push certain tables]' \ '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \ '(-t|--tables)'{-t,--tables}'[only push the specified tables]' \ ) ;; db:pull) _command_args=( '(-c|--chunksize)'{-c,--chunksize}'[specify the number of rows to send in each batch]' \ '(-d|--debug)'{-d,--debug}'[enable debugging output]' \ '(-e|--exclude)'{-e,--exclude}'[exclude the specified tables from the pull]' \ '(-f|--filter)'{-f,--filter}'[only pull certain tables]' \ '(-r|--resume)'{-r,--resume}'[resume transfer described by a .dat file]' \ '(-t|--tables)'{-t,--tables}'[only pull the specified tables]' \ ) ;; keys) _command_args=( '(-l|--long)'{-l,--long}'[display extended information for each key]' \ ) ;; logs) _command_args=( '(-n|--num)'{-n,--num}'[the number of lines to display]' \ '(-p|--ps)'{-p,--ps}'[only display logs from the given process]' \ '(-s|--source)'{-s,--source}'[only display logs from the given source]' \ '(-t|--tail)'{-t,--tail}'[continually stream logs]' \ ) ;; pgbackups:capture) _command_args=( '(-e|--expire)'{-e,--expire}'[if no slots are available to capture, delete the oldest backup to make room]' \ ) ;; stack) _command_args=( '(-a|--all)'{-a,--all}'[include deprecated stacks]' \ ) ;; esac _arguments \ $_command_args \ '(--app)--app[the app name]' \ && return 0 ================================================ FILE: plugins/history-substring-search/README ================================================ To activate this script, load it into an interactive ZSH session: % source history-substring-search.zsh See the "history-substring-search.zsh" file for more information: % sed -n '2,/^$/s/^#//p' history-substring-search.zsh | more ================================================ FILE: plugins/history-substring-search/history-substring-search.plugin.zsh ================================================ # This file integrates the history-substring-search script into oh-my-zsh. source "$ZSH/plugins/history-substring-search/history-substring-search.zsh" if test "$CASE_SENSITIVE" = true; then unset HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS fi if test "$DISABLE_COLOR" = true; then unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND fi ================================================ FILE: plugins/history-substring-search/history-substring-search.zsh ================================================ #!/usr/bin/env zsh # # This is a clean-room implementation of the Fish[1] shell's history search # feature, where you can type in any part of any previously entered command # and press the UP and DOWN arrow keys to cycle through the matching commands. # #----------------------------------------------------------------------------- # Usage #----------------------------------------------------------------------------- # # 1. Load this script into your interactive ZSH session: # # % source history-substring-search.zsh # # If you want to use the zsh-syntax-highlighting[6] script along with this # script, then make sure that you load it *before* you load this script: # # % source zsh-syntax-highlighting.zsh # % source history-substring-search.zsh # # 2. Type any part of any previous command and then: # # * Press the UP arrow key to select the nearest command that (1) contains # your query and (2) is older than the current command in the command # history. # # * Press the DOWN arrow key to select the nearest command that (1) # contains your query and (2) is newer than the current command in the # command history. # # * Press ^U (the Control and U keys simultaneously) to abort the search. # # 3. If a matching command spans more than one line of text, press the LEFT # arrow key to move the cursor away from the end of the command, and then: # # * Press the UP arrow key to move the cursor to the line above. When the # cursor reaches the first line of the command, pressing the UP arrow # key again will cause this script to perform another search. # # * Press the DOWN arrow key to move the cursor to the line below. When # the cursor reaches the last line of the command, pressing the DOWN # arrow key again will cause this script to perform another search. # #----------------------------------------------------------------------------- # Configuration #----------------------------------------------------------------------------- # # This script defines the following global variables. You may override their # default values only after having loaded this script into your ZSH session. # # * HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND is a global variable that defines # how the query should be highlighted inside a matching command. Its default # value causes this script to highlight using bold, white text on a magenta # background. See the "Character Highlighting" section in the zshzle(1) man # page to learn about the kinds of values you may assign to this variable. # # * HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND is a global variable that # defines how the query should be highlighted when no commands in the # history match it. Its default value causes this script to highlight using # bold, white text on a red background. See the "Character Highlighting" # section in the zshzle(1) man page to learn about the kinds of values you # may assign to this variable. # # * HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS is a global variable that defines # how the command history will be searched for your query. Its default value # causes this script to perform a case-insensitive search. See the "Globbing # Flags" section in the zshexpn(1) man page to learn about the kinds of # values you may assign to this variable. # #----------------------------------------------------------------------------- # History #----------------------------------------------------------------------------- # # This script was originally written by Peter Stephenson[2], who published it # to the ZSH users mailing list (thereby making it public domain) in September # 2009. It was later revised by Guido van Steen and released under the BSD # license (see below) as part of the fizsh[3] project in January 2011. # # It was later extracted from fizsh[3] release 1.0.1, refactored heavily, and # repackaged as both an oh-my-zsh plugin[4] and as an independently loadable # ZSH script[5] by Suraj N. Kurapati in 2011. # # It was further developed[4] by Guido van Steen, Suraj N. Kurapati, Sorin # Ionescu, and Vincent Guerci in 2011. # # [1]: http://fishshell.com # [2]: http://www.zsh.org/mla/users/2009/msg00818.html # [3]: http://sourceforge.net/projects/fizsh/ # [4]: https://github.com/robbyrussell/oh-my-zsh/pull/215 # [5]: https://github.com/sunaku/zsh-history-substring-search # [6]: https://github.com/nicoulaj/zsh-syntax-highlighting # ############################################################################## # # Copyright (c) 2009 Peter Stephenson # Copyright (c) 2011 Guido van Steen # Copyright (c) 2011 Suraj N. Kurapati # Copyright (c) 2011 Sorin Ionescu # Copyright (c) 2011 Vincent Guerci # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # * Neither the name of the FIZSH nor the names of its contributors # may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ############################################################################## #----------------------------------------------------------------------------- # configuration variables #----------------------------------------------------------------------------- HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold' HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold' HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i' #----------------------------------------------------------------------------- # the main ZLE widgets #----------------------------------------------------------------------------- function history-substring-search-up() { _history-substring-search-begin _history-substring-search-up-history || _history-substring-search-up-buffer || _history-substring-search-up-search _history-substring-search-end } function history-substring-search-down() { _history-substring-search-begin _history-substring-search-down-history || _history-substring-search-down-buffer || _history-substring-search-down-search _history-substring-search-end } 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 #----------------------------------------------------------------------------- # implementation details #----------------------------------------------------------------------------- setopt extendedglob zmodload -F zsh/parameter # # We have to "override" some keys and widgets if the # zsh-syntax-highlighting plugin has not been loaded: # # https://github.com/nicoulaj/zsh-syntax-highlighting # if [[ $+functions[_zsh_highlight] -eq 0 ]]; then # # Dummy implementation of _zsh_highlight() # that simply removes existing highlights # function _zsh_highlight() { region_highlight=() } # # Remove existing highlights when the user # inserts printable characters into $BUFFER # function ordinary-key-press() { if [[ $KEYS == [[:print:]] ]]; then region_highlight=() fi zle .self-insert } zle -N self-insert ordinary-key-press # # Override ZLE widgets to invoke _zsh_highlight() # # https://github.com/nicoulaj/zsh-syntax-highlighting/blob/ # bb7fcb79fad797a40077bebaf6f4e4a93c9d8163/zsh-syntax-highlighting.zsh#L121 # #--------------8<-------------------8<-------------------8<----------------- # # Copyright (c) 2010-2011 zsh-syntax-highlighting contributors # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of the zsh-syntax-highlighting contributors nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Load ZSH module zsh/zleparameter, needed to override user defined widgets. zmodload zsh/zleparameter 2>/dev/null || { echo 'zsh-syntax-highlighting: failed loading zsh/zleparameter, exiting.' >&2 return -1 } # Override ZLE widgets to make them invoke _zsh_highlight. for event in ${${(f)"$(zle -la)"}:#(_*|orig-*|.run-help|.which-command)}; do if [[ "$widgets[$event]" == completion:* ]]; then eval "zle -C orig-$event ${${${widgets[$event]}#*:}/:/ } ; $event() { builtin zle orig-$event && _zsh_highlight } ; zle -N $event" else case $event in accept-and-menu-complete) eval "$event() { builtin zle .$event && _zsh_highlight } ; zle -N $event" ;; # The following widgets should NOT remove any previously # applied highlighting. Therefore we do not remap them. .forward-char|.backward-char|.up-line-or-history|.down-line-or-history) ;; .*) clean_event=$event[2,${#event}] # Remove the leading dot in the event name case ${widgets[$clean_event]-} in (completion|user):*) ;; *) eval "$clean_event() { builtin zle $event && _zsh_highlight } ; zle -N $clean_event" ;; esac ;; *) ;; esac fi done unset event clean_event #-------------->8------------------->8------------------->8----------------- fi function _history-substring-search-begin() { _history_substring_search_move_cursor_eol=false _history_substring_search_query_highlight= # # Continue using the previous $_history_substring_search_result by default, # unless the current query was cleared or a new/different query was entered. # if [[ -z $BUFFER || $BUFFER != $_history_substring_search_result ]]; then # # For the purpose of highlighting we will also keep # a version without doubly-escaped meta characters. # _history_substring_search_query=$BUFFER # # $BUFFER contains the text that is in the command-line currently. # we put an extra "\\" before meta characters such as "\(" and "\)", # so that they become "\\\(" and "\\\)". # _history_substring_search_query_escaped=${BUFFER//(#m)[\][()|\\*?#<>~^]/\\$MATCH} # # Find all occurrences of the search query in the history file. # # (k) turns it an array of line numbers. # # (on) seems to remove duplicates, which are default # options. They can be turned off by (ON). # _history_substring_search_matches=(${(kon)history[(R)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)*${_history_substring_search_query_escaped}*]}) # # Define the range of values that $_history_substring_search_match_index # can take: [0, $_history_substring_search_matches_count_plus]. # _history_substring_search_matches_count=$#_history_substring_search_matches _history_substring_search_matches_count_plus=$(( _history_substring_search_matches_count + 1 )) _history_substring_search_matches_count_sans=$(( _history_substring_search_matches_count - 1 )) # # If $_history_substring_search_match_index is equal to # $_history_substring_search_matches_count_plus, this indicates that we # are beyond the beginning of $_history_substring_search_matches. # # If $_history_substring_search_match_index is equal to 0, this indicates # that we are beyond the end of $_history_substring_search_matches. # # If we have initially pressed "up" we have to initialize # $_history_substring_search_match_index to # $_history_substring_search_matches_count_plus so that it will be # decreased to $_history_substring_search_matches_count. # # If we have initially pressed "down" we have to initialize # $_history_substring_search_match_index to # $_history_substring_search_matches_count so that it will be increased to # $_history_substring_search_matches_count_plus. # if [[ $WIDGET == history-substring-search-down ]]; then _history_substring_search_match_index=$_history_substring_search_matches_count else _history_substring_search_match_index=$_history_substring_search_matches_count_plus fi fi } function _history-substring-search-end() { _history_substring_search_result=$BUFFER # move the cursor to the end of the command line if [[ $_history_substring_search_move_cursor_eol == true ]]; then CURSOR=${#BUFFER} fi # highlight command line using zsh-syntax-highlighting _zsh_highlight # highlight the search query inside the command line if [[ -n $_history_substring_search_query_highlight && -n $_history_substring_search_query ]]; then # # The following expression yields a variable $MBEGIN, which # indicates the begin position + 1 of the first occurrence # of _history_substring_search_query_escaped in $BUFFER. # : ${(S)BUFFER##(#m$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)($_history_substring_search_query##)} local begin=$(( MBEGIN - 1 )) local end=$(( begin + $#_history_substring_search_query )) region_highlight+=("$begin $end $_history_substring_search_query_highlight") fi # For debugging purposes: # zle -R "mn: "$_history_substring_search_match_index" m#: "${#_history_substring_search_matches} # read -k -t 200 && zle -U $REPLY # Exit successfully from the history-substring-search-* widgets. true } function _history-substring-search-up-buffer() { # # Check if the UP arrow was pressed to move the cursor within a multi-line # buffer. This amounts to three tests: # # 1. $#buflines -gt 1. # # 2. $CURSOR -ne $#BUFFER. # # 3. Check if we are on the first line of the current multi-line buffer. # If so, pressing UP would amount to leaving the multi-line buffer. # # We check this by adding an extra "x" to $LBUFFER, which makes # sure that xlbuflines is always equal to the number of lines # until $CURSOR (including the line with the cursor on it). # local buflines XLBUFFER xlbuflines buflines=(${(f)BUFFER}) XLBUFFER=$LBUFFER"x" xlbuflines=(${(f)XLBUFFER}) if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xlbuflines -ne 1 ]]; then zle up-line-or-history return true fi false } function _history-substring-search-down-buffer() { # # Check if the DOWN arrow was pressed to move the cursor within a multi-line # buffer. This amounts to three tests: # # 1. $#buflines -gt 1. # # 2. $CURSOR -ne $#BUFFER. # # 3. Check if we are on the last line of the current multi-line buffer. # If so, pressing DOWN would amount to leaving the multi-line buffer. # # We check this by adding an extra "x" to $RBUFFER, which makes # sure that xrbuflines is always equal to the number of lines # from $CURSOR (including the line with the cursor on it). # local buflines XRBUFFER xrbuflines buflines=(${(f)BUFFER}) XRBUFFER="x"$RBUFFER xrbuflines=(${(f)XRBUFFER}) if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xrbuflines -ne 1 ]]; then zle down-line-or-history return true fi false } function _history-substring-search-up-history() { # # Behave like up in ZSH, except clear the $BUFFER # when beginning of history is reached like in Fish. # if [[ -z $_history_substring_search_query ]]; then # we have reached the absolute top of history if [[ $HISTNO -eq 1 ]]; then BUFFER= # going up from somewhere below the top of history else zle up-history fi return true fi false } function _history-substring-search-down-history() { # # Behave like down-history in ZSH, except clear the # $BUFFER when end of history is reached like in Fish. # if [[ -z $_history_substring_search_query ]]; then # going down from the absolute top of history if [[ $HISTNO -eq 1 && -z $BUFFER ]]; then BUFFER=${history[1]} _history_substring_search_move_cursor_eol=true # going down from somewhere above the bottom of history else zle down-history fi return true fi false } function _history-substring-search-up-search() { _history_substring_search_move_cursor_eol=true # # Highlight matches during history-substring-up-search: # # The following constants have been initialized in # _history-substring-search-up/down-search(): # # $_history_substring_search_matches is the current list of matches # $_history_substring_search_matches_count is the current number of matches # $_history_substring_search_matches_count_plus is the current number of matches + 1 # $_history_substring_search_matches_count_sans is the current number of matches - 1 # $_history_substring_search_match_index is the index of the current match # # The range of values that $_history_substring_search_match_index can take # is: [0, $_history_substring_search_matches_count_plus]. A value of 0 # indicates that we are beyond the end of # $_history_substring_search_matches. A value of # $_history_substring_search_matches_count_plus indicates that we are beyond # the beginning of $_history_substring_search_matches. # # In _history-substring-search-up-search() the initial value of # $_history_substring_search_match_index is # $_history_substring_search_matches_count_plus. This value is set in # _history-substring-search-begin(). _history-substring-search-up-search() # will initially decrease it to $_history_substring_search_matches_count. # if [[ $_history_substring_search_match_index -ge 2 ]]; then # # Highlight the next match: # # 1. Decrease the value of $_history_substring_search_match_index. # # 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index-- )) BUFFER=$history[$_history_substring_search_matches[$_history_substring_search_match_index]] _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND elif [[ $_history_substring_search_match_index -eq 1 ]]; then # # We will move beyond the end of $_history_substring_search_matches: # # 1. Decrease the value of $_history_substring_search_match_index. # # 2. Save the current buffer in $_history_substring_search_old_buffer, # so that it can be retrieved by # _history-substring-search-down-search() later. # # 3. Make $BUFFER equal to $_history_substring_search_query. # # 4. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index-- )) _history_substring_search_old_buffer=$BUFFER BUFFER=$_history_substring_search_query _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND elif [[ $_history_substring_search_match_index -eq $_history_substring_search_matches_count_plus ]]; then # # We were beyond the beginning of $_history_substring_search_matches but # UP makes us move back to $_history_substring_search_matches: # # 1. Decrease the value of $_history_substring_search_match_index. # # 2. Restore $BUFFER from $_history_substring_search_old_buffer. # # 3. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index-- )) BUFFER=$_history_substring_search_old_buffer _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND fi } function _history-substring-search-down-search() { _history_substring_search_move_cursor_eol=true # # Highlight matches during history-substring-up-search: # # The following constants have been initialized in # _history-substring-search-up/down-search(): # # $_history_substring_search_matches is the current list of matches # $_history_substring_search_matches_count is the current number of matches # $_history_substring_search_matches_count_plus is the current number of matches + 1 # $_history_substring_search_matches_count_sans is the current number of matches - 1 # $_history_substring_search_match_index is the index of the current match # # The range of values that $_history_substring_search_match_index can take # is: [0, $_history_substring_search_matches_count_plus]. A value of 0 # indicates that we are beyond the end of # $_history_substring_search_matches. A value of # $_history_substring_search_matches_count_plus indicates that we are beyond # the beginning of $_history_substring_search_matches. # # In _history-substring-search-down-search() the initial value of # $_history_substring_search_match_index is # $_history_substring_search_matches_count. This value is set in # _history-substring-search-begin(). # _history-substring-search-down-search() will initially increase it to # $_history_substring_search_matches_count_plus. # if [[ $_history_substring_search_match_index -le $_history_substring_search_matches_count_sans ]]; then # # Highlight the next match: # # 1. Increase $_history_substring_search_match_index by 1. # # 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index++ )) BUFFER=$history[$_history_substring_search_matches[$_history_substring_search_match_index]] _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND elif [[ $_history_substring_search_match_index -eq $_history_substring_search_matches_count ]]; then # # We will move beyond the beginning of $_history_substring_search_matches: # # 1. Increase $_history_substring_search_match_index by 1. # # 2. Save the current buffer in $_history_substring_search_old_buffer, so # that it can be retrieved by _history-substring-search-up-search() # later. # # 3. Make $BUFFER equal to $_history_substring_search_query. # # 4. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index++ )) _history_substring_search_old_buffer=$BUFFER BUFFER=$_history_substring_search_query _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND elif [[ $_history_substring_search_match_index -eq 0 ]]; then # # We were beyond the end of $_history_substring_search_matches but DOWN # makes us move back to the $_history_substring_search_matches: # # 1. Increase $_history_substring_search_match_index by 1. # # 2. Restore $BUFFER from $_history_substring_search_old_buffer. # # 3. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND # to highlight the current buffer. # (( _history_substring_search_match_index++ )) BUFFER=$_history_substring_search_old_buffer _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND fi } # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- # vim: ft=zsh sw=2 ts=2 et ================================================ FILE: plugins/kate/kate.plugin.zsh ================================================ # Kate # Start kate always silent alias kate='kate >/dev/null 2>&1' function kt () { cd $1 kate $1 } ================================================ FILE: plugins/knife/_knife ================================================ #compdef knife # These flags should be available everywhere according to man knife knife_general_flags=( --help --server-url --key --config --editor --format --log_level --logfile --no-editor --user --print-after --version --yes ) # knife has a very special syntax, some example calls are: # knife status # knife cookbook list # knife role show ROLENAME # knife data bag show DATABAGNAME # knife role show ROLENAME --attribute ATTRIBUTENAME # knife cookbook show COOKBOOKNAME COOKBOOKVERSION recipes # The -Q switch in compadd allow for completions of things like "data bag" without having to go through two rounds of completion and avoids zsh inserting a \ for escaping spaces _knife() { local curcontext="$curcontext" state line typeset -A opt_args cloudproviders=(bluebox ec2 rackspace slicehost terremark) _arguments \ '1: :->knifecmd'\ '2: :->knifesubcmd'\ '3: :->knifesubcmd2' \ '4: :->knifesubcmd3' \ '5: :->knifesubcmd4' \ '6: :->knifesubcmd5' case $state in knifecmd) compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" exec index node recipe role search ssh status windows $cloudproviders ;; knifesubcmd) case $words[2] in (bluebox|ec2|rackspace|slicehost|terremark) compadd "$@" server images ;; client) compadd -Q "$@" "bulk delete" list create show delete edit reregister ;; configure) compadd "$@" client ;; cookbook) compadd -Q "$@" test list create download delete "metadata from" show "bulk delete" metadata upload ;; node) compadd -Q "$@" "from file" create show edit delete list run_list "bulk delete" ;; recipe) compadd "$@" list ;; role) compadd -Q "$@" "bulk delete" create delete edit "from file" list show ;; windows) compadd "$@" bootstrap ;; *) _arguments '2:Subsubcommands:($(_knife_options1))' esac ;; knifesubcmd2) case $words[3] in server) compadd "$@" list create delete ;; images) compadd "$@" list ;; site) compadd "$@" vendor show share search download list unshare ;; (show|delete|edit) _arguments '3:Subsubcommands:($(_chef_$words[2]s_remote))' ;; (upload|test) _arguments '3:Subsubcommands:($(_chef_$words[2]s_local) --all)' ;; list) compadd -a "$@" knife_general_flags ;; bag) compadd -Q "$@" show edit list "from file" create delete ;; *) _arguments '3:Subsubcommands:($(_knife_options2))' esac ;; knifesubcmd3) case $words[3] in show) case $words[2] in cookbook) versioncomp=1 _arguments '4:Cookbookversions:($(_cookbook_versions) latest)' ;; (node|client|role) compadd "$@" --attribute esac esac case $words[4] in (show|edit) _arguments '4:Subsubsubcommands:($(_chef_$words[2]_$words[3]s_remote))' ;; file) _arguments '*:file or directory:_files -g "*.(rb|json)"' ;; list) compadd -a "$@" knife_general_flags ;; *) _arguments '*:Subsubcommands:($(_knife_options3))' esac ;; knifesubcmd4) if (( versioncomp > 0 )); then compadd "$@" attributes definitions files libraries providers recipes resources templates else _arguments '*:Subsubcommands:($(_knife_options2))' fi ;; knifesubcmd5) _arguments '*:Subsubcommands:($(_knife_options3))' esac } # Helper functions to provide the argument completion for several depths of commands _knife_options1() { ( for line in $( knife $words[2] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) } _knife_options2() { ( for line in $( knife $words[2] $words[3] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) } _knife_options3() { ( for line in $( knife $words[2] $words[3] $words[4] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) } # The chef_x_remote functions use knife to get a list of objects of type x on the server _chef_roles_remote() { (knife role list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } _chef_clients_remote() { (knife client list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } _chef_nodes_remote() { (knife node list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } _chef_cookbooks_remote() { (knife cookbook list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } _chef_sitecookbooks_remote() { (knife cookbook site list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } _chef_data_bags_remote() { (knife data bag list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') } # The chef_x_local functions use the knife config to find the paths of relevant objects x to be uploaded to the server _chef_cookbooks_local() { (for i in $( grep cookbook_path $HOME/.chef/knife.rb | awk 'BEGIN {FS = "[" }; {print $2}' | sed 's/\,//g' | sed "s/'//g" | sed 's/\(.*\)]/\1/' ); do ls $i; done) } # This function extracts the available cookbook versions on the chef server _cookbook_versions() { (knife cookbook show $words[4] | grep -v $words[4] | grep -v -E '\]|\[|\{|\}' | sed 's/ //g' | sed 's/"//g') } _knife "$@" ================================================ FILE: plugins/lein/lein.plugin.zsh ================================================ function _lein_commands() { local ret=1 state _arguments ':subcommand:->subcommand' && ret=0 case $state in subcommand) subcommands=( "clean:remove compiled files and dependencies from project" "compile:ahead-of-time compile the project" "deps:download and install all dependencies" "help:display a list of tasks or help for a given task" "install:install the project and its dependencies in your local repository" "jar:create a jar file containing the compiled .class files" "new:create a new project skeleton" "pom:write a pom.xml file to disk for maven interop" "test:run the project's tests" "uberjar:Create a jar including the contents of each of deps" "upgrade:upgrade leiningen to the latest stable release" "version:print leiningen's version" ) _describe -t subcommands 'leiningen subcommands' subcommands && ret=0 esac return ret } compdef _lein_commands lein ================================================ FILE: plugins/lighthouse/lighthouse.plugin.zsh ================================================ # To use: add a .lighthouse file into your directory with the URL to the # individual project. For example: # https://rails.lighthouseapp.com/projects/8994 # Example usage: http://screencast.com/t/ZDgwNDUwNT open_lighthouse_ticket () { if [ ! -f .lighthouse-url ]; then echo "There is no .lighthouse-url file in the current directory..." return 0; else lighthouse_url=$(cat .lighthouse-url); echo "Opening ticket #$1"; `open $lighthouse_url/tickets/$1`; fi } alias lho='open_lighthouse_ticket' ================================================ FILE: plugins/lol/lol.plugin.zsh ================================================ # LOL!!1 # Source: http://aur.archlinux.org/packages/lolbash/lolbash/lolbash.sh alias wtf='dmesg' alias onoz='cat /var/log/errors.log' alias rtfm='man' alias visible='echo' alias invisible='cat' alias moar='more' alias icanhas='mkdir' alias donotwant='rm' alias dowant='cp' alias gtfo='mv' alias hai='cd' alias plz='pwd' alias inur='locate' alias nomz='ps -aux' alias nomnom='killall' alias cya='reboot' alias kthxbai='halt' ================================================ FILE: plugins/macports/_port ================================================ #compdef port local subcmds # we cache the list of ports # we shall use some cache policy to avoid problems with new ports if (( ! $+portlist )); then portlist=($(port echo all; echo "all current active inactive installed uninstalled outdated")) fi subcmds=( 'activate' 'archive' 'build' 'cat' 'clean' 'configure' 'contents' 'deactivate' 'dependents' 'deps' 'destroot' 'dir' 'distcheck' 'distclean' 'dmg' 'echo' 'edit' 'extract' 'fetch' 'file' 'help' 'info' 'install' 'installed' 'list' 'livecheck' 'location' 'mpkg' 'outdated' 'patch' 'pkg' 'provides' 'rpmpackage' 'search' 'selfupdate' 'sync' 'test' 'unarchive' 'uninstall' 'upgrade' 'variants' 'version' ) _arguments -C \ '-v[verbose mode (generate verbose messages)]' \ '-d[debug mode (generate debugging messages)]' \ '-q[quiet mode (suppress messages)]' \ '-D[specify portdir]' \ '-k[keep mode (do not autoclean after install)]' \ '-n[dont follow dependencies in upgrade (only for upgrading)]' \ '-a[upgrade all installed ports (only for upgrading)]' \ '-u[uninstall non-active ports when upgrading and uninstalling]' \ '-f[force mode (ignore state file)]' \ '-s[source-only mode]' \ '-b[binary-only mode]' \ '-o[honor state files older than Portfile]' \ '*::command:->command' \ && return 0 case $state in command) if ((CURRENT == 1)); then state=subcommands else state=portname fi ;; esac case $state in subcommands) _describe -t commands 'port commands' subcmds ;; portname) _describe -t commands 'available ports' portlist ;; esac ================================================ FILE: plugins/macports/macports.plugin.zsh ================================================ #Aliases alias pc="sudo port clean --all installed" alias pi="sudo port install $1" alias psu="sudo port selfupdate" alias puni="sudo port uninstall inactive" alias puo="sudo port upgrade outdated" alias pup="psu && puo" ================================================ FILE: plugins/mysql-macports/mysql-macports.plugin.zsh ================================================ # commands to control local mysql-server installation # paths are for osx installation via macports alias mysqlstart='sudo /opt/local/share/mysql5/mysql/mysql.server start' alias mysqlstop='sudo /opt/local/share/mysql5/mysql/mysql.server stop' alias mysqlrestart='sudo /opt/local/share/mysql5/mysql/mysql.server restart' alias mysqlstatus='mysqladmin5 -u root -p ping' ================================================ FILE: plugins/node/node.plugin.zsh ================================================ # Open the node api for your current version to the optional section. # TODO: Make the section part easier to use. function node-docs { open "http://nodejs.org/docs/$(node --version)/api/all.html#$1" } ================================================ FILE: plugins/npm/_npm ================================================ #compdef npm # Node Package Manager 0.3.15 completion, letting npm do all the completion work _npm() { compadd -- $(_npm_complete $words) } # We want to show all errors of any substance, but never the "npm (not )ok" one. # (Also doesn't consider "ERR! no match found" worth breaking the terminal for.) _npm_complete() { local ask_npm ask_npm=(npm completion --color false --loglevel error -- $@) { _call_program npm $ask_npm 2>&1 >&3 \ | egrep -v '^(npm (not |)ok|ERR! no match found)$' >&2; \ } 3>&1 } _npm "$@" ================================================ FILE: plugins/osx/_man-preview ================================================ #compdef man-preview #autoload _man ================================================ FILE: plugins/osx/osx.plugin.zsh ================================================ # ------------------------------------------------------------------------------ # FILE: osx.plugin.zsh # DESCRIPTION: oh-my-zsh plugin file. # AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) # VERSION: 1.0.1 # ------------------------------------------------------------------------------ function tab() { local command="cd \\\"$PWD\\\"" (( $# > 0 )) && command="${command}; $*" the_app=$( osascript 2>/dev/null </dev/null </dev/null </dev/null </dev/null < 0 )) && qlmanage -p $* &>/dev/null & } function man-preview() { man -t "$@" | open -f -a Preview } function trash() { local trash_dir="${HOME}/.Trash" local temp_ifs=$IFS IFS=$'\n' for item in "$@"; do if [[ -e "$item" ]]; then item_name="$(basename $item)" if [[ -e "${trash_dir}/${item_name}" ]]; then mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")" else mv -f "$item" "${trash_dir}/" fi fi done IFS=$temp_ifs } ================================================ FILE: plugins/perl/perl.plugin.zsh ================================================ # https://github.com/dbbolton # # Below are some useful Perl-related aliases/functions that I use with zsh. # Aliases ################################################################### # perlbrew ######## alias pbi='perlbrew install' alias pbl='perlbrew list' alias pbo='perlbrew off' alias pbs='perlbrew switch' alias pbu='perlbrew use' # Perl ############ # perldoc` alias pd='perldoc' # use perl like awk/sed alias ple='perl -wlne' # show the latest stable release of Perl alias latest-perl='curl -s http://www.perl.org/get.html | perl -wlne '\''if (/perl\-([\d\.]+)\.tar\.gz/) { print $1; exit;}'\' # Functions ################################################################# # newpl - creates a basic Perl script file and opens it with $EDITOR newpl () { # set $EDITOR to 'vim' if it is undefined [[ -z $EDITOR ]] && EDITOR=vim # if the file exists, just open it [[ -e $1 ]] && print "$1 exists; not modifying.\n" && $EDITOR $1 # if it doesn't, make it, and open it [[ ! -e $1 ]] && print '#!/usr/bin/perl'"\n"'use strict;'"\n"'use warnings;'\ "\n\n" > $1 && $EDITOR $1 } # pgs - Perl Global Substitution # find pattern = 1st arg # replace pattern = 2nd arg # filename = 3rd arg pgs() { # [find] [replace] [filename] perl -i.orig -pe 's/'"$1"'/'"$2"'/g' "$3" } # Perl grep, because 'grep -P' is terrible. Lets you work with pipes or files. prep() { # [pattern] [filename unless STDOUT] perl -nle 'print if /'"$1"'/;' $2 } # say - append a newline to 'print' say() { print "$1\n" } ================================================ FILE: plugins/phing/phing.plugin.zsh ================================================ _phing_does_target_list_need_generating () { if [ ! -f .phing_targets ]; then return 0; else accurate=$(stat -f%m .phing_targets) changed=$(stat -f%m build.xml) return $(expr $accurate '>=' $changed) fi } _phing () { if [ -f build.xml ]; then if _phing_does_target_list_need_generating; then phing -l |grep -v ":" |grep -v "^$"|grep -v "\-" > .phing_targets fi compadd `cat .phing_targets` fi } compdef _phing phing ================================================ FILE: plugins/pip/_pip ================================================ #compdef pip #autoload # pip zsh completion, based on homebrew completion _pip_installed() { installed_pkgs=(`pip freeze`) } local -a _1st_arguments _1st_arguments=( 'bundle:Create pybundles (archives containing multiple packages)' 'freeze:Output all currently installed packages (exact versions) to stdout' 'help:Show available commands' 'install:Install packages' 'search:Search PyPI' 'uninstall:Uninstall packages' 'unzip:Unzip individual packages' 'zip:Zip individual packages' ) local expl local -a pkgs installed_pkgs _arguments \ '(--version)--version[Show version number of program and exit]' \ '(-v --verbose)'{-v,--verbose}'[Give more output]' \ '(-q --quiet)'{-q,--quiet}'[Give less output]' \ '(-h --help)'{-h,--help}'[Show help]' \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "pip subcommand" _1st_arguments return fi case "$words[1]" in list) if [[ "$state" == forms ]]; then _pip_installed _requested installed_pkgs expl 'installed packages' compadd -a installed_pkgs fi ;; uninstall) _pip_installed _wanted installed_pkgs expl 'installed packages' compadd -a installed_pkgs ;; esac ================================================ FILE: plugins/pow/pow.plugin.zsh ================================================ # Thanks to Christopher Sexton # https://gist.github.com/965032 function kapow { touch ~/.pow/$1/tmp/restart.txt if [ $? -eq 0 ]; then echo "$fg[yellow]Pow restarting $1...$reset_color" fi } compctl -W ~/.pow -/ kapow ================================================ FILE: plugins/powder/_powder ================================================ #compdef powder #autoload compadd `powder help | grep powder | cut -d " " -f 4` ================================================ FILE: plugins/rails/rails.plugin.zsh ================================================ alias ss='thin --stats "/thin/stats" start' alias sg='ruby script/generate' alias sd='ruby script/destroy' alias sp='ruby script/plugin' alias ssp='ruby script/spec' alias rdbm='rake db:migrate' alias sc='ruby script/console' alias sd='ruby script/server --debugger' alias devlog='tail -f log/development.log' function remote_console() { /usr/bin/env ssh $1 "( cd $2 && ruby script/console production )" } ================================================ FILE: plugins/rails3/rails3.plugin.zsh ================================================ # Rails 3 aliases, backwards-compatible with Rails 2. function _rails_command () { if [ -e "script/server" ]; then ruby script/$@ else ruby script/rails $@ fi } alias rc='_rails_command console' alias rd='_rails_command destroy' alias rdb='_rails_command dbconsole' alias rdbm='rake db:migrate db:test:clone' alias rg='_rails_command generate' alias rp='_rails_command plugin' alias rs='_rails_command server' alias rsd='_rails_command server --debugger' alias devlog='tail -f log/development.log' ================================================ FILE: plugins/redis-cli/_redis-cli ================================================ #compdef redis-cli rec #autoload #redis cli completion, based off homebrew completion (ref. 2011-04-14) local -a _1st_arguments _1st_arguments=( 'append:append a value to a key' 'auth:authenticate to the server' 'bgrewriteeaof:asynchronously rewrite the append-only file' 'bgsave:asynchornously save the dataset to disk' 'blpop:remove and get the first element in a list, or block until one is available' 'brpop:remove and get the last element in a list, or block until one is available' 'brpoplpush:pop a value from a list, push it to another list and return it; or block until one is available' # 'config get:get the value of a configuration parameter' # 'config set:set a configuration parameter to the given value' # 'config resetstat: reset the stats returned by INFO' 'dbsize:return the number of keys in the selected database' # 'debug object:get debugging information about a key' # 'debug setgfault:make the server crash' 'decr:decrement the integer value of a key by one' 'decrby:decrement the integet value of a key by the given number' 'del:delete a key' 'discard:discard all commands issued after MULTI' 'echo:echo the given string' 'exec:execute all commands issued after a MULTI' 'exists:determine if a key exists' 'expire:set the time to live for a key, in seconds' 'expireat:set the expiration for a key as a UNIX timestamp' 'flushall:remove all keys from all databases' 'flushdb:remove all keys from the current database' 'get:get the value of a key' 'getbit:returns the bit value at offset in the string value stored at key' 'getrange:get a substring of the string stored at a key' 'getset:set the string value of a key and return its old value' 'hdel:delete a hash field' 'hexists:determine if a hash field exists' 'hget:get the value of a hash field' 'hgetall:get all the fields and values in a hash' 'hincrby:increment the integer value of a hash field by the given number' 'hkeys:get all the fields in a hash' 'hlen:get the number of fields in a hash' 'hmget:get the values of all the given hash fields' 'hmset:set multiple hash fields to multiple values' 'hset:set the string value of a hash field' 'hsetnx:set the value of a hash field, only if the field does not exist' 'hvals:get all the values in a hash' 'incr:increment the integer value of a key by one' 'incrby:increment the integer value of a key by the given number' 'info:get information and statistics about the server' 'keys:find all keys matching the given pattern' 'lastsave:get the UNIX timestamp of the last successful save to disk' 'lindex:get an element from a list by its index' 'linsert:insert an element before or after another element in a list' 'llen:get the length of a list' 'lpop:remove and get the first element in a list' 'lpush:prepend a value to a list' 'lpushx:prepend a value to a list, only if the list exists' 'lrange:get a range of elements from a list' 'lrem:remove elements from a list' 'lset:set the value of an element in a list by its index' 'ltrim:trim a list to the specified range' 'mget:get the values of all the given keys' 'monitor:listen for all requests received by the server in real time' 'move:move a key to another database' 'mset:set multiple keys to muliple values' 'msetnx:set multiple keys tom ultiple values, only if none of the keys exist' 'multi:mark the start of a transaction block' 'object:inspect the internals of Redis objects' 'persist:remove the expiration from a key' 'ping:ping the server' 'psubscribe:listen for messages published to channels matching the given patterns' 'publish:post a message to a channel' 'punsubscribe:stop listening for messages posted to channels matching the given patterns' 'quit:close the connection' 'randomkey:return a random key from the keyspace' 'rename:rename a key' 'renamenx:rename a key, only if the new key does not exist' 'rpop:remove and get the last element in a list' 'rpoplpush:remove the last element in a list, append it to another list and return it' 'rpush:append a value to a list' 'rpushx:append a value to a list, only if the list exists' 'sadd:add a member to a set' 'save:synchronously save the dataset to disk' 'scard:get the number of members in a set' 'sdiff:subtract multiple sets' 'sdiffstore:subtract multiple sets and store the resulting set in a key' 'select:change the selected database for the current connection' 'set:set the string value of a key' 'setbit:sets or clears the bit at offset in the string value stored at key' 'setex:set the value and expiration of a key' 'setnx:set the value of a key, only if the key does not exist' 'setrange:overwrite part of a string at key starting at the specified offset' 'shutdown:synchronously save the dataset to disk and then shut down the server' 'sinter:intersect multiple sets' 'sinterstore:intersect multiple sets and store the resulting set in a key' 'sismember:determine if a given value is a member of a set' 'slaveof:make the server a slave of another instance, or promote it as master' 'smembers:get all the members in a set' 'smove:move a member from one set to another' 'sort:sort the elements in a list, set or sorted set' 'spop:remove and return a random member from a set' 'srandmember:get a random member from a set' 'srem:remove a member from a set' 'strlen:get the length of the value stored in a key' 'subscribe:listen for messages published to the given channels' 'sunion:add multiple sets' 'sunionstore:add multiple sets and store the resulting set in a key' 'ttl:get the time to live for a key' 'type:determine the type stored at key' 'unsubscribe:stop listening for messages posted to the given channels' 'unwatch:forget about all watched keys' 'watch:watch the given keys to determine execution of the MULTI/EXEC block' 'zadd:add a member to a sorted set, or update its score if it already exists' 'zcard:get the number of members in a sorted set' 'zcount:count the members in a sorted set with scores within the given values' 'zincrby:increment the score of a member in a sorted set' 'zinterstore:intersect multiple sorted sets and store the resulting sorted set in a new key' 'zrange:return a range of members in a sorted set, by index' 'zrangebyscore:return a range of members in a sorted set, by score' 'zrank:determine the index of a member in a sorted set' 'zrem:remove a member from a sorted set' 'zremrangebyrank:remove all members in a sorted set within the given indexes' 'zremrangebyscore:remove all members in a sorted set within the given scores' 'zrevrange:return a range of membrs in a sorted set, by index, with scores ordered from high to low' 'zrevrangebyscore:return a range of members in a sorted set, by score, with scores ordered from high to low' 'zrevrank:determine the index of a member in a sorted set, with scores ordered from high to low' 'zscore:get the score associated with the given member in a sorted set' 'zunionstore:add multiple sorted sets and store te resulting sorted set in a new key' ) local expl _arguments \ '(-v --version)'{-v,--version}'[show version]' \ '(-h --help)'{-h,--help}'[show help]' \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "redis-cli subcommand" _1st_arguments return fi ================================================ FILE: plugins/ruby/ruby.plugin.zsh ================================================ # TODO: Make this compatible with rvm. # Run sudo gem on the system ruby, not the active ruby. alias sgem='sudo gem' # Find ruby file alias rfind='find . -name *.rb | xargs grep -n' ================================================ FILE: plugins/rvm/_rvm ================================================ #compdef rvm local curcontext="$curcontext" state line cmds ret=1 _arguments -C \ '(- 1 *)'{-v,--version}'[display version information]' \ '(-l|--level)'{-l,--level}'+[patch level to use with rvm use / install]:number' \ '(--prefix)--prefix[path for all rvm files (~/.rvm/), with trailing slash!]:path:_files' \ '(--bin)--bin[path for binaries to be placed (~/.rvm/bin/)]:path:_files' \ '(--source)--source[src directory to use (~/.rvm/src/)]:path:_files' \ '(--archives)--archives[directory for downladed files (~/.rvm/archives/)]:path:_files' \ '-S[Specify a script file to attempt to load and run (rubydo)]:file:_files' \ '-e[Execute code from the command line]:code' \ '(-G)-G[root gem path to use]:path:_files' \ '(--gems)--gems[Used to set the gems_flag, use with remove to remove gems]' \ '(--archive)--archive[Used to set the archive_flag, use with remove to remove archive]' \ '(--patch)--patch[With MRI Rubies you may specify one or more full paths to patches]' \ '(-C|--configure)'{-C,--configure}'=[custom configure options]' \ '(--nice)--nice[process niceness (for slow computers, default 0)]:number' \ '(--ree)--ree-options[Options passed directly to ree ./installer on the command line]:options' \ '(--head)--head[with update, updates rvm to git head version]' \ '(--rubygems)--rubygems[with update, updates rubygems for selected ruby]' \ '(--default)--default[with ruby select, sets a default ruby for new shells]' \ '(--debug)--debug[Toggle debug mode on for very verbose output]' \ '(--trace)--trace[Toggle trace mode on to see EVERYTHING rvm is doing]' \ '(--force)--force[Force install, removes old install & source before install]' \ '(--summary)--summary[Used with rubydo to print out a summary of the commands run]' \ '(--latest)--latest[with gemset --dump skips version strings for latest gem]' \ '(--gems)--gems[with uninstall/remove removes gems with the interpreter]' \ '(--docs)--docs[with install, attempt to generate ri after installation]' \ '(--reconfigure)--reconfigure[Force ./configure on install even if Makefile already exists]' \ '1: :->cmds' \ '*: :->args' && ret=0 case $state in cmds) cmds=( "version:show the rvm version installed in rvm_path" "use:setup current shell to use a specific ruby version" "reload:reload rvm source itself (useful after changing rvm source)" "implode:(seppuku) removes the rvm installation completely. This means everything in $rvm_path (~/.rvm)." "update:upgrades rvm to the latest version." "reset:remove current and stored default & system settings." "info :show the *current* environment information for current ruby" "current:print the *current* ruby version and the name of any gemset being used." "debug:show info plus additional information for common issues" "install:install one or many ruby versions" "uninstall:uninstall one or many ruby versions, leaves their sources" "remove:uninstall one or many ruby versions and remove their sources" "migrate:Lets you migrate all gemsets from one ruby to another." "upgrade:Lets you upgrade from one version of a ruby to another, including migrating your gemsets semi-automatically." "wrapper:generates a set of wrapper executables for a given ruby with the specified ruby and gemset combination. Used under the hood for passenger support and the like." "cleanup:Lets you remove stale source folders / archives and other miscellaneous data associated with rvm." "repair:Lets you repair parts of your environment e.g. wrappers, env files and and similar files (e.g. general maintenance)." "snapshot:Lets your backup / restore an rvm installation in a lightweight manner." "disk-usage:Tells you how much disk space rvm install is using." "tools:Provides general information about the ruby environment, primarily useful when scripting rvm." "docs:Tools to make installing ri and rdoc documentation easier." "rvmrc:Tools related to managing rvmrc trust and loading." "exec:runs an arbitrary command as a set operation." "ruby:runs a named ruby file against specified and/or all rubies" "gem:runs a gem command using selected ruby's 'gem'" "rake:runs a rake task against specified and/or all rubies" "tests:runs 'rake test' across selected ruby versions" "specs:runs 'rake spec' across selected ruby versions" "monitor:Monitor cwd for testing, run rake {spec,test} on changes." "gemset:gemsets: http://rvm.beginrescueend.com/gemsets/" "rubygems:Switches the installed version of rubygems for the current ruby." "gemdir:display the path to the current gem directory (GEM_HOME)." "srcdir:display the path to rvm source directory (may be yanked)" "fetch:Performs an archive / src fetch only of the selected ruby." "list:show currently installed rubies, interactive output." "package:Install a dependency package {readline,iconv,zlib,openssl}" "notes:Display notes, with operating system specifics." "export:Temporarily set an environment variable in the current shell." "unexport:Undo changes made to the environment by 'rvm export'." ) _describe -t commands 'rvm command' cmds && ret=0 ;; args) case $line[1] in (use|uninstall|remove|list) _values -S , 'rubies' $(rvm list strings | sed -e 's/ruby-\([^) ]*\)-\([^) ]*\)/ruby-\1-\2 \1-\2 \1/g') default system && ret=0 ;; (install|fetch) _values -S , 'rubies' $(rvm list known_strings) && ret=0 ;; gemset) if (( CURRENT == 3 )); then _values 'gemset_commands' \ 'import' \ 'export' \ 'create' \ 'copy' \ 'rename' \ 'empty' \ 'delete' \ 'name' \ 'dir' \ 'list' \ 'list_all' \ 'gemdir' \ 'install' \ 'pristine' \ 'clear' \ 'use' \ 'update' \ 'unpack' \ 'globalcache' else _values -S , 'gemsets' $(rvm gemset list | grep -v gemset 2>/dev/null) fi ret=0 ;; package) if (( CURRENT == 3 )); then _values 'package_commands' \ 'install' \ 'uninstall' else _values 'packages' \ 'readline' \ 'iconv' \ 'curl' \ 'openssl' \ 'zlib' \ 'autoconf' \ 'ncurses' \ 'pkgconfig' \ 'gettext' \ 'glib' \ 'mono' \ 'llvm' \ 'libxml2' \ 'libxslt' \ 'libyaml' fi ret=0 ;; *) (( ret )) && _message 'no more arguments' ;; esac ;; esac return ret ================================================ FILE: plugins/rvm/rvm.plugin.zsh ================================================ alias rubies='rvm list rubies' alias gemsets='rvm gemset list' local ruby18='ruby-1.8.7-p334' local ruby19='ruby-1.9.2-p180' function rb18 { if [ -z "$1" ]; then rvm use "$ruby18" else rvm use "$ruby18@$1" fi } _rb18() {compadd `ls -1 $rvm_path/gems | grep "^$ruby18@" | sed -e "s/^$ruby18@//" | awk '{print $1}'`} compdef _rb18 rb18 function rb19 { if [ -z "$1" ]; then rvm use "$ruby19" else rvm use "$ruby19@$1" fi } _rb19() {compadd `ls -1 $rvm_path/gems | grep "^$ruby19@" | sed -e "s/^$ruby19@//" | awk '{print $1}'`} compdef _rb19 rb19 function rvm-update { rvm get head rvm reload # TODO: Reload rvm completion? } # TODO: Make this usable w/o rvm. function gems { local current_ruby=`rvm-prompt i v p` local current_gemset=`rvm-prompt g` gem list $@ | sed \ -Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \ -Ee "s|$(echo $rvm_path)|$fg[magenta]\$rvm_path$reset_color|g" \ -Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \ -Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g" } ================================================ FILE: plugins/ssh-agent/ssh-agent.plugin.zsh ================================================ # # INSTRUCTIONS # # To enabled agent forwarding support add the following to # your .zshrc file: # # zstyle :omz:plugins:ssh-agent agent-forwarding on # # To load multiple identies use the identities style, For # example: # # zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github # # # CREDITS # # Based on code from Joseph M. Reagle # http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html # # Agent forwarding support based on ideas from # Florent Thoumie and Jonas Pfenniger # local _plugin__ssh_env=$HOME/.ssh/environment-$HOST local _plugin__forwarding function _plugin__start_agent() { local -a identities # start ssh-agent and setup environment /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env} chmod 600 ${_plugin__ssh_env} . ${_plugin__ssh_env} > /dev/null # load identies zstyle -a :omz:plugins:ssh-agent identities identities echo starting... /usr/bin/ssh-add $HOME/.ssh/${^identities} } # 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 # Add a nifty symlink for screen/tmux if agent forwarding [[ -L $SSH_AUTH_SOCK ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen elif [ -f "${_plugin__ssh_env}" ]; then # Source SSH settings, if applicable . ${_plugin__ssh_env} > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { _plugin__start_agent; } else _plugin__start_agent; fi # tidy up after ourselves unfunction _plugin__start_agent unset _plugin__forwarding unset _plugin__ssh_env ================================================ FILE: plugins/svn/svn.plugin.zsh ================================================ function svn_prompt_info { if [ in_svn ]; then echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ $ZSH_THEME_REPO_NAME_COLOR$(svn_get_repo_name)$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR" fi } function in_svn() { if [[ -d .svn ]]; then echo 1 fi } function svn_get_repo_name { if [ in_svn ]; then svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" | sed "s/\/.*$//" fi } function svn_get_rev_nr { if [ in_svn ]; then svn info 2> /dev/null | sed -n s/Revision:\ //p fi } function svn_dirty_choose { if [ in_svn ]; then s=$(svn status|grep -E '^\s*[ACDIM!?L]' 2>/dev/null) if [ $s ]; then echo $1 else echo $2 fi fi } function svn_dirty { svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN } ================================================ FILE: plugins/taskwarrior/_task ================================================ #compdef task # # zsh completion for taskwarrior # # Copyright 2010 - 2011 Johannes Schlatow # Copyright 2009 P.C. Shyamshankar # All rights reserved. # # This script is part of the taskwarrior project. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the # # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, # Boston, MA # 02110-1301 # USA # typeset -g _task_cmds _task_projects _task_tags _task_config _task_modifiers _task_projects=($(task _projects)) _task_tags=($(task _tags)) _task_ids=($(task _ids)) _task_config=($(task _config)) _task_modifiers=( 'before' \ 'after' \ 'none' \ 'any' \ 'is' \ 'isnt' \ 'has' \ 'hasnt' \ 'startswith' \ 'endswith' \ 'word' \ 'noword' ) _task_cmds=($(task _commands)) _task_zshcmds=( ${(f)"$(task _zshcommands)"} ) _task_idCmds=( 'append' \ 'prepend' \ 'annotate' \ 'denotate' \ 'edit' \ 'duplicate' \ 'info' \ 'start' \ 'stop' \ 'done' ) _task_idCmdsDesc=( 'append:Appends more description to an existing task.' \ 'prepend:Prepends more description to an existing task.' \ 'annotate:Adds an annotation to an existing task.' \ 'denotate:Deletes an annotation of an existing task.' \ 'edit:Launches an editor to let you modify a task directly.' \ 'duplicate:Duplicates the specified task, and allows modifications.' \ 'info:Shows all data, metadata for specified task.' \ 'start:Marks specified task as started.' \ 'stop:Removes the start time from a task.' \ 'done:Marks the specified task as completed.' ) _task() { _arguments -s -S \ "*::task command:_task_commands" return 0 } local -a reply args word word=$'[^\0]#\0' # priorities local -a task_priorities _regex_words values 'task priorities' \ 'H:High' \ 'M:Middle' \ 'L:Low' task_priorities=("$reply[@]") # projects local -a task_projects task_projects=( /"$word"/ ":values:task projects:compadd -a _task_projects" ) local -a _task_dates _regex_words values 'task dates' \ 'tod*ay:Today' \ 'yes*terday:Yesterday' \ 'tom*orrow:Tomorrow' \ 'sow:Start of week' \ 'soww:Start of work week' \ 'socw:Start of calendar week' \ 'som:Start of month' \ 'soy:Start of year' \ 'eow:End of week' \ 'eoww:End of work week' \ 'eocw:End of calendar week' \ 'eom:End of month' \ 'eoy:End of year' \ 'mon:Monday' \ 'tue:Tuesday'\ 'wed:Wednesday' \ 'thu:Thursday' \ 'fri:Friday' \ 'sat:Saturday' \ 'sun:Sunday' _task_dates=("$reply[@]") local -a _task_reldates _regex_words values 'task reldates' \ 'hrs:n hours' \ 'day:n days' \ '1st:first' \ '2nd:second' \ '3rd:third' \ 'th:4th, 5th, etc.' \ 'wks:weeks' _task_reldates=("$reply[@]") task_dates=( \( "$_task_dates[@]" \| \( /$'[0-9][0-9]#'/- \( "$_task_reldates[@]" \) \) \) ) _regex_words values 'task frequencies' \ 'daily:Every day' \ 'day:Every day' \ 'weekdays:Every day skipping weekend days' \ 'weekly:Every week' \ 'biweekly:Every two weeks' \ 'fortnight:Every two weeks' \ 'quarterly:Every three months' \ 'semiannual:Every six months' \ 'annual:Every year' \ 'yearly:Every year' \ 'biannual:Every two years' \ 'biyearly:Every two years' _task_freqs=("$reply[@]") local -a _task_frequencies _regex_words values 'task frequencies' \ 'd:days' \ 'w:weeks' \ 'q:quarters' \ 'y:years' _task_frequencies=("$reply[@]") task_freqs=( \( "$_task_freqs[@]" \| \( /$'[0-9][0-9]#'/- \( "$_task_frequencies[@]" \) \) \) ) # attributes local -a task_attributes _regex_words -t ':' default 'task attributes' \ 'pro*ject:Project name:$task_projects' \ 'du*e:Due date:$task_dates' \ 'wa*it:Date until task becomes pending:$task_dates' \ 're*cur:Recurrence frequency:$task_freqs' \ 'pri*ority:priority:$task_priorities' \ 'un*til:Recurrence end date:$task_dates' \ 'fg:Foreground color' \ 'bg:Background color' \ 'li*mit:Desired number of rows in report' task_attributes=("$reply[@]") args=( \( "$task_attributes[@]" \| \( /'(project|due|wait|recur|priority|until|fg|bg|limit).'/- \( /$'[^:]#:'/ ":default:modifiers:compadd -S ':' -a _task_modifiers" \) \) \| \( /'(rc).'/- \( /$'[^:]#:'/ ":arguments:config:compadd -S ':' -a _task_config" \) \) \| \( /'(+|-)'/- \( /"$word"/ ":values:remove tag:compadd -a _task_tags" \) \) \| \( /"$word"/ \) \) \# ) _regex_arguments _task_attributes "${args[@]}" ## task commands # default completion (( $+functions[_task_default] )) || _task_default() { _task_attributes "$@" } # commands expecting an ID (( $+functions[_task_id] )) || _task_id() { if (( CURRENT < 3 )); then # update IDs _task_zshids=( ${(f)"$(task _zshids)"} ) _describe -t values 'task IDs' _task_zshids else _task_attributes "$@" fi } # merge completion (( $+functions[_task_merge] )) || _task_merge() { # TODO match URIs in .taskrc _files } # push completion (( $+functions[_task_push] )) || _task_push() { # TODO match URIs in .taskrc _files } # pull completion (( $+functions[_task_pull] )) || _task_pull() { # TODO match URIs in .taskrc _files } # modify (task [0-9]* ...) completion (( $+functions[_task_modify] )) || _task_modify() { _describe -t commands 'task command' _task_idCmdsDesc _task_attributes "$@" } ## first level completion => task sub-command completion (( $+functions[_task_commands] )) || _task_commands() { local cmd ret=1 if (( CURRENT == 1 )); then # update IDs _task_zshids=( ${(f)"$(task _zshids)"} ) _describe -t commands 'task command' _task_zshcmds _describe -t values 'task IDs' _task_zshids # TODO match more than one ID elif [[ $words[1] =~ ^[0-9]*$ ]] then _call_function ret _task_modify return ret else # local curcontext="${curcontext}" # cmd="${_task_cmds[(r)$words[1]:*]%%:*}" cmd="${_task_cmds[(r)$words[1]]}" idCmd="${(M)_task_idCmds[@]:#$words[1]}" if (( $#cmd )); then # curcontext="${curcontext%:*:*}:task-${cmd}" if (( $#idCmd )); then _call_function ret _task_id else _call_function ret _task_${cmd} || _call_function ret _task_default || _message "No command remaining." fi else _message "Unknown subcommand ${cmd}" fi return ret fi } ================================================ FILE: plugins/taskwarrior/taskwarrior.plugin.zsh ================================================ ################################################################################ # Author: Pete Clark # Email: pete[dot]clark[at]gmail[dot]com # Version: 0.1 (05/24/2011) # License: WTFPL # # This oh-my-zsh plugin adds smart tab completion for # TaskWarrior. It uses the zsh tab completion # script (_task) distributed with TaskWarrior for the completion definitions. # # Typing task[tabtab] will give you a list of current tasks, task 66[tabtab] # gives a list of available modifications for that task, etc. ################################################################################ zstyle ':completion:*:*:task:*' verbose yes zstyle ':completion:*:*:task:*:descriptions' format '%U%B%d%b%u' zstyle ':completion:*:*:task:*' group-name '' alias t=task compdef _task t=task ================================================ FILE: plugins/textmate/textmate.plugin.zsh ================================================ alias et='mate .' alias ett='mate app config lib db public spec test Rakefile Capfile Todo' alias etp='mate app config lib db public spec test vendor/plugins vendor/gems Rakefile Capfile Todo' alias etts='mate app config lib db public script spec test vendor/plugins vendor/gems Rakefile Capfile Todo' # Edit Ruby app in TextMate alias mr='mate CHANGELOG app config db lib public script spec test' function tm() { cd $1 mate $1 } ================================================ FILE: plugins/thor/_thor ================================================ #compdef thor #autoload compadd `thor list | grep thor | cut -d " " -f 2` ================================================ FILE: plugins/vagrant/_vagrant ================================================ #compdef vagrant #autoload # vagrant zsh completion local -a _1st_arguments _1st_arguments=( 'box:Box commands' 'destroy:Destroys the vagrant environment' 'halt:Halts the currently running vagrant environment' 'help:[TASK] Describe available tasks or one specific task' 'init:[box_name] [box_url] Initializes current folder for Vagrant usage' 'package:Packages a vagrant environment for distribution' 'provision:Run the provisioner' 'reload:Reload the vagrant environment' 'resume:Resumes a suspend vagrant environment' '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.' 'suspend:Suspends the currently running vagrant environment' 'up:Creates the vagrant environment' 'version:Prints the Vagrant version information' ) local -a _box_arguments _box_arguments=( 'add:NAME URI Add a box to the system' 'help:COMMAND Describe subcommands or one specific subcommand' 'list:Lists all installed boxes' 'remove:NAME Remove a box from the system' 'repackage:NAME Repackage an installed box into a `.box` file.' ) __task_list () { local expl declare -a tasks tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version) _wanted tasks expl 'help' compadd $tasks } __box_list () { _wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g') } __vagrant-box () { local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) _describe -t commands "gem subcommand" _box_arguments return ;; (options) case $line[1] in (repackage|remove) _arguments ':feature:__box_list' ;; esac ;; esac } local expl local -a boxes installed_boxes local curcontext="$curcontext" state line typeset -A opt_args _arguments -C \ ':command:->command' \ '*::options:->options' case $state in (command) _describe -t commands "gem subcommand" _1st_arguments return ;; (options) case $line[1] in (help) _arguments ':feature:__task_list' ;; (box) __vagrant-box ;; esac ;; esac ================================================ FILE: plugins/vi-mode/vi-mode.plugin.zsh ================================================ function zle-line-init zle-keymap-select { zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select bindkey -v # if mode indicator wasn't setup by theme, define default if [[ "$MODE_INDICATOR" == "" ]]; then MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}" fi function vi_mode_prompt_info() { echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}" } # define right prompt, if it wasn't defined by a theme if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then RPS1='$(vi_mode_prompt_info)' fi ================================================ FILE: plugins/yum/yum.plugin.zsh ================================================ ## Aliases alias ys="yum search" # search package alias yp="yum info" # show package info alias yl="yum list" # list packages alias yli="yum list installed" # print all installed packages alias yu="sudo yum update" # upgrate packages alias yi="sudo yum install" # install package alias yr="sudo yum remove" # remove package alias yrl="sudo yum remove --remove-leaves" # remove package and leaves alias yc="sudo yum clean all" # clean cache ================================================ FILE: templates/zshrc.zsh-template ================================================ # Path to your oh-my-zsh configuration. ZSH=$HOME/.oh-my-zsh # Set name of the theme to load. # Look in ~/.oh-my-zsh/themes/ # Optionally, if you set this to "random", it'll load a random theme each # time that oh-my-zsh is loaded. export ZSH_THEME="random" # Set to this to use case-sensitive completion # CASE_SENSITIVE="true" # Comment this out to disable weekly auto-update checks # DISABLE_AUTO_UPDATE="true" # Uncomment following line if you want to disable colors in ls # DISABLE_LS_COLORS="true" # Uncomment following line if you want to disable autosetting terminal title. # DISABLE_AUTO_TITLE="true" # Uncomment following line if you want disable red dots displayed while waiting for completion # DISABLE_COMPLETION_WAITING_DOTS="true" # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Example format: plugins=(rails git textmate ruby lighthouse) plugins=(git) source $ZSH/oh-my-zsh.sh # Customize to your needs... ================================================ FILE: themes/Soliah.zsh-theme ================================================ PROMPT='%{$fg[blue]%}%n%{$reset_color%} on %{$fg[red]%}%M%{$reset_color%} in %{$fg[blue]%}%~%b%{$reset_color%}$(git_time_since_commit)$(check_git_prompt_info) $ ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" # Text to display if the branch is dirty ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}" # Text to display if the branch is clean ZSH_THEME_GIT_PROMPT_CLEAN="" # Colors vary depending on time lapsed. ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}" ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}" # Git sometimes goes into a detached head state. git_prompt_info doesn't # return anything in this case. So wrap it in another function and check # for an empty string. function check_git_prompt_info() { if git rev-parse --git-dir > /dev/null 2>&1; then if [[ -z $(git_prompt_info) ]]; then echo "%{$fg[magenta]%}detached-head%{$reset_color%})" else echo "$(git_prompt_info)" fi fi } # 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 } # Determine the time since last commit. If branch is clean, # use a neutral color, otherwise colors will vary according to time. function git_time_since_commit() { if git rev-parse --git-dir > /dev/null 2>&1; then # Only proceed if there is actually a commit. if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then # Get the last commit. last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` now=`date +%s` seconds_since_last_commit=$((now-last_commit)) # Totals MINUTES=$((seconds_since_last_commit / 60)) HOURS=$((seconds_since_last_commit/3600)) # Sub-hours and sub-minutes DAYS=$((seconds_since_last_commit / 86400)) SUB_HOURS=$((HOURS % 24)) SUB_MINUTES=$((MINUTES % 60)) if [[ -n $(git status -s 2> /dev/null) ]]; then if [ "$MINUTES" -gt 30 ]; then COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" elif [ "$MINUTES" -gt 10 ]; then COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" fi if [ "$HOURS" -gt 24 ]; then echo "($(rvm_gemset)$COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|" elif [ "$MINUTES" -gt 60 ]; then echo "($(rvm_gemset)$COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|" else echo "($(rvm_gemset)$COLOR${MINUTES}m%{$reset_color%}|" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" echo "($(rvm_gemset)$COLOR~|" fi fi } ================================================ FILE: themes/afowler.zsh-theme ================================================ if [ $UID -eq 0 ]; then CARETCOLOR="red"; else CARETCOLOR="blue"; fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%m %{${fg_bold[blue]}%}:: %{$reset_color%}%{${fg[green]}%}%3~ $(git_prompt_info)%{${fg_bold[$CARETCOLOR]}%}»%{${reset_color}%} ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/alanpeabody.zsh-theme ================================================ local user='%{$fg[magenta]%}%n@%{$fg[magenta]%}%m%{$reset_color%}' local pwd='%{$fg[blue]%}%~%{$reset_color%}' local rvm='%{$fg[green]%}‹$(rvm-prompt i v g)›%{$reset_color%}' local return_code='%(?..%{$fg[red]%}%? ↵%{$reset_color%})' local git_branch='$(git_prompt_status)%{$reset_color%}$(git_prompt_info)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" PROMPT="${user} ${pwd}$ " RPROMPT="${return_code} ${git_branch} ${rvm}" ================================================ FILE: themes/arrow.zsh-theme ================================================ if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="yellow"; fi PROMPT='%{$fg[$NCOLOR]%}%c ➤ %{$reset_color%}' RPROMPT='%{$fg[$NCOLOR]%}%p $(git_prompt_info)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY="*" ZSH_THEME_GIT_PROMPT_CLEAN="" # See http://geoff.greer.fm/lscolors/ export LSCOLORS="exfxcxdxbxbxbxbxbxbxbx" export LS_COLORS="di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=31;40:cd=31;40:su=31;40:sg=31;40:tw=31;40:ow=31;40:" ================================================ FILE: themes/aussiegeek.zsh-theme ================================================ PROMPT='$fg_bold[blue][ $fg[red]%t $fg_bold[blue]] $fg_bold[blue] [ $fg[red]%n@%m:%~$(git_prompt_info)$fg[yellow]$(rvm_prompt_info)$fg_bold[blue] ]$reset_color $ ' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="$fg_bold[green](" ZSH_THEME_GIT_PROMPT_SUFFIX=")" ZSH_THEME_GIT_PROMPT_CLEAN="✔" ZSH_THEME_GIT_PROMPT_DIRTY="✗" ================================================ FILE: themes/awesomepanda.zsh-theme ================================================ # the svn plugin has to be activated for this to work. PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}$(svn_prompt_info)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%})%{$fg[yellow]%} ✗ %{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}) " ZSH_PROMPT_BASE_COLOR="%{$fg_bold[blue]%}" ZSH_THEME_REPO_NAME_COLOR="%{$fg_bold[red]%}" ZSH_THEME_SVN_PROMPT_PREFIX="svn:(" ZSH_THEME_SVN_PROMPT_SUFFIX=")" ZSH_THEME_SVN_PROMPT_DIRTY="%{$fg[red]%} ✘ %{$reset_color%}" ZSH_THEME_SVN_PROMPT_CLEAN=" " ================================================ FILE: themes/bira.zsh-theme ================================================ # ZSH Theme - Preview: http://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" local user_host='%{$terminfo[bold]$fg[green]%}%n@%m%{$reset_color%}' local current_dir='%{$terminfo[bold]$fg[blue]%} %~%{$reset_color%}' local rvm_ruby='%{$fg[red]%}‹$(rvm-prompt i v g)›%{$reset_color%}' local git_branch='$(git_prompt_info)%{$reset_color%}' PROMPT="╭─${user_host} ${current_dir} ${rvm_ruby} ${git_branch} ╰─%B$%b " RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/blinks.zsh-theme ================================================ # https://github.com/blinks zsh theme function _prompt_char() { if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then echo "%{%F{blue}%}±%{%f%k%b%}" else echo ' ' fi } ZSH_THEME_GIT_PROMPT_PREFIX=" [%{%B%F{blue}%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{%f%k%b%K{black}%B%F{green}%}]" ZSH_THEME_GIT_PROMPT_DIRTY=" %{%F{red}%}*%{%f%k%b%}" ZSH_THEME_GIT_PROMPT_CLEAN="" PROMPT='%{%f%k%b%} %{%K{black}%B%F{green}%}%n%{%B%F{blue}%}@%{%B%F{cyan}%}%m%{%B%F{green}%} %{%b%F{yellow}%K{black}%}%~%{%B%F{green}%}$(git_prompt_info)%E%{%f%k%b%} %{%K{black}%}$(_prompt_char)%{%K{black}%} %#%{%f%k%b%} ' RPROMPT='!%{%B%F{cyan}%}%!%{%f%k%b%}' ================================================ FILE: themes/candy.zsh-theme ================================================ PROMPT=$'%{$fg_bold[green]%}%n@%m %{$fg[blue]%}%D{[%I:%M:%S]} %{$reset_color%}%{$fg[white]%}[%~]%{$reset_color%} $(git_prompt_info)\ %{$fg[blue]%}->%{$fg_bold[blue]%} %#%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}*%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_CLEAN="" ================================================ FILE: themes/clean.zsh-theme ================================================ if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="white"; fi PROMPT='%{$fg[$NCOLOR]%}%B%n%b%{$reset_color%}:%{$fg[blue]%}%B%c/%b%{$reset_color%} $(git_prompt_info)%(!.#.$) ' RPROMPT='[%*]' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg_no_bold[yellow]%}%B" ZSH_THEME_GIT_PROMPT_SUFFIX="%b%{$fg_bold[blue]%})%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%}✗" # LS colors, made with http://geoff.greer.fm/lscolors/ export LSCOLORS="Gxfxcxdxbxegedabagacad" export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:' ================================================ FILE: themes/cloud.zsh-theme ================================================ PROMPT='%{$fg_bold[cyan]%}☁ %{$fg_bold[green]%}%p %{$fg[green]%}%c %{$fg_bold[cyan]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}[%{$fg[cyan]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}] %{$fg[yellow]%}⚡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}]" ================================================ FILE: themes/cypher.zsh-theme ================================================ # Based on evan's prompt # Shows the exit status of the last command if non-zero # Uses "#" instead of "»" when running with elevated privileges PROMPT="%m %{${fg_bold[red]}%}:: %{${fg[green]}%}%3~%(0?. . ${fg[red]}%? )%{${fg[blue]}%}»%{${reset_color}%} " ================================================ FILE: themes/dallas.zsh-theme ================================================ # Personalized! # Grab the current date (%D) and time (%T) wrapped in {}: {%D %T} DALLAS_CURRENT_TIME_="%{$fg[white]%}{%{$fg[yellow]%}%D %T%{$fg[white]%}}%{$reset_color%}" # Grab the current version of ruby in use (via RVM): [ruby-1.8.7] DALLAS_CURRENT_RUBY_="%{$fg[white]%}[%{$fg[magenta]%}\$(~/.rvm/bin/rvm-prompt i v)%{$fg[white]%}]%{$reset_color%}" # Grab the current machine name: muscato DALLAS_CURRENT_MACH_="%{$fg[green]%}%m%{$fg[white]%}:%{$reset_color%}" # Grab the current filepath, use shortcuts: ~/Desktop # Append the current git branch, if in a git repository: ~aw@master DALLAS_CURRENT_LOCA_="%{$fg[cyan]%}%~\$(git_prompt_info)%{$reset_color%}" # Grab the current username: dallas DALLAS_CURRENT_USER_="%{$fg[red]%}%n%{$reset_color%}" # Use a % for normal users and a # for privelaged (root) users. DALLAS_PROMPT_CHAR_="%{$fg[white]%}%(!.#.%%)%{$reset_color%}" # For the git prompt, use a white @ and blue text for the branch name ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}@%{$fg[blue]%}" # Close it all off by resetting the color and styles. ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" # Do nothing if the branch is clean (no changes). ZSH_THEME_GIT_PROMPT_CLEAN="" # Add 3 cyan ✗s if this branch is diiirrrty! Dirty branch! ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[cyan]%}✗✗✗" # Put it all together! PROMPT="$DALLAS_CURRENT_TIME_$DALLAS_CURRENT_RUBY_$DALLAS_CURRENT_MACH_$DALLAS_CURRENT_LOCA_ $DALLAS_CURRENT_USER_$DALLAS_PROMPT_CHAR_ " ================================================ FILE: themes/darkblood.zsh-theme ================================================ # meh. Dark Blood Rewind, a new beginning. PROMPT=$'%{$fg[red]%}┌[%{$fg_bold[white]%}%n%{$reset_color%}%{$fg[red]%}@%{$fg_bold[white]%}%m%{$reset_color%}%{$fg[red]%}] [%{$fg_bold[white]%}/dev/%y%{$reset_color%}%{$fg[red]%}] %{$(git_prompt_info)%}%(?,,%{$fg[red]%}[%{$fg_bold[white]%}%?%{$reset_color%}%{$fg[red]%}]) %{$fg[red]%}└[%{$fg_bold[white]%}%~%{$reset_color%}%{$fg[red]%}]>%{$reset_color%} ' PS2=$' %{$fg[red]%}|>%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[red]%}[%{$fg_bold[white]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}%{$fg[red]%}] " ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}⚡%{$reset_color%}" ================================================ FILE: themes/daveverwer.zsh-theme ================================================ # Copied and modified from the oh-my-zsh theme from geoffgarside # Red server name, green cwd, blue git status PROMPT='%{$fg[red]%}%m%{$reset_color%}:%{$fg[green]%}%c%{$reset_color%}$(git_prompt_info) %(!.#.$) ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[blue]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}" ================================================ FILE: themes/dieter.zsh-theme ================================================ # the idea of this theme is to contain a lot of info in a small string, by # compressing some parts and colorcoding, which bring useful visual cues, # while limiting the amount of colors and such to keep it easy on the eyes. # When a command exited >0, the timestamp will be in red and the exit code # will be on the right edge. # The exit code visual cues will only display once. # (i.e. they will be reset, even if you hit enter a few times on empty command prompts) typeset -A host_repr # translate hostnames into shortened, colorcoded strings host_repr=('dieter-ws-a7n8x-arch' "%{$fg_bold[green]%}ws" 'dieter-p4sci-arch' "%{$fg_bold[blue]%}p4") # local time, color coded by last return code time_enabled="%(?.%{$fg[green]%}.%{$fg[red]%})%*%{$reset_color%}" time_disabled="%{$fg[green]%}%*%{$reset_color%}" time=$time_enabled # user part, color coded by privileges local user="%(!.%{$fg[blue]%}.%{$fg[blue]%})%n%{$reset_color%}" # Hostname part. compressed and colorcoded per host_repr array # if not found, regular hostname in default color local host="@${host_repr[$(hostname)]:-$(hostname)}%{$reset_color%}" # Compacted $PWD local pwd="%{$fg[blue]%}%c%{$reset_color%}" PROMPT='${time} ${user}${host} ${pwd} $(git_prompt_info)' # i would prefer 1 icon that shows the "most drastic" deviation from HEAD, # but lets see how this works out ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%} %{$fg[yellow]%}?%{$fg[green]%}%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}" # elaborate exitcode on the right when >0 return_code_enabled="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" return_code_disabled= return_code=$return_code_enabled RPS1='${return_code}' function accept-line-or-clear-warning () { if [[ -z $BUFFER ]]; then time=$time_disabled return_code=$return_code_disabled else time=$time_enabled return_code=$return_code_enabled fi zle accept-line } zle -N accept-line-or-clear-warning bindkey '^M' accept-line-or-clear-warning ================================================ FILE: themes/dogenpunk.zsh-theme ================================================ # ----------------------------------------------------------------------------- # FILE: dogenpunk.zsh-theme # DESCRIPTION: oh-my-zsh theme file. # AUTHOR: Matthew Nelson (dogenpunk@gmail.com) # VERSION: 0.1 # SCREENSHOT: coming soon # ----------------------------------------------------------------------------- MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}" local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}" PROMPT='%{$fg[blue]%}%m%{$reset_color%}%{$fg_bold[white]%} ओम् %{$reset_color%}%{$fg[cyan]%}%~:%{$reset_color%}$(git_time_since_commit)$(git_prompt_info) %{$fg[red]%}%!%{$reset_color%} $(prompt_char) ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[green]%}git%{$reset_color%}@%{$bg[white]%}%{$fg[black]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="" RPROMPT='${return_status}$(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" function prompt_char() { git branch >/dev/null 2>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" && return hg root >/dev/null 2>/dev/null && echo "%{$fg_bold[red]%}☿%{$reset_color%}" && return echo "%{$fg[cyan]%}◯ %{$reset_color%}" } # Colors vary depending on time lapsed. ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}" ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}" # Determine the time since last commit. If branch is clean, # use a neutral color, otherwise colors will vary according to time. function git_time_since_commit() { if git rev-parse --git-dir > /dev/null 2>&1; then # Only proceed if there is actually a commit. if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then # Get the last commit. last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` now=`date +%s` seconds_since_last_commit=$((now-last_commit)) # Totals MINUTES=$((seconds_since_last_commit / 60)) HOURS=$((seconds_since_last_commit/3600)) # Sub-hours and sub-minutes DAYS=$((seconds_since_last_commit / 86400)) SUB_HOURS=$((HOURS % 24)) SUB_MINUTES=$((MINUTES % 60)) if [[ -n $(git status -s 2> /dev/null) ]]; then if [ "$MINUTES" -gt 30 ]; then COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" elif [ "$MINUTES" -gt 10 ]; then COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" fi if [ "$HOURS" -gt 24 ]; then echo "($COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|" elif [ "$MINUTES" -gt 60 ]; then echo "($COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|" else echo "($COLOR${MINUTES}m%{$reset_color%}|" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" echo "($COLOR~|" fi fi } ================================================ FILE: themes/dpoggi.zsh-theme ================================================ if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[$NCOLOR]%}%n%{$reset_color%}@%{$fg[cyan]%}%m\ %{$reset_color%}:%{$fg[magenta]%}%~\ $(git_prompt_info) \ %{$fg[red]%}%(!.#.»)%{$reset_color%} ' PROMPT2='%{$fg[red]%}\ %{$reset_color%}' RPS1='${return_code}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}○%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}⚡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[yellow]%})%{$reset_color%}" ================================================ FILE: themes/dst.zsh-theme ================================================ ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!" ZSH_THEME_GIT_PROMPT_CLEAN="" function prompt_char { if [ $UID -eq 0 ]; then echo "%{$fg[red]%}#%{$reset_color%}"; else echo $; fi } PROMPT='%(?, ,%{$fg[red]%}FAIL%{$reset_color%} ) %{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}: %{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) %_ $(prompt_char) ' RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}' ================================================ FILE: themes/dstufft.zsh-theme ================================================ function prompt_char { git branch >/dev/null 2>/dev/null && echo '±' && return hg root >/dev/null 2>/dev/null && echo 'Hg' && return echo '○' } function virtualenv_info { [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' } PROMPT=' %{$fg[magenta]%}%n%{$reset_color%} at %{$fg[yellow]%}%m%{$reset_color%} in %{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(git_prompt_info) $(virtualenv_info)$(prompt_char) ' ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}!" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?" ZSH_THEME_GIT_PROMPT_CLEAN="" ================================================ FILE: themes/duellj.zsh-theme ================================================ # user, host, full path, and time/date # on two lines for easier vgrepping # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;34m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}%!%{\e[0;34m%}%B]%b%{\e[0m%} %{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]%{\e[0m%}%b ' RPROMPT='[%*]' PS2=$' \e[0;34m%}%B>%{\e[0m%}%b ' ================================================ FILE: themes/eastwood.zsh-theme ================================================ #RVM settings if [[ -s ~/.rvm/scripts/rvm ]] ; then RPS1="%{$fg[yellow]%}rvm:%{$reset_color%}%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt)%{$reset_color%} $EPS1" fi ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="" #Customized git status, oh-my-zsh currently does not allow render dirty status before branch git_custom_status() { local cb=$(current_branch) if [ -n "$cb" ]; then echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX" fi } PROMPT='$(git_custom_status)%{$fg[cyan]%}[%~% ]%{$reset_color%}%B$%b ' ================================================ FILE: themes/edvardm.zsh-theme ================================================ PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg_bold[white]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/evan.zsh-theme ================================================ # Evan describes this sexy prompt as: "a skinny, topless prompt" PROMPT='%m :: %2~ %B»%b ' ================================================ FILE: themes/example.zsh-theme ================================================ # Found on the ZshWiki # http://zshwiki.org/home/config/prompt # PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% " ================================================ FILE: themes/fishy.zsh-theme ================================================ # ZSH Theme emulating the Fish shell's default prompt. local user_color='green'; [ $UID -eq 0 ] && user_color='red' PROMPT='%n@%m %{$fg[$user_color]%}%~%{$reset_color%}%(!.#.>) ' PROMPT2='%{$fg[red]%}\ %{$reset_color%}' local return_status="%{$fg_bold[red]%}%(?..%?)%{$reset_color%}" RPROMPT='${return_status}$(git_prompt_info)$(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX=" " ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_ADDED="%{$fg_bold[green]%}+" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg_bold[blue]%}!" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg_bold[red]%}-" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg_bold[magenta]%}>" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg_bold[yellow]%}#" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[cyan]%}?" ================================================ FILE: themes/flazz.zsh-theme ================================================ if [ "$(whoami)" = "root" ] then CARETCOLOR="red" else CARETCOLOR="blue" fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%m%{${fg_bold[magenta]}%} :: %{$reset_color%}%{${fg[green]}%}%3~ $(git_prompt_info)%{${fg_bold[$CARETCOLOR]}%}%#%{${reset_color}%} ' RPS1='$(vi_mode_prompt_info) ${return_code}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[cyan]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" MODE_INDICATOR="%{$fg_bold[magenta]%}<%{$reset_color%}%{$fg[magenta]%}<<%{$reset_color%}" # TODO use 265 colors #MODE_INDICATOR="$FX[bold]$FG[020]<$FX[no_bold]%{$fg[blue]%}<<%{$reset_color%}" # TODO use two lines if git ================================================ FILE: themes/fletcherm.zsh-theme ================================================ # Copied from old version of tonotdo's theme. LSCOLORS modified. PROMPT='%{$fg_no_bold[cyan]%}%n%{$fg_no_bold[magenta]%}•%{$fg_no_bold[green]%}%3~$(git_prompt_info)%{$reset_color%}» ' RPROMPT='[%*]' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg_no_bold[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[blue]%})" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[yellow]%}⚡%{$fg_bold[blue]%})" export LSCOLORS="exfxcxdxbxegedabagacad" export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:' ================================================ FILE: themes/frisk.zsh-theme ================================================ PROMPT=$' %{$fg[blue]%}%/%{$reset_color%} $(git_prompt_info)%{$fg[white]%}[%n@%m]%{$reset_color%} %{$fg[white]%}[%T]%{$reset_color%} %{$fg_bold[black]%}>%{$reset_color%} ' PROMPT2="%{$fg_blod[black]%}%_> %{$reset_color%}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}*%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_CLEAN="" ================================================ FILE: themes/funky.zsh-theme ================================================ # Taken from Tassilo's Blog # http://tsdh.wordpress.com/2007/12/06/my-funky-zsh-prompt/ local blue_op="%{$fg[blue]%}[%{$reset_color%}" local blue_cp="%{$fg[blue]%}]%{$reset_color%}" local path_p="${blue_op}%~${blue_cp}" local user_host="${blue_op}%n@%m${blue_cp}" local ret_status="${blue_op}%?${blue_cp}" local hist_no="${blue_op}%h${blue_cp}" local smiley="%(?,%{$fg[green]%}:%)%{$reset_color%},%{$fg[red]%}:(%{$reset_color%})" PROMPT="╭─${path_p}─${user_host}─${ret_status}─${hist_no} ╰─${blue_op}${smiley}${blue_cp} %# " local cur_cmd="${blue_op}%_${blue_cp}" PROMPT2="${cur_cmd}> " ================================================ FILE: themes/fwalch.zsh-theme ================================================ PROMPT='%{$fg_bold[green]%}%p %{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX=" (%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/gallifrey.zsh-theme ================================================ # ZSH Theme - Preview: http://img.skitch.com/20091113-qqtd3j8xinysujg5ugrsbr7x1y.jpg local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[green]%}%m%{$reset_color%} %2~ $(git_prompt_info)%{$reset_color%}%B»%b ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/gallois.zsh-theme ================================================ ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="" #Customized git status, oh-my-zsh currently does not allow render dirty status before branch git_custom_status() { local cb=$(current_branch) if [ -n "$cb" ]; then echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX" fi } #RVM and git settings if [[ -s ~/.rvm/scripts/rvm ]] ; then RPS1='$(git_custom_status)%{$fg[red]%}[`~/.rvm/bin/rvm-prompt`]%{$reset_color%} $EPS1' fi PROMPT='%{$fg[cyan]%}[%~% ]%(?.%{$fg[green]%}.%{$fg[red]%})%B$%b ' ================================================ FILE: themes/garyblessington.zsh-theme ================================================ PROMPT='%{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}: ' ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg[blue]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[red]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/gentoo.zsh-theme ================================================ PROMPT='%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) $(git_prompt_info)%#%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX=") " ================================================ FILE: themes/geoffgarside.zsh-theme ================================================ # PROMPT="[%*] %n:%c $(git_prompt_info)%(!.#.$) " PROMPT='[%*] %{$fg[cyan]%}%n%{$reset_color%}:%{$fg[green]%}%c%{$reset_color%}$(git_prompt_info) %(!.#.$) ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[yellow]%}git:(" ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}" ================================================ FILE: themes/gozilla.zsh-theme ================================================ PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX=")" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" RPROMPT='$(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[cyan]%} ✈" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%} ✭" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✗" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%} ➦" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[magenta]%} ✂" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[grey]%} ✱" ================================================ FILE: themes/humza.zsh-theme ================================================ # ZSH THEME Preview: https://skitch.com/huyy/rk979/humza.zshtheme let TotalBytes=0 for Bytes in $(ls -l | grep "^-" | awk '{ print $5 }') do let TotalBytes=$TotalBytes+$Bytes done # should it say b, kb, Mb, or Gb if [ $TotalBytes -lt 1024 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes \nquit" | bc) suffix="b" elif [ $TotalBytes -lt 1048576 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes/1024 \nquit" | bc) suffix="kb" elif [ $TotalBytes -lt 1073741824 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes/1048576 \nquit" | bc) suffix="Mb" else TotalSize=$(echo -e "scale=3 \n$TotalBytes/1073741824 \nquit" | bc) suffix="Gb" fi PROMPT='%{$reset_color%}%n %{$fg[green]%}{%{$reset_color%}%~%{$fg[green]%}}%{$reset_color%}$(git_prompt_info) greetings, earthling %{$fg[green]%}[%{$reset_color%}%{$TotalSize%}%{$suffix%}%{$fg[green]%}]%{$fg[red]%}$%{$reset_color%} ☞ ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[red]%}±(" ZSH_THEME_GIT_PROMPT_SUFFIX=");%{$reset_color%}" ================================================ FILE: themes/imajes.zsh-theme ================================================ # Found on the ZshWiki # http://zshwiki.org/home/config/prompt # PROMPT="%{$fg[red]%}%%%{$reset_color%} " ================================================ FILE: themes/jbergantine.zsh-theme ================================================ PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[white]%}$(git_prompt_info)%{$fg_bold[white]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[white]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[white]%})" ================================================ FILE: themes/jispwoso.zsh-theme ================================================ PROMPT=$'%{$fg[green]%}%n@%m: %{$reset_color%}%{$fg[blue]%}%/%{$reset_color%} %{$fg_bold[red]%}➜ %{$reset_color%} ' PROMPT2="%{$fg_blod[black]%}%_> %{$reset_color%}" ================================================ FILE: themes/jnrowe.zsh-theme ================================================ autoload -U add-zsh-hook autoload -Uz vcs_info zstyle ':vcs_info:*' actionformats \ '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' zstyle ':vcs_info:*' formats \ '%F{2}%s%F{7}:%F{2}(%F{1}%b%F{2})%f ' zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:*' enable git add-zsh-hook precmd prompt_jnrowe_precmd prompt_jnrowe_precmd () { vcs_info if [ "${vcs_info_msg_0_}" = "" ]; then dir_status="%F{2}→%f" elif [[ $(git diff --cached --name-status 2>/dev/null ) != "" ]]; then dir_status="%F{1}▶%f" elif [[ $(git diff --name-status 2>/dev/null ) != "" ]]; then dir_status="%F{3}▶%f" else dir_status="%F{2}▶%f" fi } local ret_status="%(?:%{$fg_bold[green]%}Ξ:%{$fg_bold[red]%}%S↑%s%?)" PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg_bold[yellow]%}%2~ ${vcs_info_msg_0_}${dir_status}%{$reset_color%} ' # vim: set ft=zsh ts=4 sw=4 et: ================================================ FILE: themes/jonathan.zsh-theme ================================================ function precmd { local TERMWIDTH (( TERMWIDTH = ${COLUMNS} - 1 )) ### # Truncate the path if it's too long. PR_FILLBAR="" PR_PWDLEN="" local promptsize=${#${(%):---(%n@%m:%l)---()--}} local rubyprompt=`rvm_prompt_info` local rubypromptsize=${#${rubyprompt}} local pwdsize=${#${(%):-%~}} if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then ((PR_PWDLEN=$TERMWIDTH - $promptsize)) else PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" fi } setopt extended_glob preexec () { if [[ "$TERM" == "screen" ]]; then local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek$CMD\e\\" fi } setprompt () { ### # Need this so the prompt will work. setopt prompt_subst ### # See if we can use colors. autoload colors zsh/terminfo if [[ "$terminfo[colors]" -ge 8 ]]; then colors fi for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' (( count = $count + 1 )) done PR_NO_COLOUR="%{$terminfo[sgr0]%}" ### # Modify Git prompt ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" ### # See if we can use extended characters to look nicer. typeset -A altchar set -A altchar ${(s..)terminfo[acsc]} PR_SET_CHARSET="%{$terminfo[enacs]%}" PR_SHIFT_IN="%{$terminfo[smacs]%}" PR_SHIFT_OUT="%{$terminfo[rmacs]%}" PR_HBAR=${altchar[q]:--} PR_ULCORNER=${altchar[l]:--} PR_LLCORNER=${altchar[m]:--} PR_LRCORNER=${altchar[j]:--} PR_URCORNER=${altchar[k]:--} ### # Decide if we need to set titlebar text. case $TERM in xterm*) PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' ;; screen) PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' ;; *) PR_TITLEBAR='' ;; esac ### # Decide whether to set a screen title if [[ "$TERM" == "screen" ]]; then PR_STITLE=$'%{\ekzsh\e\\%}' else PR_STITLE='' fi ### # Finally, the prompt. PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\ $PR_CYAN$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\ $PR_GREEN%$PR_PWDLEN<...<%~%<<\ $PR_GREY)`rvm_prompt_info`$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\ $PR_CYAN%(!.%SROOT%s.%n)$PR_GREY@$PR_GREEN%m:%l\ $PR_GREY)$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_URCORNER$PR_SHIFT_OUT\ $PR_CYAN$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\ $PR_YELLOW%D{%H:%M:%S}\ $PR_LIGHT_BLUE%{$reset_color%}`git_prompt_info``git_prompt_status`$PR_BLUE)$PR_CYAN$PR_SHIFT_IN$PR_HBAR\ $PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ >$PR_NO_COLOUR ' # display exitcode on the right when >0 return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})" RPROMPT=' $return_code$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\ ($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR' PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ $PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\ $PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR ' } setprompt ================================================ FILE: themes/josh.zsh-theme ================================================ grey='\e[0;90m' ZSH_THEME_GIT_PROMPT_PREFIX="%{$grey%}(" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$grey%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$grey%})" function josh_prompt { (( spare_width = ${COLUMNS} )) prompt=" " branch=$(current_branch) ruby_version=$(rvm_prompt_info) path_size=${#PWD} branch_size=${#branch} ruby_size=${#ruby_version} user_machine_size=${#${(%):-%n@%m-}} if [[ ${#branch} -eq 0 ]] then (( ruby_size = ruby_size + 1 )) else (( branch_size = branch_size + 4 )) if [[ -n $(git status -s 2> /dev/null) ]]; then (( branch_size = branch_size + 2 )) fi fi (( spare_width = ${spare_width} - (${user_machine_size} + ${path_size} + ${branch_size} + ${ruby_size}) )) while [ ${#prompt} -lt $spare_width ]; do prompt=" $prompt" done prompt="%{%F{green}%}$PWD$prompt%{%F{red}%}$(rvm_prompt_info)%{$reset_color%} $(git_prompt_info)" echo $prompt } setopt prompt_subst PROMPT=' %n@%m $(josh_prompt) %(?,%{%F{green}%},%{%F{red}%})⚡%{$reset_color%} ' ================================================ FILE: themes/jreese.zsh-theme ================================================ # ZSH Theme - Preview: http://dl.dropbox.com/u/1552408/Screenshots/2010-04-08-oh-my-zsh.png if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[$NCOLOR]%}%n%{$fg[green]%}@%m%{$reset_color%} %~ \ $(git_prompt_info)\ %{$fg[red]%}%(!.#.»)%{$reset_color%} ' PROMPT2='%{$fg[red]%}\ %{$reset_color%}' RPS1='${return_code}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}±%{$fg[yellow]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="⚡" ================================================ FILE: themes/jtriley.zsh-theme ================================================ #PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' PROMPT="%{$fg_bold[cyan]%}%T%{$fg_bold[green]%} %{$fg_bold[white]%}%n%{$fg[magenta]%}@%{$fg_bold[white]%}%m %{$fg_bold[green]%}%d %{$fg_bold[yellow]%}%% %{$reset_color%}" #ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" #ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" #ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" #ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/juanghurtado.zsh-theme ================================================ # ------------------------------------------------------------------------ # Juan G. Hurtado oh-my-zsh theme # (Needs Git plugin for current_branch method) # ------------------------------------------------------------------------ # Color shortcuts RED=$fg[red] YELLOW=$fg[yellow] GREEN=$fg[green] WHITE=$fg[white] BLUE=$fg[blue] RED_BOLD=$fg_bold[red] YELLOW_BOLD=$fg_bold[yellow] GREEN_BOLD=$fg_bold[green] WHITE_BOLD=$fg_bold[white] BLUE_BOLD=$fg_bold[blue] RESET_COLOR=$reset_color # Format for git_prompt_info() ZSH_THEME_GIT_PROMPT_PREFIX="" ZSH_THEME_GIT_PROMPT_SUFFIX="" # Format for parse_git_dirty() ZSH_THEME_GIT_PROMPT_DIRTY=" %{$RED%}(*)" ZSH_THEME_GIT_PROMPT_CLEAN="" # Format for git_prompt_status() ZSH_THEME_GIT_PROMPT_UNMERGED=" %{$RED%}unmerged" ZSH_THEME_GIT_PROMPT_DELETED=" %{$RED%}deleted" ZSH_THEME_GIT_PROMPT_RENAMED=" %{$YELLOW%}renamed" ZSH_THEME_GIT_PROMPT_MODIFIED=" %{$YELLOW%}modified" ZSH_THEME_GIT_PROMPT_ADDED=" %{$GREEN%}added" ZSH_THEME_GIT_PROMPT_UNTRACKED=" %{$WHITE%}untracked" # Format for git_prompt_ahead() ZSH_THEME_GIT_PROMPT_AHEAD=" %{$RED%}(!)" # Format for git_prompt_long_sha() and git_prompt_short_sha() ZSH_THEME_GIT_PROMPT_SHA_BEFORE=" %{$WHITE%}[%{$YELLOW%}" ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$WHITE%}]" # Prompt format PROMPT=' %{$GREEN_BOLD%}%n@%m%{$WHITE%}:%{$YELLOW%}%~%u$(parse_git_dirty)$(git_prompt_ahead)%{$RESET_COLOR%} %{$BLUE%}>%{$RESET_COLOR%} ' RPROMPT='%{$GREEN_BOLD%}$(current_branch)$(git_prompt_short_sha)$(git_prompt_status)%{$RESET_COLOR%}' ================================================ FILE: themes/kardan.zsh-theme ================================================ # Simple theme based on my old zsh settings. function get_host { echo '@'`hostname`'' } PROMPT='> ' RPROMPT='%~$(git_prompt_info)$(get_host)' ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX=")" ================================================ FILE: themes/kennethreitz.zsh-theme ================================================ local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[green]%}%c \ $(git_prompt_info)\ %{$fg[red]%}%(!.#.»)%{$reset_color%} ' PROMPT2='%{$fg[red]%}\ %{$reset_color%}' RPS1='%{$fg[blue]%}%~%{$reset_color%} ${return_code} ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}:: %{$fg[yellow]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$fg[yellow]%}" ================================================ FILE: themes/kolo.zsh-theme ================================================ autoload -U colors && colors autoload -Uz vcs_info zstyle ':vcs_info:*' stagedstr '%F{green}●' zstyle ':vcs_info:*' unstagedstr '%F{yellow}●' zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r' zstyle ':vcs_info:*' enable git svn precmd () { if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] { zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]' } else { zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}●%F{green}]' } vcs_info } setopt prompt_subst PROMPT='%B%F{magenta}%c%B%F{green}${vcs_info_msg_0_}%B%F{magenta} %{$reset_color%}%% ' ================================================ FILE: themes/kphoen.zsh-theme ================================================ # ------------------------------------------------------------------------------ # FILE: kphoen.zsh-theme # DESCRIPTION: oh-my-zsh theme file. # AUTHOR: Kévin Gomez (geek63@gmail.com) # VERSION: 1.0.0 # SCREENSHOT: # ------------------------------------------------------------------------------ if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then PROMPT='[%{$fg[red]%}%n%{$reset_color%}@%{$fg[magenta]%}%m%{$reset_color%}:%{$fg[blue]%}%~%{$reset_color%}$(git_prompt_info)] %# ' ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" # display exitcode on the right when >0 return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" RPROMPT='${return_code}$(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" else PROMPT='[%n@%m:%~$(git_prompt_info)] %# ' ZSH_THEME_GIT_PROMPT_PREFIX=" on" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" # display exitcode on the right when >0 return_code="%(?..%? ↵)" RPROMPT='${return_code}$(git_prompt_status)' ZSH_THEME_GIT_PROMPT_ADDED=" ✚" ZSH_THEME_GIT_PROMPT_MODIFIED=" ✹" ZSH_THEME_GIT_PROMPT_DELETED=" ✖" ZSH_THEME_GIT_PROMPT_RENAMED=" ➜" ZSH_THEME_GIT_PROMPT_UNMERGED=" ═" ZSH_THEME_GIT_PROMPT_UNTRACKED=" ✭" fi ================================================ FILE: themes/lambda.zsh-theme ================================================ # ZSH Theme - Preview: http://cl.ly/350F0F0k1M2y3A2i3p1S PROMPT='λ %~/ $(git_prompt_info)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ================================================ FILE: themes/linuxonly ================================================ # vim: set ts=2 textwidth=0 autoload -U add-zsh-hook autoload -Uz vcs_info local c0=$(printf "\033[0m") local c1=$(printf "\033[38;5;215m") local c2=$(printf "\033[38;5;209m") local c3=$(printf "\033[38;5;203m") local c4=$(printf "\033[33;4m") local c5=$(printf "\033[38;5;137m") local c6=$(printf "\033[38;5;240m") local c7=$(printf "\033[38;5;149m") local c8=$(printf "\033[38;5;126m") local c9=$(printf "\033[38;5;162m") local foopath=$(perl /home/scp1/bin/foopath) if [ "$TERM" = "linux" ]; then c1=$(printf "\033[34;1m") c2=$(printf "\033[35m") c3=$(printf "\033[31m") c4=$(printf "\033[31;1m") c5=$(printf "\033[32m") c6=$(printf "\033[32;1m") c7=$(printf "\033[33m") c8=$(printf "\033[33;1m") c9=$(printf "\033[34m") fi #local newtv=$(perl $HOME/devel/newtv.pl) local newtv='' zstyle ':vcs_info:*' actionformats \ '%{$c8%}(%f%s)%{$c7%}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' zstyle ':vcs_info:*' formats \ "%{$c8%}%s%{$c7%}:%{$c7%}(%{$c9%}%b%{$c7%})%f " zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:*' enable git add-zsh-hook precmd prompt_jnrowe_precmd prompt_jnrowe_precmd () { vcs_info if [ "${vcs_info_msg_0_}" = "" ]; then #dir_status="|%F{3}%n%F{7}@%F{3}%m%F{7}:%F{9}%l%f" #dir_status="$c1%n%F{7}@%F{9}%m%F{7}:%F{12}%/" dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$c4%}%/ %{$c0%}(%{$c5%}%?%{$c0%})" #dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$foopath%} %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='%{$fg_bold[green]%}%p%{$reset_color%}${vcs_info_msg_0_}${dir_status} ${ret_status}%{$reset_color%} > ' elif [[ $(git diff --cached --name-status 2>/dev/null ) != "" ]]; then dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$c4%}%/ %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status} ${vcs_info_msg_0_}%{$reset_color%} > ' elif [[ $(git diff --name-status 2>/dev/null ) != "" ]]; then dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$c4%}%/ %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status}%{$reset_color%} %{$c9%}·>%{$c0%} ' else dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$c4%}%/ %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status} ${vcs_info_msg_0_}%{$reset_color%} > ' fi } #PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$reset_color%} ${vcs_info_msg_0_}${dir_status}%{$reset_color%} #> ' # vim: set ft=zsh ts=4 sw=4 et: ================================================ FILE: themes/lukerandall.zsh-theme ================================================ # ZSH Theme - Preview: http://cl.ly/f701d00760f8059e06dc # Thanks to gallifrey, upon whose theme this is based local return_code="%(?..%{$fg_bold[red]%}%? ↵%{$reset_color%})" function my_git_prompt_info() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return GIT_STATUS=$(git_prompt_status) [[ -n $GIT_STATUS ]] && GIT_STATUS=" $GIT_STATUS" echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$GIT_STATUS$ZSH_THEME_GIT_PROMPT_SUFFIX" } PROMPT='%{$fg_bold[green]%}%n@%m%{$reset_color%} %{$fg_bold[blue]%}%2~%{$reset_color%} $(my_git_prompt_info)%{$reset_color%}%B»%b ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX=") %{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%%" ZSH_THEME_GIT_PROMPT_ADDED="+" ZSH_THEME_GIT_PROMPT_MODIFIED="*" ZSH_THEME_GIT_PROMPT_RENAMED="~" ZSH_THEME_GIT_PROMPT_DELETED="!" ZSH_THEME_GIT_PROMPT_UNMERGED="?" ================================================ FILE: themes/macovsky-ruby.zsh-theme ================================================ # ZSH Theme - Preview: http://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[green]%}%~%{$reset_color%} %{$fg[red]%}‹$(~/.rvm/bin/rvm-prompt i v)› %{$reset_color%} $(git_prompt_info)%{$reset_color%}%B$%b ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/macovsky.zsh-theme ================================================ # ZSH Theme - Preview: http://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[green]%}%~%{$reset_color%} %{$fg[red]%}‹$(~/.rvm/bin/rvm-prompt i v)› %{$reset_color%} $(git_prompt_info)%{$reset_color%}%B$%b ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/maran.zsh-theme ================================================ # Theme with full path names and hostname # Handy if you work on different servers all the time; PROMPT='%{$fg[cyan]%}%n%{$reset_color%}@%{$fg[yellow]%}%M:%{$fg[green]%}%/%{$reset_color%} $(git_prompt_info) %(!.#.$) ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[cyan]%}git:(" ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}" ================================================ FILE: themes/mattcable.zsh-theme ================================================ # based on robbyrussel.zsh-theme PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' RPROMPT="%{$fg_bold[red]%}(%D{%m-%d %H:%M})%{$reset_color%}" ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/mgutz.zsh-theme ================================================ PROMPT='%{$fg_bold[magenta]%}%1~$(git_prompt_info) %{$fg_bold[magenta]%}%# %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[yellow]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="*]" ZSH_THEME_GIT_PROMPT_CLEAN="]" ================================================ FILE: themes/mikeh.zsh-theme ================================================ setopt prompt_subst autoload colors colors autoload -U add-zsh-hook autoload -Uz vcs_info # check-for-changes can be really slow. # you should disable it, if you work with large repositories zstyle ':vcs_info:*:prompt:*' check-for-changes true add-zsh-hook precmd mikeh_precmd mikeh_precmd() { vcs_info } # user, host, full path, and time/date # on two lines for easier vgrepping # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 PROMPT=$'%{\e[0;34m%}%B..[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%} %{\e[0;34m%}%B..%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <($vcs_info_msg_0_)>%{\e[0m%}%b ' PS2=$' \e[0;34m%}%B>%{\e[0m%}%b ' ================================================ FILE: themes/miloshadzic.zsh-theme ================================================ # Yay! High voltage and arrows! ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="" PROMPT='%{$fg[cyan]%}%1~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}$(git_prompt_info)%{$fg[cyan]%}⇒%{$reset_color%} ' ================================================ FILE: themes/minimal.zsh-theme ================================================ ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}[" ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="" #Customized git status, oh-my-zsh currently does not allow render dirty status before branch git_custom_status() { local cb=$(current_branch) if [ -n "$cb" ]; then echo "- $ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" fi } PROMPT='%2~ $(git_custom_status) »%b ' ================================================ FILE: themes/mrtazz.zsh-theme ================================================ PROMPT='%{$fg_bold[red]%}%m%{$reset_color%}:%{$fg[cyan]%}%c%{$reset_color%}:%# ' RPROMPT='%{$fg_bold[green]%}$(git_prompt_info)%{$reset_color%}% ' ZSH_THEME_GIT_PROMPT_PREFIX="<%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%} %{$fg[yellow]%}✗%{$fg[green]%}>%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}>" ================================================ FILE: themes/murilasso.zsh-theme ================================================ local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" local user_host='%{$terminfo[bold]$fg[green]%}%n@%m%{$reset_color%}' local current_dir='%{$terminfo[bold]$fg[blue]%}%~%{$reset_color%}' local rvm_ruby='%{$fg[red]%}$(rvm_prompt_info)%{$reset_color%}' local git_branch='%{$fg[blue]%}$(git_prompt_info)%{$reset_color%}' PROMPT="${user_host}:${current_dir} ${rvm_ruby} ${git_branch} %B$%b " RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}✔%{$reset_color%}" ================================================ FILE: themes/muse.zsh-theme ================================================ #!/usr/bin/env zsh #local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" setopt promptsubst autoload -U add-zsh-hook PROMPT_SUCCESS_COLOR=$FG[117] PROMPT_FAILURE_COLOR=$FG[124] PROMPT_VCS_INFO_COLOR=$FG[242] PROMPT_PROMPT=$FG[077] GIT_DIRTY_COLOR=$FG[133] GIT_CLEAN_COLOR=$FG[118] GIT_PROMPT_INFO=$FG[012] PROMPT='%{$PROMPT_SUCCESS_COLOR%}%~%{$reset_color%} %{$GIT_PROMPT_INFO%}$(git_prompt_info)%{$GIT_DIRTY_COLOR%}$(git_prompt_status) %{$reset_color%}%{$PROMPT_PROMPT%}ᐅ%{$reset_color%} ' #RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$GIT_PROMPT_INFO%})" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$GIT_DIRTY_COLOR%}✘" ZSH_THEME_GIT_PROMPT_CLEAN=" %{$GIT_CLEAN_COLOR%}✔" ZSH_THEME_GIT_PROMPT_ADDED="%{$FG[082]%}✚%{$reset_color%}" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$FG[166]%}✹%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[160]%}✖%{$reset_color%}" ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[220]%}➜%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[082]%}═%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[190]%}✭%{$reset_color%}" ================================================ FILE: themes/nanotech.zsh-theme ================================================ PROMPT='%F{green}%2c%F{blue} [%f ' RPROMPT='$(git_prompt_info) %F{blue}] %F{green}%D{%L:%M} %F{yellow}%D{%p}%f' ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}" ZSH_THEME_GIT_PROMPT_SUFFIX="%f" ZSH_THEME_GIT_PROMPT_DIRTY=" %F{red}*%f" ZSH_THEME_GIT_PROMPT_CLEAN="" ================================================ FILE: themes/nebirhos.zsh-theme ================================================ # Based on robbyrussell's theme, with host and rvm indicators. Example: # @host ➜ currentdir rvm:(rubyversion@gemset) git:(branchname) # Get the current ruby version in use with RVM: if [ -e ~/.rvm/bin/rvm-prompt ]; then RUBY_PROMPT_="%{$fg_bold[blue]%}rvm:(%{$fg[green]%}\$(~/.rvm/bin/rvm-prompt s i v g)%{$fg_bold[blue]%})%{$reset_color%} " fi # Get the host name (first 4 chars) HOST_PROMPT_="%{$fg_bold[red]%}@$HOST[0,4] ➜ %{$fg_bold[cyan]%}%c " GIT_PROMPT="%{$fg_bold[blue]%}\$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}" PROMPT="$HOST_PROMPT_$RUBY_PROMPT_$GIT_PROMPT" ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/nicoulaj.zsh-theme ================================================ #!/usr/bin/env zsh # ------------------------------------------------------------------------------ # Prompt for the Zsh shell: # * One line. # * VCS info on the right prompt. # * Only shows the path on the left prompt by default. # * Crops the path to a defined length and only shows the path relative to # the current VCS repository root. # * Wears a different color wether the last command succeeded/failed. # * Shows user@hostname if connected through SSH. # * Shows if logged in as root or not. # ------------------------------------------------------------------------------ # Customizable parameters. PROMPT_PATH_MAX_LENGTH=30 PROMPT_DEFAULT_END=❯ PROMPT_ROOT_END=❯❯❯ PROMPT_SUCCESS_COLOR=$FG[071] PROMPT_FAILURE_COLOR=$FG[124] PROMPT_VCS_INFO_COLOR=$FG[242] # Set required options. setopt promptsubst # Load required modules. autoload -U add-zsh-hook autoload -Uz vcs_info # Add hook for calling vcs_info before each command. add-zsh-hook precmd vcs_info # Set vcs_info parameters. zstyle ':vcs_info:*' enable hg bzr git zstyle ':vcs_info:*:*' check-for-changes true # Can be slow on big repos. zstyle ':vcs_info:*:*' unstagedstr '!' zstyle ':vcs_info:*:*' stagedstr '+' zstyle ':vcs_info:*:*' actionformats "%S" "%r/%s/%b %u%c (%a)" zstyle ':vcs_info:*:*' formats "%S" "%r/%s/%b %u%c" zstyle ':vcs_info:*:*' nvcsformats "%~" "" # Define prompts. PROMPT="%(0?.%{$PROMPT_SUCCESS_COLOR%}.%{$PROMPT_FAILURE_COLOR%})${SSH_TTY:+[%n@%m]}%{$FX[bold]%}%$PROMPT_PATH_MAX_LENGTH<..<"'${vcs_info_msg_0_%%.}'"%<<%(!.$PROMPT_ROOT_END.$PROMPT_DEFAULT_END)%{$FX[no-bold]%}%{$FX[reset]%} " RPROMPT="%{$PROMPT_VCS_INFO_COLOR%}"'$vcs_info_msg_1_'"%{$FX[reset]%}" ================================================ FILE: themes/obraun.zsh-theme ================================================ if [ "$(whoami)" = "root" ]; then CARETCOLOR="red"; else CARETCOLOR="blue"; fi local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT='%{$fg[green]%}[%*]%{$reset_color%} %{$fg_no_bold[cyan]%}%n %{${fg_bold[blue]}%}::%{$reset_color%} %{$fg[yellow]%}%m%{$reset_color%} %{$fg_no_bold[magenta]%} ➜ %{$reset_color%} %{${fg[green]}%}%3~ $(git_prompt_info)%{${fg_bold[$CARETCOLOR]}%}»%{${reset_color}%} ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[red]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" ================================================ FILE: themes/philips.zsh-theme ================================================ if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi PROMPT='%{$fg[$NCOLOR]%}%B%n%b%{$reset_color%}:%{$fg[blue]%}%B%c/%b%{$reset_color%} $(git_prompt_info)%(!.#.$) ' RPROMPT='[%*]' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg_no_bold[red]%}%B" ZSH_THEME_GIT_PROMPT_SUFFIX="%b%{$fg_bold[blue]%})%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="*" # LS colors, made with http://geoff.greer.fm/lscolors/ export LSCOLORS="Gxfxcxdxbxegedabagacad" export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:*.patch=00;34:*.o=00;32:*.so=01;35:*.ko=01;31:*.la=00;33' ================================================ FILE: themes/pmcgee.zsh-theme ================================================ if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi PROMPT=' %{$fg[$NCOLOR]%}%B%n@%m%b%{$reset_color%} %{$fg[white]%}%B${PWD/#$HOME/~}%b%{$reset_color%} $(git_prompt_info)%(!.#.$) ' RPROMPT='[%*]' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_no_bold[yellow]%}%B" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%}*" # LS colors, made with http://geoff.greer.fm/lscolors/ export LSCOLORS="Gxfxcxdxbxegedabagacad" export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:' ================================================ FILE: themes/prose.zsh-theme ================================================ if [ "x$OH_MY_ZSH_HG" = "x" ]; then OH_MY_ZSH_HG="hg" fi function virtualenv_info { [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' } function hg_prompt_info { $OH_MY_ZSH_HG prompt --angle-brackets "\ < on %{$fg[magenta]%}%{$reset_color%}>\ < at %{$fg[yellow]%}%{$reset_color%}>\ %{$fg[green]%}%{$reset_color%}< patches: >" 2>/dev/null } function box_name { [ -f ~/.box-name ] && cat ~/.box-name || hostname -s } PROMPT=' %{$fg[magenta]%}%n%{$reset_color%} at %{$fg[yellow]%}$(box_name)%{$reset_color%} in %{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(hg_prompt_info)$(git_prompt_info) $(virtualenv_info)%(?,,%{${fg_bold[white]}%}[%?]%{$reset_color%} )$ ' ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}!" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?" ZSH_THEME_GIT_PROMPT_CLEAN="" local return_status="%{$fg[red]%}%(?..✘)%{$reset_color%}" RPROMPT='${return_status}%{$reset_color%}' ================================================ FILE: themes/re5et.zsh-theme ================================================ if [ "$(whoami)" = "root" ]; then CARETCOLOR="red"; else CARETCOLOR="magenta"; fi local return_code="%(?..%{$fg_bold[red]%}:( %?%{$reset_color%})" PROMPT=' %{$fg_bold[cyan]%}%n%{$reset_color%}%{$fg[yellow]%}@%{$reset_color%}%{$fg_bold[blue]%}%m%{$reset_color%}:%{${fg_bold[green]}%}%~%{$reset_color%}$(git_prompt_info) %{${fg[$CARETCOLOR]}%}%# %{${reset_color}%}' RPS1='${return_code} %D - %*' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[magenta]%}^%{$reset_color%}%{$fg_bold[yellow]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%} ±" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ?" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[red]%} ♥" ================================================ FILE: themes/rgm.zsh-theme ================================================ PROMPT=' %n@%m %{$fg[cyan]%}%~ %? $(git_prompt_info)%{$fg_bold[blue]%}%% %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}" ================================================ FILE: themes/risto.zsh-theme ================================================ # -*- sh -*- vim:set ft=sh ai et sw=4 sts=4: # It might be bash like, but I can't have my co-workers knowing I use zsh PROMPT='%{$fg[green]%}%n@%m:%{$fg_bold[blue]%}%2~ $(git_prompt_info)%{$reset_color%}%(!.#.$) ' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[red]%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="›%{$reset_color%}" ================================================ FILE: themes/rixius.zsh-theme ================================================ # /|/ Code by Stephen # /|/ "Rixius" Middleton # # name in folder (github) # ± if in github repo, or ≥ if otherwise Time in 24-hour format is on right. function collapse_pwd { echo $(pwd | sed -e "s,^$HOME,~,") } function prompt_char { echo -n "%{$bg[white]%}%{$fg[red]%}" git branch >/dev/null 2>/dev/null && echo "±%{$reset_color%}" && return echo "≥%{$reset_color%}" } RIXIUS_PRE="%{$bg[white]%}%{$fg[red]%}" PROMPT=' %{$RIXIUS_PRE%}%n%{$reset_color%} in %{$fg_bold[green]%}$(collapse_pwd)%{$reset_color%}$(git_prompt_info) $(prompt_char) ' RPROMPT='%{$RIXIUS_PRE%}%T%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$RIXIUS_PRE%}!%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN=" %{$RIXIUS_PRE%}√%{$reset_color%}" ================================================ FILE: themes/robbyrussell.zsh-theme ================================================ PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/simple.zsh-theme ================================================ PROMPT='%{$fg[green]%}%~%{$fg_bold[blue]%}$(git_prompt_info)%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX=")" ZSH_THEME_GIT_PROMPT_DIRTY=" ✗" ZSH_THEME_GIT_PROMPT_CLEAN=" ✔" ================================================ FILE: themes/skaro.zsh-theme ================================================ PROMPT='%{$fg_bold[green]%}%h %{$fg[cyan]%}%2~ %{$fg_bold[blue]%}$(git_prompt_info) %{$reset_color%}» ' ZSH_THEME_GIT_PROMPT_PREFIX="git:(%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/smt.zsh-theme ================================================ # ----------------------------------------------------------------------------- # FILE: smt.zsh-theme # DESCRIPTION: oh-my-zsh theme file, based on dogenpunk by Matthew Nelson. # AUTHOR: Stephen Tudor (stephen@tudorstudio.com # VERSION: 0.1 # SCREENSHOT: coming soon # ----------------------------------------------------------------------------- MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}" local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%} " ZSH_THEME_GIT_PROMPT_PREFIX="|" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%}⚡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_bold[red]%}!%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓%{$reset_color%}" ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" # Format for git_prompt_long_sha() and git_prompt_short_sha() ZSH_THEME_GIT_PROMPT_SHA_BEFORE="➤ %{$fg_bold[yellow]%}" ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}" function prompt_char() { git branch >/dev/null 2>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" && return hg root >/dev/null 2>/dev/null && echo "%{$fg_bold[red]%}☿%{$reset_color%}" && return echo "%{$fg[cyan]%}◯%{$reset_color%}" } # Colors vary depending on time lapsed. ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}" ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}" ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}" # Determine the time since last commit. If branch is clean, # use a neutral color, otherwise colors will vary according to time. function git_time_since_commit() { if git rev-parse --git-dir > /dev/null 2>&1; then # Only proceed if there is actually a commit. if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then # Get the last commit. last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` now=`date +%s` seconds_since_last_commit=$((now-last_commit)) # Totals MINUTES=$((seconds_since_last_commit / 60)) HOURS=$((seconds_since_last_commit/3600)) # Sub-hours and sub-minutes DAYS=$((seconds_since_last_commit / 86400)) SUB_HOURS=$((HOURS % 24)) SUB_MINUTES=$((MINUTES % 60)) if [[ -n $(git status -s 2> /dev/null) ]]; then if [ "$MINUTES" -gt 30 ]; then COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" elif [ "$MINUTES" -gt 10 ]; then COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" fi if [ "$HOURS" -gt 24 ]; then echo "[$COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]" elif [ "$MINUTES" -gt 60 ]; then echo "[$COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}]" else echo "[$COLOR${MINUTES}m%{$reset_color%}]" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" echo "[$COLOR~]" fi fi } PROMPT=' %{$fg[blue]%}%m%{$reset_color%} 福 %{$fg[cyan]%}%~ %{$reset_color%}$(git_prompt_short_sha)$(git_prompt_info) %{$fg[red]%}%!%{$reset_color%} $(prompt_char) : ' RPROMPT='${return_status}$(git_time_since_commit)$(git_prompt_status)%{$reset_color%}' ================================================ FILE: themes/sorin.zsh-theme ================================================ # ------------------------------------------------------------------------------ # FILE: sorin.zsh-theme # DESCRIPTION: oh-my-zsh theme file. # AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) # VERSION: 1.0.2 # SCREENSHOT: http://i.imgur.com/aipDQ.png # ------------------------------------------------------------------------------ if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}" local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}" PROMPT='%{$fg[cyan]%}%c$(git_prompt_info) %(!.%{$fg_bold[red]%}#.%{$fg_bold[green]%}❯)%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[blue]%}git%{$reset_color%}:%{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" RPROMPT='${return_status}$(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" else MODE_INDICATOR="❮❮❮" local return_status="%(?::⏎)" PROMPT='%c$(git_prompt_info) %(!.#.❯) ' ZSH_THEME_GIT_PROMPT_PREFIX=" git:" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" RPROMPT='${return_status}$(git_prompt_status)' ZSH_THEME_GIT_PROMPT_ADDED=" ✚" ZSH_THEME_GIT_PROMPT_MODIFIED=" ✹" ZSH_THEME_GIT_PROMPT_DELETED=" ✖" ZSH_THEME_GIT_PROMPT_RENAMED=" ➜" ZSH_THEME_GIT_PROMPT_UNMERGED=" ═" ZSH_THEME_GIT_PROMPT_UNTRACKED=" ✭" fi ================================================ FILE: themes/sporty_256.zsh-theme ================================================ # zsh theme requires 256 color enabled terminal # i.e TERM=xterm-256color # Preview - http://www.flickr.com/photos/adelcampo/4556482563/sizes/o/ # based on robbyrussell's shell but louder! PROMPT='%{$fg_bold[blue]%}$(git_prompt_info) %F{208}%c%f %{$fg_bold[white]%}%# %{$reset_color%}' RPROMPT='%B%F{208}%n%f%{$fg_bold[white]%}@%F{039}%m%f%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%F{154}±|%f%F{124}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}%B✘%b%F{154}|%f%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}✔%F{154}|" ================================================ FILE: themes/steeef.zsh-theme ================================================ # prompt style and colors based on Steve Losh's Prose theme: # http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme # # vcs_info modifications from Bart Trojanowski's zsh prompt: # http://www.jukie.net/bart/blog/pimping-out-zsh-prompt # # git untracked files modification from Brian Carper: # http://briancarper.net/blog/570/git-info-in-your-zsh-prompt function virtualenv_info { [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' } PR_GIT_UPDATE=1 setopt prompt_subst autoload colors colors autoload -U add-zsh-hook autoload -Uz vcs_info #use extended color pallete if available if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then turquoise="%F{81}" orange="%F{166}" purple="%F{135}" hotpink="%F{161}" limegreen="%F{118}" else turquoise="$fg[cyan]" orange="$fg[yellow]" purple="$fg[magenta]" hotpink="$fg[red]" limegreen="$fg[green]" fi # enable VCS systems you use zstyle ':vcs_info:*' enable git svn # check-for-changes can be really slow. # you should disable it, if you work with large repositories zstyle ':vcs_info:*:prompt:*' check-for-changes true # set formats # %b - branchname # %u - unstagedstr (see below) # %c - stagedstr (see below) # %a - action (e.g. rebase-i) # %R - repository path # %S - path in the repository PR_RST="%{${reset_color}%}" FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" FMT_ACTION="(%{$limegreen%}%a${PR_RST})" FMT_UNSTAGED="%{$orange%}●" FMT_STAGED="%{$limegreen%}●" zstyle ':vcs_info:*:prompt:*' unstagedstr "${FMT_UNSTAGED}" zstyle ':vcs_info:*:prompt:*' stagedstr "${FMT_STAGED}" zstyle ':vcs_info:*:prompt:*' actionformats "${FMT_BRANCH}${FMT_ACTION}" zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" zstyle ':vcs_info:*:prompt:*' nvcsformats "" function steeef_preexec { case "$(history $HISTCMD)" in *git*) PR_GIT_UPDATE=1 ;; *svn*) PR_GIT_UPDATE=1 ;; esac } add-zsh-hook preexec steeef_preexec function steeef_chpwd { PR_GIT_UPDATE=1 } 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 [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then PR_GIT_UPDATE=1 FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})" else FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" fi zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" vcs_info 'prompt' PR_GIT_UPDATE= fi } add-zsh-hook precmd steeef_precmd PROMPT=$' %{$purple%}%n%{$reset_color%} at %{$orange%}%m%{$reset_color%} in %{$limegreen%}%~%{$reset_color%} $vcs_info_msg_0_ $(virtualenv_info)$ ' ================================================ FILE: themes/sunaku.zsh-theme ================================================ # Git-centric variation of the "fishy" theme. # See screenshot at http://ompldr.org/vOHcwZg ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%}+" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[magenta]%}!" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%}-" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%}>" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[cyan]%}#" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[yellow]%}?" ZSH_THEME_GIT_PROMPT_PREFIX="" ZSH_THEME_GIT_PROMPT_SUFFIX=" " ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" local user_color='green' test $UID -eq 0 && user_color='red' PROMPT='%(?..%{$fg_bold[red]%}exit %? %{$reset_color%})'\ '%{$bold_color%}$(git_prompt_status)%{$reset_color%}'\ '$(git_prompt_info)'\ '%{$fg[$user_color]%}%~%{$reset_color%}'\ '%(!.#.>) ' PROMPT2='%{$fg[red]%}\ %{$reset_color%}' ================================================ FILE: themes/sunrise.zsh-theme ================================================ #------------------------------------------------------------------------------- # Sunrise theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com) # Intended to be used with Solarized: http://ethanschoonover.com/solarized # (Needs Git plugin for current_branch method) #------------------------------------------------------------------------------- # Color shortcuts R=$fg[red] G=$fg[green] M=$fg[magenta] RB=$fg_bold[red] YB=$fg_bold[yellow] BB=$fg_bold[blue] RESET=$reset_color if [ "$(whoami)" = "root" ]; then PROMPTCOLOR="%{$RB%}" PREFIX="-!-"; else PROMPTCOLOR="" PREFIX="---"; fi local return_code="%(?..%{$R%}%? ↵%{$RESET%})" # Get the status of the working tree (copied and modified from git.zsh) custom_git_prompt_status() { INDEX=$(git status --porcelain 2> /dev/null) STATUS="" # Non-staged if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" fi if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" fi if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" fi if $(echo "$INDEX" | grep '^.M ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" fi # Staged if $(echo "$INDEX" | grep '^D ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_DELETED$STATUS" fi if $(echo "$INDEX" | grep '^R' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_RENAMED$STATUS" fi if $(echo "$INDEX" | grep '^M' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED$STATUS" fi if $(echo "$INDEX" | grep '^A' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_ADDED$STATUS" fi if $(echo -n "$STATUS" | grep '.*' &> /dev/null); then STATUS="$ZSH_THEME_GIT_STATUS_PREFIX$STATUS" fi echo $STATUS } # get the name of the branch we are on (copied and modified from git.zsh) function custom_git_prompt() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$(git_prompt_ahead)$(custom_git_prompt_status)$ZSH_THEME_GIT_PROMPT_SUFFIX" } # %B sets bold text PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$YB%}›%{$RESET%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}*" ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➔" ZSH_THEME_GIT_STATUS_PREFIX=" " # Staged ZSH_THEME_GIT_PROMPT_STAGED_ADDED="%{$G%}A" ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED="%{$G%}M" ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$G%}R" ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D" # Not-staged ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}⁇" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$R%}M" ZSH_THEME_GIT_PROMPT_DELETED="%{$R%}D" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU" ================================================ FILE: themes/superjarin.zsh-theme ================================================ # Grab the current version of ruby in use (via RVM): [ruby-1.8.7] JARIN_CURRENT_RUBY_="%{$fg[white]%}[%{$fg[red]%}\$(~/.rvm/bin/rvm-prompt i v)%{$fg[white]%}]%{$reset_color%}" # Grab the current filepath, use shortcuts: ~/Desktop # Append the current git branch, if in a git repository JARIN_CURRENT_LOCA_="%{$fg_bold[cyan]%}%~\$(git_prompt_info)%{$reset_color%}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%} <%{$fg[magenta]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" # Do nothing if the branch is clean (no changes). ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}>" # Add a yellow ✗ if the branch is dirty ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%}> %{$fg[yellow]%}✗" # Put it all together! PROMPT="$JARIN_CURRENT_RUBY_ $JARIN_CURRENT_LOCA_ " ================================================ FILE: themes/takashiyoshida.zsh-theme ================================================ # # PROMPT # PROMPT_BRACKET_BEGIN='%{$fg_bold[white]%}[' PROMPT_HOST='%{$fg_bold[cyan]%}%m' PROMPT_SEPARATOR='%{$reset_color%}:' PROMPT_DIR='%{$fg_bold[yellow]%}%c' PROMPT_BRACKET_END='%{$fg_bold[white]%}]' PROMPT_USER='%{$fg_bold[white]%}%n' PROMPT_SIGN='%{$reset_color%}%#' GIT_PROMPT_INFO='$(git_prompt_info)' # My current prompt looks like: # [host:current_dir] (git_prompt_info) # [username]% PROMPT="${PROMPT_BRACKET_BEGIN}${PROMPT_HOST}${PROMPT_SEPARATOR}${PROMPT_DIR}${PROMPT_BRACKET_END}${GIT_PROMPT_INFO} ${PROMPT_BRACKET_BEGIN}${PROMPT_USER}${PROMPT_BRACKET_END}${PROMPT_SIGN} " # # Git repository # ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}!" ZSH_THEME_GIT_PROMPT_CLEAN='' ================================================ FILE: themes/terminalparty.zsh-theme ================================================ PROMPT='%{$fg[green]%} %% ' # RPS1='%{$fg[blue]%}%~%{$reset_color%} ' RPS1='%{$fg[white]%}%2~$(git_prompt_info) %{$fg_bold[blue]%}%m%{$reset_color%}' 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]%}" ================================================ FILE: themes/theunraveler.zsh-theme ================================================ # Comment PROMPT='%{$fg[magenta]%}[%c] %{$reset_color%}' RPROMPT='%{$fg[magenta]%}$(git_prompt_info)%{$reset_color%} $(git_prompt_status)%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[cyan]%} ✈" ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%} ✭" ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✗" ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%} ➦" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[magenta]%} ✂" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[grey]%} ✱" ================================================ FILE: themes/tjkirch.zsh-theme ================================================ ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}⚡" ZSH_THEME_GIT_PROMPT_CLEAN="" function prompt_char { if [ $UID -eq 0 ]; then echo "%{$fg[red]%}#%{$reset_color%}"; else echo $; fi } PROMPT='%(?, ,%{$fg[red]%}FAIL: $?%{$reset_color%} ) %{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}: %{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) %_$(prompt_char) ' RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}' ================================================ FILE: themes/tonotdo.zsh-theme ================================================ PROMPT='%{$fg_no_bold[cyan]%}%n%{$fg_no_bold[magenta]%}➜%{$fg_no_bold[green]%}%3~$(git_prompt_info)%{$reset_color%}» ' RPROMPT='[%*]' # git theming ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg_no_bold[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[blue]%})" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[yellow]%}✗%{$fg_bold[blue]%})" # LS colors, made with http://geoff.greer.fm/lscolors/ export LSCOLORS="Gxfxcxdxbxegedabagacad" export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:' ================================================ FILE: themes/trapd00r.zsh-theme ================================================ # Name: trapd00r zsh theme # Author: Magnus Woldrich # # This theme needs a terminal supporting 256 colors as well as unicode. It also # needs the script that splits up the current path and makes it fancy as located # here: https://github.com/trapd00r/utils/blob/master/zsh_path # # By default it spans over two lines like so: # # scp1@shiva:pts/9-> /home » scp1 (0) # > # # that's user@host:pts/-> splitted path (return status) # # If the current directory is a git repository, we span 3 lines; # # git❨ master ❩ DIRTY # scp1@shiva:pts/4-> /home » scp1 » dev » utils (0) # > autoload -U add-zsh-hook autoload -Uz vcs_info local c0=$( printf "\e[m") local c1=$( printf "\e[38;5;245m") local c2=$( printf "\e[38;5;250m") local c3=$( printf "\e[38;5;242m") local c4=$( printf "\e[38;5;197m") local c5=$( printf "\e[38;5;225m") local c6=$( printf "\e[38;5;240m") local c7=$( printf "\e[38;5;242m") local c8=$( printf "\e[38;5;244m") local c9=$( printf "\e[38;5;162m") local c10=$(printf "\e[1m") local c11=$(printf "\e[38;5;208m\e[1m") local c12=$(printf "\e[38;5;142m\e[1m") local c13=$(printf "\e[38;5;196m\e[1m") # We dont want to use the extended colorset in the TTY / VC. if [ "$TERM" = "linux" ]; then c1=$( printf "\e[34;1m") c2=$( printf "\e[35m") c3=$( printf "\e[31m") c4=$( printf "\e[31;1m") c5=$( printf "\e[32m") c6=$( printf "\e[32;1m") c7=$( printf "\e[33m") c8=$( printf "\e[33;1m") c9=$( printf "\e[34m") c11=$(printf "\e[35;1m") c12=$(printf "\e[36m") c13=$(printf "\e[31;1m") fi zstyle ':vcs_info:*' actionformats \ '%{$c8%}(%f%s)%{$c7%}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' zstyle ':vcs_info:*' formats \ "%{$c8%}%s%%{$c7%}❨ %{$c9%}%{$c11%}%b%{$c7%} ❩%{$reset_color%}%f " zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:*' enable git add-zsh-hook precmd prompt_jnrowe_precmd prompt_jnrowe_precmd () { vcs_info if [ "${vcs_info_msg_0_}" = "" ]; then dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='%{$fg_bold[green]%}%p%{$reset_color%}${vcs_info_msg_0_}${dir_status} ${ret_status}%{$reset_color%} > ' # modified, to be commited elif [[ $(git diff --cached --name-status 2>/dev/null ) != "" ]]; then dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_}%{$30%} %{$bg_bold[red]%}%{$fg_bold[cyan]%}C%{$fg_bold[black]%}OMMIT%{$reset_color%} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status}%{$reset_color%} > ' elif [[ $(git diff --name-status 2>/dev/null ) != "" ]]; then dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_}%{$bg_bold[red]%}%{$fg_bold[blue]%}D%{$fg_bold[black]%}IRTY%{$reset_color%} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status}%{$reset_color%} %{$c13%}>%{$c0%} ' else dir_status="%{$c1%}%n%{$c4%}@%{$c2%}%m%{$c0%}:%{$c3%}%l%{$c6%}->%{$(zsh_path)%} %{$c0%}(%{$c5%}%?%{$c0%})" PROMPT='${vcs_info_msg_0_} %{$fg_bold[green]%}%p%{$reset_color%}${dir_status} ${vcs_info_msg_0_}%{$reset_color%} > ' fi } # vim: set ft=zsh sw=2 et tw=0: ================================================ FILE: themes/wedisagree.zsh-theme ================================================ # On a mac with snow leopard, for nicer terminal colours: # - Install SIMBL: http://www.culater.net/software/SIMBL/SIMBL.php # - Download'Terminal-Colours': http://bwaht.net/code/TerminalColours.bundle.zip # - Place that bundle in ~/Library/Application\ Support/SIMBL/Plugins (create that folder if it doesn't exist) # - Open Terminal preferences. Go to Settings -> Text -> More # - Change default colours to your liking. # # Here are the colours from Textmate's Monokai theme: # # Black: 0, 0, 0 # Red: 229, 34, 34 # Green: 166, 227, 45 # Yellow: 252, 149, 30 # Blue: 196, 141, 255 # Magenta: 250, 37, 115 # Cyan: 103, 217, 240 # White: 242, 242, 242 # Thanks to Steve Losh: http://stevelosh.com/blog/2009/03/candy-colored-terminal/ # The prompt PROMPT='%{$fg[magenta]%}[%c] %{$reset_color%}' # The right-hand prompt RPROMPT='${time} %{$fg[magenta]%}$(git_prompt_info)%{$reset_color%}$(git_prompt_status)%{$reset_color%}' # Add this at the start of RPROMPT to include rvm info showing ruby-version@gemset-name # %{$fg[yellow]%}$(~/.rvm/bin/rvm-prompt)%{$reset_color%} # local time, color coded by last return code time_enabled="%(?.%{$fg[green]%}.%{$fg[red]%})%*%{$reset_color%}" time_disabled="%{$fg[green]%}%*%{$reset_color%}" time=$time_enabled ZSH_THEME_GIT_PROMPT_PREFIX=" ☁ %{$fg[red]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%} ☂" # Ⓓ ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" # ⓣ ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%} ☀" # Ⓞ ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[cyan]%} ✚" # ⓐ ⑃ ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%} ⚡" # ⓜ ⑁ ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" # ⓧ ⑂ ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%} ➜" # ⓡ ⑄ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[magenta]%} ♒" # ⓤ ⑊ # More symbols to choose from: # ☀ ✹ ☄ ♆ ♀ ♁ ♐ ♇ ♈ ♉ ♚ ♛ ♜ ♝ ♞ ♟ ♠ ♣ ⚢ ⚲ ⚳ ⚴ ⚥ ⚤ ⚦ ⚒ ⚑ ⚐ ♺ ♻ ♼ ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ # ✡ ✔ ✖ ✚ ✱ ✤ ✦ ❤ ➜ ➟ ➼ ✂ ✎ ✐ ⨀ ⨁ ⨂ ⨍ ⨎ ⨏ ⨷ ⩚ ⩛ ⩡ ⩱ ⩲ ⩵ ⩶ ⨠ # ⬅ ⬆ ⬇ ⬈ ⬉ ⬊ ⬋ ⬒ ⬓ ⬔ ⬕ ⬖ ⬗ ⬘ ⬙ ⬟ ⬤ 〒 ǀ ǁ ǂ ĭ Ť Ŧ # 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 } # Determine the time since last commit. If branch is clean, # use a neutral color, otherwise colors will vary according to time. function git_time_since_commit() { if git rev-parse --git-dir > /dev/null 2>&1; then # Only proceed if there is actually a commit. if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then # Get the last commit. last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` now=`date +%s` seconds_since_last_commit=$((now-last_commit)) # Totals MINUTES=$((seconds_since_last_commit / 60)) HOURS=$((seconds_since_last_commit/3600)) # Sub-hours and sub-minutes DAYS=$((seconds_since_last_commit / 86400)) SUB_HOURS=$((HOURS % 24)) SUB_MINUTES=$((MINUTES % 60)) if [[ -n $(git status -s 2> /dev/null) ]]; then if [ "$MINUTES" -gt 30 ]; then COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" elif [ "$MINUTES" -gt 10 ]; then COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" fi if [ "$HOURS" -gt 24 ]; then echo "($(rvm_gemset)$COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|" elif [ "$MINUTES" -gt 60 ]; then echo "($(rvm_gemset)$COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|" else echo "($(rvm_gemset)$COLOR${MINUTES}m%{$reset_color%}|" fi else COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" echo "($(rvm_gemset)$COLOR~|" fi fi } ================================================ FILE: themes/wezm+.zsh-theme ================================================ PROMPT='%{${fg_bold[yellow]}%}%n%{$reset_color%}%{${fg[yellow]}%}@%m%{$reset_color%} $(git_prompt_info)%(?,,%{${fg_bold[white]}%}[%?]%{$reset_color%} )%{$fg[yellow]%}%#%{$reset_color%} ' RPROMPT='%{$fg[green]%}%~%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[blue]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%})%{$fg[red]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/wezm.zsh-theme ================================================ PROMPT='$(git_prompt_info)%(?,,%{${fg_bold[white]}%}[%?]%{$reset_color%} )%{$fg[yellow]%}%#%{$reset_color%} ' RPROMPT='%{$fg[green]%}%~%{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[blue]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%})%{$fg[red]%}⚡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" ================================================ FILE: themes/xiong-chiamiov-plus.zsh-theme ================================================ # user, host, full path, and time/date # on two lines for easier vgrepping # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%} %{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <$(git_prompt_info)>%{\e[0m%}%b ' PS2=$' \e[0;34m%}%B>%{\e[0m%}%b ' ================================================ FILE: themes/xiong-chiamiov.zsh-theme ================================================ # user, host, full path, and time/date # on two lines for easier vgrepping # entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%} %{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]>%{\e[0m%}%b ' PS2=$' \e[0;34m%}%B>%{\e[0m%}%b ' ================================================ FILE: tools/check_for_upgrade.sh ================================================ #!/bin/sh function _current_epoch() { echo $(($(date +%s) / 60 / 60 / 24)) } function _update_zsh_update() { echo "LAST_EPOCH=$(_current_epoch)" > ~/.zsh-update } if [ -f ~/.zsh-update ] then . ~/.zsh-update if [[ -z "$LAST_EPOCH" ]]; then _update_zsh_update && return 0; fi epoch_diff=$(($(_current_epoch) - $LAST_EPOCH)) if [ $epoch_diff -gt 6 ] then echo "[Oh My Zsh] Would you like to check for updates?" echo "Type Y to update oh-my-zsh: \c" read line if [ "$line" = Y ] || [ "$line" = y ] then /bin/sh $ZSH/tools/upgrade.sh # update the zsh file _update_zsh_update fi fi else # create the zsh file _update_zsh_update fi ================================================ FILE: tools/install.sh ================================================ if [ -d ~/.oh-my-zsh ] then echo "\033[0;33mYou already have Oh My Zsh installed.\033[0m You'll need to remove ~/.oh-my-zsh if you want to install" exit fi echo "\033[0;34mCloning Oh My Zsh...\033[0m" /usr/bin/env git clone git://github.com/sjl/oh-my-zsh.git ~/.oh-my-zsh echo "\033[0;34mLooking for an existing zsh config...\033[0m" if [ -f ~/.zshrc ] || [ -h ~/.zshrc ] then echo "\033[0;33mFound ~/.zshrc.\033[0m \033[0;32]Backing up to ~/.zshrc.pre-oh-my-zsh\033[0m"; cp ~/.zshrc ~/.zshrc.pre-oh-my-zsh; rm ~/.zshrc; fi echo "\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[0m" cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc echo "\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m" echo "export PATH=$PATH" >> ~/.zshrc echo "\033[0;34mTime to change your default shell to zsh!\033[0m" chsh -s `which zsh` echo "\033[0;32m"' __ __ '"\033[0m" echo "\033[0;32m"' ____ / /_ ____ ___ __ __ ____ _____/ /_ '"\033[0m" echo "\033[0;32m"' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '"\033[0m" echo "\033[0;32m"'/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '"\033[0m" echo "\033[0;32m"'\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '"\033[0m" echo "\033[0;32m"' /____/ '"\033[0m" echo "\n\n \033[0;32m....is now installed.\033[0m" /usr/bin/env zsh source ~/.zshrc ================================================ FILE: tools/uninstall.sh ================================================ echo "Removing ~/.oh-my-zsh" if [[ -d ~/.oh-my-zsh ]] then rm -rf ~/.oh-my-zsh fi echo "Looking for an existing zsh config..." if [ -f ~/.zshrc.pre-oh-my-zsh ] || [ -h ~/.zshrc.pre-oh-my-zsh ] then echo "Found ~/.zshrc. Backing up to ~/.zshrc.pre-oh-my-zsh"; rm ~/.zshrc; cp ~/.zshrc.pre-oh-my-zsh ~/.zshrc; source ~/.zshrc; else echo "Switching back to bash" chsh -s /bin/bash source /etc/profile fi echo "Thanks for trying out Oh My Zsh. It's been uninstalled." ================================================ FILE: tools/upgrade.sh ================================================ current_path=`pwd` echo -e "\033[0;34mUpgrading Oh My Zsh\033[0m" ( cd $ZSH && git pull origin master ) echo -e "\033[0;32m"' __ __ '"\033[0m" echo -e "\033[0;32m"' ____ / /_ ____ ___ __ __ ____ _____/ /_ '"\033[0m" echo -e "\033[0;32m"' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '"\033[0m" echo -e "\033[0;32m"'/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '"\033[0m" echo -e "\033[0;32m"'\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '"\033[0m" echo -e "\033[0;32m"' /____/ '"\033[0m" echo -e "\033[0;34mHooray! Oh My Zsh has been updated and/or is at the current version.\033[0m" echo -e "\033[0;34mTo keep up on the latest, be sure to follow Oh My Zsh on twitter: \033[1mhttp://twitter.com/ohmyzsh\033[0m" cd "$current_path"