X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=states%2Fzsh%2Ffiles%2Fzshrc;h=57c58ec874b7ef601b65ccb439096c6aa588a872;hb=95263bf9bc976ede0db6c8fd1b3d3ce4c79bcebd;hp=04852cedeccc0cc0da2949ba6d1c4fe9f903bbd8;hpb=735c5d5e3a1aab82d77d9461157ecff74dde67a0;p=max%2Fsaltfiles.git diff --git a/states/zsh/files/zshrc b/states/zsh/files/zshrc index 04852ce..57c58ec 100644 --- a/states/zsh/files/zshrc +++ b/states/zsh/files/zshrc @@ -21,8 +21,8 @@ compinit # End of lines added by compinstall # Lines configured by zsh-newuser-install HISTFILE=~/.histfile -HISTSIZE=20000 -SAVEHIST=20000 +HISTSIZE=100000 +SAVEHIST=100000 setopt appendhistory autocd extendedglob nomatch unsetopt beep notify bindkey -v @@ -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 +}