static void recursive_help(RCore *core, const char *cmd) {
	char *nl, *line;
	if (strchr (cmd, '[')) {
		// eprintf ("Skip ((%s))\n", cmd);
		return;
	}
	char *msg = r_core_cmd_str (core, cmd);
	if (!msg) {
		return;
	}
	line = msg;
	r_cons_print (msg);
	(void) r_str_ansi_filter (msg, NULL, NULL, strlen (msg));
	do {
		nl = strchr (line, '\n');
		if (nl) {
			*nl = 0;
		}
		if (r_cons_is_breaked ()) {
			break;
		}
		char *help_token = strstr (line, "[?]");
		if (help_token) {
			help_token[0] = '?';
			help_token[1] = 0;
			const char *sp = strchr (line, ' ');
			if (sp) {
				recursive_help (core, sp + 1);
			}
		}
		line = nl + 1;
	} while (nl);
	free (msg);
}
static void recursive_help(RCore *core, const char *cmd) {
	char *nl, *line;
	if (strchr (cmd, '[')) {
		 
		return;
	}
	char *msg = r_core_cmd_str (core, cmd);
	if (!msg) {
		return;
	}
	line = msg;
	r_cons_print (msg);
	(void) r_str_ansi_filter (msg, NULL, NULL, strlen (msg));
	do {
		nl = strchr (line, '\n');
		if (nl) {
			*nl = 0;
		}
		if (r_cons_is_breaked ()) {
			break;
		}
		char *help_token = strstr (line, "[?]");
		if (help_token) {
			help_token[0] = '?';
			help_token[1] = 0;
			const char *sp = strchr (line, ' ');
			if (sp) {
				recursive_help (core, sp + 1);
			}
		}
		line = nl + 1;
	} while (nl);
	free (msg);
}