]> git.friedersdorff.com Git - max/saltfiles.git/blobdiff - states/zsh/files/zshrc
Buncha changes
[max/saltfiles.git] / states / zsh / files / zshrc
index 77dec342c97500439993cd3b700629962bed507b..57c58ec874b7ef601b65ccb439096c6aa588a872 100644 (file)
@@ -32,16 +32,25 @@ bindkey -v
 NEWLINE=$'\n'
 setopt prompt_subst
 
+
 p="%(?;%F{green};%F{red})[%h]%f "
 p+="%F{red}%B%n%b%f@%F{red}%B%m%b%f"
 p+=":%F{blue}%~%f"
 p+="${NEWLINE}%(!.#.$) "
 
+virtual_env() {
+       if [ -n "${VIRTUAL_ENV+1}" ]; then
+               home_rel_path=$(echo ${VIRTUAL_ENV} | sed "s;^${HOME};~;")
+               echo -n "(${home_rel_path}) "
+       fi
+}
+
 source ~/.git-prompt.sh
 precmd () {
-       __git_ps1 "" "${p}" "${NEWLINE}[%s]${NEWLINE}"
+       __git_ps1 "" "$(virtual_env)${p}" "${NEWLINE}[%s]${NEWLINE}"
 }
 
+
 if ! pgrep -x -u "${USER}" gpg-agent >/dev/null 2>&1; then
   gpg-connect-agent /bye >/dev/null 2>&1
 fi
@@ -59,3 +68,34 @@ bindkey '^R' history-incremental-search-backward
 if [[ -f ~/.shell_aliases ]]; then
        source ~/.shell_aliases
 fi
+
+export WORKON_HOME=~/.virtualenvs
+source /usr/bin/virtualenvwrapper_lazy.sh
+
+chpwd() {
+    src_dir="$(readlink -f ~/src/)/"
+    if [[ $PWD == "$src_dir"* ]]; then
+        if git status &>/dev/null; then
+            venv_name=$(basename $(git rev-parse --show-toplevel))
+            if [[ -n "$VIRTUAL_ENV" ]]; then
+                current_venv_name=$(basename "$VIRTUAL_ENV")
+                if [[ "$current_venv_name" != "$venv_name" ]]; then
+                    deactivate
+                    workon "$venv_name"
+                fi
+            else
+                if workon | grep -q "$venv_name"; then
+                    workon "$venv_name"
+                fi
+            fi
+        else
+            if [[ -n "$VIRTUAL_ENV" ]]; then
+                deactivate
+            fi
+        fi
+    else
+        if [[ -n "$VIRTUAL_ENV" ]]; then
+            deactivate
+        fi
+    fi
+}