Added mercurial support.

This commit is contained in:
Dominik Ritter 2015-03-22 22:45:55 +01:00
parent 3b6402d9b1
commit ba2ab6ec4a
1 changed files with 19 additions and 9 deletions

View File

@ -25,6 +25,8 @@ CURRENT_BG='NONE'
# bizarre characters below, your fonts are not correctly installed. # bizarre characters below, your fonts are not correctly installed.
LEFT_SEGMENT_SEPARATOR='' LEFT_SEGMENT_SEPARATOR=''
RIGHT_SEGMENT_SEPARATOR='' RIGHT_SEGMENT_SEPARATOR=''
VCS_UNSTAGED_ICON='●'
VCS_STAGED_ICON='✚'
################################################################ ################################################################
# vcs_info settings for git # vcs_info settings for git
@ -32,12 +34,14 @@ RIGHT_SEGMENT_SEPARATOR=''
setopt prompt_subst setopt prompt_subst
autoload -Uz vcs_info autoload -Uz vcs_info
zstyle ':vcs_info:*' stagedstr " %F{black}%f" zstyle ':vcs_info:*' stagedstr " %F{black}$VCS_STAGED_ICON%f"
zstyle ':vcs_info:*' unstagedstr " %F{black}%f" zstyle ':vcs_info:*' unstagedstr " %F{black}$VCS_UNSTAGED_ICON%f"
zstyle ':vcs_info:*' actionformats " %b %F{red}| %a%f" zstyle ':vcs_info:*' actionformats " %b %F{red}| %a%f"
zstyle ':vcs_info:*' formats " %b%c%u%m" zstyle ':vcs_info:*' formats " %b%c%u%m"
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-aheadbehind git-remotebranch git-tagname zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-aheadbehind git-remotebranch git-tagname
zstyle ':vcs_info:hg*' get-revision true # If false, the dirty-check won't work in mercurial
zstyle ':vcs_info:hg*:*' branchformat "%b" # only show branch
zstyle ':vcs_info:*' enable git hg zstyle ':vcs_info:*' enable git hg
################################################################ ################################################################
@ -96,18 +100,24 @@ prompt_context() {
} }
# Git: branch/detached head, dirty status # Git: branch/detached head, dirty status
prompt_git() { prompt_vcs() {
local dirty local dirty=false
local vcs_prompt="${vcs_info_msg_0_}"
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then if [[ -n $vcs_prompt ]]; then
dirty=$(parse_git_dirty) if [[ $vcs_prompt =~ $VCS_UNSTAGED_ICON ]]; then
if [[ -n $dirty ]]; then dirty=true
elif [[ $vcs_prompt =~ $VCS_STAGED_ICON ]]; then
dirty=true
fi
if ( $dirty ); then
$1_prompt_segment yellow black $1_prompt_segment yellow black
else else
$1_prompt_segment green black $1_prompt_segment green black
fi fi
echo -n "${vcs_info_msg_0_}" echo -n "$vcs_prompt"
fi fi
} }
@ -230,7 +240,7 @@ prompt_rvm() {
# Main prompt # Main prompt
build_left_prompt() { build_left_prompt() {
if (( ${#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS} == 0 )); then if (( ${#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS} == 0 )); then
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir git) POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)
fi fi
for element in $POWERLEVEL9K_LEFT_PROMPT_ELEMENTS; do for element in $POWERLEVEL9K_LEFT_PROMPT_ELEMENTS; do