head	1.4;
access;
symbols
	perseant-exfatfs-base-20250801:1.4
	perseant-exfatfs-base-20240630:1.4
	perseant-exfatfs:1.4.0.46
	perseant-exfatfs-base:1.4
	cjep_sun2x:1.4.0.44
	cjep_sun2x-base:1.4
	cjep_staticlib_x-base1:1.4
	cjep_staticlib_x:1.4.0.42
	cjep_staticlib_x-base:1.4
	phil-wifi-20200421:1.4
	phil-wifi-20200411:1.4
	phil-wifi-20200406:1.4
	pgoyette-compat-merge-20190127:1.4
	pgoyette-compat-20190127:1.4
	pgoyette-compat-20190118:1.4
	pgoyette-compat-1226:1.4
	pgoyette-compat-1126:1.4
	pgoyette-compat-1020:1.4
	pgoyette-compat-0930:1.4
	pgoyette-compat-0906:1.4
	pgoyette-compat-0728:1.4
	pgoyette-compat-0625:1.4
	pgoyette-compat-0521:1.4
	pgoyette-compat-0502:1.4
	pgoyette-compat-0422:1.4
	pgoyette-compat-0415:1.4
	pgoyette-compat-0407:1.4
	pgoyette-compat-0330:1.4
	pgoyette-compat-0322:1.4
	pgoyette-compat-0315:1.4
	pgoyette-compat:1.4.0.40
	pgoyette-compat-base:1.4
	perseant-stdc-iso10646:1.4.0.38
	perseant-stdc-iso10646-base:1.4
	prg-localcount2-base3:1.4
	prg-localcount2-base2:1.4
	prg-localcount2-base1:1.4
	prg-localcount2:1.4.0.36
	prg-localcount2-base:1.4
	pgoyette-localcount-20170426:1.4
	bouyer-socketcan-base1:1.4
	pgoyette-localcount-20170320:1.4
	bouyer-socketcan:1.4.0.34
	bouyer-socketcan-base:1.4
	pgoyette-localcount-20170107:1.4
	pgoyette-localcount-20161104:1.4
	localcount-20160914:1.4
	pgoyette-localcount-20160806:1.4
	pgoyette-localcount-20160726:1.4
	pgoyette-localcount:1.4.0.32
	pgoyette-localcount-base:1.4
	netbsd-5-2-3-RELEASE:1.4
	netbsd-5-1-5-RELEASE:1.4
	yamt-pagecache-base9:1.4
	yamt-pagecache-tag8:1.4
	tls-earlyentropy:1.4.0.28
	tls-earlyentropy-base:1.4
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.4
	riastradh-drm2-base3:1.4
	netbsd-5-2-2-RELEASE:1.4
	netbsd-5-1-4-RELEASE:1.4
	netbsd-5-2-1-RELEASE:1.4
	netbsd-5-1-3-RELEASE:1.4
	agc-symver:1.4.0.30
	agc-symver-base:1.4
	tls-maxphys-base:1.4
	yamt-pagecache-base8:1.4
	netbsd-5-2:1.4.0.26
	yamt-pagecache-base7:1.4
	netbsd-5-2-RELEASE:1.4
	netbsd-5-2-RC1:1.4
	yamt-pagecache-base6:1.4
	yamt-pagecache-base5:1.4
	yamt-pagecache-base4:1.4
	netbsd-5-1-2-RELEASE:1.4
	netbsd-5-1-1-RELEASE:1.4
	yamt-pagecache-base3:1.4
	yamt-pagecache-base2:1.4
	yamt-pagecache:1.4.0.24
	yamt-pagecache-base:1.4
	bouyer-quota2-nbase:1.4
	bouyer-quota2:1.4.0.22
	bouyer-quota2-base:1.4
	matt-nb5-pq3:1.4.0.20
	matt-nb5-pq3-base:1.4
	netbsd-5-1:1.4.0.18
	netbsd-5-1-RELEASE:1.4
	netbsd-5-1-RC4:1.4
	netbsd-5-1-RC3:1.4
	netbsd-5-1-RC2:1.4
	netbsd-5-1-RC1:1.4
	netbsd-5-0-2-RELEASE:1.4
	netbsd-5-0-1-RELEASE:1.4
	jym-xensuspend-nbase:1.4
	netbsd-5-0:1.4.0.16
	netbsd-5-0-RELEASE:1.4
	netbsd-5-0-RC4:1.4
	netbsd-5-0-RC3:1.4
	netbsd-5-0-RC2:1.4
	jym-xensuspend:1.4.0.14
	jym-xensuspend-base:1.4
	netbsd-5-0-RC1:1.4
	netbsd-5:1.4.0.12
	netbsd-5-base:1.4
	mjf-devfs2:1.4.0.10
	mjf-devfs2-base:1.4
	yamt-pf42-base4:1.4
	yamt-pf42-base3:1.4
	hpcarm-cleanup-nbase:1.4
	yamt-pf42-base2:1.4
	yamt-pf42:1.4.0.8
	yamt-pf42-base:1.4
	keiichi-mipv6-nbase:1.4
	keiichi-mipv6:1.4.0.6
	keiichi-mipv6-base:1.4
	cube-autoconf:1.4.0.4
	cube-autoconf-base:1.4
	hpcarm-cleanup:1.4.0.2
	hpcarm-cleanup-base:1.4
	netbsd-1-0-base:1.3
	nvi-1-11b:1.1.1.2
	nvi-1-03:1.1.1.1
	bostic-nvi:1.1.1;
