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