diff options
55 files changed, 1157 insertions, 114 deletions
diff --git a/lib/correction.zsh b/lib/correction.zsh index fc60dcdbd..176ec16d5 100644 --- a/lib/correction.zsh +++ b/lib/correction.zsh @@ -1,10 +1,2 @@ -setopt correct_all - -alias man='nocorrect man' -alias mv='nocorrect mv' -alias mysql='nocorrect mysql' -alias mkdir='nocorrect mkdir' -alias gist='nocorrect gist' -alias heroku='nocorrect heroku' -alias ebuild='nocorrect ebuild' -alias hpodder='nocorrect hpodder' +# correct commands, but not any arguments (correct_all would do that) +setopt correct diff --git a/lib/git.zsh b/lib/git.zsh index 3e14695bd..76fe9b142 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -9,16 +9,19 @@ function git_prompt_info() {  # Checks if working tree is dirty  parse_git_dirty() {    local SUBMODULE_SYNTAX='' +  local GIT_STATUS='' +  local CLEAN_MESSAGE='nothing to commit (working directory clean)'    if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then      if [[ $POST_1_7_2_GIT -gt 0 ]]; then            SUBMODULE_SYNTAX="--ignore-submodules=dirty" -    fi -    if [[ -n $(git status -s ${SUBMODULE_SYNTAX}  2> /dev/null) ]]; then +    fi   +    GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1) +    if [[ -n $GIT_STATUS && "$GIT_STATUS" != "$CLEAN_MESSAGE" ]]; then        echo "$ZSH_THEME_GIT_PROMPT_DIRTY"      else        echo "$ZSH_THEME_GIT_PROMPT_CLEAN" -    fi -  fi +    fi   +  fi    }  # get the difference between the local and remote branches @@ -62,7 +65,7 @@ function git_prompt_long_sha() {  git_prompt_status() {    INDEX=$(git status --porcelain -b 2> /dev/null)    STATUS="" -  if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then +  if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then      STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"    fi    if $(echo "$INDEX" | grep '^A  ' &> /dev/null); then @@ -112,7 +115,7 @@ function git_compare_version() {    local INPUT_GIT_VERSION=$1;    local INSTALLED_GIT_VERSION    INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION}); -  INSTALLED_GIT_VERSION=($(git --version)); +  INSTALLED_GIT_VERSION=($(git --version 2>/dev/null));    INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});    for i in {1..3}; do diff --git a/lib/history.zsh b/lib/history.zsh index 876936b87..655945166 100644 --- a/lib/history.zsh +++ b/lib/history.zsh @@ -1,5 +1,7 @@  ## Command history configuration -HISTFILE=$HOME/.zsh_history +if [ -z $HISTFILE ]; then +    HISTFILE=$HOME/.zsh_history +fi  HISTSIZE=10000  SAVEHIST=10000 diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 689a79fef..5b8e63e73 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -1,7 +1,7 @@  # Check for updates on initial load...  if [ "$DISABLE_AUTO_UPDATE" != "true" ]  then -  /usr/bin/env ZSH=$ZSH zsh $ZSH/tools/check_for_upgrade.sh +  /usr/bin/env ZSH=$ZSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh $ZSH/tools/check_for_upgrade.sh  fi  # Initializes Oh My Zsh diff --git a/plugins/ant/ant.plugin.zsh b/plugins/ant/ant.plugin.zsh index 691d4d2db..45f2b06eb 100644 --- a/plugins/ant/ant.plugin.zsh +++ b/plugins/ant/ant.plugin.zsh @@ -1,17 +1,7 @@ -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 +  [ ! -f .ant_targets ] && return 0; +  [ .ant_targets -nt build.xml ] && return 0; +  return 1;  }  _ant () { diff --git a/plugins/bower/_bower b/plugins/bower/_bower new file mode 100755 index 000000000..ae0ca4a4e --- /dev/null +++ b/plugins/bower/_bower @@ -0,0 +1,58 @@ + + +# Credits to npm's awesome completion utility. +# +# Bower completion script, based on npm completion script. + +###-begin-bower-completion-### +# +# Installation: bower completion >> ~/.bashrc  (or ~/.zshrc) +# Or, maybe: bower completion > /usr/local/etc/bash_completion.d/bower +# + +COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} +COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} +export COMP_WORDBREAKS + +if type complete &>/dev/null; then +  _bower_completion () { +    local si="$IFS" +    IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ +                           COMP_LINE="$COMP_LINE" \ +                           COMP_POINT="$COMP_POINT" \ +                           bower completion -- "${COMP_WORDS[@]}" \ +                           2>/dev/null)) || return $? +    IFS="$si" +  } +  complete -F _bower_completion bower +elif type compdef &>/dev/null; then +  _bower_completion() { +    si=$IFS +    compadd -- $(COMP_CWORD=$((CURRENT-1)) \ +                 COMP_LINE=$BUFFER \ +                 COMP_POINT=0 \ +                 bower completion -- "${words[@]}" \ +                 2>/dev/null) +    IFS=$si +  } +  compdef _bower_completion bower +elif type compctl &>/dev/null; then +  _bower_completion () { +    local cword line point words si +    read -Ac words +    read -cn cword +    let cword-=1 +    read -l line +    read -ln point +    si="$IFS" +    IFS=$'\n' reply=($(COMP_CWORD="$cword" \ +                       COMP_LINE="$line" \ +                       COMP_POINT="$point" \ +                       bower completion -- "${words[@]}" \ +                       2>/dev/null)) || return $? +    IFS="$si" +  } +  compctl -K _bower_completion bower +fi +###-end-bower-completion-### + diff --git a/plugins/bower/bower.plugin.zsh b/plugins/bower/bower.plugin.zsh new file mode 100644 index 000000000..ed9c04840 --- /dev/null +++ b/plugins/bower/bower.plugin.zsh @@ -0,0 +1,38 @@ +alias bi="bower install" +alias bl="bower list" +alias bs="bower search" + +bower_package_list='' + +_bower () +{ +	local curcontext="$curcontext" state line +	typeset -A opt_args + +	_arguments -C \ +		':command:->command' \ +		'*::options:->options' + +	case $state in +		(command) + +			local -a subcommands +			subcommands=(${=$(bower help | grep help | sed -e 's/,//g')}) +			_describe -t commands 'bower' subcommands +		;; + +		(options) +			case $line[1] in + +				(install) +				    if [ -z "$bower_package_list" ];then +                    bower_package_list=$(bower search | awk 'NR > 2' | cut -d '-' -f 2 | cut -d ' ' -f 2 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g") +                fi +				    compadd "$@" $(echo $bower_package_list) +                ;; +			esac +		;; +	esac +} + +compdef _bower bower diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index 10c221acd..bc21da134 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -6,7 +6,7 @@ alias bu="bundle update"  # The following is based on https://github.com/gma/bundler-exec -bundled_commands=(annotate cap capify cucumber foreman guard middleman nanoc rackup rainbows rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails puma zeus) +bundled_commands=(annotate cap capify cucumber foreman guard middleman nanoc rackup rainbows rake rspec ruby shotgun spec spork thin thor unicorn unicorn_rails puma)  ## Functions diff --git a/plugins/cake/cake.plugin.zsh b/plugins/cake/cake.plugin.zsh index 1d0d196ee..44cc47470 100644 --- a/plugins/cake/cake.plugin.zsh +++ b/plugins/cake/cake.plugin.zsh @@ -14,12 +14,9 @@ _cake_does_target_list_need_generating () {  		return 1;  	fi -	if [ ! -f ${_cake_task_cache_file} ]; then return 0; -	else -		accurate=$(stat -f%m $_cake_task_cache_file) -		changed=$(stat -f%m Cakefile) -		return $(expr $accurate '>=' $changed) -	fi +	[ ! -f ${_cake_task_cache_file} ] && return 0; +	[ ${_cake_task_cache_file} -nt Cakefile ] && return 0; +	return 1;  }  _cake () { @@ -33,4 +30,4 @@ _cake () {  	fi  } -compdef _cake cake
\ No newline at end of file +compdef _cake cake diff --git a/plugins/capistrano/_capistrano b/plugins/capistrano/_capistrano index cf6b50c7f..1002dad96 100644 --- a/plugins/capistrano/_capistrano +++ b/plugins/capistrano/_capistrano @@ -1,7 +1,7 @@  #compdef cap  #autoload -if [ -f config/deploy.rb ]; then +if [[ -f config/deploy.rb || -f Capfile ]]; then    if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then      echo "\nGenerating .cap_tasks~..." > /dev/stderr      cap --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~ diff --git a/plugins/colored-man/colored-man.plugin.zsh b/plugins/colored-man/colored-man.plugin.zsh new file mode 100644 index 000000000..56056284a --- /dev/null +++ b/plugins/colored-man/colored-man.plugin.zsh @@ -0,0 +1,11 @@ +man() { +      env \ +      	  LESS_TERMCAP_mb=$(printf "\e[1;31m") \ +	  LESS_TERMCAP_md=$(printf "\e[1;31m") \ +	  LESS_TERMCAP_me=$(printf "\e[0m") \ +	  LESS_TERMCAP_se=$(printf "\e[0m") \ +	  LESS_TERMCAP_so=$(printf "\e[1;44;33m") \ +	  LESS_TERMCAP_ue=$(printf "\e[0m") \ +	  LESS_TERMCAP_us=$(printf "\e[1;32m") \ +	  			   man "$@" +} diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh index c9b762d07..639677ba6 100644 --- a/plugins/composer/composer.plugin.zsh +++ b/plugins/composer/composer.plugin.zsh @@ -13,6 +13,8 @@ _composer_get_command_list () {  _composer () {    if [ -f composer.json ]; then      compadd `_composer_get_command_list` +  else +    compadd create-project init search selfupdate show    fi  } @@ -26,4 +28,4 @@ alias ci='composer install'  alias ccp='composer create-project'  # install composer in the current directory -alias cget='curl -s https://getcomposer.org/installer | php'
\ No newline at end of file +alias cget='curl -s https://getcomposer.org/installer | php' diff --git a/plugins/copydir/copydir.plugin.zsh b/plugins/copydir/copydir.plugin.zsh new file mode 100644 index 000000000..37bb5e086 --- /dev/null +++ b/plugins/copydir/copydir.plugin.zsh @@ -0,0 +1,3 @@ +function copydir { +  pwd | tr -d "\r\n" | pbcopy +}
\ No newline at end of file diff --git a/plugins/emoji-clock/emoji-clock.plugin.zsh b/plugins/emoji-clock/emoji-clock.plugin.zsh new file mode 100644 index 000000000..7351a02ec --- /dev/null +++ b/plugins/emoji-clock/emoji-clock.plugin.zsh @@ -0,0 +1,29 @@ +# ------------------------------------------------------------------------------ +#          FILE: emoji-clock.plugin.zsh +#   DESCRIPTION: The current time with half hour accuracy as an emoji symbol. +#                Inspired by Andre Torrez' "Put A Burger In Your Shell" +#                http://notes.torrez.org/2013/04/put-a-burger-in-your-shell.html +#        AUTHOR: Alexis Hildebrandt (afh[at]surryhill.net) +#       VERSION: 1.0.0 +# ----------------------------------------------------------------------------- + +function emoji-clock() { +  hour=$(date '+%I') +  minutes=$(date '+%M') +  case $hour in +    01) clock="🕐"; [ $minutes -ge 30 ] && clock="🕜";; +    02) clock="🕑"; [ $minutes -ge 30 ] && clock="🕝";; +    03) clock="🕒"; [ $minutes -ge 30 ] && clock="🕞";; +    04) clock="🕓"; [ $minutes -ge 30 ] && clock="🕟";; +    05) clock="🕔"; [ $minutes -ge 30 ] && clock="🕠";; +    06) clock="🕕"; [ $minutes -ge 30 ] && clock="🕡";; +    07) clock="🕖"; [ $minutes -ge 30 ] && clock="🕢";; +    08) clock="🕗"; [ $minutes -ge 30 ] && clock="🕣";; +    09) clock="🕘"; [ $minutes -ge 30 ] && clock="🕤";; +    10) clock="🕙"; [ $minutes -ge 30 ] && clock="🕥";; +    11) clock="🕚"; [ $minutes -ge 30 ] && clock="🕦";; +    12) clock="🕛"; [ $minutes -ge 30 ] && clock="🕧";; +     *) clock="⌛";; +  esac +  echo $clock +} diff --git a/plugins/encode64/encode64.plugin.zsh b/plugins/encode64/encode64.plugin.zsh index 3b59447c5..4dbd1b453 100644 --- a/plugins/encode64/encode64.plugin.zsh +++ b/plugins/encode64/encode64.plugin.zsh @@ -1,4 +1,4 @@  encode64(){ echo -n $1 | base64 } -decode64(){ echo -n $1 | base64 -D } +decode64(){ echo -n $1 | base64 --decode }  alias e64=encode64  alias d64=decode64 diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 5c125e98b..23e86c593 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -53,7 +53,7 @@ function extract() {        (*.lzma) unlzma "$1" ;;        (*.Z) uncompress "$1" ;;        (*.zip) unzip "$1" -d $extract_dir ;; -      (*.rar) unrar e -ad "$1" ;; +      (*.rar) unrar x -ad "$1" ;;        (*.7z) 7za x "$1" ;;        (*.deb)          mkdir -p "$extract_dir/control" diff --git a/plugins/fbterm/fbterm.plugin.zsh b/plugins/fbterm/fbterm.plugin.zsh new file mode 100644 index 000000000..4f0456016 --- /dev/null +++ b/plugins/fbterm/fbterm.plugin.zsh @@ -0,0 +1,6 @@ +# start fbterm automatically in /dev/tty* + +if [[ $(tty|grep -o '/dev/tty') = /dev/tty ]] ; then +	fbterm +	exit +fi diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 154aa6db1..15f901f86 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -14,8 +14,12 @@ gdv() { git diff -w "$@" | view - }  compdef _git gdv=git-diff  alias gc='git commit -v'  compdef _git gc=git-commit +alias gc!='git commit -v --amend' +compdef _git gc!=git-commit  alias gca='git commit -v -a' -compdef _git gca=git-commit +compdef _git gc=git-commit +alias gca!='git commit -v -a --amend' +compdef _git gca!=git-commit  alias gco='git checkout'  compdef _git gco=git-checkout  alias gcm='git checkout master' diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh index 598b059c1..66a10cfdb 100644 --- a/plugins/github/github.plugin.zsh +++ b/plugins/github/github.plugin.zsh @@ -1,5 +1,22 @@  # Setup hub function for git, if it is available; http://github.com/defunkt/hub  if [ "$commands[(I)hub]" ] && [ "$commands[(I)ruby]" ]; then +    # Autoload _git completion functions +    if declare -f _git > /dev/null; then +      _git +    fi +     +    if declare -f _git_commands > /dev/null; then +        _hub_commands=( +            'alias:show shell instructions for wrapping git' +            'pull-request:open a pull request on GitHub' +            'fork:fork origin repo on GitHub' +            'create:create new repo on GitHub for the current project' +            'browse:browse the project on GitHub' +            'compare:open GitHub compare view' +        ) +        # Extend the '_git_commands' function with hub commands +        eval "$(declare -f _git_commands | sed -e 's/base_commands=(/base_commands=(${_hub_commands} /')" +    fi      # eval `hub alias -s zsh`      function git(){          if ! (( $+_has_working_hub  )); then diff --git a/plugins/golang/golang.plugin.zsh b/plugins/golang/golang.plugin.zsh new file mode 100644 index 000000000..e60c4afe4 --- /dev/null +++ b/plugins/golang/golang.plugin.zsh @@ -0,0 +1,150 @@ +# From : http://golang.org/misc/zsh/go?m=text +# gc +prefixes=(5 6 8) +for p in $prefixes; do +    compctl -g "*.${p}" ${p}l +    compctl -g "*.go" ${p}g +done + +# standard go tools +compctl -g "*.go" gofmt + +# gccgo +compctl -g "*.go" gccgo + +# go tool +__go_tool_complete() { +  typeset -a commands build_flags +  commands+=( +    'build[compile packages and dependencies]' +    'clean[remove object files]' +    'doc[run godoc on package sources]' +    'fix[run go tool fix on packages]' +    'fmt[run gofmt on package sources]' +    'get[download and install packages and dependencies]' +    'help[display help]' +    'install[compile and install packages and dependencies]' +    'list[list packages]' +    'run[compile and run Go program]' +    'test[test packages]' +    'tool[run specified go tool]' +    'version[print Go version]' +    'vet[run go tool vet on packages]' +  ) +  if (( CURRENT == 2 )); then +    # explain go commands +    _values 'go tool commands' ${commands[@]} +    return +  fi +  build_flags=( +    '-a[force reinstallation of packages that are already up-to-date]' +    '-n[print the commands but do not run them]' +    "-p[number of parallel builds]:number" +    '-x[print the commands]' +    "-work[print temporary directory name and keep it]" +    "-gcflags[flags for 5g/6g/8g]:flags" +    "-ldflags[flags for 5l/6l/8l]:flags" +    "-gccgoflags[flags for gccgo]:flags" +  ) +  __go_list() { +      local expl importpaths +      declare -a importpaths +      importpaths=($(go list ${words[$CURRENT]}... 2>/dev/null)) +      _wanted importpaths expl 'import paths' compadd "$@" - "${importpaths[@]}" +  } +  case ${words[2]} in +  clean|doc) +      _arguments -s -w : '*:importpaths:__go_list' +      ;; +  fix|fmt|list|vet) +      _alternative ':importpaths:__go_list' ':files:_path_files -g "*.go"' +      ;; +  install) +      _arguments -s -w : ${build_flags[@]} \ +        "-v[show package names]" \ +    '*:importpaths:__go_list' +      ;; +  get) +      _arguments -s -w : \ +        ${build_flags[@]} +      ;; +  build) +      _arguments -s -w : \ +        ${build_flags[@]} \ +        "-v[show package names]" \ +        "-o[output file]:file:_files" \ +        "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" +      ;; +  test) +      _arguments -s -w : \ +        ${build_flags[@]} \ +        "-c[do not run, compile the test binary]" \ +        "-i[do not run, install dependencies]" \ +        "-v[print test output]" \ +        "-x[print the commands]" \ +        "-short[use short mode]" \ +        "-parallel[number of parallel tests]:number" \ +        "-cpu[values of GOMAXPROCS to use]:number list" \ +        "-run[run tests and examples matching regexp]:regexp" \ +        "-bench[run benchmarks matching regexp]:regexp" \ +        "-benchtime[run each benchmark during n seconds]:duration" \ +        "-timeout[kill test after that duration]:duration" \ +        "-cpuprofile[write CPU profile to file]:file:_files" \ +        "-memprofile[write heap profile to file]:file:_files" \ +        "-memprofilerate[set heap profiling rate]:number" \ +        "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" +      ;; +  help) +      _values "${commands[@]}" \ +        'gopath[GOPATH environment variable]' \ +        'importpath[description of import paths]' \ +        'remote[remote import path syntax]' \ +        'testflag[description of testing flags]' \ +        'testfunc[description of testing functions]' +      ;; +  run) +      _arguments -s -w : \ +          ${build_flags[@]} \ +          '*:file:_path_files -g "*.go"' +      ;; +  tool) +      if (( CURRENT == 3 )); then +          _values "go tool" $(go tool) +          return +      fi +      case ${words[3]} in +      [568]g) +          _arguments -s -w : \ +              '-I[search for packages in DIR]:includes:_path_files -/' \ +              '-L[show full path in file:line prints]' \ +              '-S[print the assembly language]' \ +              '-V[print the compiler version]' \ +              '-e[no limit on number of errors printed]' \ +              '-h[panic on an error]' \ +              '-l[disable inlining]' \ +              '-m[print optimization decisions]' \ +              '-o[file specify output file]:file' \ +              '-p[assumed import path for this code]:importpath' \ +              '-u[disable package unsafe]' \ +              "*:file:_files -g '*.go'" +          ;; +      [568]l) +          local O=${words[3]%l} +          _arguments -s -w : \ +              '-o[file specify output file]:file' \ +              '-L[search for packages in DIR]:includes:_path_files -/' \ +              "*:file:_files -g '*.[ao$O]'" +          ;; +      dist) +          _values "dist tool" banner bootstrap clean env install version +          ;; +      *) +          # use files by default +          _files +          ;; +      esac +      ;; +  esac +} + +compdef __go_tool_complete go
\ No newline at end of file diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index fc4c78c50..9229512f7 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -54,27 +54,14 @@ function in_gradle() {      fi  } -############################################################################ -# Define the stat_cmd command based on platform behavior -########################################################################## -stat -f%m . > /dev/null 2>&1 -if [ "$?" = 0 ]; then -	stat_cmd=(stat -f%m) -else -	stat_cmd=(stat -L --format=%Y) -fi -  ############################################################################## Examine the build.gradle file to see if its  # timestamp has changed, and if so, regen  # the .gradle_tasks cache file  ############################################################################  _gradle_does_task_list_need_generating () { -  if [ ! -f .gradletasknamecache ]; then return 0; -  else -    accurate=$($stat_cmd .gradletasknamecache) -    changed=$($stat_cmd build.gradle) -    return $(expr $accurate '>=' $changed) -  fi +  [ ! -f .gradletasknamecache ] && return 0; +  [ .gradletasknamecache -nt build.gradle ] && return 0; +  return 1;  } diff --git a/plugins/grails/grails.plugin.zsh b/plugins/grails/grails.plugin.zsh index cc6f9c53b..11777738c 100755 --- a/plugins/grails/grails.plugin.zsh +++ b/plugins/grails/grails.plugin.zsh @@ -24,17 +24,23 @@ _enumerateGrailsScripts() {          return      fi -    # - Strip the path -    # - Remove all scripts with a leading '_' -    # - PackagePlugin_.groovy -> PackagePlugin -    # - PackagePlugin         -> Package-Plugin -    # - Package-Plugin        -> package-plugin -    basename $files                             \ -        | sed -E  -e 's/^_?([^_]+)_?.groovy/\1/'\ -                  -e 's/([a-z])([A-Z])/\1-\2/g' \ -        | tr "[:upper:]" "[:lower:]"            \ -        | sort                                  \ -        | uniq +    scripts=() +    for file in $files +    do +        # - Strip the path +        # - Remove all scripts with a leading '_' +        # - PackagePlugin_.groovy -> PackagePlugin +        # - PackagePlugin         -> Package-Plugin +        # - Package-Plugin        -> package-plugin +        command=$(basename $file                              \ +            | sed -E  -e 's/^_?([^_]+)_?.groovy/\1/'\ +                      -e 's/([a-z])([A-Z])/\1-\2/g' \ +            | tr "[:upper:]" "[:lower:]"            \ +            | sort                                  \ +            | uniq) +        scripts+=($command) +    done +    echo $scripts  }  _grails() { diff --git a/plugins/knife/_knife b/plugins/knife/_knife index dec491257..9f5b406af 100644 --- a/plugins/knife/_knife +++ b/plugins/knife/_knife @@ -1,5 +1,10 @@  #compdef knife +# You can override the path to knife.rb and your cookbooks by setting +# KNIFE_CONF_PATH=/path/to/my/.chef/knife.rb +# KNIFE_COOKBOOK_PATH=/path/to/my/chef/cookbooks +# Read around where these are used for more detail. +  # 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 ) @@ -170,11 +175,13 @@ _chef_environments_remote() {  # 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() { - local knife_rb="$HOME/.chef/knife.rb" - if [ -f ./.chef/knife.rb ]; then -  knife_rb="./.chef/knife.rb" - fi - (for i in $( grep cookbook_path $knife_rb | awk 'BEGIN {FS = "[" }; {print $2}' | sed 's/\,//g' | sed "s/'//g" | sed 's/\(.*\)]/\1/' ); do ls $i; done) +   +  local knife_rb=${KNIFE_CONF_PATH:-${HOME}/.chef/knife.rb} +  if [ -f ./.chef/knife.rb ]; then +    knife_rb="./.chef/knife.rb" +  fi +  local cookbook_path=${KNIFE_COOKBOOK_PATH:-$(grep cookbook_path $knife_rb | awk 'BEGIN {FS = "[" }; {print $2}' | sed 's/\,//g' | sed "s/'//g" | sed 's/\(.*\)]/\1/' )} +  (for i in $cookbook_path; do ls $i; done)  }  # This function extracts the available cookbook versions on the chef server diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh index 190bc279d..bc36c80db 100644 --- a/plugins/last-working-dir/last-working-dir.plugin.zsh +++ b/plugins/last-working-dir/last-working-dir.plugin.zsh @@ -9,7 +9,8 @@ local cache_file="$ZSH/cache/last-working-dir"  # Updates the last directory once directory is changed.  function chpwd() { -	echo "$PWD" > "$cache_file" +  # Use >| in case noclobber is set to avoid "file exists" error +	pwd >| "$cache_file"  }  # Changes directory to the last working directory. diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh index a3a6ff8b6..30e4be5b5 100644 --- a/plugins/mercurial/mercurial.plugin.zsh +++ b/plugins/mercurial/mercurial.plugin.zsh @@ -7,7 +7,10 @@ alias hgco='hg checkout'  alias hgd='hg diff'  alias hged='hg diffmerge'  # pull and update +alias hgi='hg incoming'  alias hgl='hg pull -u' +alias hglr='hg pull --rebase' +alias hgo='hg outgoing'  alias hgp='hg push'  alias hgs='hg status'  # this is the 'git commit --amend' equivalent @@ -17,4 +20,4 @@ function hg_current_branch() {    if [ -d .hg ]; then      echo hg:$(hg branch)    fi -}
\ No newline at end of file +} diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index da29b4f0a..c2d8e7ed7 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -163,7 +163,7 @@ function listMavenCompletions {          cli:execute cli:execute-phase           archetype:generate generate-sources           cobertura:cobertura -        -Dtest= `if [ -d ./src ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi` +        -Dtest= `if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi`      );   } diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index f278d4f8d..51cd7c143 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -154,3 +154,6 @@ function trash() {    IFS=$temp_ifs  } +function vncviewer() { +  open vnc://$@ +} diff --git a/plugins/phing/phing.plugin.zsh b/plugins/phing/phing.plugin.zsh index 8f4adca08..795f1db85 100644 --- a/plugins/phing/phing.plugin.zsh +++ b/plugins/phing/phing.plugin.zsh @@ -1,16 +1,13 @@  _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 +  [ ! -f .phing_targets ] && return 0; +  [ .phing_targets -nt build.xml ] && return 0; +  return 1;  }  _phing () {    if [ -f build.xml ]; then      if _phing_does_target_list_need_generating; then -      phing -l |grep -v ":" |grep -v "^$"|grep -v "\-" > .phing_targets +      phing -l |grep -v ":$" |grep -v "^-*$" > .phing_targets      fi      compadd `cat .phing_targets`    fi diff --git a/plugins/powify/_powify b/plugins/powify/_powify new file mode 100644 index 000000000..d23c46513 --- /dev/null +++ b/plugins/powify/_powify @@ -0,0 +1,55 @@ +#compdef powify + +_powify_all_servers() { +  all_servers=(`ls $HOME/.pow/`) +} + +local -a all_servers + +local -a _1st_arguments +_1st_arguments=( +  'server:server specific commands' +  'utils:manage powify' +  'create:creates a pow app from the current directory (to change the name append name as an argument)' +  'destroy:destroys the pow app linked to the current directory' +  'restart:restarts the pow app linked to the current directory' +  'always_restart:reload the pow app after each request' +  'always_restart_off:do not reload the pow app after each request' +  'rename:rename the current pow app to [NAME] or renmae [OLD] to [NEW]' +  'environment:run the this pow app in a different environment (aliased `env`)' +  'browse:opens and navigates the default browser to this app' +  'logs:tail the application logs' +) + +_arguments '*:: :->command' + +if (( CURRENT == 1 )); then +  _describe -t commands "powify command" _1st_arguments +  return +fi + +case "$words[1]" in +  server) +    _values \ +      'install[install pow server]' \ +      'reinstall[reinstall pow server]' \ +      'update[update pow server]' \ +      'uninstall[uninstall pow server]' \ +      'list[list all pow apps]' \ +      'start[start the pow server]' \ +      'stop[stop the pow server]' \ +      'restart[restart the pow server]' \ +      'host[adds all pow apps to /etc/hosts file]' \ +      'unhost[removes all pow apps from /etc/hosts file]' \ +      'status[print the current server status]' \ +      'config[print the current server configuration]' \ +      'logs[tails the pow server logs]' ;; +  utils) +    _values \ +      'install[install powify.dev server management tool]' \ +      'reinstall[reinstall powify.dev server management tool]' \ +      'uninstall[uninstall powify.dev server management tool]' ;; +  destroy|restart|always_restart|always_restart_off|rename|browse|logs) +    _powify_all_servers +    _wanted all_servers expl 'all pow servers' compadd -a all_servers ;; +esac diff --git a/plugins/profiles/profiles.plugin.zsh b/plugins/profiles/profiles.plugin.zsh new file mode 100644 index 000000000..8faae6b53 --- /dev/null +++ b/plugins/profiles/profiles.plugin.zsh @@ -0,0 +1,12 @@ +# You will probably want to list this plugin as the first in your .zshrc. + +# This will look for a custom profile for the local machine and each domain or +# subdomain it belongs to. (e.g. com, example.com and foo.example.com) +parts=(${(s:.:)$(hostname)}) +for i in {${#parts}..1}; do +  profile=${(j:.:)${parts[$i,${#parts}]}} +  file=$ZSH_CUSTOM/profiles/$profile +  if [ -f $file ]; then +    source $file +  fi +done diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index fb9df4bdd..78f76c3a3 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -17,7 +17,7 @@ for rbenvdir in "${rbenvdirs[@]}" ; do      FOUND_RBENV=1      export RBENV_ROOT=$rbenvdir      export PATH=${rbenvdir}/bin:$PATH -    eval "$(rbenv init - zsh)" +    eval "$(rbenv init --no-rehash - zsh)"      alias rubies="rbenv versions"      alias gemsets="rbenv gemset list" diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh index 1ab800b0f..5000a49b3 100644 --- a/plugins/rvm/rvm.plugin.zsh +++ b/plugins/rvm/rvm.plugin.zsh @@ -4,7 +4,8 @@ alias rubies='rvm list rubies'  alias gemsets='rvm gemset list'  local ruby18='ruby-1.8.7-p334' -local ruby19='ruby-1.9.3-p194' +local ruby19='ruby-1.9.3-p385' +local ruby20='ruby-2.0.0-rc2'  function rb18 {  	if [ -z "$1" ]; then @@ -28,6 +29,17 @@ function rb19 {  _rb19() {compadd `ls -1 $rvm_path/gems | grep "^$ruby19@" | sed -e "s/^$ruby19@//" | awk '{print $1}'`}  compdef _rb19 rb19 +function rb20 { +	if [ -z "$1" ]; then +		rvm use "$ruby" +	else +		rvm use "$ruby20@$1" +	fi +} + +_rb20() {compadd `ls -1 $rvm_path/gems | grep "^$ruby20@" | sed -e "s/^$ruby20@//" | awk '{print $1}'`} +compdef _rb20 rb20 +  function rvm-update {  	rvm get head  	rvm reload # TODO: Reload rvm completion? diff --git a/plugins/safe-paste/safe-paste.plugin.zsh b/plugins/safe-paste/safe-paste.plugin.zsh new file mode 100644 index 000000000..0aa97965f --- /dev/null +++ b/plugins/safe-paste/safe-paste.plugin.zsh @@ -0,0 +1,54 @@ +# Code from Mikael Magnusson: http://www.zsh.org/mla/users/2011/msg00367.html +# +# Requires xterm, urxvt, iTerm2 or any other terminal that supports bracketed +# paste mode as documented: http://www.xfree86.org/current/ctlseqs.html + +# create a new keymap to use while pasting +bindkey -N paste +# make everything in this keymap call our custom widget +bindkey -R -M paste "^@"-"\M-^?" paste-insert +# these are the codes sent around the pasted text in bracketed +# paste mode. +# do the first one with both -M viins and -M vicmd in vi mode +bindkey '^[[200~' _start_paste +bindkey -M paste '^[[201~' _end_paste +# insert newlines rather than carriage returns when pasting newlines +bindkey -M paste -s '^M' '^J' + +zle -N _start_paste +zle -N _end_paste +zle -N zle-line-init _zle_line_init +zle -N zle-line-finish _zle_line_finish +zle -N paste-insert _paste_insert + +# switch the active keymap to paste mode +function _start_paste() { +  bindkey -A paste main +} + +# go back to our normal keymap, and insert all the pasted text in the +# command line. this has the nice effect of making the whole paste be +# a single undo/redo event. +function _end_paste() { +#use bindkey -v here with vi mode probably. maybe you want to track +#if you were in ins or cmd mode and restore the right one. +  bindkey -e +  LBUFFER+=$_paste_content +  unset _paste_content +} + +function _paste_insert() { +  _paste_content+=$KEYS +} + +function _zle_line_init() { +  # Tell terminal to send escape codes around pastes. +  [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color ]] && printf '\e[?2004h' +} + +function _zle_line_finish() { +  # Tell it to stop when we leave zle, so pasting in other programs +  # doesn't get the ^[[200~ codes around the pasted text. +  [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color ]] && printf '\e[?2004l' +} + diff --git a/plugins/sbt/_sbt b/plugins/sbt/_sbt new file mode 100644 index 000000000..91372aa72 --- /dev/null +++ b/plugins/sbt/_sbt @@ -0,0 +1,55 @@ +#compdef sbt +#autoload + +local -a _sbt_commands +_sbt_commands=( +  'clean:delete files produced by the build' +  'compile:compile sources' +  'console:start the Scala REPL with project classes on the classpath' +  'console-quick:start the Scala REPL with project deps on the classpath' +  'console-project:start the Scala REPL w/sbt+build-def on the classpath' +  'dist:generate distribution artifacts' +  'dist\:clean:clean distribution artifacts' +  'doc:generate API documentation' +  'gen-idea:generate Intellij Idea project files' +  'package:produce the main artifact, such as a binary jar' +  'package-doc:produce a doc artifact, such as a jar containing API docs' +  'package-src:produce a source artifact, such as a jar containing sources' +  'publish:publish artifacts to a repository' +  'publish-local:publish artifacts to the local repository' +  'run:run a main class' +  'run-main:run the main class selected by the first argument' +  'test:execute all tests' +  'test-only:execute the tests provided as arguments' +  'test-quick:execute previously failed tests' +  'update:resolve and optionally retrieve dependencies' +) + +local expl + +_arguments \ +  '(-help)-h[prints an help message]' \ +  '(-h)-help[prints an help message]' \ +  '(-verbose)-v[this runner is chattier]' \ +  '(-v)-verbose[this runner is chattier]' \ +  '(-debug)-d[set sbt log level to debug]' \ +  '(-d)-debug[set sbt log level to debug]' \ +  '-no-colors[disable ANSI color codes]' \ +  '-sbt-create[start even if current dir contains no sbt project]' \ +  '-sbt-dir[path to global settings/plugins dir (default: ~/.sbt)]' \ +  '-sbt-boot[path to shared boot dir (default: ~/.sbt/boot)]' \ +  '-ivy[path to local Ivy repository (default: ~/.ivy2)]' \ +  '-mem[set memory options]' \ +  '-no-share[use all local caches; no sharing]' \ +  '-no-global[use global caches, but do not use global ~/.sbt dir]' \ +  '-jvm-debug[turn on JVM debugging, open at the given port]' \ +  '-batch[disable interactive mode]' \ +  '-sbt-version[use the specified version of sbt]' \ +  '-sbt-jar[use the specified jar as the sbt launcher]' \ +  '(-sbt-snapshot)-sbt-rc[use an RC version of sbt]' \ +  '(-sbt-rc)-sbt-snapshot[use a snapshot version of sbt]' \ +  '-java-home[alternate JAVA_HOME]' \ +  '*:: :->subcmds' && return 0 + +_describe -t commands "sbt subcommand" _sbt_commands +return diff --git a/plugins/sbt/sbt.plugin.zsh b/plugins/sbt/sbt.plugin.zsh new file mode 100644 index 000000000..203c691f5 --- /dev/null +++ b/plugins/sbt/sbt.plugin.zsh @@ -0,0 +1,23 @@ +# ------------------------------------------------------------------------------ +#          FILE:  sbt.plugin.zsh +#   DESCRIPTION:  oh-my-zsh plugin file. +#        AUTHOR:  Mirko Caserta (mirko.caserta@gmail.com) +#       VERSION:  1.0.2 +# ------------------------------------------------------------------------------ +  +# aliases - mnemonic: prefix is 'sb' +alias sbc='sbt compile' +alias sbco='sbt console' +alias sbcq='sbt console-quick' +alias sbcl='sbt clean' +alias sbcp='sbt console-project' +alias sbd='sbt doc' +alias sbdc='sbt dist:clean' +alias sbdi='sbt dist' +alias sbgi='sbt gen-idea' +alias sbp='sbt publish' +alias sbpl='sbt publish-local' +alias sbr='sbt run' +alias sbrm='sbt run-main' +alias sbu='sbt update' +alias sbx='sbt test' diff --git a/plugins/scala/_scala b/plugins/scala/_scala new file mode 100644 index 000000000..c4ccb37d3 --- /dev/null +++ b/plugins/scala/_scala @@ -0,0 +1,249 @@ +#compdef scala scalac +# ------------------------------------------------------------------------------ +# Copyright (c) 2012 Github zsh-users - http://github.com/zsh-users +# 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-users 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 ZSH-USERS 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. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +#  Completion script for scala and scalac (http://www.scala-lang.org/). +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +#  * Tony Sloane <inkytonik@gmail.com> +# +# ------------------------------------------------------------------------------ + +typeset -A opt_args +local context state line + +_scala_features () { +   compadd "postfixOps" "reflectiveCalls" "implicitConversions" "higherKinds" \ +     "existentials" "experimental.macros" "_" +} + +_scala_phases () { +   compadd "parser" "namer" "packageobjects" "typer" "patmat" "superaccessors" \ +     "extmethods" "pickler" "refchecks" "selectiveanf" "selectivecps" "uncurry" \ +     "tailcalls" "specialize" "explicitouter" "erasure" "posterasure" "lazyvals" \ +     "lambdalift" "constructors" "flatten" "mixin" "cleanup" "icode" "inliner" \ +     "inlineExceptionHandlers" "closelim" "dce" "jvm" "terminal" +} + +local -a shared_opts +shared_opts=( +  "-bootclasspath+[Override location of bootstrap class files]:bootstrap class directory:_files -/" +  "-classpath+[Specify where to find user class files]:directory:_files -/" +  "-D-[Pass -Dproperty=value directly to the runtime system]" +  "-d+[Destination for generated classfiles]: directory or jar file:_files" +  "-dependencyfile+[Set dependency tracking file]:dependency tracking file:_files" +  "-deprecation[Emit warning and location for usages of deprecated APIs]" +  "-encoding+[Specify character encoding used by source files]:encoding:" +  "-explaintypes[Explain type errors in more detail]" +  "-extdirs+[Override location of installed extensions]:extensions directory:_files -/" +  "-g\:-[Set level of generated debugging info (default\: vars)]:debugging info level:(none source line vars notailcalls)" +  "-help[Print a synopsis of standard options]" +  "-J-[pass argument directly to Java runtime system]:JVM argument:" +  "-javabootclasspath+[Override java boot classpath]:Java boot class path directory]:_files -/" +  "-javaextdirs+[Override java extdirs classpath]:Java extdirs directory:_files -/" +  "-language\:-[Enable one or more language features]:feature:_scala_features" +  "-no-specialization[Ignore @specialize annotations]" +  "-nobootcp[Do not use the boot classpath for the scala jars]" +  "-nowarn[Generate no warnings]" +  "-optimise[Generate faster bytecode by applying optimisations to the program]" +  "-P\:-[Pass an option to a plugin (written plugin\:opt)]:plugin option:" +  "-print[Print program with Scala-specific features removed]" +  "-sourcepath+[Specify location(s) of source files]:source file directory:_files -/" +  "-target\:-[Target platform for object files (default\: jvm-1.5)]:platform name:(jvm-1.5 msil)" +  "-toolcp+[Add to the runner classpath]:directory:_files -/" +  "-unchecked[Enable detailed unchecked (erasure) warnings]" +  "-uniqid[Uniquely tag all identifiers in debugging output]" +  "-usejavacp[Utilize the java.class.path in classpath resolution]" +  "-verbose[Output messages about what the compiler is doing]" +  "-version[Print product version and exit]" +  "-X[Print a synopsis of advanced options]" +  "-Y[Print a synopsis of private options]" +) + +local -a X_opts +X_opts=( +  "-Xcheck-null[Warn upon selection of nullable reference]" +  "-Xcheckinit[Wrap field accessors to throw an exception on uninitialized access]" +  "-Xdisable-assertions[Generate no assertions or assumptions]" +  "-Xelide-below+[Calls to @elidable methods are omitted if method priority is lower than integer argument]" +  "-Xexperimental[Enable experimental extensions]" +  "-Xfatal-warnings[Fail the compilation if there are any warnings]" +  "-Xfull-lubs[Retains pre 2.10 behavior of less aggressive truncation of least upper bounds]" +  "-Xfuture[Turn on future language features]" +  "-Xgenerate-phase-graph+[Generate the phase graphs (outputs .dot files) to fileX.dot]:output file:_files" +  "-Xlint[Enable recommended additional warnings]" +  "-Xlog-free-terms[Print a message when reification creates a free term]" +  "-Xlog-free-types[Print a message when reification resorts to generating a free type]" +  "-Xlog-implicits[Show more detail on why some implicits are not applicable]" +  "-Xlog-implicit-conversions[Print a message whenever an implicit conversion is inserted]" +  "-Xlog-reflective-calls[Print a message when a reflective method call is generated]" +  "-Xmacro-settings\:-[Custom settings for macros]:option" +  "-Xmain-class+[Class for manifest's Main-Class entry (only useful with -d jar)]:path:" +  "-Xmax-classfile-name+[Maximum filename length for generated classes]" +  "-Xmigration[Warn about constructs whose behavior may have changed]" +  "-Xno-forwarders[Do not generate static forwarders in mirror classes]" +  "-Xno-patmat-analysis[Don't perform exhaustivity/unreachability analysis. Also, ignore @switch annotation]" +  "-Xno-uescape[Disable handling of \u unicode escapes]" +  "-Xnojline[Do not use JLine for editing]" +  "-Xoldpatmat[Use the pre-2.10 pattern matcher. Otherwise, the 'virtualizing' pattern matcher is used in 2.10]" +  "-Xprint\:-[Print out program after <phase>]:phase name:_scala_phases" +  "-Xprint-icode\:-[Log internal icode to *.icode files after phase (default\: icode)]:phase name:_scala_phases" +  "-Xprint-pos[Print tree positions, as offsets]" +  "-Xprint-types[Print tree types (debugging option)]" +  "-Xprompt[Display a prompt after each error (debugging option)]" +  "-Xresident[Compiler stays resident: read source filenames from standard input]" +  "-Xscript+[Treat the source file as a script and wrap it in a main method]:main object name" +  "-Xshow-class+[Show internal representation of class]:class name" +  "-Xshow-object+[Show internal representation of object]:object name" +  "-Xshow-phases[Print a synopsis of compiler phases]" +  "-Xsource-reader+[Specify a class name for a custom method of reading source files]:class name" +  "-Xverify[Verify generic signatures in generated bytecode]" + +  "-Xassem-extdirs+[List of directories containing assemblies (requires -target:msil) (default\: lib)]:assembly directory:_files -/" +  "-Xassem-name+[Name of the output assembly (requires -target:msil)]:assembly name:_files" +  "-Xassem-path+[List of assemblies referenced by the program (requires -target:msil)]:assembly path:_files" +  "-Xsourcedir+[Mirror source folder structure in output directory (requires -target:msil)]:source directory:_files -/" + +  "-Xplugin\:-[Load one or more plugins from file]:plugin file:_files" +  "-Xpluginsdir+[Path to search compiler plugins]:plugin directory:_files -/" +  "-Xplugin-list[Print a synopsis of loaded plugins]" +  "-Xplugin-disable\:-[Disable the given plugin(s)]" +  "-Xplugin-require\:-[Abort unless the given plugin(s) are available]" +) + +local -a Y_opts +Y_opts=( +  "-Y[Print a synopsis of private options]" +  "-Ybuild-manager-debug[Generate debug information for the Refined Build Manager compiler]" +  "-Ybuilder-debug\:-[Compile using the specified build manager (default\: none)]:build manager:(none refined simple)" +  "-Yclosure-elim[Perform closure elimination]" +  "-Ycompact-trees[Use compact tree printer when displaying trees]" +  "-Ydead-code[Perform dead code elimination]" +  "-Ydependent-method-types[Allow dependent method types]" +  "-Ydump-classes+[Dump the generated bytecode to .class files (useful for reflective compilation that utilizes in-memory classloaders)]:output directory:_files -/" +  "-Yeta-expand-keeps-star[Eta-expand varargs methods to T* rather than Seq[T].  This is a temporary option to ease transition.]" +  "-Ygen-javap+[Generate a parallel output directory of .javap files]:output directory:_files -/" +  "-Yinfer-argument-types[Infer types for arguments of overriden methods]" +  "-Yinline[Perform inlining when possible]" +  "-Yinline-handlers[Perform exception handler inlining when possible]" +  "-Yinline-warnings[Emit inlining warnings (normally surpressed due to high volume)]" +  "-Yinvalidate+[Invalidate classpath entry before run]:classpath entry" +  "-Ylinearizer\:-[Linearizer to use (default\: rpo)]:linearizer:(normal dfs rpo dump)" +  "-Ylog-classpath[Output information about what classpath is being applied]" +  "-Yno-adapted-args[Do not adapt an argument list (either by inserting unit or creating a tuple) to match the receiver]" +  "-Ymacro-debug-lite[Trace essential macro-related activities]" +  "-Ymacro-debug-verbose[Trace all macro-related activities: compilation, generation of synthetics, classloading, expansion, exceptions]" +  "-Yno-completion[Disable tab-completion in the REPL]" +  "-Yno-generic-signatures[Suppress generation of generic signatures for Java]" +  "-Yno-imports[Compile without any implicit imports]" +  "-Yno-predef[Compile without importing Predef]" +  "-Yno-self-type-checks[Suppress check for self-type conformance among inherited members]" +  "-Yno-squeeze[Disable creation of compact code in matching]" +  "-Ynotnull[Enable (experimental and incomplete) scala.NotNull]" +  "-Yoverride-objects[Allow member objects to be overridden]" +  "-Yoverride-vars[Allow vars to be overridden]" +  "-Ypmat-naive[Desugar matches as naively as possible]" +  "-Ypresentation-delay+[Wait number of ms after typing before starting typechecking]" +  "-Ypresentation-log+[Log presentation compiler events into file]:log file:_files" +  "-Ypresentation-replay+[Replay presentation compiler events from file]:log file:_files" +  "-Ypresentation-strict[Do not report type errors in sources with syntax errors]" +  "-Ypresentation-verbose[Print information about presentation compiler tasks]" +  "-Yprofile-class+[Specify name of profiler class]:profiler class name" +  "-Yprofile-memory[Heap snapshot after compiler run (requires jgpagent on JVM -agentpath)]" +  "-Yrangepos[Use range positions for syntax trees]" +  "-Yrecursion+[Set recursion depth used when locking symbols]" +  "-Yreify-copypaste[Dump the reified trees in copypasteable representation]" +  "-Yrepl-sync[Do not use asynchronous code for REPL startup]" +  "-Yresolve-term-conflict\:-[Resolve term conflicts (default\: error)]:resolution strategy:(package object error)" +  "-Yself-in-annots[Include a \"self\" identifier inside of annotations]" +  "-Yshow\:-[Show after <phase> (requires -Xshow-class or -Xshow-object)]:phase name:_scala_phases" +  "-Yshow-syms[Print the AST symbol hierarchy after each phase]" +  "-Yshow-symkinds[Print abbreviated symbol kinds next to symbol names]" +  "-Yshow-trees[Print detailed ASTs (requires -Xprint\:phase)]" +  "-Yshow-trees-compact[Print detailed ASTs in compact form (requires -Xprint\:)]" +  "-Yshow-trees-stringified[Print stringifications along with detailed ASTs (requires -Xprint\:)]" +  "-Ystatistics[Print compiler statistics]" +  "-Ystruct-dispatch\:-[Structural method dispatch policy (default\: poly-cache)]:policy name:(no-cache mono-cache poly-cache invoke-dynamic)" + +  "-Ybrowse\:-[Browse the abstract syntax tree after <phase>]:phase name:_scala_phases" +  "-Ycheck\:-[Check the tree at the end of <phase>]:phase name:_scala_phases" +  "-Ylog\:-[Log operations during <phase>]:phase name:_scala_phases" +  "-Yprofile\:-[Profile CPU usage of given phases (requires jgpagent on JVM -agentpath)]:phase name:_scala_phases" +  "-Yskip\:-[Skip <phase>]:phase name:_scala_phases" +  "-Ystop-after\:-[Stop after given phase <phase>]:phase name:_scala_phases" +  "-Ystop-before\:-[Stop before given phase <phase>]:phase name:_scala_phases" + +  "-Ywarn-adapted-args[Warn if an argument list is modified to match the receiver]" +  "-Ywarn-all[Enable all -Y warnings]" +  "-Ywarn-dead-code[Warn when dead code is identified]" +  "-Ywarn-inaccessible[Warn about inaccessible types in method signatures]" +  "-Ywarn-nullary-override[Warn when non-nullary overrides nullary, e.g. def foo() over def foo]" +  "-Ywarn-nullary-unit[Warn when nullary methods return Unit]" +  "-Ywarn-numeric-widen[Warn when numerics are widened]" +  "-Ywarn-value-discard[Warn when non-Unit expression results are unused]" + +  "-Ybuild-manager-debug[Generate debug information for the Refined Build Manager compiler]" +  "-Ybuilder-debug\:-[Compile using the specified build manager (default\: none)]:manager:(none refined simple)" +  "-Ycompletion-debug[Trace all tab completion activity]" +  "-Ydebug[Increase the quantity of debugging output]" +  "-Ydoc-debug[Trace all scaladoc activity]" +  "-Yide-debug[Generate, validate and output trees using the interactive compiler]" +  "-Yinfer-debug[Trace type inference and implicit search]" +  "-Yissue-debug[Print stack traces when a context issues an error]" +  "-Ypatmat-debug[Trace pattern matching translation]" +  "-Ypmat-debug[Trace all pattern matcher activity]" +  "-Ypos-debug[Trace position validation]" +  "-Ypresentation-debug[Enable debugging output for the presentation compiler]" +  "-Yreify-debug[Trace reification]" +  "-Yrepl-debug[Trace all REPL activity]" +  "-Ytyper-debug[Trace all type assignments]" +) + +local -a scala_opts +scala_opts=( +  "-e+[execute <string> as if entered in the repl]:string" \ +  "-howtorun+[what to run (default\: guess)]:execution mode:(script object jar guess)" \ +  "-i+[preload <file> before starting the repl]:file to preload:_files" \ +  "-nc[no compilation daemon\: do not use the fsc offline compiler]" \ +  "-save[save the compiled script in a jar for future use]" +) + +case $words[$CURRENT] in +    -X*) _arguments $X_opts;; +    -Y*) _arguments $Y_opts;; +      *) case $service in +           scala)  _arguments $scala_opts $shared_opts "*::filename:_files";; +           scalac) _arguments $shared_opts "*::filename:_files";; +         esac +esac + +return 0 diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index c4e92a1fe..7468749f8 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -6,11 +6,17 @@  #  #     zstyle :omz:plugins:ssh-agent agent-forwarding on  # -#   To load multiple identies use the identities style, For +#   To load multiple identities use the identities style, For  #   example:  #  #     zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github  # +#   To set the maximum lifetime of the identities, use the +#   lifetime style. The lifetime may be specified in seconds +#   or as described in sshd_config(5) (see TIME FORMATS) +#   If left unspecified, the default lifetime is forever. +# +#     zstyle :omz:plugins:ssh-agent lifetime 4h  #  # CREDITS  # @@ -27,15 +33,18 @@ local _plugin__forwarding  function _plugin__start_agent()  {    local -a identities +  local lifetime +  zstyle -s :omz:plugins:ssh-agent lifetime lifetime    # start ssh-agent and setup environment -  /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env} +  /usr/bin/env ssh-agent ${lifetime:+-t} ${lifetime} | 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... +  echo starting ssh-agent... +    /usr/bin/ssh-add $HOME/.ssh/${^identities}  } diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh index 1b2cbcdce..7a5ada337 100755 --- a/plugins/sublime/sublime.plugin.zsh +++ b/plugins/sublime/sublime.plugin.zsh @@ -1,7 +1,12 @@  # Sublime Text 2 Aliases -#unamestr = 'uname' -local _sublime_darwin_subl=/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl +local _sublime_darwin_paths > /dev/null 2>&1 +_sublime_darwin_paths=( +	"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" +	"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" +	"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" +	"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" +)  if [[ $('uname') == 'Linux' ]]; then  	if [ -f '/usr/bin/sublime_text' ]; then @@ -9,13 +14,15 @@ if [[ $('uname') == 'Linux' ]]; then  	else  		st_run() { nohup /usr/bin/sublime-text $@ > /dev/null & }  	fi -alias st=st_run +	alias st=st_run +  elif  [[ $('uname') == 'Darwin' ]]; then -	# Check if Sublime is installed in user's home application directory -	if [[ -a $HOME/${_sublime_darwin_subl} ]]; then -		alias st='$HOME/${_sublime_darwin_subl}' -	else -		alias st='${_sublime_darwin_subl}' -	fi + +	for _sublime_path in $_sublime_darwin_paths; do +		if [[ -a $_sublime_path ]]; then +			alias st="'$_sublime_path'" +		fi +	done  fi +  alias stt='st .' diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh index cc9ffebc0..45d6165aa 100644 --- a/plugins/symfony2/symfony2.plugin.zsh +++ b/plugins/symfony2/symfony2.plugin.zsh @@ -14,6 +14,8 @@ compdef _symfony2 app/console  compdef _symfony2 sf  #Alias -alias sf2='php app/console' -alias sf2clear='php app/console cache:clear' +alias sf='php app/console' +alias sfcl='php app/console cache:clear' +alias sfroute='php app/console router:debug' +alias sfgb='php app/console generate:bundle' diff --git a/plugins/tmux/tmux.extra.conf b/plugins/tmux/tmux.extra.conf new file mode 100644 index 000000000..beffd380c --- /dev/null +++ b/plugins/tmux/tmux.extra.conf @@ -0,0 +1,2 @@ +set -g default-terminal $ZSH_TMUX_TERM +source $HOME/.tmux.conf diff --git a/plugins/tmux/tmux.only.conf b/plugins/tmux/tmux.only.conf new file mode 100644 index 000000000..0734df3e1 --- /dev/null +++ b/plugins/tmux/tmux.only.conf @@ -0,0 +1 @@ +set -g default-terminal $ZSH_TMUX_TERM diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh new file mode 100644 index 000000000..465f5b053 --- /dev/null +++ b/plugins/tmux/tmux.plugin.zsh @@ -0,0 +1,85 @@ +# Only run if tmux is actually installed +if which tmux &> /dev/null +	then +	# Configuration variables +	# +	# Automatically start tmux +	[[ -n "$ZSH_TMUX_AUTOSTART" ]] || ZSH_TMUX_AUTOSTART=false +	# Only autostart once. If set to false, tmux will attempt to +	# autostart every time your zsh configs are reloaded. +	[[ -n "$ZSH_TMUX_AUTOSTART_ONCE" ]] || ZSH_TMUX_AUTOSTART_ONCE=true +	# Automatically connect to a previous session if it exists +	[[ -n "$ZSH_TMUX_AUTOCONNECT" ]] || ZSH_TMUX_AUTOCONNECT=true +	# Automatically close the terminal when tmux exits +	[[ -n "$ZSH_TMUX_AUTOQUIT" ]] || ZSH_TMUX_AUTOQUIT=$ZSH_TMUX_AUTOSTART +	# Set term to screen or screen-256color based on current terminal support +	[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true +	# The TERM to use for non-256 color terminals. +	# Tmux states this should be screen, but you may need to change it on +	# systems without the proper terminfo +	[[ -n "$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR" ]] || ZSH_TMUX_FIXTERM_WITHOUT_256COLOR="screen" +	# The TERM to use for 256 color terminals. +	# Tmux states this should be screen-256color, but you may need to change it on +	# systems without the proper terminfo +	[[ -n "$ZSH_TMUX_FIXTERM_WITH_256COLOR" ]] || ZSH_TMUX_FIXTERM_WITH_256COLOR="screen-256color" + + +	# Get the absolute path to the current directory +	local zsh_tmux_plugin_path="$(cd "$(dirname "$0")" && pwd)" + +	# Determine if the terminal supports 256 colors +	if [[ `tput colors` == "256" ]] +	then +		export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITH_256COLOR +	else +		export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR +	fi + +	# Set the correct local config file to use. +	if [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]] +	then +		#use this when they have a ~/.tmux.conf +		export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf" +	else +		#use this when they don't have a ~/.tmux.conf +		export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.only.conf" +	fi + +	# Wrapper function for tmux. +	function _zsh_tmux_plugin_run() +	{ +		# We have other arguments, just run them +		if [[ -n "$@" ]] +		then +			\tmux $@ +		# Try to connect to an existing session. +		elif [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]] +		then +			\tmux attach || \tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`  new-session +			[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit +		# Just run tmux, fixing the TERM variable if requested. +		else +			\tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG` +			[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit +		fi +	} + +	# Use the completions for tmux for our function +	compdef _tmux _zsh_tmux_plugin_run + +	# Alias tmux to our wrapper function. +	alias tmux=_zsh_tmux_plugin_run + +	# Autostart if not already in tmux and enabled. +	if [[ ! -n "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" ]] +	then +		# Actually don't autostart if we already did and multiple autostarts are disabled. +		if [[ "$ZSH_TMUX_AUTOSTART_ONCE" == "false" || "$ZSH_TMUX_AUTOSTARTED" != "true" ]] +		then +			export ZSH_TMUX_AUTOSTARTED=true +			_zsh_tmux_plugin_run +		fi +	fi +else +	print "zsh tmux plugin: tmux not found. Please install tmux before using this plugin." +fi diff --git a/plugins/tmuxinator/_tmuxinator b/plugins/tmuxinator/_tmuxinator new file mode 100644 index 000000000..f0ff304dd --- /dev/null +++ b/plugins/tmuxinator/_tmuxinator @@ -0,0 +1,36 @@ +#compdef tmuxinator +#autoload + +local curcontext="$curcontext" state line ret=1 +local -a _configs + +_arguments -C \ +  '1: :->cmds' \ +  '2:: :->args' && ret=0 + +case $state in +  cmds) +    _values "tmuxinator command" \ +        "start[start a tmux session using project's tmuxinator config]" \ +        "open[create a new project file and open it in your editor]" \ +        "copy[copy source_project project file to a new project called new_project]" \ +        "delete[deletes the project called project_name]" \ +        "implode[deletes all existing projects!]" \ +        "list[list all existing projects]" \ +        "doctor[look for problems in your configuration]" \ +        "help[shows this help document]" \ +        "version[shows tmuxinator version number]" +    ret=0 +    ;; +  args) +    case $line[1] in +      start|open|copy|delete) +        _configs=(`tmuxinator list | sed -n 's/^[ \t]\+//p'`) +        _values 'configs' $_configs +        ret=0 +        ;; +    esac +    ;; +esac + +return ret
\ No newline at end of file diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant index 9bed1e3c6..9af8cb036 100644 --- a/plugins/vagrant/_vagrant +++ b/plugins/vagrant/_vagrant @@ -8,18 +8,19 @@ _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' +    'plugin:Plugin commands'      '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.' +    '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' +    '--help:[TASK] Describe available tasks or one specific task' +    '--version:Prints the Vagrant version information'  )  local -a _box_arguments diff --git a/plugins/vundle/vundle.plugin.zsh b/plugins/vundle/vundle.plugin.zsh index 005a58476..936c8d7d2 100644 --- a/plugins/vundle/vundle.plugin.zsh +++ b/plugins/vundle/vundle.plugin.zsh @@ -16,8 +16,12 @@ function vundle () {    vim -c "execute \"BundleInstall\" | q | q"  } -  function vundle-update () {    vundle-init    vim -c "execute \"BundleInstall!\" | q | q"  } + +function vundle-clean () { +  vundle-init +  vim -c "execute \"BundleClean!\" | q | q" +} diff --git a/plugins/zeus/zeus.plugin.zsh b/plugins/zeus/zeus.plugin.zsh index 1658b34d3..eddfb4f94 100644 --- a/plugins/zeus/zeus.plugin.zsh +++ b/plugins/zeus/zeus.plugin.zsh @@ -2,12 +2,6 @@  # Zeus preloads your Rails environment and forks that process whenever  # needed. This effectively speeds up Rails' boot process to under 1 sec. -# Always use bundler. -# Rails depends on bundler, so we can be pretty sure, that there are no -# problems with this command. For all the other aliases I provided an -# alternative, in case people have conflicts with other plugins (e.g. suse). -alias zeus='bundle exec zeus' -  # Init  alias zi='zeus init'  alias zinit='zeus init' diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme index c3107c06c..75e095776 100644 --- a/themes/agnoster.zsh-theme +++ b/themes/agnoster.zsh-theme @@ -83,6 +83,41 @@ prompt_git() {    fi  } +prompt_hg() { +	local rev status +	if $(hg id >/dev/null 2>&1); then +		if $(hg prompt >/dev/null 2>&1); then +			if [[ $(hg prompt "{status|unknown}") = "?" ]]; then +				# if files are not added +				prompt_segment red white +				st='±' +			elif [[ -n $(hg prompt "{status|modified}") ]]; then +				# if any modification +				prompt_segment yellow black +				st='±' +			else +				# if working copy is clean +				prompt_segment green black +			fi +			echo -n $(hg prompt "⭠ {rev}@{branch}") $st +		else +			st="" +			rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g') +			branch=$(hg id -b 2>/dev/null) +			if `hg st | grep -Eq "^\?"`; then +				prompt_segment red black +				st='±' +			elif `hg st | grep -Eq "^(M|A)"`; then +				prompt_segment yellow black +				st='±' +			else +				prompt_segment green black +			fi +			echo -n "⭠ $rev@$branch" $st +		fi +	fi +} +  # Dir: current working directory  prompt_dir() {    prompt_segment blue black '%~' @@ -109,6 +144,7 @@ build_prompt() {    prompt_context    prompt_dir    prompt_git +  prompt_hg    prompt_end  } diff --git a/themes/dallas.zsh-theme b/themes/dallas.zsh-theme index e9b4f852a..c9e335521 100644 --- a/themes/dallas.zsh-theme +++ b/themes/dallas.zsh-theme @@ -14,7 +14,7 @@ fi  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%}" +DALLAS_CURRENT_LOCA_="%{$fg[cyan]%}%~\$(git_prompt_info)%{$reset_color%}\$(parse_git_dirty)"  # Grab the current username: dallas  DALLAS_CURRENT_USER_="%{$fg[red]%}%n%{$reset_color%}"  # Use a % for normal users and a # for privelaged (root) users. diff --git a/themes/gianu.zsh-theme b/themes/gianu.zsh-theme new file mode 100644 index 000000000..c7fe40665 --- /dev/null +++ b/themes/gianu.zsh-theme @@ -0,0 +1,11 @@ +# Oh-my-Zsh prompt created by gianu +# +# github.com/gianu +# sgianazza@gmail.com + +PROMPT='[%{$fg_bold[white]%}%n%{$reset_color%}@%{$fg_bold[red]%}%m%{$reset_color%} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)%{$reset_color%}]$ ' + +ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[green]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX=")" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%} %{$fg[yellow]%}✗%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}" diff --git a/themes/itchy.zsh-theme b/themes/itchy.zsh-theme new file mode 100644 index 000000000..afc2abf69 --- /dev/null +++ b/themes/itchy.zsh-theme @@ -0,0 +1,19 @@ +# Created by Daniel Bayerlein https://github.com/danielbayerlein +# Inspired by http://peepcode.com/blog/2012/my-command-line-prompt + +local smiley="%(?,%{$fg[green]%}☺%{$reset_color%},%{$fg[red]%}☹%{$reset_color%})" + +local user="%{$fg[cyan]%}%n%{$reset_color%}" +local host="%{$fg[cyan]%}@%m%{$reset_color%}" +local pwd="%{$fg[yellow]%}%~%{$reset_color%}" + +PROMPT='${user}${host} ${pwd} +${smiley}  ' + +RPROMPT='$(rvm-prompt || rbenv version) %{$fg[white]%}$(git_prompt_info)%{$reset_color%}' + +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%}" + diff --git a/themes/jaischeema.zsh-theme b/themes/jaischeema.zsh-theme new file mode 100644 index 000000000..aecc5b961 --- /dev/null +++ b/themes/jaischeema.zsh-theme @@ -0,0 +1,23 @@ +# ------------------------------------------------------------------------------ +#          FILE:  jaischeema.zsh-theme +#   DESCRIPTION:  oh-my-zsh theme file. +#        AUTHOR:  Jais Cheema +#       VERSION:  0.0.1 +# ------------------------------------------------------------------------------ + + + +PROMPT='%{$fg_bold[magenta]%}%m%{$reset_color%} at %{$fg_bold[green]%}%~%{$reset_color%} %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}%{$fg[red]%}❯%{$reset_color%} ' + +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]%}) " + +if which rbenv &> /dev/null; then +  RPROMPT='%{$fg[red]%}$(rbenv version | sed -e "s/ (set.*$//")%{$reset_color%}' +else +  if which rvm-prompt &> /dev/null; then +    RPROMPT='%{$fg[red]%}$(rvm-prompt)%{$reset_color%}' +  fi +fi diff --git a/themes/kiwi.zsh-theme b/themes/kiwi.zsh-theme new file mode 100644 index 000000000..f93de2b75 --- /dev/null +++ b/themes/kiwi.zsh-theme @@ -0,0 +1,12 @@ +#  +# Kiwi ZSH Theme +#  + +PROMPT='%{$fg_bold[green]%}┌[%{$fg_bold[cyan]%}kiwish-4.2%{$fg_bold[green]%}]-(%{$fg_bold[white]%}%2~%{$fg_bold[green]%})-$(git_prompt_info)$(svn_prompt_info)$(battery_pct_prompt) +└> % %{$reset_color%}' + +ZSH_THEME_GIT_PROMPT_PREFIX="[%{$reset_color%}%{$fg[white]%}git:%{$fg_bold[white]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg_bold[green]%}]-" + +ZSH_THEME_SVN_PROMPT_PREFIX="[%{$reset_color%}%{$fg[white]%}svn:%{$fg_bold[white]%}/" +ZSH_THEME_SVN_PROMPT_SUFFIX="%{$fg_bold[green]%}]-" diff --git a/themes/ys.zsh-theme b/themes/ys.zsh-theme new file mode 100644 index 000000000..3d316390e --- /dev/null +++ b/themes/ys.zsh-theme @@ -0,0 +1,34 @@ +# Clean, simple, compatible and meaningful. +# Tested on Linux, Unix and Windows under ANSI colors. +# It is recommended to use with a dark background and the font Inconsolata. +# Colors: black, red, green, yellow, *blue, magenta, cyan, and white. +#  +# http://ysmood.org/wp/2013/03/my-ys-terminal-theme/ +# Mar 2013 ys + +# Machine name. +function box_name { +    [ -f ~/.box-name ] && cat ~/.box-name || hostname -s +} + +# Directory info. +local current_dir='${PWD/#$HOME/~}' + +# Git info. +local git_info='$(git_prompt_info)' +ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[white]%}on%{$reset_color%} git:%{$fg[cyan]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}x" +ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}o" + +# Prompt format: \n # USER at MACHINE in DIRECTORY on git:BRANCH STATE [TIME] \n $  +PROMPT=" +%{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \ +%{$fg[cyan]%}%n \ +%{$fg[white]%}at \ +%{$fg[green]%}$(box_name) \ +%{$fg[white]%}in \ +%{$terminfo[bold]$fg[yellow]%}${current_dir}%{$reset_color%}\ +${git_info} \ +%{$fg[white]%}[%*] +%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}" diff --git a/tools/install.sh b/tools/install.sh index 41f83e354..a2bd5665a 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -21,7 +21,7 @@ echo "\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[  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 "export PATH=\$PATH:$PATH" >> ~/.zshrc  echo "\033[0;34mTime to change your default shell to zsh!\033[0m"  chsh -s `which zsh` diff --git a/tools/upgrade.sh b/tools/upgrade.sh index a039d32f0..0aeebdebf 100644 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -1,4 +1,5 @@  current_path=`pwd` +current_path=${current_path/ /\\ }  printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"  cd "$ZSH"  | 