locks; strict;
comment	@ * @;


1.4
date	95.03.01.00.00.00;	author mycroft;	state dead;
branches;
next	1.3;

1.3
date	94.03.28.04.27.52;	author cgd;	state Exp;
branches;
next	1.2;

1.2
date	94.01.24.06.39.11;	author cgd;	state Exp;
branches;
next	1.1;

1.1
date	94.01.24.05.52.59;	author cgd;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	94.01.24.05.53.00;	author cgd;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	94.03.28.02.52.41;	author cgd;	state Exp;
branches;
next	;


desc
@@


1.4
log
@Clean up deleted files.
@
text
@/*-
 * Copyright (c) 1992, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@@(#)screen.h	8.92 (Berkeley) 3/23/94
 */

/*
 * There are minimum values that vi has to have to display a screen.  The
 * row minimum is fixed at 1 line for the text, and 1 line for any error
 * messages.  The column calculation is a lot trickier.  For example, you
 * have to have enough columns to display the line number, not to mention
 * guaranteeing that tabstop and shiftwidth values are smaller than the
 * current column value.  It's a lot simpler to have a fixed value and not
 * worry about it.
 *
 * XXX
 * MINIMUM_SCREEN_COLS is probably wrong.
 */
#define	MINIMUM_SCREEN_ROWS	 2
#define	MINIMUM_SCREEN_COLS	20
					/* Line operations. */
enum operation { LINE_APPEND, LINE_DELETE, LINE_INSERT, LINE_RESET };
					/* Position values. */
enum position { P_BOTTOM, P_FILL, P_MIDDLE, P_TOP };
					/* Screen adjustment operations. */
enum adjust { A_DECREASE, A_INCREASE, A_SET };

/*
 * Structure for holding file references.  Each SCR structure contains a
 * linked list of these (the user's argument list) as well as pointers to
 * the current and previous files.  The structure contains the name of the
 * file, along with the information that follows the name.  A file has up
 * to three "names".  The tname field is the path of the temporary backing
 * file, if any.  The name field is the name the user originally used to
 * specify the file to be edited.  The cname field is the changed name if
 * the user changed the name.
 *
 * Note that the read-only bit follows the file name, not the file itself.
 *
 * XXX
 * The mtime field should be a struct timespec, but time_t is more portable.
 */
struct _fref {
	CIRCLEQ_ENTRY(_fref) q;		/* Linked list of file references. */
	char	*cname;			/* Changed file name. */
	char	*name;			/* File name. */
	char	*tname;			/* Temporary file name. */

	recno_t	 lno;			/* 1-N: file cursor line. */
	size_t	 cno;			/* 0-N: file cursor column. */
	time_t	 mtime;			/* Last modification time. */

#define	FR_CHANGEWRITE	0x001		/* Name changed and then written. */
#define	FR_CURSORSET	0x002		/* If lno/cno valid. */
#define	FR_EDITED	0x004		/* If the file was ever edited. */
#define	FR_IGNORE	0x008		/* File isn't part of argument list. */
#define	FR_NEWFILE	0x010		/* File doesn't really exist yet. */
#define	FR_RDONLY	0x020		/* File is read-only. */
	u_int	 flags;
};

