about summary refs log tree commit diff
path: root/Completion/User/_groups
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/User/_groups')
-rw-r--r--Completion/User/_groups19
1 files changed, 11 insertions, 8 deletions
diff --git a/Completion/User/_groups b/Completion/User/_groups
index f1963a8e7..0007c1791 100644
--- a/Completion/User/_groups
+++ b/Completion/User/_groups
@@ -1,15 +1,18 @@
 #compdef newgrp
 
-local expl
+local expl groups
 
 _wanted groups expl group || return 1
 
-if (( ! $+groups )); then
-  if (( ${+commands[ypcat]} )); then
-    : ${(A)groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use YP
-  else
-    : ${(A)groups:=${${(s: :)$(</etc/group)}%%:*}}
-  fi
+if ! _style -a groups groups groups; then
+  (( $+_cache_groups )) ||
+      if (( ${+commands[ypcat]} )); then
+        : ${(A)_cache_groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use YP
+      else
+        : ${(A)_cache_groups:=${${(s: :)$(</etc/group)}%%:*}}
+      fi
+
+  groups=( "$_cache_groups[@]" )
 fi
 
-compadd "$@" "$expl[@]" - $groups
+compadd "$@" "$expl[@]" - "$groups[@]"