
___x_cmd_man___search(){(
    # TODO: search function
    exec 3>&1
    local err
    if ! err="$(___x_cmd_man_run "$@" 2>&1 1>&3)"; then
        # man:info "err[$err]"
        if [ "${err#No manual entry}" != "$err" ]; then
            while [ "$#" -gt 0 ]; do
                case "$1" in
                    -*|1|2|3|4|5|6|7|8)     shift   ;;
                    *)                      break   ;;
                esac
            done
            # TODO: combine the result of man -k and tldr cat
            ___x_cmd_man_ls "$1" || ___x_cmd tldr "$1"
        fi
    fi
    exec 3<&-
)}
