浏览代码

Merge branch 'master' of git://github.com/robbyrussell/oh-my-zsh

Fredrik Appelberg 14 年之前
父节点
当前提交
0858eae3a1

+ 2 - 2
README.textile

@@ -8,7 +8,7 @@ h2. Setup
 
 
 h3. The automatic installer... (do you trust me?)
 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
 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)
 * enable the plugins you want in your @~/.zshrc@ (take a look at @plugins/@ to see what's possible)
 ** example: @plugins=(git osx ruby)@
 ** example: @plugins=(git osx ruby)@
 * Theme support: Change the @ZSH_THEME@ environment variable in @~/.zshrc@.
 * 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...
 * much much more...  take a look at @lib/@ what _Oh My Zsh_ offers...
 
 
 h2. Useful
 h2. Useful

+ 0 - 23
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() {
 function zsh_stats() {
   history | awk '{print $2}' | sort | uniq -c | sort -rn | head
   history | awk '{print $2}' | sort | uniq -c | sort -rn | head
 }
 }

+ 4 - 0
lib/git.zsh

@@ -26,6 +26,10 @@ git_prompt_status() {
   fi
   fi
   if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
   if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
     STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
     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
   fi
   if $(echo "$INDEX" | grep '^R  ' &> /dev/null); then
   if $(echo "$INDEX" | grep '^R  ' &> /dev/null); then
     STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"
     STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"

+ 26 - 21
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
+#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%<<"
+}

lib/appearance.zsh → lib/theme-and-appearance.zsh


+ 3 - 0
plugins/bundler/bundler.plugin.zsh

@@ -0,0 +1,3 @@
+alias be="bundle exec"
+alias bi="bundle install"
+alias bu="bundle update"

+ 52 - 6
plugins/osx/osx.plugin.zsh

@@ -1,11 +1,57 @@
+function savepath() {
+  pwd > ~/.current_path~
+}
+
 function tab() {
 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 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
       activate
-      do script with command "cd \"$PWD\"; $*" in window 1
     end tell
     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
 EOF
-}
+}

+ 3 - 1
plugins/rails3/rails3.plugin.zsh

@@ -3,6 +3,8 @@ alias rg='ruby script/rails generate'
 alias rd='ruby script/rails destroy'
 alias rd='ruby script/rails destroy'
 alias rp='ruby script/rails plugin'
 alias rp='ruby script/rails plugin'
 alias rdbm='rake db:migrate db:test:clone'
 alias rdbm='rake db:migrate db:test:clone'
+alias rdbmr='rake db:migrate && rake db:migrate:redo'
 alias rc='ruby script/rails console'
 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'
 alias devlog='tail -f log/development.log'
+

+ 60 - 3
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_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
+}

+ 7 - 0
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=""

+ 43 - 0
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]%}"

+ 48 - 0
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

+ 1 - 1
tools/check_for_upgrade.sh

@@ -16,7 +16,7 @@ then
     _update_zsh_update && return 0;
     _update_zsh_update && return 0;
   fi
   fi
 
 
-  epoch_diff=$((${_current_epoch} - $LAST_EPOCH))
+  epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
   if [ $epoch_diff -gt 6 ]
   if [ $epoch_diff -gt 6 ]
   then
   then
     echo "[Oh My Zsh] Would you like to check for updates?"
     echo "[Oh My Zsh] Would you like to check for updates?"