/*
 * There's a file name hierarchy -- if the user has changed the name, we
 * use it, otherwise, we use the original name, if there was one, othewise
 * use the temporary name.
 */
#define	FILENAME(frp)							\
	((frp)->cname != NULL) ? (frp)->cname :				\
	((frp)->name != NULL) ? (frp)->name : (frp)->tname

/*
 * SCR --
 *	The screen structure.  To the extent possible, all screen information
 *	is stored in the various private areas.  The only information here
 *	is used by global routines or is shared by too many screens.
 */
struct _scr {
/* INITIALIZED AT SCREEN CREATE. */
	CIRCLEQ_ENTRY(_scr) q;		/* Screens. */

	GS	*gp;			/* Pointer to global area. */

	SCR	*nextdisp;		/* Next display screen. */

	EXF	*ep;			/* Screen's current EXF structure. */

	MSGH	 msgq;			/* Message list. */
					/* FREF list. */
	CIRCLEQ_HEAD(_frefh, _fref) frefq;
	FREF	*frp;			/* FREF being edited. */
	FREF	*a_frp;			/* Last argument list FREF edited. */
	FREF	*p_frp;			/* Last FREF edited. */

	u_long	 ccnt;			/* Command count. */
	u_long	 q_ccnt;		/* Quit or ZZ command count. */

					/* Screen's: */
	size_t	 rows;			/* 1-N: number of rows. */
	size_t	 cols;			/* 1-N: number of columns. */
	size_t	 woff;			/* 0-N: row offset in screen. */
	size_t	 t_rows;		/* 1-N: cur number of text rows. */
	size_t	 t_maxrows;		/* 1-N: max number of text rows. */
	size_t	 t_minrows;		/* 1-N: min number of text rows. */

					/* Cursor's: */
	recno_t	 lno;			/* 1-N: file line. */
	size_t	 cno;			/* 0-N: file character in line. */

	size_t	 rcm;			/* Vi: 0-N: Column suck. */
#define	RCM_FNB		0x01		/* Column suck: first non-blank. */
#define	RCM_LAST	0x02		/* Column suck: last. */
	u_int	 rcmflags;

#define	L_ADDED		0		/* Added lines. */
#define	L_CHANGED	1		/* Changed lines. */
#define	L_COPIED	2		/* Copied lines. */
#define	L_DELETED	3		/* Deleted lines. */
#define	L_JOINED	4		/* Joined lines. */
#define	L_MOVED		5		/* Moved lines. */
#define	L_PUT		6		/* Put lines. */
#define	L_LSHIFT	7		/* Left shift lines. */
#define	L_RSHIFT	8		/* Right shift lines. */
#define	L_YANKED	9		/* Yanked lines. */
	recno_t	 rptlines[L_YANKED + 1];/* Ex/vi: lines changed by last op. */

	FILE	*stdfp;			/* Ex output file pointer. */

	char	*if_name;		/* Ex input file name, for messages. */
	recno_t	 if_lno;		/* Ex input file line, for messages. */

	fd_set	 rdfd;			/* Ex/vi: read fd select mask. */

	TEXTH	 tiq;			/* Ex/vi: text input queue. */

	SCRIPT	*script;		/* Vi: script mode information .*/

	struct timeval	 busy_tod;	/* ITIMER_REAL: busy time-of-day. */
	char const	*busy_msg;	/* ITIMER_REAL: busy message. */

	struct sigaction intr_act;	/* Interrupt saved signal state. */
	struct termios	 intr_term;	/* Interrupt saved terminal state. */
	int	 intr_level;		/* 0-N: Interrupt level. */

	void	*vi_private;		/* Vi private area. */
	void	*ex_private;		/* Ex private area. */
	void	*svi_private;		/* Vi curses screen private area. */
	void	*xaw_private;		/* Vi XAW screen private area. */

/* PARTIALLY OR COMPLETELY COPIED FROM PREVIOUS SCREEN. */
	char	*alt_name;		/* Ex/vi: alternate file name. */

