diff options
Diffstat (limited to 'Completion/User/_groups')
-rw-r--r-- | Completion/User/_groups | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Completion/User/_groups b/Completion/User/_groups index 975189174..27444d26d 100644 --- a/Completion/User/_groups +++ b/Completion/User/_groups @@ -1,6 +1,19 @@ #compdef newgrp -: ${(A)groups:=${${(s: :)$(</etc/group)}%%:*}} -# : ${(A)groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use NIS +local expl groups tmp -compadd $groups +_wanted groups || return 1 + +if ! zstyle -a ":completion:${curcontext}:" groups groups; then + (( $+_cache_groups )) || + if (( ${+commands[ypcat]} )) && + tmp=$(_call groups ypcat group.byname); then + : ${(A)_cache_groups:=${${(f)tmp}%%:*}} # If you use YP + else + : ${(A)_cache_groups:=${${(s: :)$(</etc/group)}%%:*}} + fi + + groups=( "$_cache_groups[@]" ) +fi + +_all_labels groups expl group compadd "$@" - "$groups[@]" |