X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/36d89cd7d7204eaa3d6745fef45bab035b584e40..c6a94b49c00ea320c67909cbe0d2df2f95d4fbb9:/zsh/lib/prompt.zsh?ds=sidebyside diff --git a/zsh/lib/prompt.zsh b/zsh/lib/prompt.zsh index 61f5db8..c8ca45b 100644 --- a/zsh/lib/prompt.zsh +++ b/zsh/lib/prompt.zsh @@ -6,7 +6,7 @@ hostcolor=green [[ $(hostname) == "tardis" ]] && hostcolor=red precmd() { - PROMPT='%T %n@%{$fg[$hostcolor]%}%m%(1j. $fg_bold[white]↵%{$fg_bold[red]%}%j.)%{$reset_color%}%-0>..>$(git_prompt_status)%>> + PROMPT='%T $(virtualenv_prompt)%n@%{$fg[$hostcolor]%}%m%(1j. $fg_bold[white]↵%{$fg_bold[red]%}%j.)%{$reset_color%}%-0>..>$(git_prompt_status)%>> %(?..%{$fg_bold[white]%}%?)%{$reset_color%}$(vi_prompt_info)%{%(!.$fg[red]❰.$fg[green]❱)%1G%} ' RPROMPT='%{$fg[green]%}%~%{$reset_color%}' } @@ -14,7 +14,8 @@ precmd() { vi_prompt_info() { local vicmd="$fg_bold[green]❰$reset_color%1G" local viins="$fg_bold[blue]❱$reset_color%1G" - printf '%s' "%{${${KEYMAP/vicmd/$vicmd}/(main|viins)/$viins}%}" + local map=${KEYMAP:-viins} + printf '%s' "%{${${map/vicmd/$vicmd}/(main|viins)/$viins}%}" } function zle-line-init zle-line-finish zle-keymap-select { @@ -22,8 +23,8 @@ function zle-line-init zle-line-finish zle-keymap-select { zle -R } -zle -N zle-line-init -zle -N zle-line-finish +# zle -N zle-line-init +# zle -N zle-line-finish zle -N zle-keymap-select # reset zle on resize @@ -41,9 +42,9 @@ git_prompt_status() { # Get current status. while IFS=$'\n' read line; do if [[ "$line" == \#\#\ * ]]; then - [[ "$line" =~ '## ([^.]*)\.\.\.(.*)' ]] && branch=$match[1] - [[ "$line" =~ 'ahead ([0-9]+)' ]] && ahead=$match[1] - [[ "$line" =~ 'behind ([0-9]+)' ]] && behind=$match[1] + [[ "$line" =~ '## (.*?)(\.\.\.|$)' ]] && branch=$match[1] + [[ "$line" =~ 'ahead ([0-9]+)' ]] && ahead=$match[1] + [[ "$line" =~ 'behind ([0-9]+)' ]] && behind=$match[1] else # Count added, deleted, modified, renamed, unmerged, untracked, dirty. # T (type change) is undocumented, see http://git.io/FnpMGw. @@ -107,6 +108,14 @@ git_prompt_status() { echo $git_status } +function virtualenv_prompt() { + if [[ -z $VIRTUAL_ENV ]] then + echo "" + else + echo "(${VIRTUAL_ENV##*/}) " + fi +} + function print_if_fits() { local zero length