about summary refs log tree commit diff
path: root/Completion/Builtins/_which
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Builtins/_which')
-rw-r--r--Completion/Builtins/_which14
1 files changed, 9 insertions, 5 deletions
diff --git a/Completion/Builtins/_which b/Completion/Builtins/_which
index d67af7316..30d20ab36 100644
--- a/Completion/Builtins/_which
+++ b/Completion/Builtins/_which
@@ -2,9 +2,13 @@
 
 local expl
 
-_description expl command
-compgen "$expl[@]" -c
-_description expl alias
-compgen "$expl[@]" -a
+_description expl 'external command'
+compadd "$expl[@]" "$@" - "${(k@)commands}" && ret=0
+_description expl 'builtin command'
+compadd "$expl[@]" "$@" - "${(k@)builtins[(R)^?disabled*]}" && ret=0
 _description expl 'shell function'
-compgen "$expl[@]" -F
+compadd "$expl[@]" "$@" - "${(k@)functions[(R)^?disabled*]}" && ret=0
+_description expl 'alias'
+compadd "$expl[@]" "$@" - "${(k@)raliases[(R)^?disabled*]}" && ret=0
+_description expl 'reserved word'
+compadd "$expl[@]" "$@" - "${(k@)reswords[(R)^?disabled*]}" && ret=0