|
|
1.1 root 1: /***************************************************************************
2: * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE *
3: * is provided to you without charge, and with no warranty. You may give *
4: * away copies of JOVE, including sources, provided that this notice is *
5: * included in all the files. *
6: ***************************************************************************/
7:
8: #include "jove.h"
9: #include "ctype.h"
10:
11: #if !defined(TXT_TO_C)
12: extern void
13: EscPrefix(),
14: CtlxPrefix(),
15: MiscPrefix(),
16: UnbindC(),
17: ShowVersion(),
18: WVisSpace(),
19: #ifdef ANSICODES
20: AnsiCodes(),
21: #endif
22: AppReg(),
23: Apropos(),
24: BackChar(),
25: BList(),
26: FList(),
27: BUpList(),
28: FDownList(),
29: BSexpr(),
30: BackWord(),
31: Bof(),
32: Bol(),
33: Bos(),
34: Bow(),
35: BindAKey(),
36: BindMac(),
37: BufPos(),
38: #ifdef MSDOS
39: Buf1Select(),
40: Buf2Select(),
41: Buf3Select(),
42: Buf4Select(),
43: Buf5Select(),
44: Buf6Select(),
45: Buf7Select(),
46: Buf8Select(),
47: Buf9Select(),
48: Buf10Select(),
49: #endif /* MSDOS */
50: CasRegLower(),
51: CasRegUpper(),
52: CapChar(),
53: CapWord(),
54: LowWord(),
55: UppWord(),
56: #ifdef CHDIR
57: Chdir(),
58: prCWD(),
59: prDIRS(),
60: Pushd(),
61: Popd(),
62: #endif
63: prCTIME(),
64: ChrToOct(),
65: ClAndRedraw(),
66: #ifndef MAC
67: MakeErrors(),
68: #endif
69: CopyRegion(),
70: BufSelect(),
71: DelBlnkLines(),
72: DelNChar(),
73: DelNWord(),
74: OneWindow(),
75: DelPChar(),
76: DelPWord(),
77: DelReg(),
78: KillSome(),
79: DelWtSpace(),
80: DelCurWindow(),
81: KeyDesc(),
82: Digit(),
83: Digit0(),
84: Digit1(),
85: Digit2(),
86: Digit3(),
87: Digit4(),
88: Digit5(),
89: Digit6(),
90: Digit7(),
91: Digit8(),
92: Digit9(),
93: DescBindings(),
94: DescCom(),
95: Eof(),
96: Eol(),
97: Eos(),
98: Eow(),
99: ForPara(),
100: BackPara(),
101: BufErase(),
102: PtToMark(),
103: Extend(),
104: ExecMacro(),
105: RunMacro(),
106: Leave(),
107: FindFile(),
108: WindFind(),
109: FindTag(),
110: FDotTag(),
111: ToIndent(),
112: ForChar(),
113: FSexpr(),
114: ForWord(),
115: TimesFour(),
116: GoLine(),
117: GrowWindow(),
118: IncFSearch(),
119: IncRSearch(),
120: InsFile(),
121: Justify(),
122: RegJustify(),
123: SetLMargin(),
124: SetRMargin(),
125: BufKill(),
126: KillBos(),
127: KillEos(),
128: KillEOL(),
129: KillExpr(),
130: BufList(),
131: NotModified(),
132: NameMac(),
133: DelMacro(),
134: Newline(),
135: OpenLine(),
136: LineAI(),
137: #ifndef MAC
138: ShowErr(),
139: NextError(),
140: #endif /* MAC */
141: #ifdef MSDOS
142: PageScrollUp(),
143: PageScrollDown(),
144: #endif /* MSDOS */
145: #ifndef MAC
146: PrevError(),
147: #endif /* MAC */
148: NextLine(),
149: NextPage(),
150: NextWindow(),
151: Recur(),
152: PopMark(),
153: PageNWind(),
154: Tab(),
155: DoParen(),
156: #ifndef MAC
157: ParseAll(),
158: #endif
159: #ifdef SPELL
160: SpelWords(),
161: #endif
162: #ifdef JOB_CONTROL
163: PauseJove(),
164: #endif
165: PrevLine(),
166: PrevPage(),
167: PrevWindow(),
168: #ifndef MAC
169: Push(),
170: #endif
171: RegReplace(),
172: QRepSearch(),
173: QuotChar(),
174: ReadFile(),
175: DefKBDMac(),
176: RedrawDisplay(),
177: ReNamBuf(),
178: RepSearch(),
179: DownScroll(),
180: UpScroll(),
181: ForSearch(),
182: FSrchND(),
183: RevSearch(),
184: RSrchND(),
185: SelfInsert(),
186: SetVar(),
187: SetMark(),
188: #ifndef MAC
189: ShellCom(),
190: ShNoBuf(),
191: Shtypeout(),
192: ShToBuf(),
193: #endif
194: ShrWindow(),
195: Source(),
196: #ifdef SPELL
197: SpelBuffer(),
198: #endif
199: SplitWind(),
200: GotoWind(),
201: Remember(),
202: Forget(),
203: StrLength(),
204: TransChar(),
205: TransLines(),
206: SaveFile(),
207: WtModBuf(),
208: WriteFile(),
209: WriteMacs(),
210: WrtReg(),
211: Yank(),
212: YankPop(), PrVar(),
213: #ifndef MAC
214: FilterRegion(),
215: #endif
216: WNumLines(),
217: #ifdef IPROCS
218: ShellProc(),
219: ProcInt(),
220: ProcQuit(),
221: ProcKill(),
222: # ifndef PIPEPROCS
223: ProcEof(),
224: ProcStop(),
225: ProcCont(),
226: ProcDStop(),
227: # endif
228: ProcSendData(),
229: ProcNewline(),
230: ProcList(),
231: ProcBind(),
232: Iprocess(),
233: #endif
234:
235: #ifdef LISP
236: GSexpr(), /* Grind S Expression. */
237: AddSpecial(), /* add lisp special form */
238: #endif
239: CAutoExec(),
240: MAutoExec(),
241:
242: DefMAbbrev(),
243: DefGAbbrev(),
244: SaveAbbrevs(),
245: RestAbbrevs(),
246: EditAbbrevs(),
247: BindMtoW(),
248:
249: #ifdef CMT_FMT
250: Comment(),
251: #endif
252:
253: ScrollLeft(),
254: ScrollRight(),
255: MacInter(); /* This is the last one. */
256:
257:
258: #ifdef MAC
259: # define WIRED_CMD(c) c,'\0','\0' /* for About Jove... */
260: #else
261: # define WIRED_CMD(c) c
262: #endif /* MAC */
263:
264: #else /* TXT_TO_C */
265:
266: #ifdef MAC
267: # define WIRED_CMD(c) 0,'\0','\0'
268: #else
269: # define WIRED_CMD(c) 0
270: #endif
271: #endif /* TXT_TO_C */
272:
273: struct cmd commands[] = {
274: #ifdef LISP
275: FUNCTION, "add-lisp-special", WIRED_CMD(AddSpecial),
276: #endif
277: #ifdef ANSICODES
278: FUNCTION, "ansi-codes", WIRED_CMD(AnsiCodes),
279: #endif
280: FUNCTION, "append-region", WIRED_CMD(AppReg),
281: FUNCTION, "apropos", WIRED_CMD(Apropos),
282: FUNCTION, "auto-execute-command", WIRED_CMD(CAutoExec),
283: FUNCTION, "auto-execute-macro", WIRED_CMD(MAutoExec),
284: DefMinor(Fill), "auto-fill-mode", WIRED_CMD(0),
285: DefMinor(Indent), "auto-indent-mode", WIRED_CMD(0),
286: FUNCTION, "backward-character", WIRED_CMD(BackChar),
287: FUNCTION, "backward-list", WIRED_CMD(BList),
288: FUNCTION, "backward-paragraph", WIRED_CMD(BackPara),
289: FUNCTION, "backward-s-expression", WIRED_CMD(BSexpr),
290: FUNCTION, "backward-sentence", WIRED_CMD(Bos),
291: FUNCTION, "backward-up-list", WIRED_CMD(BUpList),
292: FUNCTION, "backward-word", WIRED_CMD(BackWord),
293: FUNCTION, "begin-kbd-macro", WIRED_CMD(Remember),
294: FUNCTION, "beginning-of-file", WIRED_CMD(Bof),
295: FUNCTION, "beginning-of-line", WIRED_CMD(Bol),
296: FUNCTION, "beginning-of-window", WIRED_CMD(Bow),
297: FUNCTION, "bind-to-key", WIRED_CMD(BindAKey),
298: FUNCTION, "bind-macro-to-key", WIRED_CMD(BindMac),
299: #ifdef ABBREV
300: FUNCTION, "bind-macro-to-word-abbrev", WIRED_CMD(BindMtoW),
301: #endif
302: FUNCTION, "buffer-position", WIRED_CMD(BufPos),
303: DefMajor(CMODE), "c-mode", WIRED_CMD(0),
304: FUNCTION, "case-character-capitalize", WIRED_CMD(CapChar),
305: FUNCTION, "case-region-lower", WIRED_CMD(CasRegLower),
306: FUNCTION, "case-region-upper", WIRED_CMD(CasRegUpper),
307: FUNCTION, "case-word-capitalize", WIRED_CMD(CapWord),
308: FUNCTION, "case-word-lower", WIRED_CMD(LowWord),
309: FUNCTION, "case-word-upper", WIRED_CMD(UppWord),
310: FUNCTION, "character-to-octal-insert", WIRED_CMD(ChrToOct),
311: #ifdef CHDIR
312: FUNCTION, "cd", WIRED_CMD(Chdir),
313: #endif
314: FUNCTION, "clear-and-redraw", WIRED_CMD(ClAndRedraw),
315: #ifndef MAC
316: FUNCTION, "compile-it", WIRED_CMD(MakeErrors),
317: #endif
318: #ifdef IPROCS
319: # ifndef PIPEPROCS
320: # ifdef TIOCSLTC
321: FUNCTION, "continue-process", WIRED_CMD(ProcCont),
322: # endif
323: # endif
324: #endif
325: FUNCTION, "copy-region", WIRED_CMD(CopyRegion),
326: #ifndef MAC
327: FUNCTION, "current-error", WIRED_CMD(ShowErr),
328: #endif
329: FUNCTION, "date", WIRED_CMD(prCTIME),
330: #ifdef ABBREV
331: FUNCTION, "define-global-word-abbrev", WIRED_CMD(DefGAbbrev),
332: FUNCTION, "define-mode-word-abbrev", WIRED_CMD(DefMAbbrev),
333: #endif
334: FUNCTION, "define-macro", WIRED_CMD(DefKBDMac),
335: FUNCTION, "delete-blank-lines", WIRED_CMD(DelBlnkLines),
336: FUNCTION, "delete-buffer", WIRED_CMD(BufKill),
337: FUNCTION, "delete-macro", WIRED_CMD(DelMacro),
338: FUNCTION, "delete-next-character", WIRED_CMD(DelNChar),
339: FUNCTION, "delete-other-windows", WIRED_CMD(OneWindow),
340: FUNCTION, "delete-previous-character", WIRED_CMD(DelPChar),
341: FUNCTION, "delete-white-space", WIRED_CMD(DelWtSpace),
342: FUNCTION, "delete-current-window", WIRED_CMD(DelCurWindow),
343: FUNCTION, "describe-bindings", WIRED_CMD(DescBindings),
344: FUNCTION, "describe-command", WIRED_CMD(DescCom),
345: FUNCTION, "describe-key", WIRED_CMD(KeyDesc),
346: FUNCTION, "describe-variable", WIRED_CMD(DescCom),
347: FUNCTION, "digit", WIRED_CMD(Digit),
348: FUNCTION, "digit-1", WIRED_CMD(Digit1),
349: FUNCTION, "digit-2", WIRED_CMD(Digit2),
350: FUNCTION, "digit-3", WIRED_CMD(Digit3),
351: FUNCTION, "digit-4", WIRED_CMD(Digit4),
352: FUNCTION, "digit-5", WIRED_CMD(Digit5),
353: FUNCTION, "digit-6", WIRED_CMD(Digit6),
354: FUNCTION, "digit-7", WIRED_CMD(Digit7),
355: FUNCTION, "digit-8", WIRED_CMD(Digit8),
356: FUNCTION, "digit-9", WIRED_CMD(Digit9),
357: FUNCTION, "digit-0", WIRED_CMD(Digit0),
358: #ifdef CHDIR
359: FUNCTION, "dirs", WIRED_CMD(prDIRS),
360: #endif
361: FUNCTION, "down-list", WIRED_CMD(FDownList),
362: #ifdef IPROCS
363: # ifndef PIPEPROCS
364: # ifdef TIOCSLTC
365: FUNCTION, "dstop-process", WIRED_CMD(ProcDStop),
366: # endif
367: # endif
368: #endif
369: #ifdef ABBREV
370: FUNCTION, "edit-word-abbrevs", WIRED_CMD(EditAbbrevs),
371: #endif
372: FUNCTION, "end-kbd-macro", WIRED_CMD(Forget),
373: FUNCTION, "end-of-file", WIRED_CMD(Eof),
374: FUNCTION, "end-of-line", WIRED_CMD(Eol),
375: FUNCTION, "end-of-window", WIRED_CMD(Eow),
376: #ifdef IPROCS
377: # ifndef PIPEPROCS
378: FUNCTION, "eof-process", WIRED_CMD(ProcEof),
379: # endif
380: #endif
381: FUNCTION, "erase-buffer", WIRED_CMD(BufErase),
382: FUNCTION, "exchange-point-and-mark", WIRED_CMD(PtToMark),
383: FUNCTION, "execute-named-command", WIRED_CMD(Extend),
384: FUNCTION, "execute-kbd-macro", WIRED_CMD(ExecMacro),
385: FUNCTION, "execute-macro", WIRED_CMD(RunMacro),
386: FUNCTION, "exit-jove", WIRED_CMD(Leave),
387: #ifdef CMT_FMT
388: FUNCTION, "fill-comment", WIRED_CMD(Comment),
389: #endif /* CMT_FMT */
390: FUNCTION, "fill-paragraph", WIRED_CMD(Justify),
391: FUNCTION, "fill-region", WIRED_CMD(RegJustify),
392: #ifndef MAC
393: FUNCTION, "filter-region", WIRED_CMD(FilterRegion),
394: #endif
395: FUNCTION, "find-file", WIRED_CMD(FindFile),
396: FUNCTION, "find-tag", WIRED_CMD(FindTag),
397: FUNCTION, "find-tag-at-point", WIRED_CMD(FDotTag),
398: FUNCTION, "first-non-blank", WIRED_CMD(ToIndent),
399: FUNCTION, "forward-character", WIRED_CMD(ForChar),
400: FUNCTION, "forward-list", WIRED_CMD(FList),
401: FUNCTION, "forward-paragraph", WIRED_CMD(ForPara),
402: FUNCTION, "forward-s-expression", WIRED_CMD(FSexpr),
403: FUNCTION, "forward-sentence", WIRED_CMD(Eos),
404: FUNCTION, "forward-word", WIRED_CMD(ForWord),
405: DefMajor(FUNDAMENTAL), "fundamental-mode", WIRED_CMD(0),
406: FUNCTION, "gather-numeric-argument", WIRED_CMD(TimesFour),
407: #ifdef LISP
408: FUNCTION, "grind-s-expr", WIRED_CMD(GSexpr),
409: #endif
410: FUNCTION, "goto-line", WIRED_CMD(GoLine),
411: FUNCTION, "goto-window-with-buffer", WIRED_CMD(GotoWind),
412: FUNCTION, "grow-window", WIRED_CMD(GrowWindow),
413: FUNCTION, "handle-tab", WIRED_CMD(Tab),
414: FUNCTION, "i-search-forward", WIRED_CMD(IncFSearch),
415: FUNCTION, "i-search-reverse", WIRED_CMD(IncRSearch),
416: FUNCTION, "insert-file", WIRED_CMD(InsFile),
417: #ifdef IPROCS
418: FUNCTION, "interrupt-process", WIRED_CMD(ProcInt),
419: FUNCTION, "i-shell-command", WIRED_CMD(Iprocess),
420: #endif
421: FUNCTION, "kill-next-word", WIRED_CMD(DelNWord),
422: FUNCTION, "kill-previous-word", WIRED_CMD(DelPWord),
423: #ifdef IPROCS
424: FUNCTION, "kill-process", WIRED_CMD(ProcKill),
425: #endif
426: FUNCTION, "kill-region", WIRED_CMD(DelReg),
427: FUNCTION, "kill-s-expression", WIRED_CMD(KillExpr),
428: FUNCTION, "kill-some-buffers", WIRED_CMD(KillSome),
429: FUNCTION, "kill-to-beginning-of-sentence", WIRED_CMD(KillBos),
430: FUNCTION, "kill-to-end-of-line", WIRED_CMD(KillEOL),
431: FUNCTION, "kill-to-end-of-sentence", WIRED_CMD(KillEos),
432: FUNCTION, "left-margin-here", WIRED_CMD(SetLMargin),
433: #ifdef LISP
434: DefMajor(LISPMODE), "lisp-mode", WIRED_CMD(0),
435: #endif
436: FUNCTION, "list-buffers", WIRED_CMD(BufList),
437: #ifdef IPROCS
438: FUNCTION, "list-processes", WIRED_CMD(ProcList),
439: #endif
440: FUNCTION, "make-buffer-unmodified", WIRED_CMD(NotModified),
441: FUNCTION, "make-macro-interactive", WIRED_CMD(MacInter),
442: FUNCTION, "name-kbd-macro", WIRED_CMD(NameMac),
443: FUNCTION, "newline", WIRED_CMD(Newline),
444: FUNCTION, "newline-and-backup", WIRED_CMD(OpenLine),
445: FUNCTION, "newline-and-indent", WIRED_CMD(LineAI),
446: #ifndef MAC
447: FUNCTION, "next-error", WIRED_CMD(NextError),
448: #endif
449: FUNCTION, "next-line", WIRED_CMD(NextLine),
450: FUNCTION, "next-page", WIRED_CMD(NextPage),
451: FUNCTION, "next-window", WIRED_CMD(NextWindow),
452: FUNCTION, "number-lines-in-window", WIRED_CMD(WNumLines),
453: DefMinor(OverWrite), "over-write-mode", WIRED_CMD(0),
454: FUNCTION, "page-next-window", WIRED_CMD(PageNWind),
455: FUNCTION, "paren-flash", WIRED_CMD(DoParen),
456: #ifndef MAC
457: FUNCTION, "parse-errors", WIRED_CMD(ErrParse),
458: #endif
459: #ifdef SPELL
460: FUNCTION, "parse-spelling-errors-in-buffer", WIRED_CMD(SpelWords),
461: #endif
462: #ifdef JOB_CONTROL
463: FUNCTION, "pause-jove", WIRED_CMD(PauseJove),
464: #else
465: # ifndef MAC
466: FUNCTION, "pause-jove", WIRED_CMD(Push),
467: # endif
468: #endif
469: FUNCTION, "pop-mark", WIRED_CMD(PopMark),
470: #ifdef CHDIR
471: FUNCTION, "popd", WIRED_CMD(Popd),
472: #endif
473: FUNCTION, "prefix-1", WIRED_CMD(EscPrefix),
474: FUNCTION, "prefix-2", WIRED_CMD(CtlxPrefix),
475: FUNCTION, "prefix-3", WIRED_CMD(MiscPrefix),
476: #ifndef MAC
477: FUNCTION, "previous-error", WIRED_CMD(PrevError),
478: #endif
479: FUNCTION, "previous-line", WIRED_CMD(PrevLine),
480: FUNCTION, "previous-page", WIRED_CMD(PrevPage),
481: FUNCTION, "previous-window", WIRED_CMD(PrevWindow),
482: FUNCTION, "print", WIRED_CMD(PrVar),
483: #ifdef IPROCS
484: FUNCTION, "process-bind-to-key", WIRED_CMD(ProcBind),
485: FUNCTION, "process-newline", WIRED_CMD(ProcNewline),
486: FUNCTION, "process-send-data-no-return", WIRED_CMD(ProcSendData),
487: #endif
488: #ifndef MAC
489: FUNCTION, "push-shell", WIRED_CMD(Push),
490: #endif
491: #ifdef CHDIR
492: FUNCTION, "pushd", WIRED_CMD(Pushd),
493: FUNCTION, "pwd", WIRED_CMD(prCWD),
494: #endif
495: FUNCTION, "query-replace-string", WIRED_CMD(QRepSearch),
496: #ifdef IPROCS
497: FUNCTION, "quit-process", WIRED_CMD(ProcQuit),
498: #endif
499: FUNCTION, "quoted-insert", WIRED_CMD(QuotChar),
500: #ifdef ABBREV
501: FUNCTION, "read-word-abbrev-file", WIRED_CMD(RestAbbrevs),
502: #endif
503: FUNCTION, "redraw-display", WIRED_CMD(RedrawDisplay),
504: FUNCTION, "recursive-edit", WIRED_CMD(Recur),
505: FUNCTION, "rename-buffer", WIRED_CMD(ReNamBuf),
506: FUNCTION, "replace-in-region", WIRED_CMD(RegReplace),
507: FUNCTION, "replace-string", WIRED_CMD(RepSearch),
508: FUNCTION, "right-margin-here", WIRED_CMD(SetRMargin),
509: FUNCTION, "save-file", WIRED_CMD(SaveFile),
510: FUNCTION, "scroll-down", WIRED_CMD(DownScroll),
511: FUNCTION, "scroll-left", WIRED_CMD(ScrollLeft),
512: #ifdef MSDOS
513: FUNCTION, "scroll-next-page", WIRED_CMD(PageScrollUp),
514: FUNCTION, "scroll-previous-page", WIRED_CMD(PageScrollDown),
515: #endif /* MSDOS */
516: FUNCTION, "scroll-right", WIRED_CMD(ScrollRight),
517: FUNCTION, "scroll-up", WIRED_CMD(UpScroll),
518: FUNCTION, "search-forward", WIRED_CMD(ForSearch),
519: FUNCTION, "search-forward-nd", WIRED_CMD(FSrchND),
520: FUNCTION, "search-reverse", WIRED_CMD(RevSearch),
521: FUNCTION, "search-reverse-nd", WIRED_CMD(RSrchND),
522: FUNCTION, "select-buffer", WIRED_CMD(BufSelect),
523: #ifdef MSDOS
524: FUNCTION, "select-buffer-1", WIRED_CMD(Buf1Select),
525: FUNCTION, "select-buffer-2", WIRED_CMD(Buf2Select),
526: FUNCTION, "select-buffer-3", WIRED_CMD(Buf3Select),
527: FUNCTION, "select-buffer-4", WIRED_CMD(Buf4Select),
528: FUNCTION, "select-buffer-5", WIRED_CMD(Buf5Select),
529: FUNCTION, "select-buffer-6", WIRED_CMD(Buf6Select),
530: FUNCTION, "select-buffer-7", WIRED_CMD(Buf7Select),
531: FUNCTION, "select-buffer-8", WIRED_CMD(Buf8Select),
532: FUNCTION, "select-buffer-9", WIRED_CMD(Buf9Select),
533: FUNCTION, "select-buffer-10", WIRED_CMD(Buf10Select),
534: #endif /* MSDOS */
535: FUNCTION, "self-insert", WIRED_CMD(SelfInsert),
536: FUNCTION, "set", WIRED_CMD(SetVar),
537: FUNCTION, "set-mark", WIRED_CMD(SetMark),
538: #ifdef IPROCS /* for GNU compatibility */
539: FUNCTION, "shell", WIRED_CMD(ShellProc),
540: #endif
541: #ifndef MAC
542: FUNCTION, "shell-command", WIRED_CMD(ShellCom),
543: FUNCTION, "shell-command-no-buffer", WIRED_CMD(ShNoBuf),
544: FUNCTION, "shell-command-to-buffer", WIRED_CMD(ShToBuf),
545: FUNCTION, "shell-command-with-typeout", WIRED_CMD(Shtypeout),
546: #endif
547: DefMinor(ShowMatch), "show-match-mode", WIRED_CMD(0),
548: FUNCTION, "shrink-window", WIRED_CMD(ShrWindow),
549: FUNCTION, "source", WIRED_CMD(Source),
550: #ifdef SPELL
551: FUNCTION, "spell-buffer", WIRED_CMD(SpelBuffer),
552: #endif
553: FUNCTION, "split-current-window", WIRED_CMD(SplitWind),
554: FUNCTION, "start-remembering", WIRED_CMD(Remember),
555: #ifdef IPROCS
556: # ifndef PIPEPROCS
557: FUNCTION, "stop-process", WIRED_CMD(ProcStop),
558: # endif
559: #endif
560: FUNCTION, "stop-remembering", WIRED_CMD(Forget),
561: FUNCTION, "string-length", WIRED_CMD(StrLength),
562: #ifdef JOB_CONTROL
563: FUNCTION, "suspend-jove", WIRED_CMD(PauseJove),
564: #endif
565: DefMajor(TEXT), "text-mode", WIRED_CMD(0),
566: FUNCTION, "transpose-characters", WIRED_CMD(TransChar),
567: FUNCTION, "transpose-lines", WIRED_CMD(TransLines),
568: FUNCTION, "unbind-key", WIRED_CMD(UnbindC),
569: FUNCTION, "version", WIRED_CMD(ShowVersion),
570: FUNCTION, "visible-spaces-in-window", WIRED_CMD(WVisSpace),
571: FUNCTION, "visit-file", WIRED_CMD(ReadFile),
572: FUNCTION, "window-find", WIRED_CMD(WindFind),
573: #ifdef ABBREV
574: DefMinor(Abbrev), "word-abbrev-mode", WIRED_CMD(0),
575: FUNCTION, "write-word-abbrev-file", WIRED_CMD(SaveAbbrevs),
576: #endif
577: FUNCTION, "write-file", WIRED_CMD(WriteFile),
578: FUNCTION, "write-macros-to-file", WIRED_CMD(WriteMacs),
579: FUNCTION, "write-modified-files", WIRED_CMD(WtModBuf),
580: FUNCTION, "write-region", WIRED_CMD(WrtReg),
581: FUNCTION, "yank", WIRED_CMD(Yank),
582: FUNCTION, "yank-pop", WIRED_CMD(YankPop),
583: FUNCTION, 0, 0
584: };
585:
586: #ifndef TXT_TO_C
587: data_obj *
588: findcom(prompt)
589: char *prompt;
590: {
591: /* This is for faster startup. This just reads until a space or a
592: tab or a newline character is reached, and then does a
593: semi-hashed lookup on that string. This should be much faster
594: than initializing the minibuffer for each line. */
595: if (InJoverc) {
596: char cmdbuf[128];
597: register struct cmd *cmd;
598: register char *cp = cmdbuf;
599: #if !(defined(IBMPC) || defined(MAC))
600: register int c;
601: #else
602: int c;
603: #endif
604: struct cmd *which;
605: int cmdlen,
606: found = 0;
607: static struct cmd *cmdhash[26];
608: static int beenhere = NO;
609:
610: /* special case for prefix commands--only upper case ones */
611: #define hash(c) (c - 'a')
612:
613: /* initialize the hash table */
614: if (beenhere == NO) {
615: int lastc = 0;
616:
617: for (cmd = commands; cmd->Name != 0; cmd++)
618: if (lastc != cmd->Name[0]) {
619: lastc = cmd->Name[0];
620: cmdhash[hash(lastc)] = cmd;
621: }
622: beenhere = YES;
623: }
624: #ifdef MAC
625: menus_off(); /* Block menu choices during input */
626: #endif
627: /* gather the cmd name */
628: while (((c = getch()) != EOF) && !index(" \t\r\n", c)) {
629: #if (defined(IBMPC) || defined(MAC))
630: lower(&c);
631: #else
632: if (isupper(c))
633: c = tolower(c);
634: #endif
635: *cp++ = c;
636: }
637: if (c == EOF)
638: return 0;
639: *cp = '\0';
640: cmdlen = cp - cmdbuf;
641: if (cmdlen == 0)
642: return 0;
643:
644: /* look it up (in the reduced search space) */
645: if (islower(cmdbuf[0]))
646: for (cmd = cmdhash[hash(cmdbuf[0])]; cmd != 0 && cmd->Name[0] == cmdbuf[0]; cmd++) {
647: if (strncmp(cmd->Name, cmdbuf, cmdlen) == 0) {
648: if (strcmp(cmd->Name, cmdbuf) == 0)
649: return (data_obj *) cmd;
650: found += 1;
651: which = cmd;
652: }
653: }
654: if (found > 1)
655: complain("[\"%s\" ambiguous]", cmdbuf);
656: else if (found == 0)
657: complain("[\"%s\" unknown]", cmdbuf);
658: else
659: return (data_obj *) which;
660: } else {
661: static char *strings[(sizeof commands) / sizeof (commands[0])];
662: static int beenhere = NO;
663: register int com;
664:
665: if (beenhere == NO) {
666: register char **strs = strings;
667: register struct cmd *c;
668:
669: for (c = commands; c->Name != 0; c++)
670: *strs++ = c->Name;
671: *strs = 0;
672: beenhere = YES;
673: }
674:
675: if ((com = complete(strings, prompt, CASEIND)) < 0)
676: return 0;
677: return (data_obj *) &commands[com];
678: }
679: /* NOTREACHED */
680: }
681: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.