emacs, dot-emacs: Overhaul of URL browsing in Emacs.
[profile] / bashrc
diff --git a/bashrc b/bashrc
index 4c5e02f..a172640 100644 (file)
--- a/bashrc
+++ b/bashrc
@@ -1,3 +1,4 @@
+# -*-sh-*-
 #
 # $Id: .bashrc,v 1.6 1996/12/08 20:33:42 mdw Exp $
 #
@@ -30,11 +31,20 @@ if [ -t 0 ]; then
 
     if (( EUID == 0 )); then
       left="«" right="»"
-    elif [ "$__mdw_tty" = "`tty`" ]; then
-      left="<" right=">"
     else
-      left="[" right="]"
-      export __mdw_tty="`tty`"
+      case $USER in
+        mdw|mwooding)
+         u="" left="[" right="]"
+         ;;
+       *)
+         u="\\u@" left="{" right="}"
+         ;;
+      esac
+      if [ "$__mdw_tty" = "`tty`" ]; then
+       left="<" right=">"
+      else
+        export __mdw_tty="`tty`"
+      fi
     fi
 
     if [ -z "$SSH_CLIENT" ] &&
@@ -43,7 +53,7 @@ if [ -t 0 ]; then
       sec_l='(' sec_r=')'
     fi
 
-    PS1="$nl$bold$left$sec_l\\h$sec_r \\w$right$unbold"
+    PS1="$nl$bold$left$sec_l$u\\h$sec_r \\w$right$unbold"
     PS2="$PS1 $bold>$unbold "
   fi
 
@@ -112,11 +122,11 @@ alias which="command -v"
 alias ssync="rsync -e ssh"
 alias rootly=$__MDW_ROOTLY
 alias r=rootly
-alias re="rootly sensible-editor"
+alias re="rootly $EDITOR"
 alias pstree="pstree -Ghl"
 alias cdtmp='cd ${TMPDIR-/tmp}'
 alias pushtmp='pushd ${TMPDIR-/tmp}'
-alias e="sensible-editor"
+alias e="$EDITOR"
 alias svn="svnwrap svn"
 alias @="ssh"
 
@@ -165,6 +175,104 @@ core () {
   esac
 }
 
+# --- Turning on and off path hacks ---
+
+path-add () {
+  local pathvar export dir val
+  case $# in
+    1) pathvar=PATH dir=$1 export="export PATH";;
+    2) pathvar=$1 dir=$2 export=:;;
+    *) echo >&2 "Usage: $0 [VAR] DIR";;
+  esac
+  eval "val=\$$pathvar"
+  case ":$val:" in
+    *:"$dir":*) ;;
+    *) val=$dir:$val ;;
+  esac
+  eval "$pathvar=\$val"
+  $export
+}
+
+path-remove () {
+  local pathvar export dir val
+  case $# in
+    1) pathvar=PATH dir=$1 export="export PATH";;
+    2) pathvar=$1 dir=$2 export=:;;
+    *) echo >&2 "Usage: $0 [VAR] DIR";;
+  esac
+  eval "val=\$$pathvar"
+  case ":$val:" in
+    :"$dir":) val= ;;
+    :"$dir":*) val=${val#$dir:} ;;
+    *:"$dir":) val=${val%:$dir} ;;
+    *:"$dir":*) val=${val/:$dir:/:} ;;
+  esac
+  eval "$pathvar=\$val"
+  $export
+}
+
+pathhack () {
+  if [ $# -eq 0 ]; then
+    local IFS=:
+    for e in $PATH; do
+      case "$e" in
+       "$HOME/bin/hacks/"*)
+         echo ${e#$HOME/bin/hacks/}
+         ;;
+      esac
+    done
+    return
+  fi
+  local force=nil
+  local path=$PATH
+  while [ $# -gt 0 ]; do
+    arg=$1
+    case "$arg" in
+      -f | --force)
+       force=t
+       shift
+       continue
+       ;;
+      --)
+        shift
+       break
+       ;;
+      [-+]*)
+        ;;
+      *)
+        break
+       ;;
+    esac
+    hack=${arg#[+-]}
+    dir=$HOME/bin/hacks/$hack
+    [ -d "$dir" ] || {
+      echo "$0: path hack $hack not found"
+      return 1
+    }
+    case "$arg,$force,:$PATH:" in
+      -*,*,*:"$dir":*)
+        path-remove path "$dir"
+       ;;
+      +*,t,*:"$dir":*)
+        path-remove path "$dir"
+       path-add path "$dir"
+       ;;
+      +*,nil,*:"$dir":*)
+        ;;
+      +*,*)
+        path-add path "$dir"
+       ;;
+    esac
+    shift
+  done
+  if [ $# -eq 0 ]; then
+    PATH=$path
+    export PATH
+  else
+    PATH=$path "$@"
+  fi
+}
+
 # --- Fix `man' under Slowaris ---
 
 case "$MACHTYPE" in
@@ -190,4 +298,6 @@ if (( UID == 0 )); then
   set -o noclobber
 fi
 
+[ -f "$HOME/.bashrc-local" ] && . "$HOME/.bashrc-local"
+
 fi