119304Speter/*-
219304Speter * Copyright (c) 1991, 1993, 1994
319304Speter *	The Regents of the University of California.  All rights reserved.
419304Speter * Copyright (c) 1991, 1993, 1994, 1995, 1996
519304Speter *	Keith Bostic.  All rights reserved.
619304Speter *
719304Speter * See the LICENSE file for redistribution information.
819304Speter *
9254225Speter *	$Id: common.h,v 10.22 2012/04/13 05:21:50 zy Exp $
1019304Speter */
1119304Speter
1219304Speter/*
1319304Speter * Pseudo-local includes.  These are files that are unlikely to exist
1419304Speter * on most machines to which we're porting vi, and we want to include
1519304Speter * them in a very specific order, regardless.
1619304Speter */
1719304Speter#include <db.h>
1819304Speter#include <regex.h>
1919304Speter
2019304Speter/*
2119304Speter * Forward structure declarations.  Not pretty, but the include files
2219304Speter * are far too interrelated for a clean solution.
2319304Speter */
2419304Spetertypedef struct _cb		CB;
2519304Spetertypedef struct _csc		CSC;
26254225Spetertypedef struct _conv	    	CONV;
27254225Spetertypedef struct _conv_win    	CONVWIN;
2819304Spetertypedef struct _event		EVENT;
2919304Spetertypedef struct _excmd		EXCMD;
3019304Spetertypedef struct _exf		EXF;
3119304Spetertypedef struct _fref		FREF;
3219304Spetertypedef struct _gs		GS;
3319304Spetertypedef struct _lmark		LMARK;
3419304Spetertypedef struct _mark		MARK;
3519304Spetertypedef struct _msg		MSGS;
3619304Spetertypedef struct _option		OPTION;
3719304Spetertypedef struct _optlist		OPTLIST;
3819304Spetertypedef struct _scr		SCR;
3919304Spetertypedef struct _script		SCRIPT;
4019304Spetertypedef struct _seq		SEQ;
4119304Spetertypedef struct _tag		TAG;
4219304Spetertypedef struct _tagf		TAGF;
4319304Spetertypedef struct _tagq		TAGQ;
4419304Spetertypedef struct _text		TEXT;
4519304Speter
4619304Speter/* Autoindent state. */
47254225Spetertypedef enum { C_NOTSET, C_CARATSET, C_ZEROSET } carat_t;
4819304Speter
4919304Speter/* Busy message types. */
5019304Spetertypedef enum { BUSY_ON = 1, BUSY_OFF, BUSY_UPDATE } busy_t;
5119304Speter
5219304Speter/*
5319304Speter * Routines that return a confirmation return:
5419304Speter *
5519304Speter *	CONF_NO		User answered no.
5619304Speter *	CONF_QUIT	User answered quit, eof or an error.
5719304Speter *	CONF_YES	User answered yes.
5819304Speter */
5919304Spetertypedef enum { CONF_NO, CONF_QUIT, CONF_YES } conf_t;
6019304Speter
6119304Speter/* Directions. */
6219304Spetertypedef enum { NOTSET, FORWARD, BACKWARD } dir_t;
6319304Speter
6419304Speter/* Line operations. */
6519304Spetertypedef enum { LINE_APPEND, LINE_DELETE, LINE_INSERT, LINE_RESET } lnop_t;
6619304Speter
6719304Speter/* Lock return values. */
6819304Spetertypedef enum { LOCK_FAILED, LOCK_SUCCESS, LOCK_UNAVAIL } lockr_t;
6919304Speter
7019304Speter/* Sequence types. */
7119304Spetertypedef enum { SEQ_ABBREV, SEQ_COMMAND, SEQ_INPUT } seq_t;
7219304Speter
7319304Speter/*
7419304Speter * Local includes.
7519304Speter */
7619304Speter#include "key.h"		/* Required by args.h. */
7719304Speter#include "args.h"		/* Required by options.h. */
7819304Speter#include "options.h"		/* Required by screen.h. */
7919304Speter
8019304Speter#include "msg.h"		/* Required by gs.h. */
8119304Speter#include "cut.h"		/* Required by gs.h. */
8219304Speter#include "seq.h"		/* Required by screen.h. */
8319304Speter#include "util.h"		/* Required by ex.h. */
8419304Speter#include "mark.h"		/* Required by gs.h. */
85254225Speter#include "conv.h"		/* Required by ex.h and screen.h */
8619304Speter#include "../ex/ex.h"		/* Required by gs.h. */
8719304Speter#include "gs.h"			/* Required by screen.h. */
8819304Speter#include "screen.h"		/* Required by exf.h. */
8919304Speter#include "exf.h"
9019304Speter#include "log.h"
9119304Speter#include "mem.h"
9219304Speter
93254225Speter#include "extern.h"
94