source: trunk/third/nvi/vi/v_screen.c @ 14302

Revision 14302, 1.5 KB checked in by ghudson, 25 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14301, which included commits to RCS files with non-trunk default branches.
Line 
1/*-
2 * Copyright (c) 1993, 1994
3 *      The Regents of the University of California.  All rights reserved.
4 * Copyright (c) 1992, 1993, 1994, 1995, 1996
5 *      Keith Bostic.  All rights reserved.
6 *
7 * See the LICENSE file for redistribution information.
8 */
9
10#include "config.h"
11
12#ifndef lint
13static const char sccsid[] = "@(#)v_screen.c    10.10 (Berkeley) 4/27/96";
14#endif /* not lint */
15
16#include <sys/types.h>
17#include <sys/queue.h>
18#include <sys/time.h>
19
20#include <bitstring.h>
21#include <limits.h>
22#include <stdio.h>
23
24#include "../common/common.h"
25#include "vi.h"
26
27/*
28 * v_screen -- ^W
29 *      Switch screens.
30 *
31 * PUBLIC: int v_screen __P((SCR *, VICMD *));
32 */
33int
34v_screen(sp, vp)
35        SCR *sp;
36        VICMD *vp;
37{
38        /*
39         * You can't leave a colon command-line edit window -- it's not that
40         * it won't work, but it gets real weird, real fast when you execute
41         * a colon command out of a window that was forked from a window that's
42         * now backgrounded...  You get the idea.
43         */
44        if (F_ISSET(sp, SC_COMEDIT)) {
45                msgq(sp, M_ERR,
46                    "308|Enter <CR> to execute a command, :q to exit");
47                return (1);
48        }
49               
50        /*
51         * Try for the next lower screen, or, go back to the first
52         * screen on the stack.
53         */
54        if (sp->q.cqe_next != (void *)&sp->gp->dq)
55                sp->nextdisp = sp->q.cqe_next;
56        else if (sp->gp->dq.cqh_first == sp) {
57                msgq(sp, M_ERR, "187|No other screen to switch to");
58                return (1);
59        } else
60                sp->nextdisp = sp->gp->dq.cqh_first;
61
62        F_SET(sp->nextdisp, SC_STATUS);
63        F_SET(sp, SC_SSWITCH | SC_STATUS);
64        return (0);
65}
Note: See TracBrowser for help on using the repository browser.