home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume1 / 8711 / microemacs-3.9 / 15 < prev    next >
Text File  |  1987-11-20  |  41KB  |  1,153 lines

  1. Article 92 of comp.sources.misc:
  2. Path: tut!osu-cis!cbosgd!mandrill!hal!ncoast!allbery
  3. From: nwd@j.cc.purdue.edu (Daniel Lawrence)
  4. Newsgroups: comp.sources.misc
  5. Subject: MicroEmacs 3.9 (Part 15 of 16)
  6. Message-ID: <5691@ncoast.UUCP>
  7. Date: 17 Nov 87 02:37:00 GMT
  8. Sender: allbery@ncoast.UUCP
  9. Lines: 1138
  10. Approved: allbery@ncoast.UUCP
  11. X-Archive: comp.sources.misc/microemacs-3.9/14
  12.  
  13. # This is a shar archive.
  14. # Remove everything above this line.
  15. # Run the file through sh, not csh.
  16. # (type `sh mes.15')
  17. # If you do not see the message
  18. #    `mes.15 completed!'
  19. # then the file was incomplete.
  20. echo extracting - ebind.h
  21. sed 's/^X//' > ebind.h << 'FRIDAY_NIGHT'
  22. X/*    EBIND:        Initial default key to function bindings for
  23. X            MicroEMACS 3.7
  24. X*/
  25. X
  26. X/*
  27. X * Command table.
  28. X * This table  is *roughly* in ASCII order, left to right across the
  29. X * characters of the command. This explains the funny location of the
  30. X * control-X commands.
  31. X */
  32. XKEYTAB  keytab[NBINDS] = {
  33. X    {CTRL|'A',        gotobol},
  34. X    {CTRL|'B',        backchar},
  35. X    {CTRL|'C',        insspace},
  36. X    {CTRL|'D',        forwdel},
  37. X    {CTRL|'E',        gotoeol},
  38. X    {CTRL|'F',        forwchar},
  39. X    {CTRL|'G',        ctrlg},
  40. X    {CTRL|'H',        backdel},
  41. X    {CTRL|'I',        tab},
  42. X    {CTRL|'J',        indent},
  43. X    {CTRL|'K',        killtext},
  44. X    {CTRL|'L',        refresh},
  45. X    {CTRL|'M',        newline},
  46. X    {CTRL|'N',        forwline},
  47. X    {CTRL|'O',        openline},
  48. X    {CTRL|'P',        backline},
  49. X    {CTRL|'Q',        quote},
  50. X    {CTRL|'R',        backsearch},
  51. X    {CTRL|'S',        forwsearch},
  52. X    {CTRL|'T',        twiddle},
  53. X    {CTRL|'U',        unarg},
  54. X    {CTRL|'V',        forwpage},
  55. X    {CTRL|'W',        killregion},
  56. X    {CTRL|'X',        cex},
  57. X    {CTRL|'Y',        yank},
  58. X    {CTRL|'Z',        backpage},
  59. X    {CTRL|']',        meta},
  60. X    {CTLX|CTRL|'B',        listbuffers},
  61. X    {CTLX|CTRL|'C',        quit},          /* Hard quit.           */
  62. X#if    AEDIT
  63. X    {CTLX|CTRL|'D',        detab},
  64. X    {CTLX|CTRL|'E',        entab},
  65. X#endif
  66. X    {CTLX|CTRL|'F',        filefind},
  67. X    {CTLX|CTRL|'I',        insfile},
  68. X    {CTLX|CTRL|'L',        lowerregion},
  69. X    {CTLX|CTRL|'M',        delmode},
  70. X    {CTLX|CTRL|'N',        mvdnwind},
  71. X    {CTLX|CTRL|'O',        deblank},
  72. X    {CTLX|CTRL|'P',        mvupwind},
  73. X    {CTLX|CTRL|'R',        fileread},
  74. X    {CTLX|CTRL|'S',        filesave},
  75. X#if    AEDIT
  76. X    {CTLX|CTRL|'T',        trim},
  77. X#endif
  78. X    {CTLX|CTRL|'U',        upperregion},
  79. X    {CTLX|CTRL|'V',        viewfile},
  80. X    {CTLX|CTRL|'W',        filewrite},
  81. X    {CTLX|CTRL|'X',        swapmark},
  82. X    {CTLX|CTRL|'Z',        shrinkwind},
  83. X    {CTLX|'?',        deskey},
  84. X    {CTLX|'!',        spawn},
  85. X    {CTLX|'@',        pipecmd},
  86. X    {CTLX|'#',        filter},
  87. X    {CTLX|'$',        execprg},
  88. X    {CTLX|'=',        showcpos},
  89. X    {CTLX|'(',        ctlxlp},
  90. X    {CTLX|')',        ctlxrp},
  91. X    {CTLX|'^',        enlargewind},
  92. X    {CTLX|'0',        delwind},
  93. X    {CTLX|'1',        onlywind},
  94. X    {CTLX|'2',        splitwind},
  95. X    {CTLX|'A',        setvar},
  96. X    {CTLX|'B',        usebuffer},
  97. X    {CTLX|'C',        spawncli},
  98. X#if    BSD
  99. X    {CTLX|'D',        bktoshell},
  100. X#endif
  101. X    {CTLX|'E',        ctlxe},
  102. X    {CTLX|'F',        setfillcol},
  103. X    {CTLX|'K',        killbuffer},
  104. X    {CTLX|'M',        setmode},
  105. X    {CTLX|'N',        filename},
  106. X    {CTLX|'O',        nextwind},
  107. X    {CTLX|'P',        prevwind},
  108. X#if    ISRCH
  109. X    {CTLX|'R',        risearch},
  110. X    {CTLX|'S',        fisearch},
  111. X#endif
  112. X    {CTLX|'W',        resize},
  113. X    {CTLX|'X',        nextbuffer},
  114. X    {CTLX|'Z',        enlargewind},
  115. X#if    WORDPRO
  116. X    {META|CTRL|'C',        wordcount},
  117. X#endif
  118. X#if    PROC
  119. X    {META|CTRL|'E',        execproc},
  120. X#endif
  121. X#if    CFENCE
  122. X    {META|CTRL|'F',        getfence},
  123. X#endif
  124. X    {META|CTRL|'H',        delbword},
  125. X    {META|CTRL|'K',        unbindkey},
  126. X    {META|CTRL|'L',        reposition},
  127. X    {META|CTRL|'M',        delgmode},
  128. X    {META|CTRL|'N',        namebuffer},
  129. X    {META|CTRL|'R',        qreplace},
  130. X    {META|CTRL|'S',        newsize},
  131. X    {META|CTRL|'T',        newwidth},
  132. X    {META|CTRL|'V',        scrnextdw},
  133. X#if    WORDPRO
  134. X    {META|CTRL|'W',        killpara},
  135. X#endif
  136. X    {META|CTRL|'Z',        scrnextup},
  137. X    {META|' ',        setmark},
  138. X    {META|'?',        help},
  139. X    {META|'!',        reposition},
  140. X    {META|'.',        setmark},
  141. X    {META|'>',        gotoeob},
  142. X    {META|'<',        gotobob},
  143. X    {META|'~',        unmark},
  144. X#if    APROP
  145. X    {META|'A',        apro},
  146. X#endif
  147. X    {META|'B',        backword},
  148. X    {META|'C',        capword},
  149. X    {META|'D',        delfword},
  150. X#if    CRYPT
  151. X    {META|'E',        setkey},
  152. X#endif
  153. X    {META|'F',        forwword},
  154. X    {META|'G',        gotoline},
  155. X    {META|'K',        bindtokey},
  156. X    {META|'L',        lowerword},
  157. X    {META|'M',        setgmode},
  158. X#if    WORDPRO
  159. X    {META|'N',        gotoeop},
  160. X    {META|'P',        gotobop},
  161. X    {META|'Q',        fillpara},
  162. X#endif
  163. X    {META|'R',        sreplace},
  164. X#if    BSD
  165. X    {META|'S',        bktoshell},
  166. X#endif
  167. X    {META|'U',        upperword},
  168. X    {META|'V',        backpage},
  169. X    {META|'W',        copyregion},
  170. X    {META|'X',        namedcmd},
  171. X    {META|'Z',        quickexit},
  172. X    {META|0x7F,              delbword},
  173. X
  174. X#if    MSDOS & (HP150 == 0) & (WANGPC == 0) & (HP110 == 0)
  175. X    {SPEC|CTRL|'_',        forwhunt},
  176. X    {SPEC|CTRL|'S',        backhunt},
  177. X    {SPEC|71,        gotobob},
  178. X    {SPEC|72,        backline},
  179. X    {SPEC|73,        backpage},
  180. X    {SPEC|75,        backchar},
  181. X    {SPEC|77,        forwchar},
  182. X    {SPEC|79,        gotoeob},
  183. X    {SPEC|80,        forwline},
  184. X    {SPEC|81,        forwpage},
  185. X    {SPEC|82,        insspace},
  186. X    {SPEC|83,        forwdel},
  187. X    {SPEC|115,        backword},
  188. X    {SPEC|116,        forwword},
  189. X#if    WORDPRO
  190. X    {SPEC|132,        gotobop},
  191. X    {SPEC|118,        gotoeop},
  192. X#endif
  193. X    {SPEC|84,        cbuf1},
  194. X    {SPEC|85,        cbuf2},
  195. X    {SPEC|86,        cbuf3},
  196. X    {SPEC|87,        cbuf4},
  197. X    {SPEC|88,        cbuf5},
  198. X    {SPEC|89,        cbuf6},
  199. X    {SPEC|90,        cbuf7},
  200. X    {SPEC|91,        cbuf8},
  201. X    {SPEC|92,        cbuf9},
  202. X    {SPEC|93,        cbuf10},
  203. X#endif
  204. X
  205. X#if    HP150
  206. X    {SPEC|32,        backline},
  207. X    {SPEC|33,        forwline},
  208. X    {SPEC|35,        backchar},
  209. X    {SPEC|34,        forwchar},
  210. X    {SPEC|44,        gotobob},
  211. X    {SPEC|46,        forwpage},
  212. X    {SPEC|47,        backpage},
  213. X    {SPEC|82,        nextwind},
  214. X    {SPEC|68,        openline},
  215. X    {SPEC|69,        killtext},
  216. X    {SPEC|65,        forwdel},
  217. X    {SPEC|64,        ctlxe},
  218. X    {SPEC|67,        refresh},
  219. X    {SPEC|66,        reposition},
  220. X    {SPEC|83,        help},
  221. X    {SPEC|81,        deskey},
  222. X#endif
  223. X
  224. X#if    HP110
  225. X    {SPEC|0x4b,        backchar},
  226. X    {SPEC|0x4d,        forwchar},
  227. X    {SPEC|0x48,        backline},
  228. X    {SPEC|0x50,        forwline},
  229. X    {SPEC|0x43,        help},
  230. X    {SPEC|0x73,        backword},
  231. X    {SPEC|0x74,        forwword},
  232. X    {SPEC|0x49,        backpage},
  233. X    {SPEC|0x51,        forwpage},
  234. X    {SPEC|84,        cbuf1},
  235. X    {SPEC|85,        cbuf2},
  236. X    {SPEC|86,        cbuf3},
  237. X    {SPEC|87,        cbuf4},
  238. X    {SPEC|88,        cbuf5},
  239. X    {SPEC|89,        cbuf6},
  240. X    {SPEC|90,        cbuf7},
  241. X    {SPEC|91,        cbuf8},
  242. X#endif
  243. X
  244. X#if    AMIGA
  245. X    {SPEC|'?',        help},
  246. X    {SPEC|'A',        backline},
  247. X    {SPEC|'B',        forwline},
  248. X    {SPEC|'C',        forwchar},
  249. X    {SPEC|'D',        backchar},
  250. X    {SPEC|'T',        backpage},
  251. X    {SPEC|'S',        forwpage},
  252. X    {SPEC|'a',        backword},
  253. X    {SPEC|'`',        forwword},
  254. X    {SPEC|'P',        cbuf1},
  255. X    {SPEC|'Q',        cbuf2},
  256. X    {SPEC|'R',        cbuf3},
  257. X    {SPEC|'S',        cbuf4},
  258. X    {SPEC|'T',        cbuf5},
  259. X    {SPEC|'U',        cbuf6},
  260. X    {SPEC|'V',        cbuf7},
  261. X    {SPEC|'W',        cbuf8},
  262. X    {SPEC|'X',        cbuf9},
  263. X    {SPEC|'Y',        cbuf10},
  264. X    {127,            forwdel},
  265. X#endif
  266. X
  267. X#if    ST520
  268. X    {SPEC|'b',        help},
  269. X    {SPEC|'H',        backline},
  270. X    {SPEC|'P',        forwline},
  271. X    {SPEC|'M',        forwchar},
  272. X    {SPEC|'K',        backchar},
  273. X    {SPEC|'t',        setmark},
  274. X    {SPEC|'a',        yank},
  275. X    {SPEC|'R',        insspace},
  276. X    {SPEC|'G',        gotobob},
  277. X    {127,            forwdel},
  278. X    {SPEC|84,        cbuf1},
  279. X    {SPEC|85,        cbuf2},
  280. X    {SPEC|86,        cbuf3},
  281. X    {SPEC|87,        cbuf4},
  282. X    {SPEC|88,        cbuf5},
  283. X    {SPEC|89,        cbuf6},
  284. X    {SPEC|90,        cbuf7},
  285. X    {SPEC|91,        cbuf8},
  286. X    {SPEC|92,        cbuf9},
  287. X    {SPEC|93,        cbuf10},
  288. X#endif
  289. X
  290. X#if  WANGPC
  291. X    SPEC|0xE0,              quit,           /* Cancel */
  292. X    SPEC|0xE1,              help,           /* Help */
  293. X    SPEC|0xF1,              help,           /* ^Help */
  294. X    SPEC|0xE3,              ctrlg,          /* Print */
  295. X    SPEC|0xF3,              ctrlg,          /* ^Print */
  296. X    SPEC|0xC0,              backline,       /* North */
  297. X    SPEC|0xD0,              gotobob,        /* ^North */
  298. X    SPEC|0xC1,              forwchar,       /* East */
  299. X    SPEC|0xD1,              gotoeol,        /* ^East */
  300. X    SPEC|0xC2,              forwline,       /* South */
  301. X    SPEC|0xD2,              gotobop,        /* ^South */
  302. X    SPEC|0xC3,              backchar,       /* West */
  303. X    SPEC|0xD3,              gotobol,        /* ^West */
  304. X    SPEC|0xC4,              ctrlg,          /* Home */
  305. X    SPEC|0xD4,              gotobob,        /* ^Home */
  306. X    SPEC|0xC5,              filesave,       /* Execute */
  307. X    SPEC|0xD5,              ctrlg,          /* ^Execute */
  308. X    SPEC|0xC6,              insfile,        /* Insert */
  309. X    SPEC|0xD6,              ctrlg,          /* ^Insert */
  310. X    SPEC|0xC7,              forwdel,        /* Delete */
  311. X    SPEC|0xD7,              killregion,     /* ^Delete */
  312. X    SPEC|0xC8,              backpage,       /* Previous */
  313. X    SPEC|0xD8,              prevwind,       /* ^Previous */
  314. X    SPEC|0xC9,              forwpage,       /* Next */
  315. X    SPEC|0xD9,              nextwind,       /* ^Next */
  316. X    SPEC|0xCB,              ctrlg,          /* Erase */
  317. X    SPEC|0xDB,              ctrlg,          /* ^Erase */
  318. X    SPEC|0xDC,              ctrlg,          /* ^Tab */
  319. X    SPEC|0xCD,              ctrlg,          /* BackTab */
  320. X    SPEC|0xDD,              ctrlg,          /* ^BackTab */
  321. X    SPEC|0x80,              ctrlg,          /* Indent */
  322. X    SPEC|0x90,              ctrlg,          /* ^Indent */
  323. X    SPEC|0x81,              ctrlg,          /* Page */
  324. X    SPEC|0x91,              ctrlg,          /* ^Page */
  325. X    SPEC|0x82,              ctrlg,          /* Center */
  326. X    SPEC|0x92,              ctrlg,          /* ^Center */
  327. X    SPEC|0x83,              ctrlg,          /* DecTab */
  328. X    SPEC|0x93,              ctrlg,          /* ^DecTab */
  329. X    SPEC|0x84,              ctrlg,          /* Format */
  330. X    SPEC|0x94,              ctrlg,          /* ^Format */
  331. X    SPEC|0x85,              ctrlg,          /* Merge */
  332. X    SPEC|0x95,              ctrlg,          /* ^Merge */
  333. X    SPEC|0x86,              setmark,        /* Note */
  334. X    SPEC|0x96,              ctrlg,          /* ^Note */
  335. X    SPEC|0x87,              ctrlg,          /* Stop */
  336. X    SPEC|0x97,              ctrlg,          /* ^Stop */
  337. X    SPEC|0x88,              forwsearch,     /* Srch */
  338. X    SPEC|0x98,              backsearch,     /* ^Srch */
  339. X    SPEC|0x89,              sreplace,       /* Replac */
  340. X    SPEC|0x99,              qreplace,       /* ^Replac */
  341. X    SPEC|0x8A,              ctrlg,          /* Copy */
  342. X    SPEC|0x9A,              ctrlg,          /* ^Copy */
  343. X    SPEC|0x8B,              ctrlg,          /* Move */
  344. X    SPEC|0x9B,              ctrlg,          /* ^Move */
  345. X    SPEC|0x8C,              namedcmd,       /* Command */
  346. X    SPEC|0x9C,              spawn,          /* ^Command */
  347. X    SPEC|0x8D,              ctrlg,          /* ^ */
  348. X    SPEC|0x9D,              ctrlg,          /* ^^ */
  349. X    SPEC|0x8E,              ctrlg,          /* Blank */
  350. X    SPEC|0x9E,              ctrlg,          /* ^Blank */
  351. X    SPEC|0x8F,              gotoline,       /* GoTo */
  352. X    SPEC|0x9F,              usebuffer,      /* ^GoTo */
  353. X#endif
  354. X    {0x7F,            backdel},
  355. X
  356. X    /* special internal bindings */
  357. X    SPEC|META|'W',        wrapword,    /* called on word wrap */
  358. X    SPEC|META|'C',        nullproc,    /*  every command input */
  359. X    SPEC|META|'R',        nullproc,    /*  on file read */
  360. X    {0,            NULL}
  361. X};
  362. X
  363. X#if RAINBOW
  364. X
  365. X#include "rainbow.h"
  366. X
  367. X/*
  368. X * Mapping table from the LK201 function keys to the internal EMACS character.
  369. X */
  370. X
  371. Xshort lk_map[][2] = {
  372. X    Up_Key,                         CTRL+'P',
  373. X    Down_Key,                       CTRL+'N',
  374. X    Left_Key,                       CTRL+'B',
  375. X    Right_Key,                      CTRL+'F',
  376. X    Shift+Left_Key,                 META+'B',
  377. X    Shift+Right_Key,                META+'F',
  378. X    Control+Left_Key,               CTRL+'A',
  379. X    Control+Right_Key,              CTRL+'E',
  380. X    Prev_Scr_Key,                   META+'V',
  381. X    Next_Scr_Key,                   CTRL+'V',
  382. X    Shift+Up_Key,                   META+'<',
  383. X    Shift+Down_Key,                 META+'>',
  384. X    Cancel_Key,                     CTRL+'G',
  385. X    Find_Key,                       CTRL+'S',
  386. X    Shift+Find_Key,                 CTRL+'R',
  387. X    Insert_Key,                     CTRL+'Y',
  388. X    Options_Key,                    CTRL+'D',
  389. X    Shift+Options_Key,              META+'D',
  390. X    Remove_Key,                     CTRL+'W',
  391. X    Shift+Remove_Key,               META+'W',
  392. X    Select_Key,                     CTRL+'@',
  393. X    Shift+Select_Key,               CTLX+CTRL+'X',
  394. X    Interrupt_Key,                  CTRL+'U',
  395. X    Keypad_PF2,                     META+'L',
  396. X    Keypad_PF3,                     META+'C',
  397. X    Keypad_PF4,                     META+'U',
  398. X    Shift+Keypad_PF2,               CTLX+CTRL+'L',
  399. X    Shift+Keypad_PF4,               CTLX+CTRL+'U',
  400. X    Keypad_1,                       CTLX+'1',
  401. X    Keypad_2,                       CTLX+'2',
  402. X    Do_Key,                         CTLX+'E',
  403. X    Keypad_4,                       CTLX+CTRL+'B',
  404. X    Keypad_5,                       CTLX+'B',
  405. X    Keypad_6,                       CTLX+'K',
  406. X    Resume_Key,                     META+'!',
  407. X    Control+Next_Scr_Key,           CTLX+'N',
  408. X    Control+Prev_Scr_Key,           CTLX+'P',
  409. X    Control+Up_Key,                 CTLX+CTRL+'P',
  410. X    Control+Down_Key,               CTLX+CTRL+'N',
  411. X    Help_Key,                       CTLX+'=',
  412. X    Shift+Do_Key,                   CTLX+'(',
  413. X    Control+Do_Key,                 CTLX+')',
  414. X    Keypad_0,                       CTLX+'Z',
  415. X    Shift+Keypad_0,                 CTLX+CTRL+'Z',
  416. X    Main_Scr_Key,                   CTRL+'C',
  417. X    Keypad_Enter,                   CTLX+'!',
  418. X    Exit_Key,                       CTLX+CTRL+'C',
  419. X    Shift+Exit_Key,                 CTRL+'Z'
  420. X};
  421. X
  422. X#define lk_map_size     (sizeof(lk_map)/2)
  423. X#endif
  424. X
  425. FRIDAY_NIGHT
  426. echo extracting - edef.h
  427. sed 's/^X//' > edef.h << 'FRIDAY_NIGHT'
  428. X/*    EDEF:        Global variable definitions for
  429. X            MicroEMACS 3.9
  430. X
  431. X            written by Dave G. Conroy
  432. X            modified by Steve Wilhite, George Jones
  433. X            greatly modified by Daniel Lawrence
  434. X*/
  435. X
  436. X/* some global fuction declarations */
  437. X
  438. Xchar *flook();
  439. Xchar *getctext();
  440. Xchar *getfname();
  441. Xchar *getval();
  442. Xchar *gtenv();
  443. Xchar *gtfun();
  444. Xchar *gtusr();
  445. Xchar *itoa();
  446. Xchar *ltos();
  447. Xchar *malloc();
  448. Xchar *mklower();
  449. Xchar *mkupper();
  450. Xchar *strcat();
  451. Xchar *strcpy();
  452. Xchar *strncpy();
  453. Xchar *token();
  454. Xchar *transbind();
  455. Xunsigned int getckey();
  456. Xunsigned int stock();
  457. X
  458. X#ifdef    maindef
  459. X
  460. X/* for MAIN.C */
  461. X
  462. X/* initialized global definitions */
  463. X
  464. Xint     fillcol = 72;                   /* Current fill column          */
  465. Xshort   kbdm[NKBDM];            /* Macro                        */
  466. Xchar    *execstr = NULL;        /* pointer to string to execute    */
  467. Xchar    golabel[NPAT] = "";        /* current line to go to    */
  468. Xint    execlevel = 0;            /* execution IF level        */
  469. Xint    eolexist = TRUE;        /* does clear to EOL exist    */
  470. Xint    revexist = FALSE;        /* does reverse video exist?    */
  471. Xint    flickcode = FALSE;        /* do flicker supression?    */
  472. Xchar    *modename[] = {            /* name of modes        */
  473. X    "WRAP", "CMODE", "SPELL", "EXACT", "VIEW", "OVER",
  474. X    "MAGIC", "CRYPT", "ASAVE"};
  475. Xchar    modecode[] = "WCSEVOMYA";    /* letters to represent modes    */
  476. Xint    gmode = 0;            /* global editor mode        */
  477. Xint    gflags = GFREAD;        /* global control flag        */
  478. Xint    gfcolor = 7;            /* global forgrnd color (white)    */
  479. Xint    gbcolor    = 0;            /* global backgrnd color (black)*/
  480. Xint    gasave = 256;            /* global ASAVE size        */
  481. Xint    gacount = 256;            /* count until next ASAVE    */
  482. Xint     sgarbf  = TRUE;                 /* TRUE if screen is garbage    */
  483. Xint     mpresf  = FALSE;                /* TRUE if message in last line */
  484. Xint    clexec    = FALSE;        /* command line execution flag    */
  485. Xint    mstore    = FALSE;        /* storing text to macro flag    */
  486. Xint    discmd    = TRUE;            /* display command flag        */
  487. Xint    disinp    = TRUE;            /* display input characters    */
  488. Xstruct    BUFFER *bstore = NULL;        /* buffer to store macro text to*/
  489. Xint     vtrow   = 0;                    /* Row location of SW cursor */
  490. Xint     vtcol   = 0;                    /* Column location of SW cursor */
  491. Xint     ttrow   = HUGE;                 /* Row location of HW cursor */
  492. Xint     ttcol   = HUGE;                 /* Column location of HW cursor */
  493. Xint    lbound    = 0;            /* leftmost column of current line
  494. X                       being displayed */
  495. Xint    taboff    = 0;            /* tab offset for display    */
  496. Xint    metac = CTRL | '[';        /* current meta character */
  497. Xint    ctlxc = CTRL | 'X';        /* current control X prefix char */
  498. Xint    reptc = CTRL | 'U';        /* current universal repeat char */
  499. Xint    abortc = CTRL | 'G';        /* current abort command char    */
  500. X
  501. Xint    quotec = 0x11;            /* quote char during mlreply() */
  502. Xchar    *cname[] = {            /* names of colors        */
  503. X    "BLACK", "RED", "GREEN", "YELLOW", "BLUE",
  504. X    "MAGENTA", "CYAN", "WHITE"};
  505. XKILL *kbufp  = NULL;        /* current kill buffer chunk pointer    */
  506. XKILL *kbufh  = NULL;        /* kill buffer header pointer        */
  507. Xint kused = KBLOCK;        /* # of bytes used in kill buffer    */
  508. XWINDOW *swindow = NULL;        /* saved window pointer            */
  509. Xint cryptflag = FALSE;        /* currently encrypting?        */
  510. Xshort    *kbdptr;        /* current position in keyboard buf */
  511. Xshort    *kbdend = &kbdm[0];    /* ptr to end of the keyboard */
  512. Xint    kbdmode = STOP;        /* current keyboard macro mode    */
  513. Xint    kbdrep = 0;        /* number of repetitions    */
  514. Xint    restflag = FALSE;    /* restricted use?        */
  515. Xint    lastkey = 0;        /* last keystoke        */
  516. Xint    seed = 0;        /* random number seed        */
  517. Xlong    envram = 0l;    /* # of bytes current in use by malloc */
  518. Xint    macbug = FALSE;        /* macro debuging flag        */
  519. Xchar    errorm[] = "ERROR";    /* error literal        */
  520. Xchar    truem[] = "TRUE";    /* true literal            */
  521. Xchar    falsem[] = "FALSE";    /* false litereal        */
  522. Xint    cmdstatus = TRUE;    /* last command status        */
  523. Xchar    palstr[49] = "";    /* palette string        */
  524. Xint    saveflag = 0;        /* Flags, saved with the $target var */
  525. Xchar    *fline = NULL;        /* dynamic return line */
  526. Xint    flen = 0;        /* current length of fline */
  527. Xint    rval = 0;        /* return value of a subprocess */
  528. X#if    CALLED
  529. Xint    eexitflag = FALSE;    /* EMACS exit flag */
  530. Xint    eexitval = 0;        /* and the exit return value */
  531. X#endif
  532. X
  533. X/* uninitialized global definitions */
  534. X
  535. Xint     currow;                 /* Cursor row                   */
  536. Xint     curcol;                 /* Cursor column                */
  537. Xint     thisflag;               /* Flags, this command          */
  538. Xint     lastflag;               /* Flags, last command          */
  539. Xint     curgoal;                /* Goal for C-P, C-N            */
  540. XWINDOW  *curwp;                 /* Current window               */
  541. XBUFFER  *curbp;                 /* Current buffer               */
  542. XWINDOW  *wheadp;                /* Head of list of windows      */
  543. XBUFFER  *bheadp;                /* Head of list of buffers      */
  544. XBUFFER  *blistp;                /* Buffer for C-X C-B           */
  545. X
  546. XBUFFER  *bfind();               /* Lookup a buffer by name      */
  547. XWINDOW  *wpopup();              /* Pop up window creation       */
  548. XLINE    *lalloc();              /* Allocate a line              */
  549. Xchar    sres[NBUFN];        /* current screen resolution    */
  550. X
  551. Xchar    pat[NPAT];                      /* Search pattern        */
  552. Xchar    tap[NPAT];            /* Reversed pattern array.    */
  553. Xchar    rpat[NPAT];            /* replacement pattern        */
  554. X
  555. X/* The variable matchlen holds the length of the matched
  556. X * string - used by the replace functions.
  557. X * The variable patmatch holds the string that satisfies
  558. X * the search command.
  559. X * The variables matchline and matchoff hold the line and
  560. X * offset position of the *start* of match.
  561. X */
  562. Xunsigned int    matchlen = 0;
  563. Xunsigned int    mlenold  = 0;
  564. Xchar        *patmatch = NULL;
  565. XLINE        *matchline = NULL;
  566. Xint        matchoff = 0;
  567. X
  568. X#if    MAGIC
  569. X/*
  570. X * The variables magical and rmagical determine if there
  571. X * were actual metacharacters in the search and replace strings -
  572. X * if not, then we don't have to use the slower MAGIC mode
  573. X * search functions.
  574. X */
  575. Xshort int    magical = FALSE;
  576. Xshort int    rmagical = FALSE;
  577. XMC        mcpat[NPAT];        /* the magic pattern        */
  578. XMC        tapcm[NPAT];        /* the reversed magic pattern    */
  579. XRMC        rmcpat[NPAT];        /* the replacement magic array    */
  580. X
  581. X#endif
  582. X
  583. X/* directive name table:
  584. X    This holds the names of all the directives....    */
  585. X
  586. Xchar *dname[] = {
  587. X    "if", "else", "endif",
  588. X    "goto", "return", "endm",
  589. X    "while", "endwhile", "break",
  590. X    "force"
  591. X};
  592. X
  593. X#if    DEBUGM
  594. X/*    vars needed for macro debugging output    */
  595. Xchar outline[NSTRING];        /* global string to hold debug line text */
  596. X#endif
  597. X
  598. X#else
  599. X
  600. X/* for all the other .C files */
  601. X
  602. X/* initialized global external declarations */
  603. X
  604. Xextern  int     fillcol;                /* Fill column                  */
  605. Xextern  short   kbdm[];                 /* Holds kayboard macro data    */
  606. Xextern  char    pat[];                  /* Search pattern               */
  607. Xextern    char    rpat[];            /* Replacement pattern        */
  608. Xextern    char    *execstr;        /* pointer to string to execute    */
  609. Xextern    char    golabel[];        /* current line to go to    */
  610. Xextern    int    execlevel;        /* execution IF level        */
  611. Xextern    int    eolexist;        /* does clear to EOL exist?    */
  612. Xextern    int    revexist;        /* does reverse video exist?    */
  613. Xextern    int    flickcode;        /* do flicker supression?    */
  614. Xextern    char *modename[];        /* text names of modes        */
  615. Xextern    char    modecode[];        /* letters to represent modes    */
  616. Xextern    KEYTAB keytab[];        /* key bind to functions table    */
  617. Xextern    NBIND names[];            /* name to function table    */
  618. Xextern    int    gmode;            /* global editor mode        */
  619. Xextern    int    gflags;            /* global control flag        */
  620. Xextern    int    gfcolor;        /* global forgrnd color (white)    */
  621. Xextern    int    gbcolor;        /* global backgrnd color (black)*/
  622. Xextern    int    gasave;            /* global ASAVE size        */
  623. Xextern    int    gacount;        /* count until next ASAVE    */
  624. Xextern  int     sgarbf;                 /* State of screen unknown      */
  625. Xextern  int     mpresf;                 /* Stuff in message line        */
  626. Xextern    int    clexec;            /* command line execution flag    */
  627. Xextern    int    mstore;            /* storing text to macro flag    */
  628. Xextern    int    discmd;            /* display command flag        */
  629. Xextern    int    disinp;            /* display input characters    */
  630. Xextern    struct    BUFFER *bstore;        /* buffer to store macro text to*/
  631. Xextern    int     vtrow;                  /* Row location of SW cursor */
  632. Xextern    int     vtcol;                  /* Column location of SW cursor */
  633. Xextern    int     ttrow;                  /* Row location of HW cursor */
  634. Xextern    int     ttcol;                  /* Column location of HW cursor */
  635. Xextern    int    lbound;            /* leftmost column of current line
  636. X                       being displayed */
  637. Xextern    int    taboff;            /* tab offset for display    */
  638. Xextern    int    metac;            /* current meta character */
  639. Xextern    int    ctlxc;            /* current control X prefix char */
  640. Xextern    int    reptc;            /* current universal repeat char */
  641. Xextern    int    abortc;            /* current abort command char    */
  642. X
  643. Xextern    int    quotec;            /* quote char during mlreply() */
  644. Xextern    char    *cname[];        /* names of colors        */
  645. Xextern KILL *kbufp;            /* current kill buffer chunk pointer */
  646. Xextern KILL *kbufh;            /* kill buffer header pointer    */
  647. Xextern int kused;            /* # of bytes used in KB        */
  648. Xextern WINDOW *swindow;            /* saved window pointer        */
  649. Xextern int cryptflag;            /* currently encrypting?    */
  650. Xextern    short    *kbdptr;        /* current position in keyboard buf */
  651. Xextern    short    *kbdend;        /* ptr to end of the keyboard */
  652. Xextern    int kbdmode;            /* current keyboard macro mode    */
  653. Xextern    int kbdrep;            /* number of repetitions    */
  654. Xextern    int restflag;            /* restricted use?        */
  655. Xextern    int lastkey;            /* last keystoke        */
  656. Xextern    int seed;            /* random number seed        */
  657. Xextern    long envram;        /* # of bytes current in use by malloc */
  658. Xextern    int    macbug;            /* macro debuging flag        */
  659. Xextern    char    errorm[];        /* error literal        */
  660. Xextern    char    truem[];        /* true literal            */
  661. Xextern    char    falsem[];        /* false litereal        */
  662. Xextern    int    cmdstatus;        /* last command status        */
  663. Xextern    char    palstr[];        /* palette string        */
  664. Xextern    int    saveflag;        /* Flags, saved with the $target var */
  665. Xextern    char    *fline;            /* dynamic return line */
  666. Xextern    int    flen;            /* current length of fline */
  667. Xextern    int    rval;            /* return value of a subprocess */
  668. X#if    CALLED
  669. Xextern    int    eexitflag;        /* EMACS exit flag */
  670. Xextern    int    eexitval;        /* and the exit return value */
  671. X#endif
  672. X
  673. X/* uninitialized global external declarations */
  674. X
  675. Xextern  int     currow;                 /* Cursor row                   */
  676. Xextern  int     curcol;                 /* Cursor column                */
  677. Xextern  int     thisflag;               /* Flags, this command          */
  678. Xextern  int     lastflag;               /* Flags, last command          */
  679. Xextern  int     curgoal;                /* Goal for C-P, C-N            */
  680. Xextern  WINDOW  *curwp;                 /* Current window               */
  681. Xextern  BUFFER  *curbp;                 /* Current buffer               */
  682. Xextern  WINDOW  *wheadp;                /* Head of list of windows      */
  683. Xextern  BUFFER  *bheadp;                /* Head of list of buffers      */
  684. Xextern  BUFFER  *blistp;                /* Buffer for C-X C-B           */
  685. X
  686. Xextern  BUFFER  *bfind();               /* Lookup a buffer by name      */
  687. Xextern  WINDOW  *wpopup();              /* Pop up window creation       */
  688. Xextern  LINE    *lalloc();              /* Allocate a line              */
  689. Xextern    char    sres[NBUFN];        /* current screen resolution    */
  690. Xextern    char    pat[];                  /* Search pattern        */
  691. Xextern    char    tap[];            /* Reversed pattern array.    */
  692. Xextern    char    rpat[];            /* replacement pattern        */
  693. X
  694. Xextern unsigned int matchlen;
  695. Xextern unsigned int mlenold;
  696. Xextern char *patmatch;
  697. Xextern LINE *matchline;
  698. Xextern int matchoff;
  699. X
  700. X#if    MAGIC
  701. Xextern short int magical;
  702. Xextern short int rmagical;
  703. Xextern MC mcpat[NPAT];        /* the magic pattern        */
  704. Xextern MC tapcm[NPAT];        /* the reversed magic pattern    */
  705. Xextern RMC rmcpat[NPAT];    /* the replacement magic array    */
  706. X#endif
  707. X
  708. Xextern char *dname[];        /* directive name table        */
  709. X
  710. X#if    DEBUGM
  711. X/*    vars needed for macro debugging output    */
  712. Xextern char outline[];        /* global string to hold debug line text */
  713. X#endif
  714. X
  715. X#endif
  716. X
  717. X/* terminal table defined only in TERM.C */
  718. X
  719. X#ifndef    termdef
  720. Xextern  TERM    term;                   /* Terminal information.        */
  721. X#endif
  722. X
  723. X
  724. FRIDAY_NIGHT
  725. echo extracting - efunc.h
  726. sed 's/^X//' > efunc.h << 'FRIDAY_NIGHT'
  727. X/*    EFUNC.H:    MicroEMACS function declarations and names
  728. X
  729. X        This file list all the C code functions used by MicroEMACS
  730. X    and the names to use to bind keys to them. To add functions,
  731. X    declare it here in both the extern function list and the name
  732. X    binding table.
  733. X
  734. X*/
  735. X
  736. X/*    External function declarations        */
  737. X
  738. Xextern  int     ctrlg();                /* Abort out of things          */
  739. Xextern  int     quit();                 /* Quit                         */
  740. Xextern  int     ctlxlp();               /* Begin macro                  */
  741. Xextern  int     ctlxrp();               /* End macro                    */
  742. Xextern  int     ctlxe();                /* Execute macro                */
  743. Xextern  int     fileread();             /* Get a file, read only        */
  744. Xextern  int     filefind();        /* Get a file, read write       */
  745. Xextern  int     filewrite();            /* Write a file                 */
  746. Xextern  int     filesave();             /* Save current file            */
  747. Xextern  int     filename();             /* Adjust file name             */
  748. Xextern  int     getccol();              /* Get current column           */
  749. Xextern  int     gotobol();              /* Move to start of line        */
  750. Xextern  int     forwchar();             /* Move forward by characters   */
  751. Xextern  int     gotoeol();              /* Move to end of line          */
  752. Xextern  int     backchar();             /* Move backward by characters  */
  753. Xextern  int     forwline();             /* Move forward by lines        */
  754. Xextern  int     backline();             /* Move backward by lines       */
  755. Xextern  int     forwpage();             /* Move forward by pages        */
  756. Xextern  int     backpage();             /* Move backward by pages       */
  757. Xextern  int     gotobob();              /* Move to start of buffer      */
  758. Xextern  int     gotoeob();              /* Move to end of buffer        */
  759. Xextern  int     setfillcol();           /* Set fill column.             */
  760. Xextern  int     setmark();              /* Set mark                     */
  761. Xextern  int     swapmark();             /* Swap "." and mark            */
  762. Xextern  int     forwsearch();           /* Search forward               */
  763. Xextern  int     backsearch();           /* Search backwards             */
  764. Xextern    int    sreplace();        /* search and replace        */
  765. Xextern    int    qreplace();        /* search and replace w/query    */
  766. Xextern  int     showcpos();             /* Show the cursor position     */
  767. Xextern  int     nextwind();             /* Move to the next window      */
  768. Xextern  int     prevwind();             /* Move to the previous window  */
  769. Xextern  int     onlywind();             /* Make current window only one */
  770. Xextern  int     splitwind();            /* Split current window         */
  771. Xextern  int     mvdnwind();             /* Move window down             */
  772. Xextern  int     mvupwind();             /* Move window up               */
  773. Xextern  int     enlargewind();          /* Enlarge display window.      */
  774. Xextern  int     shrinkwind();           /* Shrink window.               */
  775. Xextern  int     listbuffers();          /* Display list of buffers      */
  776. Xextern  int     usebuffer();            /* Switch a window to a buffer  */
  777. Xextern  int     killbuffer();           /* Make a buffer go away.       */
  778. Xextern  int     reposition();           /* Reposition window            */
  779. Xextern  int     refresh();              /* Refresh the screen           */
  780. Xextern  int     twiddle();              /* Twiddle characters           */
  781. Xextern  int     tab();                  /* Insert tab                   */
  782. Xextern  int     newline();              /* Insert CR-LF                 */
  783. Xextern  int     indent();               /* Insert CR-LF, then indent    */
  784. Xextern  int     openline();             /* Open up a blank line         */
  785. Xextern  int     deblank();              /* Delete blank lines           */
  786. Xextern  int     quote();                /* Insert literal               */
  787. Xextern  int     backword();             /* Backup by words              */
  788. Xextern  int     forwword();             /* Advance by words             */
  789. Xextern  int     forwdel();              /* Forward delete               */
  790. Xextern  int     backdel();              /* Backward delete              */
  791. Xextern  int     killtext();             /* Kill forward                 */
  792. Xextern  int     yank();                 /* Yank back from killbuffer.   */
  793. Xextern  int     upperword();            /* Upper case word.             */
  794. Xextern  int     lowerword();            /* Lower case word.             */
  795. Xextern  int     upperregion();          /* Upper case region.           */
  796. Xextern  int     lowerregion();          /* Lower case region.           */
  797. Xextern  int     capword();              /* Initial capitalize word.     */
  798. Xextern  int     delfword();             /* Delete forward word.         */
  799. Xextern  int     delbword();             /* Delete backward word.        */
  800. Xextern  int     killregion();           /* Kill region.                 */
  801. Xextern  int     copyregion();           /* Copy region to kill buffer.  */
  802. Xextern  int     spawncli();             /* Run CLI in a subjob.         */
  803. Xextern  int     spawn();                /* Run a command in a subjob.   */
  804. X#if    BSD
  805. Xextern    int    bktoshell();        /* suspend emacs to parent shell*/
  806. Xextern    int    rtfrmshell();        /* return from a suspended state*/
  807. X#endif
  808. Xextern  int     quickexit();            /* low keystroke style exit.    */
  809. Xextern    int    setmode();        /* set an editor mode        */
  810. Xextern    int    delmode();        /* delete a mode        */
  811. Xextern    int    gotoline();        /* go to a numbered line    */
  812. Xextern    int    namebuffer();        /* rename the current buffer    */
  813. X#if    WORDPRO
  814. Xextern    int    gotobop();        /* go to beginning/paragraph    */
  815. Xextern    int    gotoeop();        /* go to end/paragraph        */
  816. Xextern    int    fillpara();        /* fill current paragraph    */
  817. X#endif
  818. Xextern    int    help();            /* get the help file here    */
  819. Xextern    int    deskey();        /* describe a key's binding    */
  820. Xextern    int    viewfile();        /* find a file in view mode    */
  821. Xextern    int    insfile();        /* insert a file        */
  822. Xextern    int    scrnextup();        /* scroll next window back    */
  823. Xextern    int    scrnextdw();        /* scroll next window down    */
  824. Xextern    int    bindtokey();        /* bind a function to a key    */
  825. Xextern    int    unbindkey();        /* unbind a key's function    */
  826. Xextern    int    namedcmd();        /* execute named command    */
  827. Xextern    int    desbind();        /* describe bindings        */
  828. Xextern    int    execcmd();        /* execute a command line    */
  829. Xextern    int    execbuf();        /* exec commands from a buffer    */
  830. Xextern    int    execfile();        /* exec commands from a file    */
  831. Xextern    int    nextbuffer();        /* switch to the next buffer    */
  832. X#if    WORDPRO
  833. Xextern    int    killpara();        /* kill the current paragraph    */
  834. X#endif
  835. Xextern    int    setgmode();        /* set a global mode        */
  836. Xextern    int    delgmode();        /* delete a global mode        */
  837. Xextern    int    insspace();        /* insert a space forword    */
  838. Xextern    int    forwhunt();        /* hunt forward for next match    */
  839. Xextern    int    backhunt();        /* hunt backwards for next match*/
  840. Xextern    int    pipecmd();        /* pipe command into buffer    */
  841. Xextern    int    filter();        /* filter buffer through dos    */
  842. Xextern    int    delwind();        /* delete the current window    */
  843. Xextern    int    cbuf1();        /* execute numbered comd buffer */
  844. Xextern    int    cbuf2();
  845. Xextern    int    cbuf3();
  846. Xextern    int    cbuf4();
  847. Xextern    int    cbuf5();
  848. Xextern    int    cbuf6();
  849. Xextern    int    cbuf7();
  850. Xextern    int    cbuf8();
  851. Xextern    int    cbuf9();
  852. Xextern    int    cbuf10();
  853. Xextern    int    cbuf11();
  854. Xextern    int    cbuf12();
  855. Xextern    int    cbuf13();
  856. Xextern    int    cbuf14();
  857. Xextern    int    cbuf15();
  858. Xextern    int    cbuf16();
  859. Xextern    int    cbuf17();
  860. Xextern    int    cbuf18();
  861. Xextern    int    cbuf19();
  862. Xextern    int    cbuf20();
  863. Xextern    int    cbuf21();
  864. Xextern    int    cbuf22();
  865. Xextern    int    cbuf23();
  866. Xextern    int    cbuf24();
  867. Xextern    int    cbuf25();
  868. Xextern    int    cbuf26();
  869. Xextern    int    cbuf27();
  870. Xextern    int    cbuf28();
  871. Xextern    int    cbuf29();
  872. Xextern    int    cbuf30();
  873. Xextern    int    cbuf31();
  874. Xextern    int    cbuf32();
  875. Xextern    int    cbuf33();
  876. Xextern    int    cbuf34();
  877. Xextern    int    cbuf35();
  878. Xextern    int    cbuf36();
  879. Xextern    int    cbuf37();
  880. Xextern    int    cbuf38();
  881. Xextern    int    cbuf39();
  882. Xextern    int    cbuf40();
  883. Xextern    int    storemac();        /* store text for macro        */
  884. Xextern    int    resize();        /* resize current window    */
  885. Xextern    int    clrmes();        /* clear the message line    */
  886. Xextern    int    meta();            /* meta prefix dummy function    */
  887. Xextern    int    cex();            /* ^X prefix dummy function    */
  888. Xextern    int    unarg();        /* ^U repeat arg dummy function    */
  889. Xextern    int    istring();        /* insert string in text    */
  890. Xextern    int    unmark();        /* unmark current buffer    */
  891. X#if    ISRCH
  892. Xextern    int    fisearch();        /* forward incremental search    */
  893. Xextern    int    risearch();        /* reverse incremental search    */
  894. X#endif
  895. X#if    WORDPRO
  896. Xextern    int    wordcount();        /* count words in region    */
  897. X#endif
  898. Xextern    int    savewnd();        /* save current window        */
  899. Xextern    int    restwnd();        /* restore current window    */
  900. Xextern    int    upscreen();        /* force screen update        */
  901. Xextern    int    writemsg();        /* write text on message line    */
  902. X#if    FLABEL
  903. Xextern    int    fnclabel();        /* set function key label    */
  904. X#endif
  905. X#if    APROP
  906. Xextern    int    apro();            /* apropos fuction        */
  907. X#endif
  908. X#if    CRYPT
  909. Xextern    int    setkey();        /* set encryption key        */
  910. X#endif
  911. Xextern    int    wrapword();        /* wordwrap function        */
  912. X#if    CFENCE
  913. Xextern    int    getfence();        /* move cursor to a matching fence */
  914. X#endif
  915. Xextern    int    newsize();        /* change the current screen size */
  916. Xextern    int    setvar();        /* set a variables value */
  917. Xextern    int    newwidth();        /* change the current screen width */
  918. X#if    AEDIT
  919. Xextern    int    trim();            /* trim whitespace from end of line */
  920. Xextern    int    detab();        /* detab rest of line */
  921. Xextern    int    entab();        /* entab rest of line */
  922. X#endif
  923. X#if    PROC
  924. Xextern    int    storeproc();        /* store names procedure */
  925. Xextern    int    execproc();        /* execute procedure */
  926. X#endif
  927. Xextern    int    nullproc();        /* does nothing... */
  928. Xextern    int    ovstring();        /* overwrite a string */
  929. Xextern    int    execprg();        /* execute a program */
  930. X
  931. X/*    Name to function binding table
  932. X
  933. X        This table gives the names of all the bindable functions
  934. X    end their C function address. These are used for the bind-to-key
  935. X    function.
  936. X*/
  937. X
  938. XNBIND    names[] = {
  939. X    {"abort-command",        ctrlg},
  940. X    {"add-mode",            setmode},
  941. X    {"add-global-mode",        setgmode},
  942. X#if    APROP
  943. X    {"apropos",            apro},
  944. X#endif
  945. X    {"backward-character",        backchar},
  946. X    {"begin-macro",            ctlxlp},
  947. X    {"beginning-of-file",        gotobob},
  948. X    {"beginning-of-line",        gotobol},
  949. X    {"bind-to-key",            bindtokey},
  950. X    {"buffer-position",        showcpos},
  951. X    {"case-region-lower",        lowerregion},
  952. X    {"case-region-upper",        upperregion},
  953. X    {"case-word-capitalize",    capword},
  954. X    {"case-word-lower",        lowerword},
  955. X    {"case-word-upper",        upperword},
  956. X    {"change-file-name",        filename},
  957. X    {"change-screen-size",        newsize},
  958. X    {"change-screen-width",        newwidth},
  959. X    {"clear-and-redraw",        refresh},
  960. X    {"clear-message-line",        clrmes},
  961. X    {"copy-region",            copyregion},
  962. X#if    WORDPRO
  963. X    {"count-words",            wordcount},
  964. X#endif
  965. X    {"ctlx-prefix",            cex},
  966. X    {"delete-blank-lines",        deblank},
  967. X    {"delete-buffer",        killbuffer},
  968. X    {"delete-mode",            delmode},
  969. X    {"delete-global-mode",        delgmode},
  970. X    {"delete-next-character",    forwdel},
  971. X    {"delete-next-word",        delfword},
  972. X    {"delete-other-windows",    onlywind},
  973. X    {"delete-previous-character",    backdel},
  974. X    {"delete-previous-word",    delbword},
  975. X    {"delete-window",        delwind},
  976. X    {"describe-bindings",        desbind},
  977. X    {"describe-key",        deskey},
  978. X#if    AEDIT
  979. X    {"detab-line",            detab},
  980. X#endif
  981. X    {"end-macro",            ctlxrp},
  982. X    {"end-of-file",            gotoeob},
  983. X    {"end-of-line",            gotoeol},
  984. X#if    AEDIT
  985. X    {"entab-line",            entab},
  986. X#endif
  987. X    {"exchange-point-and-mark",    swapmark},
  988. X    {"execute-buffer",        execbuf},
  989. X    {"execute-command-line",    execcmd},
  990. X    {"execute-file",        execfile},
  991. X    {"execute-macro",        ctlxe},
  992. X    {"execute-macro-1",        cbuf1},
  993. X    {"execute-macro-2",        cbuf2},
  994. X    {"execute-macro-3",        cbuf3},
  995. X    {"execute-macro-4",        cbuf4},
  996. X    {"execute-macro-5",        cbuf5},
  997. X    {"execute-macro-6",        cbuf6},
  998. X    {"execute-macro-7",        cbuf7},
  999. X    {"execute-macro-8",        cbuf8},
  1000. X    {"execute-macro-9",        cbuf9},
  1001. X    {"execute-macro-10",        cbuf10},
  1002. X    {"execute-macro-11",        cbuf11},
  1003. X    {"execute-macro-12",        cbuf12},
  1004. X    {"execute-macro-13",        cbuf13},
  1005. X    {"execute-macro-14",        cbuf14},
  1006. X    {"execute-macro-15",        cbuf15},
  1007. X    {"execute-macro-16",        cbuf16},
  1008. X    {"execute-macro-17",        cbuf17},
  1009. X    {"execute-macro-18",        cbuf18},
  1010. X    {"execute-macro-19",        cbuf19},
  1011. X    {"execute-macro-20",        cbuf20},
  1012. X    {"execute-macro-21",        cbuf21},
  1013. X    {"execute-macro-22",        cbuf22},
  1014. X    {"execute-macro-23",        cbuf23},
  1015. X    {"execute-macro-24",        cbuf24},
  1016. X    {"execute-macro-25",        cbuf25},
  1017. X    {"execute-macro-26",        cbuf26},
  1018. X    {"execute-macro-27",        cbuf27},
  1019. X    {"execute-macro-28",        cbuf28},
  1020. X    {"execute-macro-29",        cbuf29},
  1021. X    {"execute-macro-30",        cbuf30},
  1022. X    {"execute-macro-31",        cbuf31},
  1023. X    {"execute-macro-32",        cbuf32},
  1024. X    {"execute-macro-33",        cbuf33},
  1025. X    {"execute-macro-34",        cbuf34},
  1026. X    {"execute-macro-35",        cbuf35},
  1027. X    {"execute-macro-36",        cbuf36},
  1028. X    {"execute-macro-37",        cbuf37},
  1029. X    {"execute-macro-38",        cbuf38},
  1030. X    {"execute-macro-39",        cbuf39},
  1031. X    {"execute-macro-40",        cbuf40},
  1032. X    {"execute-named-command",    namedcmd},
  1033. X#if    PROC
  1034. X    {"execute-procedure",        execproc},
  1035. X#endif
  1036. X    {"execute-program",        execprg},
  1037. X    {"exit-emacs",            quit},
  1038. X#if    WORDPRO
  1039. X    {"fill-paragraph",        fillpara},
  1040. X#endif
  1041. X    {"filter-buffer",        filter},
  1042. X    {"find-file",            filefind},
  1043. X    {"forward-character",        forwchar},
  1044. X    {"goto-line",            gotoline},
  1045. X#if    CFENCE
  1046. X    {"goto-matching-fence",        getfence},
  1047. X#endif
  1048. X    {"grow-window",            enlargewind},
  1049. X    {"handle-tab",            tab},
  1050. X    {"hunt-forward",        forwhunt},
  1051. X    {"hunt-backward",        backhunt},
  1052. X    {"help",            help},
  1053. X    {"i-shell",            spawncli},
  1054. X#if    ISRCH
  1055. X    {"incremental-search",        fisearch},
  1056. X#endif
  1057. X    {"insert-file",            insfile},
  1058. X    {"insert-space",        insspace},
  1059. X    {"insert-string",        istring},
  1060. X#if    WORDPRO
  1061. X    {"kill-paragraph",        killpara},
  1062. X#endif
  1063. X    {"kill-region",            killregion},
  1064. X    {"kill-to-end-of-line",        killtext},
  1065. X#if    FLABEL
  1066. X    {"label-function-key",        fnclabel},
  1067. X#endif
  1068. X    {"list-buffers",        listbuffers},
  1069. X    {"meta-prefix",            meta},
  1070. X    {"move-window-down",        mvdnwind},
  1071. X    {"move-window-up",        mvupwind},
  1072. X    {"name-buffer",            namebuffer},
  1073. X    {"newline",            newline},
  1074. X    {"newline-and-indent",        indent},
  1075. X    {"next-buffer",            nextbuffer},
  1076. X    {"next-line",            forwline},
  1077. X    {"next-page",            forwpage},
  1078. X#if    WORDPRO
  1079. X    {"next-paragraph",        gotoeop},
  1080. X#endif
  1081. X    {"next-window",            nextwind},
  1082. X    {"next-word",            forwword},
  1083. X    {"nop",                nullproc},
  1084. X    {"open-line",            openline},
  1085. X    {"overwrite-string",        ovstring},
  1086. X    {"pipe-command",        pipecmd},
  1087. X    {"previous-line",        backline},
  1088. X    {"previous-page",        backpage},
  1089. X#if    WORDPRO
  1090. X    {"previous-paragraph",        gotobop},
  1091. X#endif
  1092. X    {"previous-window",        prevwind},
  1093. X    {"previous-word",        backword},
  1094. X    {"query-replace-string",    qreplace},
  1095. X    {"quick-exit",            quickexit},
  1096. X    {"quote-character",        quote},
  1097. X    {"read-file",            fileread},
  1098. X    {"redraw-display",        reposition},
  1099. X    {"resize-window",        resize},
  1100. X    {"restore-window",        restwnd},
  1101. X    {"replace-string",        sreplace},
  1102. X#if    ISRCH
  1103. X    {"reverse-incremental-search",    risearch},
  1104. X#endif
  1105. X#if    PROC
  1106. X    {"run",                execproc},
  1107. X#endif
  1108. X    {"save-file",            filesave},
  1109. X    {"save-window",            savewnd},
  1110. X    {"scroll-next-up",        scrnextup},
  1111. X    {"scroll-next-down",        scrnextdw},
  1112. X    {"search-forward",        forwsearch},
  1113. X    {"search-reverse",        backsearch},
  1114. X    {"select-buffer",        usebuffer},
  1115. X    {"set",                setvar},
  1116. X#if    CRYPT
  1117. X    {"set-encryption-key",        setkey},
  1118. X#endif
  1119. X    {"set-fill-column",        setfillcol},
  1120. X    {"set-mark",            setmark},
  1121. X    {"shell-command",        spawn},
  1122. X    {"shrink-window",        shrinkwind},
  1123. X    {"split-current-window",    splitwind},
  1124. X    {"store-macro",            storemac},
  1125. X#if    PROC
  1126. X    {"store-procedure",        storeproc},
  1127. X#endif
  1128. X#if    BSD
  1129. X    {"suspend-emacs",        bktoshell},
  1130. X#endif
  1131. X    {"transpose-characters",    twiddle},
  1132. X#if    AEDIT
  1133. X    {"trim-line",            trim},
  1134. X#endif
  1135. X    {"unbind-key",            unbindkey},
  1136. X    {"universal-argument",        unarg},
  1137. X    {"unmark-buffer",        unmark},
  1138. X    {"update-screen",        upscreen},
  1139. X    {"view-file",            viewfile},
  1140. X    {"wrap-word",            wrapword},
  1141. X    {"write-file",            filewrite},
  1142. X    {"write-message",        writemsg},
  1143. X    {"yank",            yank},
  1144. X
  1145. X    {"",            NULL}
  1146. X};
  1147. FRIDAY_NIGHT
  1148. echo mes.15 completed!
  1149. # That's all folks!
  1150.  
  1151.  
  1152.