## vim:ft=zsh:foldmethod=marker ## ## vcs_info - provide version control information ## ## Written by Frank Terbeck ## ## This file and all corresponding files in Functions/VCS_Info/ are ## distributed under the same BSD-ish license as zsh itself. ## setopt localoptions noksharrays extendedglob NO_shwordsplit local file func sys local -a static_functions static_functions=( VCS_INFO_adjust VCS_INFO_bydir_detect VCS_INFO_check_com VCS_INFO_formats VCS_INFO_maxexports VCS_INFO_nvcsformats VCS_INFO_realpath VCS_INFO_reposub VCS_INFO_set vcs_info_lastmsg vcs_info_printsys vcs_info_setsys ) for func in ${static_functions} ; do autoload -Uz ${func} done VCS_INFO_set --nvcs '-preinit-' vcs_info_setsys # and now, finally create the real vcs_info function vcs_info () { emulate -L zsh setopt extendedglob local -i found local -a enabled disabled local -x usercontext vcs rrn local -ix maxexports local -ax msgs local -Ax vcs_comm vcs='-init-'; rrn='-all-' usercontext=${1:-default} zstyle -a ":vcs_info:${vcs}:${usercontext}:${rrn}" "enable" enabled (( ${#enabled} == 0 )) && enabled=( all ) if [[ -n ${(M)enabled:#(#i)none} ]] ; then [[ -n ${vcs_info_msg_0_} ]] && VCS_INFO_set --clear return 0 fi if [[ -n ${(M)enabled:#(#i)all} ]] ; then enabled=( ${VCS_INFO_backends} ) zstyle -a ":vcs_info:${vcs}:${usercontext}:${rrn}" "disable" disabled fi VCS_INFO_maxexports (( found = 0 )) for vcs in ${enabled} ; do [[ -n ${(M)disabled:#${vcs}} ]] && continue if (( ${+functions[VCS_INFO_detect_${vcs}]} == 0 )) ; then printf 'vcs_info: configured unknown backend: '\''%s'\''\n' ${vcs} printf 'vcs_info: use '\''vcs_info_printsys'\'' to find supported systems.\n' continue fi vcs_comm=() VCS_INFO_detect_${vcs} && (( found = 1 )) && break done (( found == 0 )) && { VCS_INFO_set --nvcs return 0 } VCS_INFO_get_data_${vcs} || { VCS_INFO_set --nvcs return 1 } VCS_INFO_set return 0 } vcs_info "$@"