# shellcheck shell=dash
___x_cmd_theme_feature_reload(){
    theme:debug "feature reload"
    ___x_cmd_theme_envy_load
    ___x_cmd_theme_exectime_off
    ___x_cmd_theme_transient_load
    ___x_cmd_theme_zshplugin_load
}

___x_cmd_theme_feature_off(){
    theme:debug "feature off"
    ___x_cmd_theme_exectime_off
    ___x_cmd_theme_transient_off
    XT_theme_feature_default_emoji=''
    XT_theme_feature_default_symbol=''
}

___x_cmd_theme_feature_cat(){
    ___x_cmd_theme_envy cat
}

___x_cmd_theme_feature_get(){
    local x_=; ___x_cmd_theme_feature_get_ "$@" || return
    printf "%s\n" "$x_"
}

___x_cmd_theme_feature_get_(){
    x_=""

    local vendor=theme
    while [ $# -gt 0 ]; do
        case "$1" in
            --vendor)
                vendor="$2";
                ___x_cmd_theme_boot___check_vendor "$vendor" || return $?
                shift 2 ;;
            *)  break ;;
        esac
    done

    local feature="$1"
    ___x_cmd_theme_feature___is "$feature" || return
    local name="XT_${vendor}_feature_${___X_CMD_THEME_TERM_VENDOR}_${feature}"
    [ "$___X_CMD_THEME_TERM_VENDOR" = default ] || eval "[ -n \"\${${name}+1}\" ]" || name="XT_${vendor}_feature_default_${feature}"
    eval x_="\"\$$name\""
}

___x_cmd_theme_feature___is(){
    local feature="$1"
    case "$feature" in
        htag|exectime|time|\
        mini_enable|mini_cwd|mini_newline|\
        transient_enable|transient_cwd|transient_time|transient_exectime|\
        symbol|emoji|zshplugin)
            ;;
        *) return 1 ;;
    esac
}
