From 23f2b4503c9d7697e382fed550d3bf846b81dd5c Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 19 Sep 2008 12:58:46 +0000 Subject: users/13252 and elsewhere: Frank Terbeck plus tweaks: add VCS_Info function system --- Functions/VCS_Info/vcs_info | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Functions/VCS_Info/vcs_info (limited to 'Functions/VCS_Info/vcs_info') diff --git a/Functions/VCS_Info/vcs_info b/Functions/VCS_Info/vcs_info new file mode 100644 index 000000000..9a4d2489e --- /dev/null +++ b/Functions/VCS_Info/vcs_info @@ -0,0 +1,90 @@ +## 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 () { + setopt localoptions noksharrays 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 +} -- cgit 1.4.1