xref: /csrg-svn/local/toolchest/ksh/sh/edit.h (revision 35137)
1*35137Smarc /*
2*35137Smarc 
3*35137Smarc  *      Copyright (c) 1984, 1985, 1986 AT&T
4*35137Smarc  *      All Rights Reserved
5*35137Smarc 
6*35137Smarc  *      THIS IS UNPUBLISHED PROPRIETARY SOURCE
7*35137Smarc  *      CODE OF AT&T.
8*35137Smarc  *      The copyright notice above does not
9*35137Smarc  *      evidence any actual or intended
10*35137Smarc  *      publication of such source code.
11*35137Smarc 
12*35137Smarc  */
13*35137Smarc 
14*35137Smarc /* @(#)edit.h	1.1 */
15*35137Smarc 
16*35137Smarc /*
17*35137Smarc  *  edit.h -  common data structure for vi and emacs edit options
18*35137Smarc  *
19*35137Smarc  *   David Korn
20*35137Smarc  *   AT&T Bell Laboratories
21*35137Smarc  *   Room 5D-112
22*35137Smarc  *   Murray Hill, N. J. 07974
23*35137Smarc  *   Tel. x7975
24*35137Smarc  *
25*35137Smarc  */
26*35137Smarc 
27*35137Smarc #define LOOKAHEAD	80
28*35137Smarc #ifdef VENIX
29*35137Smarc #define READAHEAD	1
30*35137Smarc #else
31*35137Smarc #define READAHEAD	LOOKAHEAD
32*35137Smarc #endif	/* VENIX */
33*35137Smarc 
34*35137Smarc #ifdef MULTIBYTE
35*35137Smarc # ifndef ESS_MAXCHAR
36*35137Smarc # include	"national.h"
37*35137Smarc # endif	/* ESS_MAXCHAR */
38*35137Smarc # if ESS_MAXCHAR<=2
39*35137Smarc typedef unsigned short genchar;
40*35137Smarc # else
41*35137Smarc typedef long genchar;
42*35137Smarc # endif
43*35137Smarc #define CHARSIZE	2
44*35137Smarc #else
45*35137Smarc typedef char genchar;
46*35137Smarc #define CHARSIZE	1
47*35137Smarc #endif /* MULTIBYTE */
48*35137Smarc 
49*35137Smarc struct edit
50*35137Smarc {
51*35137Smarc 	int	e_kill;
52*35137Smarc 	int	e_erase;
53*35137Smarc 	int	e_eof;
54*35137Smarc 	int	e_fchar;
55*35137Smarc 	char	e_plen;		/* length of prompt string */
56*35137Smarc 	char	e_crlf;		/* zero if cannot return to beginning of line */
57*35137Smarc 	jmp_buf e_env;
58*35137Smarc 	int	e_llimit;	/* line length limit */
59*35137Smarc 	int	e_hline;	/* current history line number */
60*35137Smarc 	int	e_hloff;	/* line number offset for command */
61*35137Smarc 	int	e_hismin;	/* minimum history line number */
62*35137Smarc 	int	e_hismax;	/* maximum history line number */
63*35137Smarc 	int	e_raw;		/* set when in raw mode or alt mode */
64*35137Smarc 	int	e_cur;		/* current line position */
65*35137Smarc 	int	e_eol;		/* end-of-line position */
66*35137Smarc 	int	e_pcur;		/* current physical line position */
67*35137Smarc 	int	e_peol;		/* end of physical line position */
68*35137Smarc 	int	e_mode;		/* edit mode */
69*35137Smarc 	int	e_index;	/* index in look-ahead buffer */
70*35137Smarc 	int	e_repeat;
71*35137Smarc 	int	e_saved;
72*35137Smarc 	int	e_fcol;		/* first column */
73*35137Smarc 	int	e_ucol;		/* column for undo */
74*35137Smarc 	int	e_addnl;	/* set if new-line must be added */
75*35137Smarc 	int	e_wsize;	/* width of display window */
76*35137Smarc 	unsigned char	*e_outptr;	/* pointer with output buffer */
77*35137Smarc 	genchar	*e_inbuf;	/* pointer to input buffer */
78*35137Smarc 	char	*e_prompt;	/* pointer to buffer containing the prompt */
79*35137Smarc 	genchar	*e_ubuf;	/* pointer to the undo buffer */
80*35137Smarc 	genchar	*e_tmp;		/* temporary workspace buffer */
81*35137Smarc 	char	*e_search;	/* temporary workspace buffer */
82*35137Smarc 	genchar	*e_Ubuf;	/* temporary workspace buffer */
83*35137Smarc 	genchar	*e_physbuf;	/* temporary workspace buffer */
84*35137Smarc 	int	e_lbuf[LOOKAHEAD];/* pointer to look-ahead buffer */
85*35137Smarc 	int	e_fd;		/* file descriptor */
86*35137Smarc 	int	e_ttyspeed;	/* line speed, also indicates tty parms are valid */
87*35137Smarc 	int	*e_globals;	/* global variables */
88*35137Smarc 	genchar	*e_window;	/* display window  image */
89*35137Smarc 	char	e_inmacro;	/* processing macro expansion */
90*35137Smarc };
91*35137Smarc 
92*35137Smarc #define FEMAX		50	/* maximum number of file matches for q_expand */
93*35137Smarc #define MAXWINDOW	160	/* maximum width window */
94*35137Smarc #define MINWINDOW	20	/* minimum width window */
95*35137Smarc #define DFLTWINDOW	80	/* default window width */
96*35137Smarc #define	MAXPAT		100	/* maximum length for pattern word */
97*35137Smarc #define	YES	1
98*35137Smarc #define NO	0
99*35137Smarc #define FAST	2
100*35137Smarc #define SLOW	1
101*35137Smarc #define RAWMODE	1
102*35137Smarc #define ALTMODE	2
103*35137Smarc #define DELETE	'\177'
104*35137Smarc #define BELL	'\7'
105*35137Smarc #define ESC	033
106*35137Smarc #define	UEOF	-2			/* user eof char synonym */
107*35137Smarc #define	UERASE	-3			/* user erase char synonym */
108*35137Smarc #define	UINTR	-4			/* user intr char synonym */
109*35137Smarc #define	UKILL	-5			/* user kill char synonym */
110*35137Smarc #define	UQUIT	-6			/* user quit char synonym */
111*35137Smarc 
112*35137Smarc #define	cntl(x)		('x'&037)
113*35137Smarc 
114*35137Smarc #ifndef KSHELL
115*35137Smarc #define		STRIP		0377
116*35137Smarc #define		TO_PRINT	0100
117*35137Smarc #define 	GMACS	1
118*35137Smarc #define 	EMACS	2
119*35137Smarc #define		VIRAW	4
120*35137Smarc #define		EDITVI	8
121*35137Smarc #define		NOHIST	16
122*35137Smarc #define		EDITMASK	15
123*35137Smarc #define		is_option(m)	(opt_flag&(m))
124*35137Smarc extern char opt_flag;
125*35137Smarc #define read(fd,buff,n)		syscall(3,fd,buff,n)
126*35137Smarc #endif	/* KSHELL */
127*35137Smarc 
128*35137Smarc extern void setcooked();
129*35137Smarc extern struct edit editb;
130*35137Smarc extern MSG	big_vi;
131*35137Smarc extern MSG	version;
132