summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.textile14
-rw-r--r--lib/completion.zsh1
-rw-r--r--lib/termsupport.zsh11
-rw-r--r--plugins/brew/_brew1
-rw-r--r--plugins/git/git.plugin.zsh21
-rw-r--r--plugins/github/github.plugin.zsh7
-rw-r--r--plugins/mysql-macports/mysql-macports.plugin.zsh8
-rw-r--r--plugins/mysql/mysql-macports.plugin.zsh6
-rw-r--r--plugins/npm/_npm19
-rw-r--r--plugins/npm/npm.plugin.zsh4
-rw-r--r--templates/zshrc.zsh-template3
-rw-r--r--themes/Soliah.zsh-theme33
-rw-r--r--themes/frisk.zsh-theme10
-rw-r--r--themes/gallois.zsh-theme19
-rw-r--r--themes/kolo.zsh-theme21
-rw-r--r--themes/kphoen.zsh-theme50
-rwxr-xr-xtools/install.sh4
17 files changed, 206 insertions, 26 deletions
diff --git a/README.textile b/README.textile
index 86d2652bb..d01c3310a 100644
--- a/README.textile
+++ b/README.textile
@@ -54,12 +54,6 @@ h3. Uninstalling
If you want to uninstall it, just run @uninstall_oh_my_zsh@ from the command line and it'll remove itself and revert you to bash (or your previous zsh config).
-h2. Thanks
-
-* Rick Olson (technoweenie) might remember some of the configuration, which I took from a pastie a few years ago.
-* Marcel (noradio) provided Rick the original zsh configuration.
-* Nicholas (ulysses) for the "rake autocompletion code":http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh.
-
h2. Help out!
I'm far from being a zsh-expert and suspect there are many ways to improve. If you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
@@ -67,3 +61,11 @@ I'm far from being a zsh-expert and suspect there are many ways to improve. If y
h3. Send us your theme!
I'm hoping to collect a bunch of themes for our command prompts. You can see existing ones in the @themes/@ directory.
+
+h2. Contributors
+
+This project wouldn't exist without all of our awesome users and contributors.
+
+* "View our growing list of contributors":https://github.com/robbyrussell/oh-my-zsh/contributors
+
+Thank you so much! \ No newline at end of file
diff --git a/lib/completion.zsh b/lib/completion.zsh
index e8e9776a5..9c2dfecca 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -4,7 +4,6 @@ unsetopt menu_complete # do not autoselect the first completion entry
unsetopt flowcontrol
setopt auto_menu # show completion menu on succesive tab press
setopt complete_in_word
-setopt complete_aliases
setopt always_to_end
WORDCHARS=''
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index e1e536690..3152751e4 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -3,11 +3,12 @@
#Fully support screen, iterm, and probably most modern xterm and rxvt
#Limited support for Apple Terminal (Terminal can't set window or tab separately)
function title {
- if [[ "$TERM" == "screen" ]]; then
- print -Pn "\ek$1\e\\" #set screen hardstatus, usually truncated at 20 chars
+ [ "$DISABLE_AUTO_TITLE" != "true" ] || return
+ if [[ $TERM =~ "^screen" ]]; then
+ print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
- print -Pn "\e]2;$2\a" #set window name
- print -Pn "\e]1;$1\a" #set icon (=tab) name (will override window name on broken terminal)
+ print -Pn "\e]2;$2:q\a" #set window name
+ print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal)
fi
}
@@ -21,6 +22,8 @@ function precmd {
#Appears at the beginning of (and during) of command execution
function preexec {
+ emulate -L zsh
+ setopt extended_glob
local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
title "$CMD" "%100>...>$2%<<"
}
diff --git a/plugins/brew/_brew b/plugins/brew/_brew
index 4e590ac63..cee1e25f0 100644
--- a/plugins/brew/_brew
+++ b/plugins/brew/_brew
@@ -31,6 +31,7 @@ _1st_arguments=(
'search:search for a formula (/regex/ or string)'
'unlink:unlink a formula'
'update:freshen up links'
+ 'upgrade:upgrade outdated formulae'
'uses:show formulas which depend on a formula'
)
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 71a62819b..bc340e86b 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -1,22 +1,36 @@
# Aliases
alias g='git'
+compdef g=git
alias gst='git status'
+compdef _git gst=git-status
alias gl='git pull'
+compdef _git gl=git-pull
alias gup='git fetch && git rebase'
+compdef _git gup=git-fetch
alias gp='git push'
-alias gd='git diff | mate'
-alias gdv='git diff -w "$@" | vim -R -'
+compdef _git gp=git-push
+gdv() { git-diff -w "$@" | view - }
+compdef _git gdv=git-diff
alias gc='git commit -v'
+compdef _git gc=git-commit
alias gca='git commit -v -a'
+compdef _git gca=git-commit
alias gco='git checkout'
+compdef _git gco=git-checkout
alias gb='git branch'
+compdef _git gb=git-branch
alias gba='git branch -a'
+compdef _git gba=git-branch
alias gcount='git shortlog -sn'
+compdef gcount=git
alias gcp='git cherry-pick'
+compdef _git gcp=git-cherry-pick
alias glg='git log --stat --max-count=5'
+compdef _git glg=git-log
# Git and svn mix
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
+compdef git-svn-dcommit-push=git
#
# Will return the current branch name
@@ -29,5 +43,8 @@ function current_branch() {
# these aliases take advantage of the previous function
alias ggpull='git pull origin $(current_branch)'
+compdef ggpull=git
alias ggpush='git push origin $(current_branch)'
+compdef ggpush=git
alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)'
+compdef ggpnp=git
diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh
index c23504b85..8d4580654 100644
--- a/plugins/github/github.plugin.zsh
+++ b/plugins/github/github.plugin.zsh
@@ -1,3 +1,10 @@
+# hub alias from defunkt
+# https://github.com/defunkt/hub
+if [ "$commands[(I)hub]" ]; then
+ # eval `hub alias -s zsh`
+ function git(){hub "$@"}
+fi
+
# add github completion function to path
fpath=($ZSH/plugins/github $fpath)
autoload -U compinit
diff --git a/plugins/mysql-macports/mysql-macports.plugin.zsh b/plugins/mysql-macports/mysql-macports.plugin.zsh
new file mode 100644
index 000000000..c39563fe4
--- /dev/null
+++ b/plugins/mysql-macports/mysql-macports.plugin.zsh
@@ -0,0 +1,8 @@
+# commands to control local mysql-server installation
+# paths are for osx installation via macports
+
+alias mysqlstart='sudo /opt/local/share/mysql5/mysql/mysql.server start'
+alias mysqlstop='sudo /opt/local/share/mysql5/mysql/mysql.server stop'
+alias mysqlrestart='sudo /opt/local/share/mysql5/mysql/mysql.server restart'
+
+alias mysqlstatus='mysqladmin5 -u root -p ping'
diff --git a/plugins/mysql/mysql-macports.plugin.zsh b/plugins/mysql/mysql-macports.plugin.zsh
deleted file mode 100644
index 63b881c9f..000000000
--- a/plugins/mysql/mysql-macports.plugin.zsh
+++ /dev/null
@@ -1,6 +0,0 @@
-# commands to control local mysql-server installation
-# paths are for osx installtion via macports
-
-alias mysqlstart='sudo /opt/local/bin/mysqld_safe5'
-alias mysqlstop='/opt/local/bin/mysqladmin5 -u root -p shutdown'
-alias mysqlstatus='mysqladmin5 -u root -p ping' \ No newline at end of file
diff --git a/plugins/npm/_npm b/plugins/npm/_npm
new file mode 100644
index 000000000..24b536188
--- /dev/null
+++ b/plugins/npm/_npm
@@ -0,0 +1,19 @@
+#compdef npm
+
+# Node Package Manager 0.3.15 completion, letting npm do all the completion work
+
+_npm() {
+ compadd -- $(_npm_complete $words)
+}
+
+# We want to show all errors of any substance, but never the "npm (not )ok" one.
+# (Also doesn't consider "ERR! no match found" worth breaking the terminal for.)
+_npm_complete() {
+ local ask_npm
+ ask_npm=(npm completion --color false --loglevel error -- $@)
+ { _call_program npm $ask_npm 2>&1 >&3 \
+ | egrep -v '^(npm (not |)ok|ERR! no match found)$' >&2; \
+ } 3>&1
+}
+
+_npm "$@"
diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh
new file mode 100644
index 000000000..826f0f7b0
--- /dev/null
+++ b/plugins/npm/npm.plugin.zsh
@@ -0,0 +1,4 @@
+# add npm completion function to path
+fpath=($ZSH/plugins/npm $fpath)
+autoload -U compinit
+compinit -i
diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template
index 8022b3506..506daa9a2 100644
--- a/templates/zshrc.zsh-template
+++ b/templates/zshrc.zsh-template
@@ -14,6 +14,9 @@ export ZSH_THEME="robbyrussell"
# Uncomment following line if you want to disable colors in ls
# export DISABLE_LS_COLORS="true"
+# Uncomment following line if you want to disable autosetting terminal title.
+# export DISABLE_AUTO_TITLE="true"
+
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git)
diff --git a/themes/Soliah.zsh-theme b/themes/Soliah.zsh-theme
index 1c0ab3cc9..237e70fda 100644
--- a/themes/Soliah.zsh-theme
+++ b/themes/Soliah.zsh-theme
@@ -1,4 +1,4 @@
-PROMPT='%{$fg[blue]%}%n%{$reset_color%} on %{$fg[red]%}%M%{$reset_color%} in %{$fg[blue]%}%~%b%{$reset_color%}$(git_time_since_commit)$(git_prompt_info)
+PROMPT='%{$fg[blue]%}%n%{$reset_color%} on %{$fg[red]%}%M%{$reset_color%} in %{$fg[blue]%}%~%b%{$reset_color%}$(git_time_since_commit)$(check_git_prompt_info)
$ '
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}"
@@ -16,6 +16,29 @@ ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}"
ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}"
ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}"
+
+# Git sometimes goes into a detached head state. git_prompt_info doesn't
+# return anything in this case. So wrap it in another function and check
+# for an empty string.
+function check_git_prompt_info() {
+ if git rev-parse --git-dir > /dev/null 2>&1; then
+ if [[ -z $(git_prompt_info) ]]; then
+ echo "%{$fg[magenta]%}detached-head%{$reset_color%})"
+ else
+ echo "$(git_prompt_info)"
+ fi
+ fi
+}
+
+# Determine if we are using a gemset.
+function rvm_gemset() {
+ GEMSET=`rvm gemset list | grep '=>' | cut -b4-`
+ if [[ -n $GEMSET ]]; then
+ echo "%{$fg[yellow]%}$GEMSET%{$reset_color%}|"
+ fi
+
+}
+
# Determine the time since last commit. If branch is clean,
# use a neutral color, otherwise colors will vary according to time.
function git_time_since_commit() {
@@ -49,15 +72,15 @@ function git_time_since_commit() {
fi
if [ "$HOURS" -gt 24 ]; then
- echo "($COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
+ echo "($(rvm_gemset)$COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
elif [ "$MINUTES" -gt 60 ]; then
- echo "($COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
+ echo "($(rvm_gemset)$COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
else
- echo "($COLOR${MINUTES}m%{$reset_color%}|"
+ echo "($(rvm_gemset)$COLOR${MINUTES}m%{$reset_color%}|"
fi
else
COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL"
- echo "($COLOR~|"
+ echo "($(rvm_gemset)$COLOR~|"
fi
fi
}
diff --git a/themes/frisk.zsh-theme b/themes/frisk.zsh-theme
new file mode 100644
index 000000000..f181aec90
--- /dev/null
+++ b/themes/frisk.zsh-theme
@@ -0,0 +1,10 @@
+PROMPT=$'
+%{$fg[blue]%}%/%{$reset_color%} $(git_prompt_info)%{$fg[white]%}[%n@%m]%{$reset_color%} %{$fg[white]%}[%T]%{$reset_color%}
+%{$fg_bold[black]%}>%{$reset_color%} '
+
+PROMPT2="%{$fg_blod[black]%}%_> %{$reset_color%}"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}["
+ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%} "
+ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}*%{$fg[green]%}"
+ZSH_THEME_GIT_PROMPT_CLEAN=""
diff --git a/themes/gallois.zsh-theme b/themes/gallois.zsh-theme
new file mode 100644
index 000000000..259640ba4
--- /dev/null
+++ b/themes/gallois.zsh-theme
@@ -0,0 +1,19 @@
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}["
+ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+#Customized git status, oh-my-zsh currently does not allow render dirty status before branch
+git_custom_status() {
+ local cb=$(current_branch)
+ if [ -n "$cb" ]; then
+ echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
+ fi
+}
+
+#RVM and git settings
+if [[ -s ~/.rvm/scripts/rvm ]] ; then
+ RPS1='$(git_custom_status)%{$fg[red]%}[`~/.rvm/bin/rvm-prompt`]%{$reset_color%} $EPS1'
+fi
+
+PROMPT='%{$fg[cyan]%}[%~% ]%(?.%{$fg[green]%}.%{$fg[red]%})%B$%b '
diff --git a/themes/kolo.zsh-theme b/themes/kolo.zsh-theme
new file mode 100644
index 000000000..6e04e1595
--- /dev/null
+++ b/themes/kolo.zsh-theme
@@ -0,0 +1,21 @@
+autoload -U colors && colors
+
+autoload -Uz vcs_info
+
+zstyle ':vcs_info:*' stagedstr '%F{green}●'
+zstyle ':vcs_info:*' unstagedstr '%F{yellow}●'
+zstyle ':vcs_info:*' check-for-changes true
+zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r'
+zstyle ':vcs_info:*' enable git svn
+precmd () {
+ if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
+ zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'
+ } else {
+ zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
+ }
+
+ vcs_info
+}
+
+setopt prompt_subst
+PROMPT='%B%F{magenta}%c%B%F{green}${vcs_info_msg_0_}%B%F{magenta} %{$reset_color%}%% '
diff --git a/themes/kphoen.zsh-theme b/themes/kphoen.zsh-theme
new file mode 100644
index 000000000..0e9b5e73c
--- /dev/null
+++ b/themes/kphoen.zsh-theme
@@ -0,0 +1,50 @@
+# ------------------------------------------------------------------------------
+# FILE: kphoen.zsh-theme
+# DESCRIPTION: oh-my-zsh theme file.
+# AUTHOR: Kévin Gomez (geek63@gmail.com)
+# VERSION: 1.0.0
+# SCREENSHOT:
+# ------------------------------------------------------------------------------
+
+
+if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then
+ PROMPT='[%{$fg[red]%}%n%{$reset_color%}@%{$fg[magenta]%}%m%{$reset_color%}:%{$fg[blue]%}%~%{$reset_color%}$(git_prompt_info)]
+%# '
+
+ ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[green]%}"
+ ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ ZSH_THEME_GIT_PROMPT_DIRTY=""
+ ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+ # display exitcode on the right when >0
+ return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
+
+ RPROMPT='${return_code}$(git_prompt_status)%{$reset_color%}'
+
+ ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚"
+ ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹"
+ ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖"
+ ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜"
+ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═"
+ ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭"
+else
+ PROMPT='[%n@%m:%~$(git_prompt_info)]
+%# '
+
+ ZSH_THEME_GIT_PROMPT_PREFIX=" on"
+ ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ ZSH_THEME_GIT_PROMPT_DIRTY=""
+ ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+ # display exitcode on the right when >0
+ return_code="%(?..%? ↵)"
+
+ RPROMPT='${return_code}$(git_prompt_status)'
+
+ ZSH_THEME_GIT_PROMPT_ADDED=" ✚"
+ ZSH_THEME_GIT_PROMPT_MODIFIED=" ✹"
+ ZSH_THEME_GIT_PROMPT_DELETED=" ✖"
+ ZSH_THEME_GIT_PROMPT_RENAMED=" ➜"
+ ZSH_THEME_GIT_PROMPT_UNMERGED=" ═"
+ ZSH_THEME_GIT_PROMPT_UNTRACKED=" ✭"
+fi
diff --git a/tools/install.sh b/tools/install.sh
index 6e3872bb9..8ed1403af 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -5,7 +5,7 @@ then
fi
echo "Cloning Oh My Zsh..."
-/usr/bin/env git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
+/usr/bin/env git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
echo "Looking for an existing zsh config..."
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]
@@ -22,7 +22,7 @@ echo "Copying your current PATH and adding it to the end of ~/.zshrc for you."
echo "export PATH=$PATH" >> ~/.zshrc
echo "Time to change your default shell to zsh!"
-chsh -s "/usr/bin/env zsh"
+chsh -s `which zsh`
echo ' __ __ '
echo ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '