# shellcheck shell=bash disable=2016,2034

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


___x_cmd_advise_complete_fish___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.fish.awk" \
        "$x_" "$@"
}

___x_cmd_advise_complete_fish___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.fish.awk" \
        "$x_" "$@"
}


___x_cmd_advise_complete_fish___code(){
    printf "%s\n" '
function ___x_cmd_advise_run_fish___quote_suffix
   if not commandline -cp | xargs echo 2>/dev/null >/dev/null
      if commandline -cp | sed '\''s/$/"/'\''| xargs echo 2>/dev/null >/dev/null
         echo '\''"'\''
      else if commandline -cp | sed "s/\$/'\''/"| xargs echo 2>/dev/null >/dev/null
         echo "'\''"
      end
   else
      echo ""
   end
end

function ___x_cmd_advise_run_fish___inner
   set -x ___X_CMD_THEME_RELOAD_DISABLE    "$___X_CMD_THEME_RELOAD_DISABLE"
   commandline -cp | sed "s/\$/"(___x_cmd_advise_run_fish___quote_suffix)"/" | sed "s/ \$/ '\'\''/" | xargs bash "$HOME/.x-cmd.root/bin/___x_cmdexe" advise complete fish $argv[1]
end

function ___x_cmd_advise_run_fish
   complete -c $argv[2] -e
   complete -c $argv[2] -f
   complete -c $argv[2] -f -a '\''(___x_cmd_advise_run_fish___inner '\''$argv[1]'\'')'\'' -r

   complete --do-complete=(commandline -cp)
end
'
    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_fish___code_inner normal

        [ "$autoload_op" = "x" ] || { ___x_cmd_advise_man_ls x-cmd | ___x_cmd_advise_complete_fish___code_inner x-cmd; }
    fi
}

___x_cmd_advise_complete_fish___code_inner(){
    local func="$1"
    local l=
    while read -r l; do
        printf "%s\n" "complete -c '$l' -f -a '(___x_cmd_advise_run_fish $func $l)' ; "
    done
}