					/* Ex/vi: search/substitute info. */
	regex_t	 sre;			/* Last search RE. */
	regex_t	 subre;			/* Last substitute RE. */
	enum direction	searchdir;	/* File search direction. */
	regmatch_t     *match;		/* Substitute match array. */
	size_t	 matchsize;		/* Substitute match array size. */
	char	*repl;			/* Substitute replacement. */
	size_t	 repl_len;		/* Substitute replacement length.*/
	size_t	*newl;			/* Newline offset array. */
	size_t	 newl_len;		/* Newline array size. */
	size_t	 newl_cnt;		/* Newlines in replacement. */

	u_int	 saved_vi_mode;		/* Saved vi display type. */

	OPTION	 opts[O_OPTIONCOUNT];	/* Options. */

/*
 * SCREEN SUPPORT ROUTINES.
 *
 * A SCR * MUST be the first argument to these routines.
 */
					/* Ring the screen bell. */
	void	(*s_bell) __P((SCR *));
					/* Background the screen. */
	int	(*s_bg) __P((SCR *));
					/* Put up a busy message. */
	int	(*s_busy) __P((SCR *, char const *));
					/* Change a screen line. */
	int	(*s_change) __P((SCR *, EXF *, recno_t, enum operation));
					/* Clear the screen. */
	int	(*s_clear) __P((SCR *));
					/* Return column close to specified. */
	size_t	(*s_colpos) __P((SCR *, EXF *, recno_t, size_t));
					/* Return the logical cursor column. */
	int	(*s_column) __P((SCR *, EXF *, size_t *));
	enum confirm			/* Confirm an action with the user. */
		(*s_confirm) __P((SCR *, EXF *, MARK *, MARK *));
					/* Change the relative screen size. */
	int	(*s_crel) __P((SCR *, long));
					/* Move down the screen. */
	int	(*s_down) __P((SCR *, EXF *, MARK *, recno_t, int));
					/* Edit a file. */
	int	(*s_edit) __P((SCR *, EXF *));
					/* End a screen. */
	int	(*s_end) __P((SCR *));
					/* Run a single ex command. */
	int	(*s_ex_cmd) __P((SCR *, EXF *, EXCMDARG *, MARK *));
					/* Run user's ex commands. */
	int	(*s_ex_run) __P((SCR *, EXF *, MARK *));
					/* Screen's ex write function. */
	int	(*s_ex_write) __P((void *, const char *, int));
					/* Foreground the screen. */
	int	(*s_fg) __P((SCR *, CHAR_T *));
					/* Fill the screen's map. */
	int	(*s_fill) __P((SCR *, EXF *, recno_t, enum position));
	enum input			/* Get a line from the user. */
		(*s_get) __P((SCR *, EXF *, TEXTH *, int, u_int));
	enum input			/* Get a key from the user. */
		(*s_key_read) __P((SCR *, int *, struct timeval *));
					/* Tell the screen an option changed. */
	int	(*s_optchange) __P((SCR *, int));
					/* Return column at screen position. */
	int	(*s_position) __P((SCR *, EXF *,
		   MARK *, u_long, enum position));
					/* Change the absolute screen size. */
	int	(*s_rabs) __P((SCR *, long, enum adjust));
					/* Return column close to selection. */
	size_t	(*s_rcm) __P((SCR *, EXF *, recno_t));
					/* Refresh the screen. */
	int	(*s_refresh) __P((SCR *, EXF *));
					/* Split the screen. */
	int	(*s_split) __P((SCR *, ARGS *[]));
					/* Suspend the screen. */
	int	(*s_suspend) __P((SCR *));
					/* Move up the screen. */
	int	(*s_up) __P((SCR *, EXF *, MARK *, recno_t, int));

/* Editor screens. */
#define	S_EX		0x0000001	/* Ex screen. */
#define	S_VI_CURSES	0x0000002	/* Vi: curses screen. */
#define	S_VI_XAW	0x0000004	/* Vi: Athena widgets screen. */

#define	IN_EX_MODE(sp)			/* If in ex mode. */		\
	(F_ISSET(sp, S_EX))
#define	IN_VI_MODE(sp)			/* If in vi mode. */		\
	(F_ISSET(sp, S_VI_CURSES | S_VI_XAW))
#define	S_SCREENS			/* Screens. */			\
	(S_EX | S_VI_CURSES | S_VI_XAW)

/* Major screen/file changes. */
#define	S_EXIT		0x0000008	/* Exiting (not forced). */
#define	S_EXIT_FORCE	0x0000010	/* Exiting (forced). */
#define	S_FSWITCH	0x0000020	/* Switch files. */
#define	S_SSWITCH	0x0000040	/* Switch screens. */
#define	S_MAJOR_CHANGE			/* Screen or file changes. */	\
	(S_EXIT | S_EXIT_FORCE | S_FSWITCH | S_SSWITCH)

#define	S_BELLSCHED	0x0000080	/* Bell scheduled. */
#define	S_CONTINUE	0x0000100	/* Need to ask the user to continue. */
#define	S_EXSILENT	0x0000200	/* Ex batch script. */
#define	S_GLOBAL	0x0000400	/* Doing a global command. */
#define	S_INPUT		0x0000800	/* Doing text input. */
#define	S_INTERRUPTED	0x0001000	/* If have been interrupted. */
#define	S_INTERRUPTIBLE	0x0002000	/* If can be interrupted. */
#define	S_REDRAW	0x0004000	/* Redraw the screen. */
#define	S_REFORMAT	0x0008000	/* Reformat the screen. */
#define	S_REFRESH	0x0010000	/* Refresh the screen. */
#define	S_RENUMBER	0x0020000	/* Renumber the screen. */
#define	S_RESIZE	0x0040000	/* Resize the screen. */
#define	S_SCRIPT	0x0080000	/* Window is a shell script. */
#define	S_SRE_SET	0x0100000	/* The search RE has been set. */
#define	S_SUBRE_SET	0x0200000	/* The substitute RE has been set. */
#define	S_UPDATE_MODE	0x0400000	/* Don't repaint modeline. */
#define	S_VLITONLY	0x0800000	/* ^V literal next only. */
	u_int32_t flags;
};

