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; }
Completion *make_buffer_completion(void) { Buffer *bp; Completion *cp; cp = completion_new(FALSE); for (bp = head_bp; bp != NULL; bp = bp->next) list_append(cp->completions, zstrdup(bp->name)); return cp; }