4 * (C) 1992 Joseph H. Allen
6 * This file is part of JOE (Joe's Own Editor)
11 __RCSID("$MirOS: contrib/code/jupp/poshist.c,v 1.3 2017/12/02 02:07:29 tg Exp $");
21 typedef struct pos POS;
29 POS pos = { {&pos, &pos} };
30 POS frpos = { {&frpos, &frpos} };
34 static void markpos(W *w, P *p)
36 POS *new = alitem(&frpos, sizeof(POS));
42 enqueb(POS, link, &pos, new);
46 demote(POS, link, &frpos, new);
55 demote(POS, link, &pos, curpos);
60 void aftermove(W *w, P *p)
62 if (pos.link.prev != &pos && pos.link.prev->w == w && pos.link.prev->p && labs(pos.link.prev->p->line - p->line) < 3) {
63 poffline(pset(pos.link.prev->p, p));
73 for (n = pos.link.prev; n != &pos; n = n->link.prev) {
85 if (curpos->link.next != &pos && curpos != &pos) {
86 curpos = curpos->link.next;
87 if (!curpos->p || !curpos->w) {
90 if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
93 if (w->t->curwin != curpos->w) {
94 w->t->curwin = curpos->w;
95 if (w->t->curwin->y == -1) {
100 bw = (BW *) w->object;
101 if (bw->cursor->byte != curpos->p->byte) {
102 pset(bw->cursor, curpos->p);
115 if (curpos->link.prev != &pos) {
116 curpos = curpos->link.prev;
117 if (!curpos->p || !curpos->w) {
120 if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
123 if (w->t->curwin != curpos->w) {
124 w->t->curwin = curpos->w;
125 if (w->t->curwin->y == -1) {
130 bw = (BW *) w->object;
131 if (bw->cursor->byte != curpos->p->byte) {
132 pset(bw->cursor, curpos->p);