diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2008-09-19 12:58:46 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2008-09-19 12:58:46 +0000 |
commit | 23f2b4503c9d7697e382fed550d3bf846b81dd5c (patch) | |
tree | 8953de32c2d4126882d9d4c66bcbe7b8615e3419 /Functions/VCS_Info/vcs_info | |
parent | d9f1432e074872aa3a89515bc65ede5ad6551a47 (diff) | |
download | zsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.tar.gz zsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.tar.xz zsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.zip |
users/13252 and elsewhere: Frank Terbeck plus tweaks:
add VCS_Info function system
Diffstat (limited to 'Functions/VCS_Info/vcs_info')
-rw-r--r-- | Functions/VCS_Info/vcs_info | 90 |
1 files changed, 90 insertions, 0 deletions
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 <ft@bewatermyfriend.org> +## +## 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 +} |