1 /*	EVAR.H: Environment and user variable definitions
2 		for MicroEMACS
3 
4 		written 1993 by Daniel Lawrence
5 */
6 
7 #define MAXVARS 	512	/* Maximum number of global user variables */
8 
9 /*	list of recognized environment variables	*/
10 
11 NOSHARE char *envars[] = {
12 	"abbell",		/* ring bell on abbreviation expansion? */
13 	"abcap",		/* match capitolization in expansions */
14 	"abquick",		/* quick, aggressive expansions enabled? */
15 	"acount",		/* # of chars until next auto-save */
16 	"asave",		/* # of chars between auto-saves */
17 	"bufhook",		/* enter buffer switch hook */
18 	"cbflags",		/* current buffer flags */
19 	"cbufname",		/* current buffer name */
20 	"cfname",		/* current file name */
21 	"cmdhook",		/* command loop hook */
22 	"cmode",		/* mode of current buffer */
23 	"curchar",		/* current character under the cursor */
24 	"curcol",		/* current column pos of cursor */
25 	"curline",		/* current line in file */
26 	"curwidth",		/* current screen width */
27 	"curwind",		/* current window ordinal on current screen */
28 	"cwline",		/* current screen line in window */
29 	"debug",		/* macro debugging */
30 	"deskcolor",		/* desktop color */
31 	"diagflag",		/* diagonal mouse movements enabled? */
32 	"discmd",		/* display commands on command line */
33 	"disinp",		/* display command line input characters */
34 	"disphigh",		/* display high bit characters escaped */
35 	"dispundo",		/* display undo depth on command line */
36 	"exbhook",		/* exit buffer switch hook */
37 	"exithook",		/* exiting emacs hook */
38 	"fcol",			/* first displayed column in curent window */
39 	"fillcol",		/* current fill column */
40 	"flicker",		/* flicker supression */
41 	"fmtlead",		/* format command lead characters */
42 	"gflags",		/* global internal emacs flags */
43 	"gmode",		/* global modes */
44 	"hardtab",		/* current hard tab size */
45 	"hilight",		/* region # to hilight (255 to turn off) */
46 	"hjump",		/* horizontal screen jump size */
47 	"hscrlbar",		/* horizontal scroll bar flag */
48 	"hscroll",		/* horizontal scrolling flag */
49 	"isterm",		/* incremental-search terminator character */
50 	"kill", 		/* kill buffer (read only) */
51 	"language",		/* language of text messages */
52 	"lastkey",		/* last keyboard char struck */
53 	"lastmesg",		/* last string mlwrite()ed */
54 	"line", 		/* text of current line */
55 	"lterm",		/* current line terminator for writes */
56 	"lwidth",		/* width of current line */
57 	"match",		/* last matched magic pattern */
58 	"mmove",		/* mouse moves events style */
59 	"modeflag",		/* Modelines displayed flag */
60 	"msflag",		/* activate mouse? */
61 	"newscreen",		/* new screen with new buffer? */
62 	"numwind",		/* number of windows on current screen */
63 	"orgcol",		/* screen origin column */
64 	"orgrow",		/* screen origin row */
65 	"os",			/* what Operating System? */
66 	"overlap",		/* line overlap when paging */
67 	"pagelen",		/* number of lines used by editor */
68 	"palette",		/* current palette string */
69 	"paralead",		/* paragraph leadin characters */
70 	"pending",		/* type ahead pending flag */
71 	"popflag",		/* pop-up windows active? */
72 	"popwait",		/* user wait on end of pop-up window? */
73 	"posflag",		/* display point position on modeline? */
74 	"progname",		/* returns current prog name - "MicroEMACS" */
75 	"ram",			/* ram in use by malloc */
76 	"readhook",		/* read file execution hook */
77 	"region",		/* current region (read only) */
78 	"replace",		/* replacement pattern */
79 	"rval", 		/* child process return value */
80 	"scrname",		/* current screen name */
81 	"search",		/* search pattern */
82 	"searchpnt",		/* differing search styles (term point) */
83 	"seed", 		/* current random number seed */
84 	"softtab",		/* current soft tab size */
85 	"sres", 		/* current screen resolution */
86 	"ssave",		/* safe save flag */
87 	"sscroll",		/* smooth scrolling flag */
88 	"status",		/* returns the status of the last command */
89 	"sterm",		/* search terminator character */
90 	"target",		/* target for line moves */
91 	"time",			/* date and time */
92 	"timeflag",		/* display time? */
93 	"tpause",		/* length to pause for paren matching */
94 	"undoflag",		/* currently processing undos */
95 	"version",		/* current version number */
96 	"vscrlbar",		/* vertical scroll bar flag */
97 	"wchars",		/* set of characters legal in words */
98 	"wline",		/* # of lines in current window */
99 	"wraphook",		/* wrap word execution hook */
100 	"writehook",		/* write file hook */
101 	"xpos", 		/* current mouse X position */
102 	"yankflag",		/* point placement at yanked/included text */
103 	"ypos"	 		/* current mouse Y position */
104 };
105 
106 #define NEVARS	sizeof(envars) / sizeof(char *)
107 
108 /*	and its preprocesor definitions 	*/
109 
110 #define EVABBELL	0
111 #define EVABCAP		1
112 #define EVABQUICK	2
113 #define EVACOUNT	3
114 #define EVASAVE 	4
115 #define EVBUFHOOK	5
116 #define EVCBFLAGS	6
117 #define EVCBUFNAME	7
118 #define EVCFNAME	8
119 #define EVCMDHK 	9
120 #define EVCMODE 	10
121 #define EVCURCHAR	11
122 #define EVCURCOL	12
123 #define EVCURLINE	13
124 #define EVCURWIDTH	14
125 #define EVCURWIND	15
126 #define EVCWLINE	16
127 #define EVDEBUG         17
128 #define EVDESKCLR	18
129 #define EVDIAGFLAG      19
130 #define EVDISCMD        20
131 #define EVDISINP        21
132 #define EVDISPHIGH	22
133 #define EVDISPUNDO	23
134 #define EVEXBHOOK       24
135 #define EVEXITHOOK	25
136 #define EVFCOL		26
137 #define EVFILLCOL	27
138 #define EVFLICKER	28
139 #define EVFMTLEAD	29
140 #define EVGFLAGS	30
141 #define EVGMODE 	31
142 #define EVHARDTAB	32
143 #define EVHILITE	33
144 #define EVHJUMP		34
145 #define EVHSCRLBAR      35
146 #define EVHSCROLL	36
147 #define EVISTERM	37
148 #define EVKILL          38
149 #define EVLANG          39
150 #define EVLASTKEY       40
151 #define EVLASTMESG      41
152 #define EVLINE          42
153 #define EVLTERM		43
154 #define EVLWIDTH        44
155 #define EVMATCH         45
156 #define EVMMOVE		46
157 #define EVMODEFLAG      47
158 #define EVMSFLAG        48
159 #define EVNEWSCRN	49
160 #define EVNUMWIND	50
161 #define EVORGCOL	51
162 #define EVORGROW	52
163 #define EVOS		53
164 #define EVOVERLAP	54
165 #define EVPAGELEN       55
166 #define EVPALETTE       56
167 #define EVPARALEAD	57
168 #define EVPENDING       58
169 #define EVPOPFLAG	59
170 #define EVPOPWAIT	60
171 #define EVPOSFLAG	61
172 #define EVPROGNAME      62
173 #define EVRAM           63
174 #define EVREADHK        64
175 #define EVREGION	65
176 #define EVREPLACE       66
177 #define EVRVAL          67
178 #define EVSCRNAME	68
179 #define EVSEARCH        69
180 #define EVSEARCHPNT	70
181 #define EVSEED          71
182 #define EVSOFTTAB	72
183 #define EVSRES          73
184 #define EVSSAVE         74
185 #define EVSSCROLL	75
186 #define EVSTATUS	76
187 #define EVSTERM 	77
188 #define EVTARGET	78
189 #define EVTIME		79
190 #define EVTIMEFLAG	80
191 #define EVTPAUSE	81
192 #define EVUNDOFLAG	82
193 #define EVVERSION	83
194 #define EVVSCRLBAR      84
195 #define EVWCHARS	85
196 #define EVWLINE 	86
197 #define EVWRAPHK	87
198 #define EVWRITEHK	88
199 #define EVXPOS		89
200 #define EVYANKFLAG	90
201 #define EVYPOS		91
202 
203 /*	list of recognized user functions	*/
204 
205 typedef struct UFUNC {
206 	char *f_name;  /* name of function */
207 	int f_type;	/* 1 = monamic, 2 = dynamic */
208 } UFUNC;
209 
210 #define NILNAMIC	0
211 #define MONAMIC 	1
212 #define DYNAMIC 	2
213 #define TRINAMIC	3
214 
215 NOSHARE UFUNC funcs[] = {
216 	"abbrev", MONAMIC,	/* look up abbreviation */
217 	"abs", MONAMIC, 	/* absolute value of a number */
218 	"add", DYNAMIC,		/* add two numbers together */
219 	"and", DYNAMIC, 	/* logical and */
220 	"ascii", MONAMIC, 	/* char to integer conversion */
221 	"band", DYNAMIC, 	/* bitwise and	 9-10-87  jwm */
222 	"bind", MONAMIC, 	/* loopup what function name is bound to a key */
223 	"bnot", MONAMIC, 	/* bitwise not */
224 	"bor", DYNAMIC, 	/* bitwise or	 9-10-87  jwm */
225 	"bxor", DYNAMIC, 	/* bitwise xor	 9-10-87  jwm */
226 	"call", MONAMIC,	/* call a procedure */
227 	"cat", DYNAMIC, 	/* concatenate string */
228 	"chr", MONAMIC, 	/* integer to char conversion */
229 	"divide", DYNAMIC, 	/* division */
230 	"env", MONAMIC, 	/* retrieve a system environment var */
231 	"equal", DYNAMIC, 	/* logical equality check */
232 	"exist", MONAMIC, 	/* check if a file exists */
233 	"find", MONAMIC, 	/* look for a file on the path... */
234 	"greater", DYNAMIC, 	/* logical greater than */
235 	"group", MONAMIC,	/* return group match in MAGIC mode */
236 	"gtc", NILNAMIC,	/* get 1 emacs command */
237 	"gtk", NILNAMIC,	/* get 1 charater */
238 	"indirect", MONAMIC, 	/* evaluate indirect value */
239 	"isnum", MONAMIC,	/* is the arg a number? */
240 	"left", DYNAMIC, 	/* left string(string, len) */
241 	"length", MONAMIC, 	/* string length */
242 	"less", DYNAMIC, 	/* logical less than */
243 	"lower", MONAMIC, 	/* lower case string */
244 	"mid", TRINAMIC,	/* mid string(string, pos, len) */
245 	"mkcol", MONAMIC,	/* column position of a mark */
246 	"mkline", MONAMIC,	/* line number of a mark */
247 	"modulo", DYNAMIC, 	/* mod */
248 	"negate", MONAMIC, 	/* negate */
249 	"not", MONAMIC, 	/* logical not */
250 	"or",  DYNAMIC, 	/* logical or */
251 	"reverse", MONAMIC,	/* reverse */
252 	"right", DYNAMIC, 	/* right string(string, pos) */
253 	"rnd", MONAMIC, 	/* get a random number */
254 	"sequal", DYNAMIC, 	/* string logical equality check */
255 	"sgreater", DYNAMIC, 	/* string logical greater than */
256 	"sindex", DYNAMIC, 	/* find the index of one string in another */
257 	"sless", DYNAMIC, 	/* string logical less than */
258 	"slower", DYNAMIC,	/* set lower to upper char translation */
259 	"subtract", DYNAMIC, 	/* subtraction */
260 	"supper", DYNAMIC,	/* set upper to lower char translation */
261 	"times", DYNAMIC, 	/* multiplication */
262 	"trim", MONAMIC,	/* trim whitespace off the end of a string */
263 	"true", MONAMIC, 	/* Truth of the universe logical test */
264 	"upper", MONAMIC, 	/* uppercase string */
265 	"xlate", TRINAMIC	/* XLATE character string translation */
266 };
267 
268 #define NFUNCS	sizeof(funcs) / sizeof(UFUNC)
269 
270 /*	and its preprocesor definitions 	*/
271 
272 #define UFABBREV	0
273 #define UFABS		1
274 #define UFADD		2
275 #define UFAND		3
276 #define UFASCII 	4
277 #define UFBAND		5
278 #define UFBIND		6
279 #define UFBNOT		7
280 #define UFBOR		8
281 #define UFBXOR		9
282 #define UFCALL		10
283 #define UFCAT		11
284 #define UFCHR		12
285 #define UFDIV		13
286 #define UFENV		14
287 #define UFEQUAL 	15
288 #define UFEXIST 	16
289 #define UFFIND		17
290 #define UFGREATER	18
291 #define UFGROUP		19
292 #define UFGTCMD 	20
293 #define UFGTKEY 	21
294 #define UFIND		22
295 #define UFISNUM		23
296 #define UFLEFT		24
297 #define UFLENGTH	25
298 #define UFLESS		26
299 #define UFLOWER 	27
300 #define UFMID		28
301 #define UFMKCOL		29
302 #define UFMKLINE	30
303 #define UFMOD		31
304 #define UFNEG		32
305 #define UFNOT		33
306 #define UFOR		34
307 #define UFREVERSE	35
308 #define UFRIGHT 	36
309 #define UFRND		37
310 #define UFSEQUAL	38
311 #define UFSGREAT	39
312 #define UFSINDEX	40
313 #define UFSLESS 	41
314 #define UFSLOWER	42
315 #define UFSUB		43
316 #define UFSUPPER	44
317 #define UFTIMES 	45
318 #define UFTRIM		46
319 #define UFTRUTH 	47
320 #define UFUPPER 	48
321 #define UFXLATE 	49
322