X-Git-Url: https://git.madduck.net/etc/zsh.git/blobdiff_plain/2b684e2957334aa808204f559ed6714bef03ae36..f7bd94a586d968583bc05c1cd1ea253c05054f77:/.zsh/zshrc/85_vcs_prompt diff --git a/.zsh/zshrc/85_vcs_prompt b/.zsh/zshrc/85_vcs_prompt index c6b3c79..e0fbbd0 100644 --- a/.zsh/zshrc/85_vcs_prompt +++ b/.zsh/zshrc/85_vcs_prompt @@ -52,19 +52,25 @@ __get_prompt_path_components() __vcs_get_repo_type() { - if __git_get_repo_root >/dev/null; then - echo git - else - echo NONE - fi + while true; do + [ -d .git ] && echo git && break + [ -d .bzr ] && echo bzr && break + [ -d .hg ] && echo hg && break + [ -d .svn ] && echo svn && break + [ -d .svk ] && echo svk && break + [ -d CVS ] && echo cvs && break + [ "$PWD" = / ] && echo NONE && return 1 + cd .. + done } __vcs_set_prompt_variables() { local pre branch post local MAXLEN=25 + local repotype="${1:-$(__vcs_get_repo_type)}" - case "${1:-$(__vcs_get_repo_type)}" in + case "$repotype" in git) local reporoot="$(__git_get_repo_root)" set -- $(__get_prompt_path_components "$reporoot") @@ -76,6 +82,10 @@ __vcs_set_prompt_variables() pre="${(%)pre}" ;; *) + case "$repotype" in + NONE) :;; + *) warn "$repotype repositories not (yet) supported in the prompt";; + esac local p="%${MAXLEN}<..<%~%<<" #TODO find a better way so we don't have to nuke $psvar, but since the # %(nv.true.false) check for prompts checks element count, not @@ -99,7 +109,7 @@ if ! is_root; then *${vcs}*) __vcs_set_prompt_variables esac } - precmd_functions+=_update_vcs prompt_vars_if_vcs_ran + precmd_functions+=_update_vcs_prompt_vars_if_vcs_ran _update_vcs_prompt_vars() { __vcs_set_prompt_variables