# shellcheck shell=bash disable=2034

___x_cmd_advise_complete_tcsh(){
    local op="$1"
    case "$op" in
        code|normal)
                shift; ___x_cmd_advise_complete_tcsh___"$op" "$@" ;;
        x-cmd)  shift; ___x_cmd_advise_complete_tcsh___x_cmd "$@" ;;
        *)      N=advise M="advise complete tcsh not support this [option=$op]" log:ret:64 ;;
    esac
}


___x_cmd_advise_complete_tcsh___normal(){
    local cur="${*: -1}"
    local COMP_WORDS=("$@");    local COMP_LINE="$*"
    local COMP_CWORD="$#";      COMP_CWORD=$((COMP_CWORD-1))

    local x_;   ___x_cmd_advise___main __run_filepath_ "$1" || return $?
    shift;
    ___x_cmd_advise_complete___gen_wordlist \
        "$___X_CMD_ROOT_MOD/advise/lib/awk/advise/advise.compgen_wordlist.tcsh.awk" \
        "$x_" "$@"
}

___x_cmd_advise_complete_tcsh___x_cmd(){
    local cur="${*: -1}"
    local COMP_WORDS=("$@");    local COMP_LINE="$*"
    local COMP_CWORD="$#";      COMP_CWORD=$((COMP_CWORD-1))

    local x_;   ___x_cmd_advise___main __run_filepath_ x-cmd "$1" || return $?
    shift;
    ___x_cmd_advise_complete___gen_wordlist \
        "$___X_CMD_ROOT_MOD/advise/lib/awk/advise/advise.compgen_wordlist.tcsh.awk" \
        "$x_" "$@"
}

# eval `x advise complete tcsh code`
___x_cmd_advise_complete_tcsh___code(){
    local x_=; ___x_cmd_advise_autoload_get_ || return 0
    local autoload_op="$x_"
    if [ "$autoload_op" != never ]; then
        {
            printf "%s\n" "x"
        } | ___x_cmd_advise_complete_tcsh___code_inner normal

        [ "$autoload_op" = "x" ] || ___x_cmd_advise_man_ls x-cmd | ___x_cmd_advise_complete_tcsh___code_inner x-cmd
    fi
}

___x_cmd_advise_complete_tcsh___code_inner(){
    local func="$1"
    local l=
    while read -r l; do
        printf "%s\n" "complete \"$l\" 'p@*@\`echo \"\$COMMAND_LINE'\"''\"'\" | xargs bash \"\$HOME/.x-cmd.root/bin/___x_cmdexe\" advise complete tcsh $func \`@@' ; "
    done
}
