char *minibuf_read_variable_name(char *msg) { char *ms; Completion *cp = completion_new(FALSE); le *lp; for (lp = mainVarList; lp != NULL; lp = lp->list_next) list_append(cp->completions, zstrdup(lp->data)); for (;;) { ms = minibuf_read_completion(msg, "", cp, NULL); if (ms == NULL) { free_completion(cp); cancel(); return NULL; } if (ms[0] == '\0') { free_completion(cp); minibuf_error("No variable name given"); return NULL; } else if (get_variable(ms) == NULL) { minibuf_error("Undefined variable name `%s'", ms); waitkey(WAITKEY_DEFAULT); } else { minibuf_clear(); break; } } free_completion(cp); return ms; }
char *minibuf_read_variable_name(char *msg) { char *ms; historyp hp; hp = make_variable_history(); for (;;) { ms = minibuf_read_history(msg, "", hp); if (ms == NULL) { free_history(hp); cancel(); return NULL; } if (ms[0] == '\0') { free_history(hp); minibuf_error("No variable name given"); return NULL; } else if (get_variable(ms) == NULL) { minibuf_error("Undefined variable name"); waitkey(2 * 1000); } else { minibuf_clear(); break; } } free_history(hp); return ms; }