summaryrefslogtreecommitdiff
path: root/Completion/Base/_command_names
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/_command_names')
-rw-r--r--Completion/Base/_command_names32
1 files changed, 30 insertions, 2 deletions
diff --git a/Completion/Base/_command_names b/Completion/Base/_command_names
index d3b8a109a..844f190a6 100644
--- a/Completion/Base/_command_names
+++ b/Completion/Base/_command_names
@@ -1,3 +1,31 @@
-#defcomp -command-
+#compdef -command-
-complist -c
+# The option `-e' if given as the first argument says that we should
+# complete only external commands and executable files. This and a
+# `-' as the first argument is then removed from the arguments.
+
+local args defs
+
+defs=(
+ 'commands:external command:compadd -k commands'
+ 'executables:executable file or directory:_path_files -/g \*\(-\*\)'
+)
+
+if [[ "$1" = -e ]]; then
+ shift
+else
+ [[ "$1" = - ]] && shift
+
+ defs=( "$defs[@]"
+ 'builtins:builtin command:compadd -k builtins'
+ 'functions:shell function:compadd -k functions'
+ 'aliases:alias:compadd -k aliases'
+ 'reserved-words:reserved word:compadd -k reswords'
+ 'jobs:: _jobs -t'
+ 'parameters:: _parameters -qS= -r "\n\t\- =["'
+ )
+fi
+
+args=( "$@" )
+
+_alternative -O args "$defs[@]"