undo
es = undo;
undo = t;
undo = &undobuf;
undo->cbufsize = len;
es->linelen = undo->linelen = 0;
es->cursor = undo->cursor = 0;
es->winleft = undo->winleft = 0;
static struct edstate *undo;
if (es->cursor == undo->cursor) {
if (insert == REPLACE && es->cursor < undo->linelen)
memcpy(es->cbuf + tcursor, undo->cbuf + tcursor,
undo->winleft = es->winleft;
memmove(undo->cbuf, es->cbuf, es->linelen);
undo->linelen = es->linelen;
undo->cursor = es->cursor;
struct undo *sunptr;
struct undo *sunptr;
#define SEMUSZ (sizeof(struct sem_undo)+sizeof(struct undo)*SEMUME)
int undo(int, int);
{undo, "undo", 0},
undo /* u */
undo /* ^_ */