Lines Matching refs:sp
33 static void vs_insert(SCR *sp, GS *gp);
44 SCR *sp, in vs_split() argument
53 gp = sp->gp; in vs_split()
57 if (sp->rows < 4) { in vs_split()
58 msgq(sp, M_ERR, in vs_split()
64 vs_resolve(sp, NULL, 1); in vs_split()
67 CALLOC(sp, _HMAP(new), SMAP *, SIZE_HMAP(sp), sizeof(SMAP)); in vs_split()
70 _HMAP(new)->lno = sp->lno; in vs_split()
75 half = sp->rows / 2; in vs_split()
83 issmallscreen = IS_SMALL(sp); in vs_split()
86 new->coff = sp->coff; in vs_split()
87 new->cols = sp->cols; in vs_split()
100 !ccl && (vs_sm_cursor(sp, &smp) ? 0 : (smp - HMAP) + 1) >= half; in vs_split()
102 new->rows = sp->rows - half; /* New. */ in vs_split()
103 new->roff = sp->roff; in vs_split()
104 sp->rows = half; /* Old. */ in vs_split()
105 sp->roff += new->rows; in vs_split()
111 memcpy(_HMAP(sp), _HMAP(sp) + new->rows, in vs_split()
112 (sp->t_maxrows - new->rows) * sizeof(SMAP)); in vs_split()
115 sp->rows -= half; /* Old. */ in vs_split()
116 new->roff = sp->roff + sp->rows; in vs_split()
120 sp->t_maxrows = IS_ONELINE(sp) ? 1 : sp->rows - 1; in vs_split()
133 sp->t_rows -= new->rows; in vs_split()
136 if (sp->t_rows > sp->t_maxrows) in vs_split()
137 sp->t_rows = sp->t_maxrows; in vs_split()
138 if (sp->t_minrows > sp->t_maxrows) in vs_split()
139 sp->t_minrows = sp->t_maxrows; in vs_split()
142 new->t_minrows = new->t_rows = O_VAL(sp, O_WINDOW); in vs_split()
148 sp->t_minrows = sp->t_rows = IS_ONELINE(sp) ? 1 : sp->rows - 1; in vs_split()
156 new->t_minrows = new->t_rows = O_VAL(sp, O_WINDOW); in vs_split()
163 _TMAP(sp) = IS_ONELINE(sp) ? in vs_split()
164 _HMAP(sp) : _HMAP(sp) + (sp->t_rows - 1); in vs_split()
169 if ((sp->defscroll = sp->t_maxrows / 2) == 0) in vs_split()
170 sp->defscroll = 1; in vs_split()
175 vs_insert(new, sp->gp); in vs_split()
178 (void)gp->scr_split(sp, new); in vs_split()
197 F_ISSET(sp, SC_EX | SC_VI | SC_SCR_VI | SC_SCR_EX | SC_READONLY)); in vs_split()
208 vs_vsplit(SCR *sp, SCR *new) in vs_vsplit() argument
213 gp = sp->gp; in vs_vsplit()
216 if (sp->cols / 2 <= MINIMUM_SCREEN_COLS) { in vs_vsplit()
217 msgq(sp, M_ERR, in vs_vsplit()
224 vs_resolve(sp, NULL, 1); in vs_vsplit()
227 CALLOC(sp, _HMAP(new), SMAP *, SIZE_HMAP(sp), sizeof(SMAP)); in vs_vsplit()
230 _HMAP(new)->lno = sp->lno; in vs_vsplit()
247 cols = sp->cols / 2; in vs_vsplit()
248 new->cols = sp->cols - cols - 1; in vs_vsplit()
249 sp->cols = cols; in vs_vsplit()
250 new->coff = sp->coff + cols + 1; in vs_vsplit()
251 sp->cno = 0; in vs_vsplit()
254 new->rows = sp->rows; in vs_vsplit()
255 new->t_rows = sp->t_rows; in vs_vsplit()
256 new->t_maxrows = sp->t_maxrows; in vs_vsplit()
257 new->t_minrows = sp->t_minrows; in vs_vsplit()
258 new->roff = sp->roff; in vs_vsplit()
259 new->defscroll = sp->defscroll; in vs_vsplit()
263 vs_insert(new, sp->gp); in vs_vsplit()
266 (void)gp->scr_split(sp, new); in vs_vsplit()
269 F_SET(sp, SC_SCR_REFORMAT | SC_STATUS); in vs_vsplit()
288 F_ISSET(sp, SC_EX | SC_VI | SC_SCR_VI | SC_SCR_EX | SC_READONLY)); in vs_vsplit()
298 vs_insert(SCR *sp, GS *gp) in vs_insert() argument
302 gp = sp->gp; in vs_insert()
306 if (tsp->roff >= sp->roff) in vs_insert()
313 if (tsp->roff != sp->roff || tsp->coff > sp->coff) in vs_insert()
321 TAILQ_INSERT_TAIL(gp->dq, sp, q); in vs_insert()
322 } else if (tsp->roff < sp->roff || in vs_insert()
323 (tsp->roff == sp->roff && tsp->coff < sp->coff)) { in vs_insert()
324 TAILQ_INSERT_AFTER(gp->dq, tsp, sp, q); in vs_insert()
326 TAILQ_INSERT_BEFORE(tsp, sp, q); in vs_insert()
337 vs_discard(SCR *sp, SCR **spp) in vs_discard() argument
343 gp = sp->gp; in vs_discard()
352 if (sp->frp != NULL) { in vs_discard()
353 sp->frp->lno = sp->lno; in vs_discard()
354 sp->frp->cno = sp->cno; in vs_discard()
355 F_SET(sp->frp, FR_CURSORSET); in vs_discard()
359 if (!IS_SPLIT(sp)) { in vs_discard()
360 (void)gp->scr_discard(sp, NULL); in vs_discard()
376 if (vs_join(sp, list, &jdir)) in vs_discard()
400 tsp->rows += sp->rows; in vs_discard()
412 tsp->roff = sp->roff; in vs_discard()
428 tsp->coff = sp->coff; in vs_discard()
429 tsp->cols += sp->cols + 1; /* XXX: DIVIDER */ in vs_discard()
444 (void)gp->scr_discard(sp, list); in vs_discard()
454 vs_join(SCR *sp, SCR **listp, jdir_t *jdirp) in vs_join() argument
461 gp = sp->gp; in vs_join()
464 for (lp = listp, tlen = sp->rows, in vs_join()
467 if (sp == tsp) in vs_join()
470 if (tsp->coff + tsp->cols + 1 != sp->coff) in vs_join()
476 if (tsp->roff > sp->roff + sp->rows) in vs_join()
478 if (tsp->roff < sp->roff) { in vs_join()
479 if (tsp->roff + tsp->rows >= sp->roff) in vs_join()
483 if (tsp->roff + tsp->rows > sp->roff + sp->rows) in vs_join()
499 for (lp = listp, tlen = sp->rows, in vs_join()
502 if (sp == tsp) in vs_join()
505 if (tsp->coff != sp->coff + sp->cols + 1) in vs_join()
511 if (tsp->roff > sp->roff + sp->rows) in vs_join()
513 if (tsp->roff < sp->roff) { in vs_join()
514 if (tsp->roff + tsp->rows >= sp->roff) in vs_join()
518 if (tsp->roff + tsp->rows > sp->roff + sp->rows) in vs_join()
534 for (first = 0, lp = listp, tlen = sp->cols, in vs_join()
537 if (sp == tsp) in vs_join()
540 if (tsp->roff + tsp->rows != sp->roff) in vs_join()
546 if (tsp->coff > sp->coff + sp->cols) in vs_join()
548 if (tsp->coff < sp->coff) { in vs_join()
549 if (tsp->coff + tsp->cols >= sp->coff) in vs_join()
553 if (tsp->coff + tsp->cols > sp->coff + sp->cols) in vs_join()
570 for (first = 0, lp = listp, tlen = sp->cols, in vs_join()
573 if (sp == tsp) in vs_join()
576 if (tsp->roff != sp->roff + sp->rows) in vs_join()
582 if (tsp->coff > sp->coff + sp->cols) in vs_join()
584 if (tsp->coff < sp->coff) { in vs_join()
585 if (tsp->coff + tsp->cols >= sp->coff) in vs_join()
589 if (tsp->coff + tsp->cols > sp->coff + sp->cols) in vs_join()
614 vs_fg(SCR *sp, SCR **nspp, CHAR_T *name, int newscreen) in vs_fg() argument
621 gp = sp->gp; in vs_fg()
624 INT2CHAR(sp, name, STRLEN(name) + 1, np, nlen); in vs_fg()
629 nsp = vs_getbg(sp, np); in vs_fg()
632 if (vs_swap(sp, &nsp, np)) in vs_fg()
636 msgq_wstr(sp, M_ERR, name, in vs_fg()
648 if (vs_split(sp, nsp, 0)) { in vs_fg()
654 TAILQ_REMOVE(gp->dq, sp, q); in vs_fg()
655 TAILQ_INSERT_TAIL(gp->hq, sp, q); in vs_fg()
667 vs_bg(SCR *sp) in vs_bg() argument
672 gp = sp->gp; in vs_bg()
675 if (vs_discard(sp, &nsp)) in vs_bg()
678 msgq(sp, M_ERR, in vs_bg()
684 TAILQ_REMOVE(gp->dq, sp, q); in vs_bg()
685 TAILQ_INSERT_TAIL(gp->hq, sp, q); in vs_bg()
688 free(_HMAP(sp)); in vs_bg()
689 _HMAP(sp) = NULL; in vs_bg()
692 sp->nextdisp = nsp; in vs_bg()
693 F_SET(sp, SC_SSWITCH); in vs_bg()
705 vs_swap(SCR *sp, SCR **nspp, char *name) in vs_swap() argument
710 gp = sp->gp; in vs_swap()
713 if ((*nspp = nsp = vs_getbg(sp, name)) == NULL) in vs_swap()
723 if (sp->frp != NULL) { in vs_swap()
724 sp->frp->lno = sp->lno; in vs_swap()
725 sp->frp->cno = sp->cno; in vs_swap()
726 F_SET(sp->frp, FR_CURSORSET); in vs_swap()
730 sp->nextdisp = nsp; in vs_swap()
731 F_SET(sp, SC_SSWITCH); in vs_swap()
734 VIP(nsp)->srows = VIP(sp)->srows; in vs_swap()
737 nsp->cols = sp->cols; in vs_swap()
738 nsp->rows = sp->rows; /* XXX: Only place in vi that sets rows. */ in vs_swap()
739 nsp->roff = sp->roff; in vs_swap()
750 if (nsp->t_rows > sp->t_maxrows) in vs_swap()
752 if (nsp->t_minrows > sp->t_maxrows) in vs_swap()
765 nsp->gp = sp->gp; in vs_swap()
776 TAILQ_INSERT_AFTER(gp->dq, sp, nsp, q); in vs_swap()
788 (void)gp->scr_discard(sp, list); in vs_swap()
800 vs_resize(SCR *sp, long int count, adj_t adj) in vs_resize() argument
806 gp = sp->gp; in vs_resize()
815 if (sp->t_maxrows == count) in vs_resize()
817 if (sp->t_maxrows > count) { in vs_resize()
819 count = sp->t_maxrows - count; in vs_resize()
822 count = count - sp->t_maxrows; in vs_resize()
827 for (next = TAILQ_NEXT(sp, q); next != NULL && in vs_resize()
828 (next->coff >= sp->coff + sp->cols || in vs_resize()
829 next->coff + next->cols <= sp->coff); in vs_resize()
833 (sp->coff != next->coff || sp->cols != next->cols)) in vs_resize()
835 for (prev = TAILQ_PREV(sp, _dqh, q); prev != NULL && in vs_resize()
836 (prev->coff >= sp->coff + sp->cols || in vs_resize()
837 prev->coff + prev->cols <= sp->coff); in vs_resize()
840 (sp->coff != prev->coff || sp->cols != prev->cols)) in vs_resize()
847 s = sp; in vs_resize()
857 g = sp; in vs_resize()
865 toobig: msgq(sp, M_BERR, adj == A_DECREASE ? in vs_resize()
871 toosmall: msgq(sp, M_BERR, in vs_resize()
917 vs_getbg(SCR *sp, char *name) in vs_getbg() argument
923 gp = sp->gp; in vs_getbg()