X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=states%2Fzsh%2Ffiles%2Fzshrc;h=57c58ec874b7ef601b65ccb439096c6aa588a872;hb=95263bf9bc976ede0db6c8fd1b3d3ce4c79bcebd;hp=6fe4aafd4d01e20eef19068a05b8cbbaee1b0cec;hpb=dd0b905788ae2041f7eb8d6c18220e59d951c5f7;p=max%2Fsaltfiles.git diff --git a/states/zsh/files/zshrc b/states/zsh/files/zshrc index 6fe4aaf..57c58ec 100644 --- a/states/zsh/files/zshrc +++ b/states/zsh/files/zshrc @@ -8,7 +8,7 @@ zstyle ':completion:*' ignore-parents parent pwd zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s zstyle ':completion:*' list-suffixes true -zstyle ':completion:*' max-errors 2 +zstyle ':completion:*' max-errors 1 zstyle ':completion:*' menu select=1 zstyle ':completion:*' preserve-prefix '//[^/]##/' zstyle ':completion:*' prompt 'Corrections with %e differences:' @@ -21,40 +21,35 @@ 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 # End of lines configured by zsh-newuser-install +# Prompt +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}%(!.#.$) " -git_prompt() { - ref=$(git symbolic-ref HEAD | cut -d'/' -f3-) - echo $ref +virtual_env() { + if [ -n "${VIRTUAL_ENV+1}" ]; then + home_rel_path=$(echo ${VIRTUAL_ENV} | sed "s;^${HOME};~;") + echo -n "(${home_rel_path}) " + fi } -NEWLINE=$'\n' -setopt prompt_subst -autoload -Uz vcs_info -zstyle ':vcs_info:*' actionformats \ - "%F{5}[%f%b%F{3}|%F{1}%a%F{5}]%f${NEWLINE}" -zstyle ':vcs_info:*' formats \ - "%F{5}[%f%b%F{5}]%f${NEWLINE}" - -zstyle ':vcs_info:*' enable git - -# or use pre_cmd, see man zshcontrib -precmd() { - echo - vcs_info +source ~/.git-prompt.sh +precmd () { + __git_ps1 "" "$(virtual_env)${p}" "${NEWLINE}[%s]${NEWLINE}" } -prompt='$vcs_info_msg_0_' -prompt+="%(?;%F{green};%F{red})[%h]%f " -prompt+="%F{red}%B%n%b%f@%F{red}%B%m%b%f" -prompt+=":%F{blue}%~%f" -prompt+="${NEWLINE}%(!.#.$) " if ! pgrep -x -u "${USER}" gpg-agent >/dev/null 2>&1; then gpg-connect-agent /bye >/dev/null 2>&1 @@ -65,4 +60,42 @@ if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) fi + gpg-connect-agent updatestartuptty /bye > /dev/null + +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 +}