|
|
1.1 root 1: /* declarations for emacs editor */
2: /* EMACS_MODES: c !fill */
3:
4: /* interpreter definitions */
5:
6: /* There are 3 arrays that take part in the implementation of the
7: * emacs command interpreter. The "runit" array is a list of
8: * pointers to C functions that implement emacs commands. It is
9: * ordered arbitrarily, not related to the command sequence. The
10: * "doit" array is an array of NCHARS byte codes. Each byte code
11: * specifies the function bound to the corresponding byte code
12: * either as an internal interpreter function (codes < NIFUNC) or as
13: * one of the functions in the runit array. The codes in this
14: * array are fixed, and implement the base level command bindings
15: * for emacs. The codes in this array are also used to locate the
16: * help messages. Each code maps to a corresponding help message. */
17:
18: /* The third array is what allows the user to re-bind key
19: * definitions and bind keys to macros. It is the "map_it" array.
20: * This is initialized to the same as doit. Each entry of this
21: * array can either be a built in command (C function or interpreter
22: * command), if less than NCHARS, or a macro pointer, if > NCHARS. */
23:
24: /* dispatch table */
25:
26: extern upl();
27: extern downl();
28: extern gquit();
29: extern qrep();
30: extern eabort();
31: extern mfwrd();
32: extern kfwrd();
33: extern mbwrd();
34: extern kbwrd();
35: extern top();
36: extern bot();
37: extern insertc();
38: extern tabc();
39: extern rquote();
40: extern mquote();
41: extern refresh();
42: extern beep();
43: extern fisrch();
44: extern risrch();
45: extern begin();
46: extern endl();
47: extern openl();
48: extern nl();
49: extern fdel();
50: extern bdel();
51: extern fred();
52: extern fright();
53: extern ekill();
54: extern mark();
55: extern nxtpage();
56: extern lstpage();
57: extern mkill();
58: extern yank();
59: extern reyank();
60: extern bux();
61: extern ux();
62: extern forw();
63: extern back();
64: extern capnxt();
65: extern lownxt();
66: extern capwrd();
67: extern afsep();
68: extern xpose();
69: extern mapch();
70: extern help();
71: extern ttype();
72: extern undo();
73: extern pickup();
74: extern absgoto();
75: extern go_xy();
76: extern cment();
77: extern cbrak();
78: extern modisp();
79: extern ssent();
80: extern esent();
81: extern stats();
82: extern uline();
83: extern mailit();
84: extern toppage();
85: extern rsrch();
86: extern rqrep();
87: extern numchar();
88: extern wallc();
89: extern filler();
90: extern litchr();
91: extern macex();
92: extern unmod();
93: extern mbegin();
94: extern setvar();
95: extern envget();
96: extern stopjob();
97: #ifdef PC
98: extern ctfile();
99: extern mapk();
100: #else
101: #define ctfile beep
102: #define mapk beep
103: #endif
104:
105: /* control -x commands */
106:
107: extern fright();
108: extern fred();
109: extern fsave();
110: extern exch();
111: extern gquit();
112: extern quit();
113: extern chmode();
114: extern cwd();
115: extern edbuf();
116: extern cpbuf();
117: extern rmbuf();
118: extern twind();
119: extern onewind();
120: extern owind();
121: extern inpsh();
122: extern bfsend();
123: extern buflng();
124: extern macro();
125: extern bfchr();
126: extern compar();
127: extern cond();
128: extern mcase();
129: extern iter();
130: extern recurse();
131: extern pbfname();
132: extern pfnname();
133: extern gparam();
134: extern gkarm();
135: extern glob();
136: extern kdup();
137: extern kflush();
138: extern kexch();
139: extern ldmac();
140: extern cmpst();
141: extern wgrow();
142: extern didle();
143: extern kapp();
144: extern rnbuf();
145: extern pvname();
146: extern xqt();
147: extern getsharg();
148: extern strtkbd();
149: extern endkbd();
150: extern exkbd();
151: extern setkey();
152: extern trce();
153: extern brkproc();
154: #ifdef COMPRESS
155: extern loadtbl();
156: #else
157: #define loadtbl beep
158: #endif
159:
160: #ifdef DIRED
161: extern dcdel();
162: extern ddel();
163: extern dundel();
164: extern dview();
165: #define DCDEL dcdel
166: #define DDEL ddel
167: #define DUNDEL dundel
168: #define DVIEW dview
169: #else
170: #define DCDEL beep
171: #define DDEL beep
172: #define DUNDEL beep
173: #define DVIEW beep
174: #endif
175:
176:
177:
178:
179: /* The run-it table */
180:
181:
182:
183: int (*runit[]) () = {
184: /* 9 */ insertc,begin, back, capnxt, fdel, endl, forw, beep,
185: /*17 */ tabc, afsep, nl, ekill, refresh,downl, openl, upl,
186: /*25 */ rquote, risrch, fisrch, xpose, nxtpage,mkill, yank, mbwrd,
187: /*33 */ capwrd, kfwrd, mfwrd, qrep, lstpage,eabort, kbwrd, top,
188: /*41 */ bot, gquit, fred, fsave, fright, exch, mark, help,
189: /*49 */ ux, bdel, reyank, ttype, bfsend, absgoto,cment, modisp,
190: /*57 */ chmode, ssent, esent, cpbuf, edbuf, rmbuf, onewind,owind,
191: /*65 */ twind,uline, bux, cwd, inpsh, mailit, toppage,rsrch,
192: /*73 */ rqrep, mquote, numchar,pickup, wallc, stats, cbrak, DDEL,
193: /*81 */ DCDEL, DUNDEL, DVIEW, filler, macro, compar, cond, litchr,
194: /*89 */ iter, gparam, mbegin, pbfname,pfnname,recurse,kdup, kflush,
195: /*97 */ kexch, ldmac, macex, cmpst, wgrow, didle, mcase, unmod,
196: /*105*/ bfchr, mapch, setvar, kapp, rnbuf, buflng, pvname, xqt,
197: /*113*/ getsharg,gkarm, envget, strtkbd,endkbd, exkbd, go_xy, lownxt,
198: /*121*/ trce, setkey, glob, undo, stopjob,brkproc,ctfile, mapk,
199: /*129*/ loadtbl,
200: };
201:
202:
203: /* Global interpreter bindings */
204:
205: unsigned char doit[NCHARS] = {
206:
207: 47, 10, 11, 12, 13, 14, 15, 16,
208: 50, 17, 19, 20, 21, 19, 22, 23,
209: 24, 25, 26, 27, 28, CCTLU, 29, 30,
210: CCTLX, 31, CEXIT, CMETA, 0, CMARG, CLRES, 0,
211: 18, 9, 9, 9, 9, 9, 9, 9,
212: 9, 9, 9, 9, 9, CMNUS, 18, 9,
213: CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB,
214: CNUMB, CNUMB, 9, 9, 9, 9, 9, 9,
215:
216: 9, 9, 9, 9, 9, 9, 9, 9,
217: 9, 9, 9, 9, 9, 9, 9, 9,
218: 9, 9, 9, 9, 9, 9, 9, 9,
219: 9, 9, 9, 9, 9, 9, 9, 9,
220: 9, 9, 9, 9, 9, 9, 9, 9,
221: 9, 9, 9, 9, 9, 9, 9, 9,
222: 9, 9, 9, 9, 9, 9, 9, 9,
223: 9, 9, 9, 9, 9, 79, 9, 50,
224:
225: /* META characters */
226:
227: 0, 0, 0, 0, 0, 0, 0, 0,
228: 39, 0, 0, 0, 71, 70, 0, 0,
229: 0, 88, 73, 72, 0, 0, 0, 0,
230: 112, 0, 125, 0, 0, 107, 0, 0,
231: 47, 49, 84, 0, 67, 0, 0, 0,
232: 0, 0, 0, 0, 0, CMNUS, 0, 55,
233: CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB, CNUMB,
234: CNUMB, CNUMB, 106, 0, 40, 0, 41, 48,
235:
236: 0, 0, 0, 0, 0, 115, 0, 0,
237: 0, 0, 0, 0, 0, 0, 0, 0,
238: 0, 0, 0, 0, 0, 0, 0, 0,
239: 0, 0, 0, 0, 75, 0, 0, 66,
240: 0, 58, 32, 33, 34, 59, 35, 54,
241: 0, 0, 0, 0, 120, 56, 0, 0,
242: #ifdef PC
243: 76, 74, 36, 78, 127, 124, 37, 77,
244: #else
245: 76, 74, 36, 78, 52, 124, 37, 77,
246: #endif
247: 99, 51, 38, 91, 0, CEXIT, 104, 39,
248:
249: /* Control - X characters */
250:
251: 0, 113, 60, 42, 68, 94, 61, 126,
252: 0, 69, 0, 62, 98, 57, 109, 64,
253: 0, 105, 43, 44, 53, 102, 111, 45,
254: 46, 0, 0, 0, 0, 0, 101, 0,
255: 0, 103, 0, 123, 0, 97, 100, 0,
256: 116, 117, 0, 108, 0, 96, 0, 0,
257: 0, 63, 65, 0, 0, 0, 0, 0,
258: #ifdef PC
259: 0, 0, 128, 0, 90, 110, 95, 0,
260: #else
261: 0, 0, 0, 0, 90, 110, 95, 0,
262: #endif
263:
264: 114, 0, 92, 0, 0, 118, 93, 0,
265: 0, 0, 0, 0, 129, 0, 0, 0,
266: 0, 0, 0, 0, 121, 0, 0, 0,
267: 0, 0, 0, 0, 0, 0, 89, 0,
268: 0, 0, 0, 0, 85, 0, 0, 119,
269: 0, 0, 0, 122, 0, 57, 0, 0,
270: 0, 0, 0, 0, 0, 0, 0, 0,
271: 0, 0, 0, 0, 87, 0, 86, 0,
272: };
273:
274: /* character help explanations */
275:
276: /* note -- the text of the help instructions is kept in helpstrings
277: * and helpfile in uncompiled and compiled format. make_help is the
278: * compiler for the helpstrings file. */
279:
280: #define HINSERT 9 /* index of self inserting chars */
281:
282: extern char hdate[];
283: int helfile = 0;
284: #define HELSIZE 128
285:
286: /* ****** NOTE -- it is no longer necessary to change the pathnames. */
287: /* EMACS will put its error messages, help messages, and statistics in */
288: /* the directory where the sources are if you don't modify these definitions */
289:
290:
291: #ifdef PC
292: #define SDIR ""
293: #endif
294: char *emd_source = SDIR;
295:
296:
297: #ifdef CMON
298:
299: int cmcnt[NCHARS] = {0}; /* command counters */
300: #endif
301:
302: #ifdef DIRED
303: char dired_args[16] = {'-','a','l',0,0,0,0,0,0,0,0,0,0,0,0,0};
304: #endif
305: long oclock = 0;
306:
307: int numarg; /* numeric argument flag */
308: int etrace; /* Trace flag */
309:
310: char *myname;
311: extern char version[];
312:
313: char **sharg; /* shell argument list */
314: int nsharg; /* argument counter */
315: char *svname; /* saved myname for long return */
316: #ifdef PC
317: int retjmp[3]; /* */
318: #else
319: jmp_buf retjmp; /* return environment for break */
320: extern char *ctime();
321: #endif
322:
323: extern char *getenv();
324: extern int junked;
325: extern int timemd;
326: extern char *fname();
327: extern char casem[];
328: extern eabort();
329: extern crash();
330: extern char *mstrcpy();
331: extern char *nscan();
332: extern int NSCHAR;
333: extern int SAVEMD;
334: extern int SAVECHAR;
335: extern int VERBOSE;
336: extern int BUFEND;
337: extern int TABMD;
338: extern char *endput;
339: extern int curbf;
340: extern int READONLY;
341: #ifdef DIRED
342: #define diron dirbuf[curbf]
343: extern char dirbuf[];
344: extern dclean();
345: extern ddel();
346: extern dundel();
347: extern dview();
348: #endif
349: #ifdef CRYPTO
350: extern long bufkey;
351: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.