#autoload # 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' ) [[ -n "$path[(r).]" || $PREFIX = */* ]] && defs=( "$defs[@]" '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 -g "^*readonly*" -qS= -r "\n\t\- =["' ) fi args=( "$@" ) _alternative -O args "$defs[@]"