
___X_CMD_ADVISE_AUTOLOAD_FP="$___X_CMD_ROOT_CFG/advise/autoload/status"

___x_cmd_advise_autoload(){
    [ $# -gt 0 ] ||     set -- get

    local op="$1";  shift
    case "$op" in
        -h|--help)      ___x_cmd help -m advise autoload    "$@" ;;
        set|get)        ___x_cmd_advise_autoload_"$op"      "$@" ;;
        *)              N=advise M="Unknown subcmd -> $op"  log:ret:64 ;;
    esac
}

___x_cmd_advise_autoload_get_(){
    if [ -n "$___X_CMD_ADVISE_AUTOLOAD_MODE" ]; then
        x_="$___X_CMD_ADVISE_AUTOLOAD_MODE"
    else
        x_="auto"
        [ -f "$___X_CMD_ADVISE_AUTOLOAD_FP" ] || return 0
        read -r x_ < "$___X_CMD_ADVISE_AUTOLOAD_FP"
        [ -n "$x_" ] || return $?
        ___X_CMD_ADVISE_AUTOLOAD_MODE="$x_"
    fi
}

___x_cmd_advise_autoload_get(){
    local op="$1"
    case "$op" in
        -h|--help)          ___x_cmd help -m advise autoload get; return ;;
    esac

    local x_
    ___x_cmd_advise_autoload_get_ || return $?
    printf "%s\n" "$x_"
}

___x_cmd_advise_autoload_set(){
    local op="$1"
    case "$op" in
        auto|all|x|never)   ;;
        -h|--help|"")       ___x_cmd help -m advise autoload set; return;;
        *)                  N=advise M="Unknown subcmd -> '$op', expect [auto|all|x|never]" log:ret:64 ;;
    esac
    advise:info "Set autoload -> $op"
    advise:info "To check out it in action, you can reopen a new shell"
    ___x_cmd ensurefp "$___X_CMD_ADVISE_AUTOLOAD_FP"
    printf "%s\n" "$op" > "$___X_CMD_ADVISE_AUTOLOAD_FP"
    ___X_CMD_ADVISE_AUTOLOAD_MODE="$op"
    ___x_cmd_advise___main __rm_bootcode
}

___x_cmd_advise_autoload___eq_never(){
    local x_=; ___x_cmd_advise_autoload_get_ || return 0
    case "$x_" in
        auto|all|x) return 1 ;;
        *)          return 0 ;;
    esac
}

___x_cmd_advise_autoload___ifothercompletionloaded(){
    if [ -z "$ZSH_VERSION" ] && [ -n "$fpath" ] && [ "$fpath" != "${fpath#*"zsh-completions"}" ] ; then
        advise:debug "Loaded zsh-completions"
    elif [ -n "$BASH_VERSION" ] && [ -n "$BASH_COMPLETION_VERSINFO" ]; then
        advise:debug "Loaded bash-completions"
    elif ___x_cmd_hascmd _carapace_lazy; then
        advise:debug "Loaded carapace"
    else
        return 1
    fi

    return 0
}
