
___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<&-
    )
}
