summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.textile4
-rw-r--r--lib/functions.zsh23
-rw-r--r--lib/git.zsh4
-rw-r--r--lib/termsupport.zsh47
-rw-r--r--lib/theme-and-appearance.zsh (renamed from lib/appearance.zsh)0
-rw-r--r--plugins/bundler/bundler.plugin.zsh3
-rw-r--r--plugins/osx/osx.plugin.zsh58
-rw-r--r--plugins/rails3/rails3.plugin.zsh4
-rw-r--r--themes/Soliah.zsh-theme63
-rw-r--r--themes/nanotech.zsh-theme7
-rw-r--r--themes/nicoulaj.zsh-theme43
-rw-r--r--themes/sorin.zsh-theme48
-rw-r--r--tools/check_for_upgrade.sh2
13 files changed, 249 insertions, 57 deletions
diff --git a/README.textile b/README.textile
index 8b1b6875a..0659aded8 100644
--- a/README.textile
+++ b/README.textile
@@ -8,7 +8,7 @@ h2. Setup
h3. The automatic installer... (do you trust me?)
-@wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh@
+@wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh@
h3. The manual way
@@ -38,7 +38,7 @@ h2. Usage
* enable the plugins you want in your @~/.zshrc@ (take a look at @plugins/@ to see what's possible)
** example: @plugins=(git osx ruby)@
* Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@.
-** Take a look at the "current themes":http://wiki.github.com/robbyrussell/oh-my-zsh/themes that come bundled with _Oh My Zsh_.
+** Take a look at the "current themes":https://wiki.github.com/robbyrussell/oh-my-zsh/themes that come bundled with _Oh My Zsh_.
* much much more... take a look at @lib/@ what _Oh My Zsh_ offers...
h2. Useful
diff --git a/lib/functions.zsh b/lib/functions.zsh
index 914f2ef25..6f5d015f7 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -1,26 +1,3 @@
-## fixme, i duplicated this in xterms - oops
-function title {
- if [[ $TERM == "screen" ]]; then
- # Use these two for GNU Screen:
- print -nR $'\033k'$1$'\033'\\\
-
- print -nR $'\033]0;'$2$'\a'
- elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]]; then
- # Use this one instead for XTerms:
- print -nR $'\033]0;'$*$'\a'
- fi
-}
-
-function precmd {
- title zsh "$PWD"
-}
-
-function preexec {
- emulate -L zsh
- local -a cmd; cmd=(${(z)1})
- title $cmd[1]:t "$cmd[2,-1]"
-}
-
function zsh_stats() {
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
}
diff --git a/lib/git.zsh b/lib/git.zsh
index 75fdc1f9c..8512de8a4 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -26,6 +26,10 @@ git_prompt_status() {
fi
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
+ elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
+ elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
fi
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index fef978748..e1e536690 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -1,21 +1,26 @@
-case "$TERM" in
- xterm*|rxvt*)
- preexec () {
- print -Pn "\e]0;%n@%m: $1\a" # xterm
- }
- precmd () {
- print -Pn "\e]0;%n@%m: %~\a" # xterm
- }
- ;;
- screen*)
- preexec () {
- local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}
- echo -ne "\ek$CMD\e\\"
- print -Pn "\e]0;%n@%m: $1\a" # xterm
- }
- precmd () {
- echo -ne "\ekzsh\e\\"
- print -Pn "\e]0;%n@%m: %~\a" # xterm
- }
- ;;
-esac \ No newline at end of file
+#usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title
+#http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1
+#Fully support screen, iterm, and probably most modern xterm and rxvt
+#Limited support for Apple Terminal (Terminal can't set window or tab separately)
+function title {
+ if [[ "$TERM" == "screen" ]]; then
+ print -Pn "\ek$1\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)
+ fi
+}
+
+ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
+ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
+
+#Appears when you have the prompt
+function precmd {
+ title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
+}
+
+#Appears at the beginning of (and during) of command execution
+function preexec {
+ 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/lib/appearance.zsh b/lib/theme-and-appearance.zsh
index aec67721a..aec67721a 100644
--- a/lib/appearance.zsh
+++ b/lib/theme-and-appearance.zsh
diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh
new file mode 100644
index 000000000..fb40e2cec
--- /dev/null
+++ b/plugins/bundler/bundler.plugin.zsh
@@ -0,0 +1,3 @@
+alias be="bundle exec"
+alias bi="bundle install"
+alias bu="bundle update"
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index fce88c796..81eed5e92 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -1,11 +1,57 @@
+function savepath() {
+ pwd > ~/.current_path~
+}
+
function tab() {
- osascript 2>/dev/null <<EOF
+savepath
+osascript >/dev/null <<EOF
+on do_submenu(app_name, menu_name, menu_item, submenu_item)
+ -- bring the target application to the front
+ tell application app_name
+ activate
+ end tell
tell application "System Events"
- tell process "Terminal" to keystroke "t" using command down
- end
- tell application "Terminal"
+ tell process app_name
+ tell menu bar 1
+ tell menu bar item menu_name
+ tell menu menu_name
+ tell menu item menu_item
+ tell menu menu_item
+ click menu item submenu_item
+ end tell
+ end tell
+ end tell
+ end tell
+ end tell
+ end tell
+ end tell
+end do_submenu
+
+do_submenu("Terminal", "Shell", "New Tab", 1)
+EOF
+}
+
+function itab() {
+savepath
+osascript >/dev/null <<EOF
+on do_submenu(app_name, menu_name, menu_item)
+ -- bring the target application to the front
+ tell application app_name
activate
- do script with command "cd \"$PWD\"; $*" in window 1
end tell
+ tell application "System Events"
+ tell process app_name
+ tell menu bar 1
+ tell menu bar item menu_name
+ tell menu menu_name
+ click menu item menu_item
+ end tell
+ end tell
+ end tell
+ end tell
+ end tell
+end do_submenu
+
+do_submenu("iTerm", "Shell", "New Tab")
EOF
-} \ No newline at end of file
+}
diff --git a/plugins/rails3/rails3.plugin.zsh b/plugins/rails3/rails3.plugin.zsh
index 20ba0408c..6bf2ba088 100644
--- a/plugins/rails3/rails3.plugin.zsh
+++ b/plugins/rails3/rails3.plugin.zsh
@@ -3,6 +3,8 @@ alias rg='ruby script/rails generate'
alias rd='ruby script/rails destroy'
alias rp='ruby script/rails plugin'
alias rdbm='rake db:migrate db:test:clone'
+alias rdbmr='rake db:migrate && rake db:migrate:redo'
alias rc='ruby script/rails console'
-alias rd='ruby script/rais server --debugger'
+alias rd='ruby script/rails server --debugger'
alias devlog='tail -f log/development.log'
+
diff --git a/themes/Soliah.zsh-theme b/themes/Soliah.zsh-theme
index 7ad876d41..1c0ab3cc9 100644
--- a/themes/Soliah.zsh-theme
+++ b/themes/Soliah.zsh-theme
@@ -1,6 +1,63 @@
-PROMPT='%{$fg[blue]%}%B%20~%b%{$reset_color%}%{$(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)$(git_prompt_info)
+$ '
-ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg[green]%}"
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})"
-ZSH_THEME_GIT_PROMPT_DIRTY="*%{$reset_color%}"
+# Text to display if the branch is dirty
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}"
+
+# Text to display if the branch is clean
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+# Colors vary depending on time lapsed.
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}"
+ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}"
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}"
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}"
+
+# Determine the time since last commit. If branch is clean,
+# use a neutral color, otherwise colors will vary according to time.
+function git_time_since_commit() {
+ if git rev-parse --git-dir > /dev/null 2>&1; then
+ # Only proceed if there is actually a commit.
+ if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then
+ # Get the last commit.
+ last_commit=`git log --pretty=format:'%at' -1 2> /dev/null`
+ now=`date +%s`
+ seconds_since_last_commit=$((now-last_commit))
+
+ # Totals
+ MINUTES=$((seconds_since_last_commit / 60))
+ HOURS=$((seconds_since_last_commit/3600))
+
+ # Sub-hours and sub-minutes
+ DAYS=$((seconds_since_last_commit / 86400))
+ SUB_HOURS=$((HOURS % 24))
+ SUB_MINUTES=$((MINUTES % 60))
+
+ if [[ -n $(git status -s 2> /dev/null) ]]; then
+ if [ "$MINUTES" -gt 30 ]; then
+ COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG"
+ elif [ "$MINUTES" -gt 10 ]; then
+ COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM"
+ else
+ COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT"
+ fi
+ else
+ COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL"
+ fi
+
+ if [ "$HOURS" -gt 24 ]; then
+ echo "($COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
+ elif [ "$MINUTES" -gt 60 ]; then
+ echo "($COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|"
+ else
+ echo "($COLOR${MINUTES}m%{$reset_color%}|"
+ fi
+ else
+ COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL"
+ echo "($COLOR~|"
+ fi
+ fi
+}
diff --git a/themes/nanotech.zsh-theme b/themes/nanotech.zsh-theme
new file mode 100644
index 000000000..5d3331639
--- /dev/null
+++ b/themes/nanotech.zsh-theme
@@ -0,0 +1,7 @@
+PROMPT='%F{green}%2c%F{blue} [%f '
+RPROMPT='$(git_prompt_info) %F{blue}] %F{green}%D{%L:%M} %F{yellow}%D{%p}%f'
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%f"
+ZSH_THEME_GIT_PROMPT_DIRTY=" %F{red}*%f"
+ZSH_THEME_GIT_PROMPT_CLEAN=""
diff --git a/themes/nicoulaj.zsh-theme b/themes/nicoulaj.zsh-theme
new file mode 100644
index 000000000..333aa5e70
--- /dev/null
+++ b/themes/nicoulaj.zsh-theme
@@ -0,0 +1,43 @@
+#!/usr/bin/env zsh
+# ------------------------------------------------------------------------------
+# Prompt for the Zsh shell:
+# * One line.
+# * VCS info on the right prompt.
+# * Only shows the path on the left prompt by default.
+# * Crops the path to a defined length and only shows the path relative to
+# the current VCS repository root.
+# * Wears a different color wether the last command succeeded/failed.
+# * Shows user@hostname if connected through SSH.
+# * Shows if logged in as root or not.
+# ------------------------------------------------------------------------------
+
+# Customizable parameters.
+PROMPT_PATH_MAX_LENGTH=30
+PROMPT_DEFAULT_END=❯
+PROMPT_ROOT_END=❯❯❯
+PROMPT_SUCCESS_COLOR=$FG[071]
+PROMPT_FAILURE_COLOR=$FG[124]
+PROMPT_VCS_INFO_COLOR=$FG[242]
+
+# Set required options.
+setopt promptsubst
+
+# Load required modules.
+autoload -U add-zsh-hook
+autoload -Uz vcs_info
+
+# Add hook for calling vcs_info before each command.
+add-zsh-hook precmd vcs_info
+
+# Set vcs_info parameters.
+zstyle ':vcs_info:*' enable hg bzr git
+zstyle ':vcs_info:*:*' check-for-changes true # Can be slow on big repos.
+zstyle ':vcs_info:*:*' unstagedstr '!'
+zstyle ':vcs_info:*:*' stagedstr '+'
+zstyle ':vcs_info:*:*' actionformats "%S" "%r/%s/%b %u%c (%a)"
+zstyle ':vcs_info:*:*' formats "%S" "%r/%s/%b %u%c"
+zstyle ':vcs_info:*:*' nvcsformats "%~" ""
+
+# Define prompts.
+PROMPT="%(0?.%{$PROMPT_SUCCESS_COLOR%}.%{$PROMPT_FAILURE_COLOR%})${SSH_TTY:+[%n@%m]}%{$FX[bold]%}%$PROMPT_PATH_MAX_LENGTH<..<"'${vcs_info_msg_0_%%.}'"%<<%(!.$PROMPT_ROOT_END.$PROMPT_DEFAULT_END)%{$FX[no-bold]%}%{$FX[reset]%} "
+RPROMPT="%{$PROMPT_VCS_INFO_COLOR%}"'$vcs_info_msg_1_'"%{$FX[reset]%}"
diff --git a/themes/sorin.zsh-theme b/themes/sorin.zsh-theme
new file mode 100644
index 000000000..601dbe5d7
--- /dev/null
+++ b/themes/sorin.zsh-theme
@@ -0,0 +1,48 @@
+# ------------------------------------------------------------------------------
+# FILE: sorin.zsh-theme
+# DESCRIPTION: oh-my-zsh theme file.
+# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
+# VERSION: 1.0.2
+# SCREENSHOT: http://i.imgur.com/aipDQ.png
+# ------------------------------------------------------------------------------
+
+
+if [[ "$TERM" != "dumb" ]] && [[ "$DISABLE_LS_COLORS" != "true" ]]; then
+ MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}"
+ local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
+
+ PROMPT='%{$fg[cyan]%}%c$(git_prompt_info) %(!.%{$fg_bold[red]%}#.%{$fg_bold[green]%}❯)%{$reset_color%} '
+
+ ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[blue]%}git%{$reset_color%}:%{$fg[red]%}"
+ ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ ZSH_THEME_GIT_PROMPT_DIRTY=""
+ ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+ RPROMPT='${return_status}$(git_prompt_status)%{$reset_color%}'
+
+ ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚"
+ ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹"
+ ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖"
+ ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜"
+ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═"
+ ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭"
+else
+ MODE_INDICATOR="❮❮❮"
+ local return_status="%(?::⏎)"
+
+ PROMPT='%c$(git_prompt_info) %(!.#.❯) '
+
+ ZSH_THEME_GIT_PROMPT_PREFIX=" git:"
+ ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ ZSH_THEME_GIT_PROMPT_DIRTY=""
+ ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+ RPROMPT='${return_status}$(git_prompt_status)'
+
+ ZSH_THEME_GIT_PROMPT_ADDED=" ✚"
+ ZSH_THEME_GIT_PROMPT_MODIFIED=" ✹"
+ ZSH_THEME_GIT_PROMPT_DELETED=" ✖"
+ ZSH_THEME_GIT_PROMPT_RENAMED=" ➜"
+ ZSH_THEME_GIT_PROMPT_UNMERGED=" ═"
+ ZSH_THEME_GIT_PROMPT_UNTRACKED=" ✭"
+fi
diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
index c59ebaed4..4643739ca 100644
--- a/tools/check_for_upgrade.sh
+++ b/tools/check_for_upgrade.sh
@@ -16,7 +16,7 @@ then
_update_zsh_update && return 0;
fi
- epoch_diff=$((${_current_epoch} - $LAST_EPOCH))
+ epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
if [ $epoch_diff -gt 6 ]
then
echo "[Oh My Zsh] Would you like to check for updates?"