/* Timers have no structure, so routines are here. */
void	 h_alrm __P((int));
int	 busy_on __P((SCR *, char const *));
void	 busy_off __P((SCR *));
int	 rcv_on __P((SCR *, EXF *));

/* Interrupts have no structure, so routines are here. */
void	 intr_end __P((SCR *));
int	 intr_init __P((SCR *));

/* Generic routines to start/stop a screen. */
int	 screen_end __P((SCR *));
int	 screen_init __P((SCR *, SCR **, u_int));

/* Public interfaces to the underlying screens. */
int	 ex_screen_copy __P((SCR *, SCR *));
int	 ex_screen_end __P((SCR *));
int	 ex_screen_init __P((SCR *));
int	 sex_screen_copy __P((SCR *, SCR *));
int	 sex_screen_end __P((SCR *));
int	 sex_screen_init __P((SCR *));
int	 svi_screen_copy __P((SCR *, SCR *));
int	 svi_screen_end __P((SCR *));
int	 svi_screen_init __P((SCR *));
int	 v_screen_copy __P((SCR *, SCR *));
int	 v_screen_end __P((SCR *));
int	 v_screen_init __P((SCR *));
int	 xaw_screen_copy __P((SCR *, SCR *));
int	 xaw_screen_end __P((SCR *));
int	 xaw_screen_init __P((SCR *));
@


1.3
log
@nvi 1.11(beta) from bostic.  reconcile conflicts/kill rcsids.
@
text
@@


1.2
log
@more Ids than you'll ever want.
@
text
@d2 1
a2 1
 * Copyright (c) 1992, 1993
