#compdef bindkey # Normally, this completes names of zle widgets, whether the builtin ones # or ones defined by the user. Note that a - allows a wildcard before it, # so h-b-s-b will complete to history-beginning-search-backward. You # can alter this by removing the -M ... from the second compadd. # # Where appropriate, will complete keymaps instead of widgets. local expl if [[ "$words[2]" = -*[DAN]* || "$words[CURRENT-1]" = -*M ]]; then _wanted -C -M keymaps expl keymap compadd - "$keymaps[@]" else _wanted widgets expl widget compadd -M 'r:|-=* r:|=*' - "${(@k)widgets}" fi