]> gitweb @ CieloNegro.org - sugar.git/blobdiff - dot-files/_zshrc
Auto commit by The Sugar System.
[sugar.git] / dot-files / _zshrc
index 20e6997229dde0d82812358b1aabe05efa751193..bcbe986c3af50b7f6fd89d2fbe854a1be5f56697 100644 (file)
@@ -58,23 +58,65 @@ function _we_are_in_gnu_screen () {
 
 _prompt_base='%B[%n@%m] %{%(?.$fg[green].$fg[red])%}%#%{$reset_color%}%b '
 if ( _we_are_in_gnu_screen ); then
-    # Magic escape sequence for GNU Screen to update their titles
-    # dynamically by grabbing prompt line.
-    #PROMPT=$'%{\ek\e\\%}'$_prompt_base
-
+    # GNU Screen has a capability to set its window title by "ESC k
+    # {string} ESC \". We want to reset the title to `_' to show we
+    # aren't running any command now.
     PROMPT=$'%{\ek_\e\\%}'$_prompt_base
 else
     PROMPT=$_prompt_base
 fi
 
-function preexec() {
-    if ( _we_are_in_gnu_screen ); then
+function preexec() { # Hook
+    if { _we_are_in_gnu_screen } then
+        # Set the window title of GNU Screen.
         local cmd=${1[(wr)^(*=*|sudo|nice|env|time|-*|[0-9]*)]}
         printf "\ek$cmd\e\\"
     fi
 }
 
-RPROMPT='%U%D{%m/%d}%u %U%D{%T}%u %U%~%u'
+function precmd() { # Hook
+    local dirinfo=$(print_directory_info $(pwd))
+
+    case $dirinfo in
+        "")
+            RPROMPT='%U%~%u';;
+        *)
+            RPROMPT="%U%~%u %U($dirinfo)%u";;
+    esac
+}
+
+function print_directory_info() {
+    local absdir=$1
+
+    if [[ -d $absdir/.git ]] then
+        # Git
+        git branch --no-color 2>/dev/null \
+            | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
+
+    elif [[ -d $absdir/.hg ]] then
+        # Hg
+        hg branch 2>/dev/null
+
+    elif [[ -d $absdir/_darcs ]] then
+        # Darcs
+        basename $absdir
+
+    elif [[ -r $absdir/CVS/Repository ]] then
+        # CVS
+        cat $absdir/CVS/Repository \
+            | sed -e 's!\([^/]*\).*!\1!'
+
+    else
+        # Unknown.
+        if [[ $absdir = "/" ]] then
+            # This is the root directory so exit from the recursion.
+            echo
+        else
+            # Recurse to the parent dir.
+            print_directory_info $(dirname $absdir)
+        fi
+    fi
+}
 
 HISTFILE="$HOME/.zhistory"
 HISTSIZE=6000000
@@ -104,7 +146,7 @@ alias aria="ssh -X admin@aria.cielonegro.org"
 alias nem="ssh -X pho@nem.cielonegro.org"
 alias mikasa="ssh -X daimon@mikasa.tomilab.net"
 
-alias aria-emacs="ssh -f -X admin@aria.cielonegro.org emacs"
+alias aria-emacs="ssh -f -X admin@aria.cielonegro.org emacsclient -c"
 
 alias g1="ssh pho@g1.cuenote.jp"
 alias g2="ssh pho@g2.cuenote.jp"
@@ -125,6 +167,8 @@ if [ $(uname) = "Darwin" ]; then
     alias la='ls -aw'
     alias l='ls -lw'
     alias lls='ls -law'
+
+    alias top='/usr/bin/top -X -o cpu'
 else
     alias ls='ls -F'
     alias la='ls -a'