d33 1
a33 2
 *	from: @@(#)screen.h	8.81 (Berkeley) 12/29/93
 *	$Id$
d54 2
d166 6
a171 3
	char const *time_msg;		/* ITIMER_REAL message. */
	struct itimerval time_value;	/* ITIMER_REAL saved value. */
	struct sigaction time_handler;	/* ITIMER_REAL saved handler. */
a184 2
	enum cdirection	csearchdir;	/* Character search direction. */
	CHAR_T	 lastckey;		/* Last search character. */
d203 1
a203 1
	void	 (*s_bell) __P((SCR *));
d205 1
a205 1
	int	 (*s_bg) __P((SCR *));
d207 1
a207 1
	int	 (*s_busy) __P((SCR *, char const *));
d209 3
a211 1
	int	 (*s_change) __P((SCR *, EXF *, recno_t, enum operation));
d213 1
a213 3
	size_t	 (*s_chposition) __P((SCR *, EXF *, recno_t, size_t));
					/* Clear the screen. */
	int	 (*s_clear) __P((SCR *));
d215 1
a215 1
	int	 (*s_column) __P((SCR *, EXF *, size_t *));
d217 3
a219 1
		 (*s_confirm) __P((SCR *, EXF *, MARK *, MARK *));
d221 1
a221 1
	int	 (*s_down) __P((SCR *, EXF *, MARK *, recno_t, int));
d223 1
a223 1
	int	 (*s_edit) __P((SCR *, EXF *));
d225 1
a225 1
	int	 (*s_end) __P((SCR *));
d227 1
a227 1
	int	 (*s_ex_cmd) __P((SCR *, EXF *, EXCMDARG *, MARK *));
d229 1
a229 1
	int	 (*s_ex_run) __P((SCR *, EXF *, MARK *));
d231 1
a231 1
	int	 (*s_ex_write) __P((void *, const char *, int));
d233 1
a233 1
	int	 (*s_fg) __P((SCR *, CHAR_T *));
d235 1
a235 1
	int	 (*s_fill) __P((SCR *, EXF *, recno_t, enum position));
d237 1
a237 1
		 (*s_get) __P((SCR *, EXF *, TEXTH *, int, u_int));
d239 1
a239 1
		 (*s_key_read) __P((SCR *, int *, struct timeval *));
d241 1
a241 1
	int	 (*s_optchange) __P((SCR *, int));
d243 2
a244 2
	int	 (*s_position) __P((SCR *, EXF *,
		    MARK *, u_long, enum position));
d246 3
a248 1
	int	 (*s_rabs) __P((SCR *, long));
d250 1
a250 5
	int	 (*s_refresh) __P((SCR *, EXF *));
					/* Return column close to last char. */
	size_t	 (*s_relative) __P((SCR *, EXF *, recno_t));
					/* Change the relative screen size. */
	int	 (*s_rrel) __P((SCR *, long));
d252 1
a252 1
	int	 (*s_split) __P((SCR *, ARGS *[]));
d254 1
a254 1
	int	 (*s_suspend) __P((SCR *));
d256 1
a256 1
	int	 (*s_up) __P((SCR *, EXF *, MARK *, recno_t, int));
d293 3
a295 3
#define	S_TIMER_SET	0x0400000	/* If a busy timer is running. */
#define	S_UPDATE_MODE	0x0800000	/* Don't repaint modeline. */
	u_int flags;
d298 10
d309 2
a310 2
int	screen_end __P((SCR *));
int	screen_init __P((SCR *, SCR **, u_int));
d313 15
a327 15
int	ex_screen_copy __P((SCR *, SCR *));
int	ex_screen_end __P((SCR *));
int	ex_screen_init __P((SCR *));
int	sex_screen_copy __P((SCR *, SCR *));
int	sex_screen_end __P((SCR *));
int	sex_screen_init __P((SCR *));
int	svi_screen_copy __P((SCR *, SCR *));
int	svi_screen_end __P((SCR *));
int	svi_screen_init __P((SCR *));
int	v_screen_copy __P((SCR *, SCR *));
int	v_screen_end __P((SCR *));
int	v_screen_init __P((SCR *));
int	xaw_screen_copy __P((SCR *, SCR *));
int	xaw_screen_end __P((SCR *));
int	xaw_screen_init __P((SCR *));
@


1.1
log
@Initial revision
@
text
@d33 2
a34 1
 *	@@(#)screen.h	8.81 (Berkeley) 12/29/93
@


1.1.1.1
log
@nvi 1.03, from ftp.cs.berkeley.edu, per keith bostic's permission.
@
text
@@


1.1.1.2
log
@nvi/nex 1.11beta from bostic.
@
text
@d2 1
a2 1
 * Copyright (c) 1992, 1993, 1994
d33 1
a33 1
 *	@@(#)screen.h	8.92 (Berkeley) 3/23/94
a53 2
					/* Screen adjustment operations. */
enum adjust { A_DECREASE, A_INCREASE, A_SET };
d164 3
a166 6
	struct timeval	 busy_tod;	/* ITIMER_REAL: busy time-of-day. */
	char const	*busy_msg;	/* ITIMER_REAL: busy message. */

	struct sigaction intr_act;	/* Interrupt saved signal state. */
	struct termios	 intr_term;	/* Interrupt saved terminal state. */
	int	 intr_level;		/* 0-N: Interrupt level. */
d180 2
d200 1
a200 1
	void	(*s_bell) __P((SCR *));
d202 1
a202 1
	int	(*s_bg) __P((SCR *));
d204 1
a204 1
	int	(*s_busy) __P((SCR *, char const *));
d206 3
a208 1
	int	(*s_change) __P((SCR *, EXF *, recno_t, enum operation));
d210 1
a210 3
	int	(*s_clear) __P((SCR *));
					/* Return column close to specified. */
	size_t	(*s_colpos) __P((SCR *, EXF *, recno_t, size_t));
d212 1
a212 1
	int	(*s_column) __P((SCR *, EXF *, size_t *));
d214 1
a214 3
		(*s_confirm) __P((SCR *, EXF *, MARK *, MARK *));
					/* Change the relative screen size. */
	int	(*s_crel) __P((SCR *, long));
d216 1
a216 1
	int	(*s_down) __P((SCR *, EXF *, MARK *, recno_t, int));
d218 1
a218 1
	int	(*s_edit) __P((SCR *, EXF *));
d220 1
a220 1
	int	(*s_end) __P((SCR *));
d222 1
a222 1
	int	(*s_ex_cmd) __P((SCR *, EXF *, EXCMDARG *, MARK *));
d224 1
a224 1
	int	(*s_ex_run) __P((SCR *, EXF *, MARK *));
d226 1
a226 1
	int	(*s_ex_write) __P((void *, const char *, int));
d228 1
a228 1
	int	(*s_fg) __P((SCR *, CHAR_T *));
d230 1
a230 1
	int	(*s_fill) __P((SCR *, EXF *, recno_t, enum position));
d232 1
a232 1
		(*s_get) __P((SCR *, EXF *, TEXTH *, int, u_int));
d234 1
a234 1
		(*s_key_read) __P((SCR *, int *, struct timeval *));
d236 1
a236 1
	int	(*s_optchange) __P((SCR *, int));
d238 2
a239 2
	int	(*s_position) __P((SCR *, EXF *,
		   MARK *, u_long, enum position));
d241 1
a241 3
	int	(*s_rabs) __P((SCR *, long, enum adjust));
					/* Return column close to selection. */
	size_t	(*s_rcm) __P((SCR *, EXF *, recno_t));
d243 5
a247 1
	int	(*s_refresh) __P((SCR *, EXF *));
d249 1
a249 1
	int	(*s_split) __P((SCR *, ARGS *[]));
d251 1
a251 1
	int	(*s_suspend) __P((SCR *));
d253 1
a253 1
	int	(*s_up) __P((SCR *, EXF *, MARK *, recno_t, int));
d290 3
a292 3
#define	S_UPDATE_MODE	0x0400000	/* Don't repaint modeline. */
#define	S_VLITONLY	0x0800000	/* ^V literal next only. */
	u_int32_t flags;
a294 10
/* Timers have no structure, so routines are here. */
void	 h_alrm __P((int));
int	 busy_on __P((SCR *, char const *));
void	 busy_off __P((SCR *));
int	 rcv_on __P((SCR *, EXF *));

/* Interrupts have no structure, so routines are here. */
void	 intr_end __P((SCR *));
int	 intr_init __P((SCR *));

d296 2
a297 2
int	 screen_end __P((SCR *));
int	 screen_init __P((SCR *, SCR **, u_int));
d300 15
a314 15
int	 ex_screen_copy __P((SCR *, SCR *));
int	 ex_screen_end __P((SCR *));
int	 ex_screen_init __P((SCR *));
int	 sex_screen_copy __P((SCR *, SCR *));
int	 sex_screen_end __P((SCR *));
int	 sex_screen_init __P((SCR *));
int	 svi_screen_copy __P((SCR *, SCR *));
int	 svi_screen_end __P((SCR *));
int	 svi_screen_init __P((SCR *));
int	 v_screen_copy __P((SCR *, SCR *));
int	 v_screen_end __P((SCR *));
int	 v_screen_init __P((SCR *));
int	 xaw_screen_copy __P((SCR *, SCR *));
int	 xaw_screen_end __P((SCR *));
int	 xaw_screen_init __P((SCR *));
@
