1 /* $MirOS: contrib/code/jupp/poshist.c,v 1.2 2008/05/13 13:08:24 tg Exp $ */
5 * (C) 1992 Joseph H. Allen
7 * This file is part of JOE (Joe's Own Editor)
20 typedef struct pos POS;
28 POS pos = { {&pos, &pos} };
29 POS frpos = { {&frpos, &frpos} };
33 static void markpos(W *w, P *p)
35 POS *new = alitem(&frpos, sizeof(POS));
41 enqueb(POS, link, &pos, new);
45 demote(POS, link, &frpos, new);
54 demote(POS, link, &pos, curpos);
59 void aftermove(W *w, P *p)
61 if (pos.link.prev != &pos && pos.link.prev->w == w && pos.link.prev->p && labs(pos.link.prev->p->line - p->line) < 3) {
62 poffline(pset(pos.link.prev->p, p));
72 for (n = pos.link.prev; n != &pos; n = n->link.prev) {
84 if (curpos->link.next != &pos && curpos != &pos) {
85 curpos = curpos->link.next;
86 if (!curpos->p || !curpos->w) {
89 if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
92 if (w->t->curwin != curpos->w) {
93 w->t->curwin = curpos->w;
94 if (w->t->curwin->y == -1) {
99 bw = (BW *) w->object;
100 if (bw->cursor->byte != curpos->p->byte) {
101 pset(bw->cursor, curpos->p);
114 if (curpos->link.prev != &pos) {
115 curpos = curpos->link.prev;
116 if (!curpos->p || !curpos->w) {
119 if (w->t->curwin == curpos->w && curpos->p->byte == ((BW *) w->t->curwin->object)->cursor->byte) {
122 if (w->t->curwin != curpos->w) {
123 w->t->curwin = curpos->w;
124 if (w->t->curwin->y == -1) {
129 bw = (BW *) w->object;
130 if (bw->cursor->byte != curpos->p->byte) {
131 pset(bw->cursor, curpos->p);