# (C) 2010 magicant

# Completion script for the "bindkey" built-in command.

function completion/bindkey {

        typeset OPTIONS ARGOPT PREFIX
        OPTIONS=( #>#
        "a --vi-command; change or print vi-command-mode key bindings"
        "e --emacs; change or print emacs-mode key bindings"
        "l --list; print all key binding command names"
        "v --vi-insert; change or print vi-insert-mode key bindings"
        "--help"
        ) #<#

        command -f completion//parseoptions -es
        case $ARGOPT in
        (-)
                command -f completion//completeoptions
                ;;
        (*)
                command -f completion//getoperands
                if [ ${WORDS[#]} -le 0 ]; then
                        # complete a key sequence
                        TARGETWORD=${TARGETWORD//\\\\/}
                        case $TARGETWORD in (*\\*)
                                PREFIX=${TARGETWORD%\\*}
                                #>>#
                                complete -T -P "$PREFIX" '\\' -D "backslash"
                                complete -T -P "$PREFIX" '\B' -D "backspace"
                                complete -T -P "$PREFIX" '\D' -D "down arrow"
                                complete -T -P "$PREFIX" '\E' -D "end"
                                complete -T -P "$PREFIX" '\H' -D "home"
                                complete -T -P "$PREFIX" '\I' -D "insert"
                                complete -T -P "$PREFIX" '\L' -D "left arrow"
                                complete -T -P "$PREFIX" '\N' -D "page-down"
                                complete -T -P "$PREFIX" '\P' -D "page-up"
                                complete -T -P "$PREFIX" '\R' -D "right arrow"
                                complete -T -P "$PREFIX" '\U' -D "up arrow"
                                complete -T -P "$PREFIX" '\X' -D "delete"
                                complete -T -P "$PREFIX" '\!' -D "INTR (normally Ctrl-C)"
                                complete -T -P "$PREFIX" '\#' -D "EOF (normally Ctrl-D)"
                                complete -T -P "$PREFIX" '\$' -D "KILL (normally Ctrl-U)"
                                complete -T -P "$PREFIX" '\?' -D "ERASE (normally Ctrl-H)"
                                complete -T -P "$PREFIX" '\^@' -D "Ctrl-@"
                                complete -T -P "$PREFIX" '\^A' -D "Ctrl-A"
                                complete -T -P "$PREFIX" '\^B' -D "Ctrl-B"
                                complete -T -P "$PREFIX" '\^C' -D "Ctrl-C"
                                complete -T -P "$PREFIX" '\^D' -D "Ctrl-D"
                                complete -T -P "$PREFIX" '\^E' -D "Ctrl-E"
                                complete -T -P "$PREFIX" '\^F' -D "Ctrl-F"
                                complete -T -P "$PREFIX" '\^G' -D "Ctrl-G"
                                complete -T -P "$PREFIX" '\^H' -D "Ctrl-H"
                                complete -T -P "$PREFIX" '\^I' -D "Ctrl-I (tab)"
                                complete -T -P "$PREFIX" '\^J' -D "Ctrl-J (newline)"
                                complete -T -P "$PREFIX" '\^K' -D "Ctrl-K"
                                complete -T -P "$PREFIX" '\^L' -D "Ctrl-L"
                                complete -T -P "$PREFIX" '\^M' -D "Ctrl-M (carriage return)"
                                complete -T -P "$PREFIX" '\^N' -D "Ctrl-N"
                                complete -T -P "$PREFIX" '\^O' -D "Ctrl-O"
                                complete -T -P "$PREFIX" '\^P' -D "Ctrl-P"
                                complete -T -P "$PREFIX" '\^Q' -D "Ctrl-Q"
                                complete -T -P "$PREFIX" '\^R' -D "Ctrl-R"
                                complete -T -P "$PREFIX" '\^S' -D "Ctrl-S"
                                complete -T -P "$PREFIX" '\^T' -D "Ctrl-T"
                                complete -T -P "$PREFIX" '\^U' -D "Ctrl-U"
                                complete -T -P "$PREFIX" '\^V' -D "Ctrl-V"
                                complete -T -P "$PREFIX" '\^W' -D "Ctrl-W"
                                complete -T -P "$PREFIX" '\^X' -D "Ctrl-X"
                                complete -T -P "$PREFIX" '\^Y' -D "Ctrl-Y"
                                complete -T -P "$PREFIX" '\^Z' -D "Ctrl-Z"
                                complete -T -P "$PREFIX" '\^[' -D "Ctrl-[ (escape)"
                                complete -T -P "$PREFIX" '\^\' -D 'Ctrl-\'
                                complete -T -P "$PREFIX" '\^]' -D "Ctrl-]"
                                complete -T -P "$PREFIX" '\^^' -D "Ctrl-^"
                                complete -T -P "$PREFIX" '\^_' -D "Ctrl-_"
                                complete -T -P "$PREFIX" '\^?' -D "Ctrl-?"
                                complete -T -P "$PREFIX" '\F00' -D "F0"
                                complete -T -P "$PREFIX" '\F01' -D "F1"
                                complete -T -P "$PREFIX" '\F02' -D "F2"
                                complete -T -P "$PREFIX" '\F03' -D "F3"
                                complete -T -P "$PREFIX" '\F04' -D "F4"
                                complete -T -P "$PREFIX" '\F05' -D "F5"
                                complete -T -P "$PREFIX" '\F06' -D "F6"
                                complete -T -P "$PREFIX" '\F07' -D "F7"
                                complete -T -P "$PREFIX" '\F08' -D "F8"
                                complete -T -P "$PREFIX" '\F09' -D "F9"
                                complete -T -P "$PREFIX" '\F10' -D "F10"
                                complete -T -P "$PREFIX" '\F11' -D "F11"
                                complete -T -P "$PREFIX" '\F12' -D "F12"
                                complete -T -P "$PREFIX" '\F13' -D "F13"
                                complete -T -P "$PREFIX" '\F14' -D "F14"
                                complete -T -P "$PREFIX" '\F15' -D "F15"
                                complete -T -P "$PREFIX" '\F16' -D "F16"
                                complete -T -P "$PREFIX" '\F17' -D "F17"
                                complete -T -P "$PREFIX" '\F18' -D "F18"
                                complete -T -P "$PREFIX" '\F19' -D "F19"
                                complete -T -P "$PREFIX" '\F20' -D "F20"
                                complete -T -P "$PREFIX" '\F21' -D "F21"
                                complete -T -P "$PREFIX" '\F22' -D "F22"
                                complete -T -P "$PREFIX" '\F23' -D "F23"
                                complete -T -P "$PREFIX" '\F24' -D "F24"
                                complete -T -P "$PREFIX" '\F25' -D "F25"
                                complete -T -P "$PREFIX" '\F26' -D "F26"
                                complete -T -P "$PREFIX" '\F27' -D "F27"
                                complete -T -P "$PREFIX" '\F28' -D "F28"
                                complete -T -P "$PREFIX" '\F29' -D "F29"
                                complete -T -P "$PREFIX" '\F30' -D "F30"
                                complete -T -P "$PREFIX" '\F31' -D "F31"
                                complete -T -P "$PREFIX" '\F32' -D "F32"
                                complete -T -P "$PREFIX" '\F33' -D "F33"
                                complete -T -P "$PREFIX" '\F34' -D "F34"
                                complete -T -P "$PREFIX" '\F35' -D "F35"
                                complete -T -P "$PREFIX" '\F36' -D "F36"
                                complete -T -P "$PREFIX" '\F37' -D "F37"
                                complete -T -P "$PREFIX" '\F38' -D "F38"
                                complete -T -P "$PREFIX" '\F39' -D "F39"
                                complete -T -P "$PREFIX" '\F40' -D "F40"
                                complete -T -P "$PREFIX" '\F41' -D "F41"
                                complete -T -P "$PREFIX" '\F42' -D "F42"
                                complete -T -P "$PREFIX" '\F43' -D "F43"
                                complete -T -P "$PREFIX" '\F44' -D "F44"
                                complete -T -P "$PREFIX" '\F45' -D "F45"
                                complete -T -P "$PREFIX" '\F46' -D "F46"
                                complete -T -P "$PREFIX" '\F47' -D "F47"
                                complete -T -P "$PREFIX" '\F48' -D "F48"
                                complete -T -P "$PREFIX" '\F49' -D "F49"
                                complete -T -P "$PREFIX" '\F50' -D "F50"
                                complete -T -P "$PREFIX" '\F51' -D "F51"
                                complete -T -P "$PREFIX" '\F52' -D "F52"
                                complete -T -P "$PREFIX" '\F53' -D "F53"
                                complete -T -P "$PREFIX" '\F54' -D "F54"
                                complete -T -P "$PREFIX" '\F55' -D "F55"
                                complete -T -P "$PREFIX" '\F56' -D "F56"
                                complete -T -P "$PREFIX" '\F57' -D "F57"
                                complete -T -P "$PREFIX" '\F58' -D "F58"
                                complete -T -P "$PREFIX" '\F59' -D "F59"
                                complete -T -P "$PREFIX" '\F60' -D "F60"
                                complete -T -P "$PREFIX" '\F61' -D "F61"
                                complete -T -P "$PREFIX" '\F62' -D "F62"
                                complete -T -P "$PREFIX" '\F63' -D "F63"
                                complete -T -P "$PREFIX" '\a1' -D "keypad upper-left"
                                complete -T -P "$PREFIX" '\a3' -D "keypad upper-right"
                                complete -T -P "$PREFIX" '\b2' -D "keypad center"
                                complete -T -P "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           