]> git.phdru.name Git - dotfiles.git/blobdiff - .shellrc
.shellrc: allow directory URLs to begin with ../
[dotfiles.git] / .shellrc
index 76f81950b8375407bed0f521105612c16102653f..189817bd65eb6a95476556b45de15e79aeb8c5e3 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -12,6 +12,9 @@ case $- in
       *) return;;
 esac
 
+# Stop if non-interactive shell
+# [ -z "$PS1" ] && return
+
 # append to the history file, don't overwrite it
 shopt -s histappend
 
@@ -38,10 +41,6 @@ shopt -s checkwinsize
 #fi
 
 
-OPS1="$OPS1\\$"
-PS1="$OPS1 "
-
-
 case "$HOME" in
    /home/*)
       if [ -L /home ]; then
@@ -53,6 +52,11 @@ case "$HOME" in
    ;;
 esac
 
+
+OPS1="$OPS1\\$"
+PS1="$OPS1 "
+
+
 case "$SHELL" in
 */bash)
    [ "`type -t ls`" = alias ] && unalias ls
@@ -118,7 +122,10 @@ case "$SHELL" in
    fi
    complete -W "`echo $BROWSER | sed 's/:/ /g'`" start-browser
 
-   which pip >/dev/null 2>&1 && eval "`pip completion --bash`"
+   if which pip >/dev/null 2>&1; then
+      eval "`pip completion --bash`"
+      rm -rf /tmp/pip_build_"$USER"
+   fi
    ;;
 
 */ksh)
@@ -157,8 +164,50 @@ KillAll() {
 }
 
 
-x() { exit; }
-X() { startx >> .Xserver.log 2>&1; cyr; }
+# git-related
+
+# chdir to a remote's directory (if the remote is on the local FS)
+cdremote() {
+   cd "`git config --get remote.$1.url`"
+}
+
+case "$SHELL" in
+   */bash)
+      # list remotes with URLs matching a regexp
+      list_remotes() {
+         GIT_REMOTES=""
+         for remote in `git remote`; do
+            if git config --get remote.$remote.url | grep -q "$1"; then
+               GIT_REMOTES="$GIT_REMOTES $remote"
+            fi
+         done
+         remote=""
+         unset remote
+      }
+
+      # define completion for cdremote - list remotes with directories as URLs
+      _cdremote_complete() {
+         local cur="${COMP_WORDS[COMP_CWORD]}";
+         list_remotes '^\(/\|\.\./\)'
+         COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
+         GIT_REMOTES=""
+         unset GIT_REMOTES
+      }
+
+      complete -F _cdremote_complete cdremote
+
+      # define completion for git-open - list remotes with http(s) URLs
+      _git_open() {
+         local cur="${COMP_WORDS[COMP_CWORD]}";
+         list_remotes '^http\(s\)\?://'
+         COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
+         GIT_REMOTES=""
+         unset GIT_REMOTES
+      }
+
+      complete -F _git_open git-open
+   ;;
+esac
 
 
 include()
@@ -277,3 +326,17 @@ tmux() {
       ;;
    esac
 }
+
+
+if [ -f /usr/local/bin/virtualenvwrapper_lazy.sh ]; then
+   source /usr/local/bin/virtualenvwrapper_lazy.sh
+fi
+
+#if which pyenv >/dev/null 2>&1; then
+#   eval "`pyenv init -`"
+#   eval "`pyenv virtualenv-init -`"
+#fi
+
+
+X() { startx >> .Xserver.log 2>&1; cyr; }
+x() { exit; }