diff options
Diffstat (limited to 'Completion/Builtins')
-rw-r--r-- | Completion/Builtins/.distfiles | 4 | ||||
-rw-r--r-- | Completion/Builtins/_compdef | 22 |
2 files changed, 24 insertions, 2 deletions
diff --git a/Completion/Builtins/.distfiles b/Completion/Builtins/.distfiles index e0d0f3e99..633dc2d01 100644 --- a/Completion/Builtins/.distfiles +++ b/Completion/Builtins/.distfiles @@ -1,7 +1,7 @@ DISTFILES_SRC=' .distfiles _aliases _arrays _autoload _bg_jobs _bindkey _builtin _cd _command - _dirs _disable _echotc _enable _fc _functions _hash _jobs _kill + _compdef _disable _echotc _enable _fc _functions _hash _jobs _kill _limits _sched _set _setopt _source _stat _trap _unhash _unsetopt - _vars_eq _wait _which _zftp _zle _zmodload + _vars_eq _wait _which _zftp _zle _zmodload ' diff --git a/Completion/Builtins/_compdef b/Completion/Builtins/_compdef new file mode 100644 index 000000000..1df5758b3 --- /dev/null +++ b/Completion/Builtins/_compdef @@ -0,0 +1,22 @@ +#compdef compdef + +local func base=2 + +while [[ $words[base] = -* ]]; do + case $words[base] in + -d) delete=yes ;; + -p) type=pattern ;; + -k) type=key ;; + esac + (( base++ )) +done + +if [ "$delete" ]; then + compadd ${(k)_comps} +else + if [[ CURRENT -eq base ]]; then + for func in ${^~fpath:/.}/_(|*[^~])(N:t); compadd -P_ - ${func#_} + else + compgen -c + fi +fi |