diff options
| -rw-r--r-- | README.markdown | 10 | ||||
| -rw-r--r-- | lib/git.zsh | 12 | ||||
| -rw-r--r-- | plugins/asdf/README.md | 27 | ||||
| -rw-r--r-- | plugins/asdf/asdf.plugin.zsh | 7 | ||||
| -rw-r--r-- | plugins/bundler/README.md | 1 | ||||
| -rw-r--r-- | plugins/geeknote/README.md | 12 | ||||
| -rw-r--r-- | plugins/geeknote/_geeknote | 136 | ||||
| -rw-r--r-- | plugins/geeknote/geeknote.plugin.zsh | 2 | ||||
| -rw-r--r-- | plugins/git/git.plugin.zsh | 10 | ||||
| -rw-r--r-- | plugins/github/README.md | 4 | ||||
| -rw-r--r-- | plugins/github/github.plugin.zsh | 2 | ||||
| -rw-r--r-- | plugins/mix/_mix | 4 | ||||
| -rw-r--r-- | plugins/npm/npm.plugin.zsh | 3 | ||||
| -rw-r--r-- | plugins/symfony2/symfony2.plugin.zsh | 2 | ||||
| -rw-r--r-- | plugins/textmate/textmate.plugin.zsh | 11 | ||||
| -rwxr-xr-x | plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh | 3 | ||||
| -rw-r--r-- | themes/avit.zsh-theme | 21 | ||||
| -rw-r--r-- | themes/bira.zsh-theme | 8 | ||||
| -rw-r--r-- | themes/bureau.zsh-theme | 54 | ||||
| -rw-r--r-- | themes/candy.zsh-theme | 2 | ||||
| -rw-r--r-- | themes/kennethreitz.zsh-theme | 8 | ||||
| -rw-r--r-- | themes/sunrise.zsh-theme | 6 | ||||
| -rw-r--r-- | themes/ys.zsh-theme | 54 | 
23 files changed, 312 insertions, 87 deletions
diff --git a/README.markdown b/README.markdown index 843c0c6ba..0cbea72c9 100644 --- a/README.markdown +++ b/README.markdown @@ -12,9 +12,9 @@ To learn more, visit [ohmyz.sh](http://ohmyz.sh) and follow [@ohmyzsh](https://t  ### Prerequisites -__Disclaimer:__ _Oh My Zsh works best on Mac OS X and Linux._ +__Disclaimer:__ _Oh My Zsh works best on OS X and Linux._ -* Unix-based operating system (Mac OS X or Linux) +* Unix-based operating system (OS X or Linux)  * [Zsh](http://www.zsh.org) should be installed (v4.3.9 or more recent). If not pre-installed (`zsh --version` to confirm), check the following instruction here: [Installing ZSH](https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH)  * `curl` or `wget` should be installed  * `git` should be installed @@ -26,13 +26,13 @@ Oh My Zsh is installed by running one of the following commands in your terminal  #### via curl  ```shell -sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" +sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"  ```  #### via wget  ```shell -sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" +sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"  ```  ## Using Oh My Zsh @@ -104,7 +104,7 @@ The default location is `~/.oh-my-zsh` (hidden in your home directory)  If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this:  ```shell -export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" +export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"  ```  #### Manual Installation diff --git a/lib/git.zsh b/lib/git.zsh index f91b516bd..1c76d5882 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -188,6 +188,18 @@ function git_compare_version() {    echo 0  } +# Outputs the name of the current user +# Usage example: $(git_current_user_name) +function git_current_user_name() { +  command git config user.name 2>/dev/null +} + +# Outputs the email of the current user +# Usage example: $(git_current_user_email) +function git_current_user_email() { +  command git config user.email 2>/dev/null +} +  # This is unlikely to change so make it all statically assigned  POST_1_7_2_GIT=$(git_compare_version "1.7.2")  # Clean up the namespace slightly by removing the checker function diff --git a/plugins/asdf/README.md b/plugins/asdf/README.md new file mode 100644 index 000000000..e8aa976bc --- /dev/null +++ b/plugins/asdf/README.md @@ -0,0 +1,27 @@ +## asdf + +**Maintainer:** [@RobLoach](https://github.com/RobLoach) + +Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more. + +### Installation + +1. Enable the plugin by adding it to your `plugins` definition in `~/.zshrc`. + +  ``` +  plugins=(asdf) +  ``` + +2. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following: +  ``` +  git clone https://github.com/asdf-vm/asdf.git ~/.asdf +  ``` + +### Usage + +See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf: + +``` +asdf plugin-add nodejs git@github.com:asdf-vm/asdf-nodejs.git +asdf install nodejs 5.9.1 +``` diff --git a/plugins/asdf/asdf.plugin.zsh b/plugins/asdf/asdf.plugin.zsh new file mode 100644 index 000000000..8736d2ff8 --- /dev/null +++ b/plugins/asdf/asdf.plugin.zsh @@ -0,0 +1,7 @@ +# Find where asdf should be installed. +ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" + +# Load asdf, if found. +if [ -f $ASDF_DIR/asdf.sh ]; then +    . $ASDF_DIR/asdf.sh +fi diff --git a/plugins/bundler/README.md b/plugins/bundler/README.md index edd95ccc2..04d551447 100644 --- a/plugins/bundler/README.md +++ b/plugins/bundler/README.md @@ -6,6 +6,7 @@    - `bl` aliased to `bundle list`    - `bp` aliased to `bundle package`    - `bo` aliased to `bundle open` +  - `bout` aliased to `bundle outdated`    - `bu` aliased to `bundle update`    - `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`)  - adds a wrapper for common gems: diff --git a/plugins/geeknote/README.md b/plugins/geeknote/README.md new file mode 100644 index 000000000..a6b50e27f --- /dev/null +++ b/plugins/geeknote/README.md @@ -0,0 +1,12 @@ +## ZSH-Geeknote + +[Geeknote](https://github.com/VitaliyRodnenko/geeknote) plugin for [oh-my-zsh framework](http://github.com/robbyrussell/oh-my-zsh). + +Plugins provides: + +- auto completion of commands and their options +- alias `gn` + +You can find information how to install Geeknote and it's available commands on the [project website](http://www.geeknote.me/). + +Maintainer : Ján Koščo ([@s7anley](https://twitter.com/s7anley)) diff --git a/plugins/geeknote/_geeknote b/plugins/geeknote/_geeknote new file mode 100644 index 000000000..cf1a187d2 --- /dev/null +++ b/plugins/geeknote/_geeknote @@ -0,0 +1,136 @@ +#compdef geeknote +# --------------- ------------------------------------------------------------ +#           Name : _geeknote +#       Synopsis : zsh completion for geeknote +#         Author : Ján Koščo <3k.stanley@gmail.com> +#       HomePage : http://www.geeknote.me +#        Version : 0.1 +#            Tag : [ shell, zsh, completion, evernote ] +#      Copyright : © 2014 by Ján Koščo, +#                  Released under current GPL license. +# --------------- ------------------------------------------------------------ + +local -a _1st_arguments +_1st_arguments=( +  'login' +  'logout' +  'settings' +  'create' +  'edit' +  'find' +  'show' +  'remove' +  'notebook-list' +  'notebook-create' +  'notebook-edit' +  'tag-list' +  'tag-create' +  'tag-edit' +  'tag-remove' +  'gnsync' +  'user' +) + +_arguments '*:: :->command' + +if (( CURRENT == 1 )); then +  _describe -t commands "geeknote command" _1st_arguments +  return +fi + +local -a _command_args +case "$words[1]" in +  user) +    _command_args=( +      '(--full)--full' \ +    ) +    ;; +  logout) +    _command_args=( +      '(--force)--force' \ +    ) +    ;; +  settings) +    _command_args=( +      '(--editor)--editor' \ +    ) +    ;; +  create) +    _command_args=( +      '(-t|--title)'{-t,--title}'[note title]' \ +      '(-c|--content)'{-c,--content}'[note content]' \ +      '(-tg|--tags)'{-tg,--tags}'[one tag or the list of tags which will be added to the note]' \ +      '(-nb|--notebook)'{-nb,--notebook}'[name of notebook where to save note]' \ +    ) +    ;; +  edit) +    _command_args=( +      '(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \ +      '(-t|--title)'{-t,--title}'[note title]' \ +      '(-c|--content)'{-c,--content}'[note content]' \ +      '(-tg|--tags)'{-tg,--tags}'[one tag or the list of tags which will be added to the note]' \ +      '(-nb|--notebook)'{-nb,--notebook}'[name of notebook where to save note]' \ +    ) +    ;; +  remove) +    _command_args=( +      '(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \ +      '(--force)--force' \ +    ) +    ;; +  show) +    _command_args=( +      '(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \ +    ) +    ;; +  find) +    _command_args=( +      '(-s|--search)'{-s,--search}'[text to search]' \ +      '(-tg|--tags)'{-tg,--tags}'[notes with which tag/tags to search]' \ +      '(-nb|--notebook)'{-nb,--notebook}'[in which notebook search the note]' \ +      '(-d|--date)'{-d,--date}'[date in format dd.mm.yyyy or date range dd.mm.yyyy-dd.mm.yyyy]' \ +      '(-cn|--count)'{-cn,--count}'[how many notes show in the result list]' \ +      '(-uo|--url-only)'{-uo,--url-only}'[add direct url of each note in results to Evernote web-version]' \ +      '(-ee|--exact-entry)'{-ee,--exact-entry}'[search for exact entry of the request]' \ +      '(-cs|--content-search)'{-cs,--content-search}'[search by content, not by title]' \ +    ) +    ;; +  notebook-create) +    _command_args=( +      '(-t|--title)'{-t,--title}'[notebook title]' \ +    ) +    ;; +  notebook-edit) +    _command_args=( +      '(-nb|--notebook)'{-nb,--notebook}'[name of notebook to rename]' \ +      '(-t|--title)'{-t,--title}'[new notebook title]' \ +    ) +    ;; +  notebook-remove) +    _command_args=( +      '(-nb|--notebook)'{-nb,--notebook}'[name of notebook to remove]' \ +      '(--force)--force' \ +    ) +    ;; +  tag-create) +    _command_args=( +      '(-t|--title)'{-t,--title}'[title of tag]' \ +    ) +    ;; +  tag-edit) +    _command_args=( +      '(-tgn|--tagname)'{-tgn,--tagname}'[tag to edit]' \ +      '(-t|--title)'{-t,--title}'[new tag name]' \ +    ) +    ;; +  tag-remove) +    _command_args=( +      '(-tgn|--tagname)'{-tgn,--tagname}'[tag to remove]' \ +      '(--force)--force' \ +    ) +    ;; +  esac + +_arguments \ +  $_command_args \ +  &&  return 0 diff --git a/plugins/geeknote/geeknote.plugin.zsh b/plugins/geeknote/geeknote.plugin.zsh new file mode 100644 index 000000000..8126d26b3 --- /dev/null +++ b/plugins/geeknote/geeknote.plugin.zsh @@ -0,0 +1,2 @@ +#Alias +alias gn='geeknote' diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 4291da7ba..95ce1ae26 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -146,15 +146,15 @@ alias gke='\gitk --all $(git log -g --pretty=format:%h)'  compdef _git gke='gitk'  alias gl='git pull' -alias glg='git log --stat --color' -alias glgp='git log --stat --color -p' -alias glgg='git log --graph --color' +alias glg='git log --stat' +alias glgp='git log --stat -p' +alias glgg='git log --graph'  alias glgga='git log --graph --decorate --all'  alias glgm='git log --graph --max-count=10' -alias glo='git log --oneline --decorate --color' +alias glo='git log --oneline --decorate'  alias glol="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"  alias glola="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all" -alias glog='git log --oneline --decorate --color --graph' +alias glog='git log --oneline --decorate --graph'  alias glp="_git_log_prettily"  compdef _git glp=git-log diff --git a/plugins/github/README.md b/plugins/github/README.md index 21b7367f7..fea607876 100644 --- a/plugins/github/README.md +++ b/plugins/github/README.md @@ -1,6 +1,6 @@  #  github -This plugin supports working with GitHub the command line. It provides a few things: +This plugin supports working with GitHub from the command line. It provides a few things:  * Sets up the `hub` wrapper and completions for the `git` command if you have `hub` installed.  * Completion for the `github` Ruby gem. @@ -37,7 +37,7 @@ See `man hub` for more details.  ###  Homebrew installation note -If you have installed `hub` using Homebrew, its completions may not be on your `$FPATH` if you are using the system `zsh`. Homebrew installs `zsh` completion definitions to `/usr/local/share/zsh/site-functions`, which on `$FPATH` for the Homebrew-installed `zsh`, but not for the system `zsh`. If you want it to work with the system `zsh`, add this to your `~/.zshrc` before it sources `oh-my-zsh.sh`. +If you have installed `hub` using Homebrew, its completions may not be on your `$FPATH` if you are using the system `zsh`. Homebrew installs `zsh` completion definitions to `/usr/local/share/zsh/site-functions`, which will be on `$FPATH` for the Homebrew-installed `zsh`, but not for the system `zsh`. If you want it to work with the system `zsh`, add this to your `~/.zshrc` before it sources `oh-my-zsh.sh`.  ```zsh  if (( ! ${fpath[(I)/usr/local/share/zsh/site-functions]} )); then diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh index ca19901fd..0ab399c97 100644 --- a/plugins/github/github.plugin.zsh +++ b/plugins/github/github.plugin.zsh @@ -71,7 +71,7 @@ exist_gh() { # [DIRECTORY]  #  git.io() {    emulate -L zsh -  curl -i -s http://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " " +  curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "  }  # End Functions ############################################################# diff --git a/plugins/mix/_mix b/plugins/mix/_mix index 319932b3f..3b3887b1f 100644 --- a/plugins/mix/_mix +++ b/plugins/mix/_mix @@ -73,6 +73,10 @@ case $state in      case $line[1] in        (help)           _arguments ':feature:__task_list' +         ;; +      (test) +         _files +         ;;      esac    ;;  esac diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh index 3f6fe0fb3..38e699ea0 100644 --- a/plugins/npm/npm.plugin.zsh +++ b/plugins/npm/npm.plugin.zsh @@ -17,3 +17,6 @@ alias npmD="npm i -D "  # Execute command from node_modules folder based on current directory  # i.e npmE gulp  alias npmE='PATH="$(npm bin)":"$PATH"' + +# Check which npm modules are outdated +alias npmO="npm outdated" diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh index 98a2321db..fe236a298 100644 --- a/plugins/symfony2/symfony2.plugin.zsh +++ b/plugins/symfony2/symfony2.plugin.zsh @@ -25,3 +25,5 @@ alias sfcw='sf cache:warmup'  alias sfroute='sf router:debug'  alias sfcontainer='sf container:debug'  alias sfgb='sf generate:bundle' +alias sfdev='sf --env=dev' +alias sfprod='sf --env=prod' diff --git a/plugins/textmate/textmate.plugin.zsh b/plugins/textmate/textmate.plugin.zsh index 02813de9e..174511019 100644 --- a/plugins/textmate/textmate.plugin.zsh +++ b/plugins/textmate/textmate.plugin.zsh @@ -1,13 +1,14 @@  # If the tm command is called without an argument, open TextMate in the current directory  # If tm is passed a directory, cd to it and open it in TextMate -# If tm is passed a file, open it in TextMate +# If tm is passed anything else (i.e., a list of files and/or options), pass them all along +#    This allows easy opening of multiple files.  function tm() {  	if [[ -z $1 ]]; then  		mate . -	else +	elif [[ -d $1 ]]; then  		mate $1 -		if [[ -d $1 ]]; then -			cd $1 -		fi +		cd $1 +	else +		mate "$@"  	fi  } diff --git a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh index 16247b8db..4aa3aa4b8 100755 --- a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh +++ b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh @@ -23,6 +23,9 @@ for i; do      fi  done +# Don't leave positional parameters being set +set -- +  #  # Load functions  # diff --git a/themes/avit.zsh-theme b/themes/avit.zsh-theme index 65466b82f..87d5be30a 100644 --- a/themes/avit.zsh-theme +++ b/themes/avit.zsh-theme @@ -2,16 +2,25 @@  PROMPT='  $(_user_host)${_current_dir} $(git_prompt_info) $(_ruby_version) -▶ ' +%{$fg[$CARETCOLOR]%}▶%{$resetcolor%} ' -PROMPT2='%{$fg[grey]%}◀%{$reset_color%} ' +PROMPT2='%{$fg[$CARETCOLOR]%}◀%{$reset_color%} '  RPROMPT='$(_vi_status)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}' -local _current_dir="%{$fg[blue]%}%3~%{$reset_color%} " -local _return_status="%{$fg[red]%}%(?..⍉)%{$reset_color%}" +local _current_dir="%{$fg_bold[blue]%}%3~%{$reset_color%} " +local _return_status="%{$fg_bold[red]%}%(?..⍉)%{$reset_color%}"  local _hist_no="%{$fg[grey]%}%h%{$reset_color%}" +function _current_dir() { +  local _max_pwd_length="65" +  if [[ $(echo -n $PWD | wc -c) -gt ${_max_pwd_length} ]]; then +    echo "%{$fg_bold[blue]%}%-2~ ... %3~%{$reset_color%} " +  else +    echo "%{$fg_bold[blue]%}%~%{$reset_color%} " +  fi +} +  function _user_host() {    if [[ -n $SSH_CONNECTION ]]; then      me="%n@%m" @@ -85,13 +94,13 @@ 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[cyan]%}§ " -ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[grey]%}◒ " +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[white]%}◒ "  # 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[grey]%}" +ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[white]%}"  # LS colors, made with http://geoff.greer.fm/lscolors/  export LSCOLORS="exfxcxdxbxegedabagacad" diff --git a/themes/bira.zsh-theme b/themes/bira.zsh-theme index 215720477..1ead93553 100644 --- a/themes/bira.zsh-theme +++ b/themes/bira.zsh-theme @@ -1,7 +1,13 @@  # 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%}' + +if [[ $UID -eq 0 ]]; then +    local user_host='%{$terminfo[bold]$fg[red]%}%n@%m%{$reset_color%}' +else +    local user_host='%{$terminfo[bold]$fg[green]%}%n@%m%{$reset_color%}' +fi +  local current_dir='%{$terminfo[bold]$fg[blue]%} %~%{$reset_color%}'  local rvm_ruby=''  if which rvm-prompt &> /dev/null; then diff --git a/themes/bureau.zsh-theme b/themes/bureau.zsh-theme index 148abec10..3b3bdc80f 100644 --- a/themes/bureau.zsh-theme +++ b/themes/bureau.zsh-theme @@ -22,34 +22,44 @@ bureau_git_branch () {    echo "${ref#refs/heads/}"  } -bureau_git_status () { -  _INDEX=$(command git status --porcelain -b 2> /dev/null) +bureau_git_status() {    _STATUS="" -  if $(echo "$_INDEX" | grep '^[AMRD]. ' &> /dev/null); then -    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED" -  fi -  if $(echo "$_INDEX" | grep '^.[MTD] ' &> /dev/null); then -    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED" -  fi -  if $(echo "$_INDEX" | command grep -E '^\?\? ' &> /dev/null); then -    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED" -  fi -  if $(echo "$_INDEX" | grep '^UU ' &> /dev/null); then -    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED" -  fi -  if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then -    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STASHED" + +  # check status of files +  _INDEX=$(command git status --porcelain 2> /dev/null) +  if [[ -n "$_INDEX" ]]; then +    if $(echo "$_INDEX" | command grep -q '^[AMRD]. '); then +      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED" +    fi +    if $(echo "$_INDEX" | command grep -q '^.[MTD] '); then +      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED" +    fi +    if $(echo "$_INDEX" | command grep -q -E '^\?\? '); then +      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED" +    fi +    if $(echo "$_INDEX" | command grep -q '^UU '); then +      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED" +    fi +  else +    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_CLEAN"    fi -  if $(echo "$_INDEX" | grep '^## .*ahead' &> /dev/null); then + +  # check status of local repository +  _INDEX=$(command git status --porcelain -b 2> /dev/null) +  if $(echo "$_INDEX" | command grep -q '^## .*ahead'); then      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_AHEAD"    fi -  if $(echo "$_INDEX" | grep '^## .*behind' &> /dev/null); then +  if $(echo "$_INDEX" | command grep -q '^## .*behind'); then      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_BEHIND"    fi -  if $(echo "$_INDEX" | grep '^## .*diverged' &> /dev/null); then +  if $(echo "$_INDEX" | command grep -q '^## .*diverged'); then      _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_DIVERGED"    fi +  if $(command git rev-parse --verify refs/stash &> /dev/null); then +    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STASHED" +  fi +    echo $_STATUS  } @@ -84,10 +94,10 @@ _LIBERTY="$_LIBERTY%{$reset_color%}"  get_space () {    local STR=$1$2    local zero='%([BSUbfksu]|([FB]|){*})' -  local LENGTH=${#${(S%%)STR//$~zero/}}  +  local LENGTH=${#${(S%%)STR//$~zero/}}    local SPACES=""    (( LENGTH = ${COLUMNS} - $LENGTH - 1)) -   +    for i in {0..$LENGTH}      do        SPACES="$SPACES " @@ -101,7 +111,7 @@ _1RIGHT="[%*] "  bureau_precmd () {    _1SPACES=`get_space $_1LEFT $_1RIGHT` -  print  +  print    print -rP "$_1LEFT$_1SPACES$_1RIGHT"  } diff --git a/themes/candy.zsh-theme b/themes/candy.zsh-theme index bc125c5ce..40e6d411e 100644 --- a/themes/candy.zsh-theme +++ b/themes/candy.zsh-theme @@ -1,4 +1,4 @@ -PROMPT=$'%{$fg_bold[green]%}%n@%m %{$fg[blue]%}%D{[%I:%M:%S]} %{$reset_color%}%{$fg[white]%}[%~]%{$reset_color%} $(git_prompt_info)\ +PROMPT=$'%{$fg_bold[green]%}%n@%m %{$fg[blue]%}%D{[%X]} %{$reset_color%}%{$fg[white]%}[%~]%{$reset_color%} $(git_prompt_info)\  %{$fg[blue]%}->%{$fg_bold[blue]%} %#%{$reset_color%} '  ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}[" diff --git a/themes/kennethreitz.zsh-theme b/themes/kennethreitz.zsh-theme index 109be0c22..b255a8d66 100644 --- a/themes/kennethreitz.zsh-theme +++ b/themes/kennethreitz.zsh-theme @@ -1,13 +1,15 @@  local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" -PROMPT='%{$fg[green]%}%c \ +PROMPT='$(virtualenv_prompt_info)%{[03m%}%{$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_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]%}" - +ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX="%{$reset_color%}%{[03m%}%{$fg[blue]%}" +ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX="!%{$reset_color%} "
\ No newline at end of file diff --git a/themes/sunrise.zsh-theme b/themes/sunrise.zsh-theme index 57d2649c6..e3f4019d6 100644 --- a/themes/sunrise.zsh-theme +++ b/themes/sunrise.zsh-theme @@ -10,9 +10,9 @@ B=$fg_no_bold[blue]  RESET=$reset_color  if [ "$USER" = "root" ]; then -    PROMPTCOLOR="%{$R%}" PREFIX="-!-"; +    PROMPTCOLOR="%{$R%}" PROMPTPREFIX="-!-";  else -    PROMPTCOLOR="" PREFIX="---"; +    PROMPTCOLOR="" PROMPTPREFIX="---";  fi  local return_code="%(?..%{$R%}%? ↵%{$RESET%})" @@ -66,7 +66,7 @@ function custom_git_prompt() {  }  # %B sets bold text -PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' +PROMPT='%B$PROMPTPREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} '  RPS1="${return_code}"  ZSH_THEME_GIT_PROMPT_PREFIX="%{$Y%}‹" diff --git a/themes/ys.zsh-theme b/themes/ys.zsh-theme index fd8adc41e..89d5355dc 100644 --- a/themes/ys.zsh-theme +++ b/themes/ys.zsh-theme @@ -1,18 +1,9 @@  # 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. +# It is recommended to use with a dark background.  # 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 || echo $HOST -} - -# Directory info. -local current_dir='${PWD/#$HOME/~}' +# +# Mar 2013 Yad Smood  # VCS  YS_VCS_PROMPT_PREFIX1=" %{$fg[white]%}on%{$reset_color%} " @@ -21,7 +12,7 @@ YS_VCS_PROMPT_SUFFIX="%{$reset_color%}"  YS_VCS_PROMPT_DIRTY=" %{$fg[red]%}x"  YS_VCS_PROMPT_CLEAN=" %{$fg[green]%}o" -# Git info. +# Git info  local git_info='$(git_prompt_info)'  ZSH_THEME_GIT_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}git${YS_VCS_PROMPT_PREFIX2}"  ZSH_THEME_GIT_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX" @@ -44,29 +35,26 @@ ys_hg_prompt_info() {  	fi  } -# 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%}\ -${hg_info}\ -${git_info} \ -%{$fg[white]%}[%*] -%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}" +local exit_code="%(?,,C:%{$fg[red]%}%?%{$reset_color%})" -if [[ "$USER" == "root" ]]; then +# Prompt format: +# +# PRIVILEGES USER @ MACHINE in DIRECTORY on git:BRANCH STATE [TIME] C:LAST_EXIT_CODE +# $ COMMAND +# +# For example: +# +# % ys @ ys-mbp in ~/.oh-my-zsh on git:master x [21:47:42] C:0 +# $  PROMPT="  %{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \ -%{$bg[yellow]%}%{$fg[cyan]%}%n%{$reset_color%} \ -%{$fg[white]%}at \ -%{$fg[green]%}$(box_name) \ +%(#,%{$bg[yellow]%}%{$fg[black]%}%n%{$reset_color%},%{$fg[cyan]%}%n) \ +%{$fg[white]%}@ \ +%{$fg[green]%}%m \  %{$fg[white]%}in \ -%{$terminfo[bold]$fg[yellow]%}${current_dir}%{$reset_color%}\ +%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}\  ${hg_info}\ -${git_info} \ -%{$fg[white]%}[%*] +${git_info}\ + \ +%{$fg[white]%}[%*] $exit_code  %{$terminfo[bold]$fg[red]%}$ %{$reset_color%}" -fi  | 
