summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_sudo55
1 files changed, 37 insertions, 18 deletions
diff --git a/Completion/Unix/Command/_sudo b/Completion/Unix/Command/_sudo
index b4c002168..23afb4046 100644
--- a/Completion/Unix/Command/_sudo
+++ b/Completion/Unix/Command/_sudo
@@ -1,26 +1,45 @@
-#compdef sudo
+#compdef sudo sudoedit
local curcontext="$curcontext" environ e
+local -a args
+
zstyle -a "$curcontext" environ environ
for e in "${environ[@]}"
do local -x "$e"
done
-_arguments \
- '-V[show version]' \
- '-l[list allowed commands]' \
- '-L[list options from Default section]' \
- '-h[show help]' \
- '-v[validate user timestamp]' \
- '-k[invalidate user timestamp]' \
- '-K[remove user timestamp]' \
- '-b[run command in background]' \
- '-r[Kerberos realm]:Kerberos realm:' \
- '-p[password prompt]:password prompt:' \
- '-u[user name]:user name:_users' \
- '-s[run SHELL]' \
- '-H[set HOME environment variable]' \
- '-S[read password from stdin]' \
- '(-):command name: _command_names -e' \
- '*::arguments: _normal'
+args=(
+ '-V[show version]'
+ '-l[list allowed commands]'
+ '-L[list options from Default section]'
+ '-a[BSD auth type]:BSD auth type:'
+ '-c[BSD login class]:BSD login class:'
+ '-h[show help]'
+ '-v[validate user timestamp]'
+ '-k[invalidate user timestamp]'
+ '-K[remove user timestamp]'
+ '-r[Kerberos realm]:Kerberos realm:'
+ '-p[password prompt]:password prompt:'
+ '-u[user name]:user name:_users'
+ '-S[read password from stdin]'
+)
+
+if [[ $service = sudoedit || -n $words[(R)-e] ]]; then
+ args+=(
+ '*:file: _files'
+ )
+else
+ args+=(
+ '-b[run command in background]'
+ '-E[preserve environment]'
+ '-H[set HOME environment variable]'
+ '-P[preserve group vector]'
+ '(-i)-s[run SHELL]'
+ '(-s)-i[simulate login]'
+ '(-):command name: _command_names -e'
+ '*::arguments: _normal'
+ )
+fi
+
+_arguments $args