home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3494 < prev    next >
Internet Message Format  |  1991-06-19  |  56KB

  1. From: pgf@cayman.COM (Paul Fox)
  2. Newsgroups: alt.sources
  3. Subject: Vile 04/17 - vi feel-alike (multi-window)
  4. Message-ID: <4523@cayman.COM>
  5. Date: 7 Jun 91 22:09:22 GMT
  6.  
  7. #!/bin/sh
  8. # this is vileshar.04 (part 4 of Vile)
  9. # do not concatenate these parts, unpack them in order with /bin/sh
  10. # file dolock.c continued
  11. #
  12. if test ! -r _shar_seq_.tmp; then
  13.     echo 'Please unpack part 1 first!'
  14.     exit 1
  15. fi
  16. (read Scheck
  17.  if test "$Scheck" != 4; then
  18.     echo Please unpack part "$Scheck" next!
  19.     exit 1
  20.  else
  21.     exit 0
  22.  fi
  23. ) < _shar_seq_.tmp || exit 1
  24. echo 'x - continuing file dolock.c'
  25. sed 's/^X//' << 'SHAR_EOF' >> 'dolock.c' &&
  26. X
  27. X    if (rname != NULL)
  28. X        return(rname);
  29. X    else
  30. X        return(filespec);
  31. }
  32. X
  33. char *getpath(filespec)
  34. char *filespec;
  35. {
  36. X    char rbuff[LFILEN];
  37. X    char *rname, *rindex();
  38. X
  39. X    strcpy(rbuff,filespec);
  40. X    rname = rindex(rbuff,'/');
  41. X
  42. X    if (rname == NULL)
  43. X        return(NULL);
  44. X    else
  45. X    {
  46. X        *(++rname) = '\0';
  47. X        return(rbuff);
  48. X    }
  49. X
  50. }
  51. X
  52. char *dolock(fname)
  53. X    char *fname;
  54. {
  55. X    static char lockname[LFILEN] = LOCKDIR;
  56. X    static char username[12];
  57. X    static char lmsg[40] = LOCKMSG;
  58. X    char *pathfmt;
  59. X    struct stat statblk;
  60. X    struct passwd *pblk;
  61. X    long pid, getpid();
  62. X    FILE *lf, *fopen();
  63. X    int oldumask;
  64. X
  65. X    oldumask = umask(0);    /* maximum access allowed to lock files */
  66. X
  67. X
  68. X      if (*fname != '/')
  69. X       pathfmt = "./%s%s";
  70. X      else
  71. X       pathfmt = "%s/%s";
  72. X      sprintf(lockname,pathfmt,getpath(fname), LOCKDIR);
  73. X
  74. X      if (tellall) printf("checking for existence of %s\n",lockname);
  75. X
  76. X      if (stat(lockname,&statblk))
  77. X      {
  78. X         if (tellall) printf("making directory %s\n",lockname);
  79. X         mkdir(lockname,0777); 
  80. X      }
  81. X
  82. X      sprintf(lockname,"%s/%s",lockname,gtname(fname));
  83. X
  84. X      if (tellall) printf("checking for existence of %s\n",lockname);
  85. X
  86. X      if (stat(lockname,&statblk))
  87. X      {
  88. makelock:      if (tellall) printf("creating %s\n",lockname);
  89. X
  90. X        if ((lf = fopen(lockname,FOP_TW)) == NULL)
  91. X          LOCKERR("could not create lock file")
  92. X            else
  93. X          {
  94. X            if (parent)
  95. X             pid = getppid();    /* parent pid */
  96. X            else
  97. X             pid = getpid();    /* current pid */
  98. X
  99. X             if (tellall)
  100. X              printf("pid is %ld\n",pid); 
  101. X
  102. X             fprintf(lf,"%ld",pid); /* write pid to lock file */
  103. X
  104. X            fclose(lf);
  105. X            oldumask = umask(oldumask);
  106. X            return(NULL);
  107. X        }
  108. X      }
  109. X      else
  110. X      {
  111. X        if (tellall) printf("reading lock file %s\n",lockname);
  112. X        if ((lf = fopen(lockname,FOP_TR)) == NULL)
  113. X          LOCKERR("could not read lock file")
  114. X            else
  115. X          {
  116. X            fscanf(lf,"%ld",&pid); /* contains current pid */
  117. X            fclose(lf);
  118. X            if (tellall)
  119. X             printf("pid in %s is %ld\n",lockname, pid);
  120. X            if (tellall)
  121. X             printf("signaling process %ld\n", pid);
  122. X            if (kill(pid,0))
  123. X                switch (errno)
  124. X                {
  125. X                  case ESRCH:    /* process not found */
  126. X                        goto makelock;
  127. X                        break;
  128. X                  case EPERM:    /* process exists, not yours */
  129. X                         if (tellall) 
  130. X                         puts("process exists");
  131. X                        break;
  132. X                  default:
  133. X                    LOCKERR("kill was bad")
  134. X                    break;
  135. X                }
  136. X            else
  137. X             if (tellall) puts("kill was good; process exists");
  138. X        }
  139. X        if ((pblk = getpwuid(statblk.st_uid)) == NULL)
  140. X          sprintf(username,"uid %d",atoi(statblk.st_uid));
  141. X        else
  142. X          strcpy(username,pblk->pw_name);
  143. X
  144. X        oldumask = umask(oldumask);
  145. X        return(username);
  146. X      }
  147. }
  148. X
  149. /**********************
  150. X *
  151. X * undolock -- unlock the file fname
  152. X *
  153. X * if successful, returns NULL 
  154. X * if other error, returns "LOCK ERROR: explanation"
  155. X *
  156. X * Jon Reid, 2/19/86
  157. X *
  158. X *********************/
  159. X
  160. char *undolock(fname)
  161. X    char *fname;
  162. {
  163. X    static char lockname[LFILEN] = LOCKDIR;
  164. X    static char lmsg[40] = LOCKMSG;
  165. X    char *pathfmt;
  166. X
  167. X      if (*fname != '/')
  168. X       pathfmt = "./%s%s";
  169. X      else
  170. X       pathfmt = "%s/%s";
  171. X      sprintf(lockname,pathfmt,getpath(fname), LOCKDIR);
  172. X
  173. X      sprintf(lockname,"%s/%s",lockname,gtname(fname));
  174. X
  175. X      if (tellall) printf("attempting to unlink %s\n",lockname);
  176. X
  177. X      if (unlink(lockname))
  178. X      { 
  179. X        strcat(lmsg,"could not remove lock file"); 
  180. X        return(lmsg); 
  181. X      }
  182. X      else
  183. X            return(NULL);
  184. }
  185. X
  186. #endif
  187. X
  188. /******************
  189. X * end dolock module
  190. X *******************/
  191. X
  192. #else
  193. dolhello()
  194. {
  195. }
  196. #endif
  197. X
  198. SHAR_EOF
  199. echo 'File dolock.c is complete' &&
  200. chmod 0444 dolock.c ||
  201. echo 'restore of dolock.c failed'
  202. Wc_c="`wc -c < 'dolock.c'`"
  203. test 4340 -eq "$Wc_c" ||
  204.     echo 'dolock.c: original size 4340, current size' "$Wc_c"
  205. # ============= ebind.h ==============
  206. echo 'x - extracting ebind.h (Text)'
  207. sed 's/^X//' << 'SHAR_EOF' > 'ebind.h' &&
  208. THIS FILE IS NO LONGER USED -- IT IS INCLUDED FOR HISTORICAL PURPOSES
  209. SEE THE mktbls PROGRAM, AND THE FILE cmdtbl
  210. /*    EBIND:        Initial default key to function bindings for
  211. X            MicroEMACS 3.7
  212. */
  213. X
  214. /*
  215. X * Command table.
  216. X * This table  is *roughly* in ASCII order, left to right across the
  217. X * characters of the command. This explains the funny location of the
  218. X * control-X commands.
  219. X */
  220. KEYTAB  keytab[NBINDS] = {
  221. X
  222. X    {' ',        forwchar},
  223. X    {'"',        usekreg},
  224. X    {'$',        gotoeol},
  225. #if    CFENCE
  226. X    {'%',            getfence},
  227. #endif
  228. X    {'*',        togglelistbuffers},
  229. X    {'+',        forwbline},
  230. X    {',',        rev_csrch},
  231. X    {'-',        backbline},
  232. X    {'.',        dotcmdplay},
  233. X    {'/',        forwsearch},
  234. X    {'0',        gotobol},
  235. X    {':',        namedcmd},
  236. X    {';',        rep_csrch},
  237. X    {'<',        operlshift},
  238. X    {'>',        operrshift},
  239. X    {'?',        backsearch},
  240. X    {'A',        appendeol},
  241. X    {'B',        backword},
  242. X    {'C',        chgtoeol},
  243. X    {'D',        deltoeol},
  244. X    {'E',        forwendw},
  245. X    {'F',        bcsrch},
  246. X    {'G',        gotoline},
  247. X    {'H',        gotobos},
  248. X    {'I',        insertbol},
  249. X    {'J',        join},
  250. X    {'K',        unarg},
  251. X    {'L',        gotoeos},
  252. X    {'M',        gotomos},
  253. X    {'N',        revsearch},
  254. X    {'O',        openup},
  255. X    {'P',        putbefore},
  256. X    {'Q',        quit},
  257. X    {'R',        overwrite},
  258. X    {'S',        chgline},
  259. X    {'T',        bcsrch_to},
  260. X    {'U',        lineundo},
  261. X    {'V',        enlargewind},
  262. X    {'W',        forwword},
  263. X    {'X',        backdelchar},
  264. X    {'Y',        yankline},
  265. X    {'Z',        quickexit},
  266. X    {'[',        gotobosec},
  267. X    {'\'',        golinenmmark},
  268. X    {']',        gotoeosec},
  269. X    {'^',        firstnonwhite},
  270. X    {'_',        histbuff},
  271. X    {'`',        goexactnmmark},
  272. X    {'a',        append},
  273. X    {'b',        backviword},
  274. X    {'c',        operchg},
  275. X    {'d',        operdel},
  276. X    {'e',        forwviendw},
  277. X    {'f',        fcsrch},
  278. X    {'g',        operqreplace},
  279. X    {'h',        backchar},
  280. X    {'i',        insert},
  281. X    {'j',        forwline},
  282. X    {'k',        backline},
  283. X    {'l',        forwchar},
  284. X    {'m',        setnmmark},
  285. X    {'n',        consearch},
  286. X    {'o',        opendown},
  287. X    {'p',        putafter},
  288. X    {'q',        opersreplace},
  289. X    {'r',        replacechar},
  290. X    {'s',        chgchar},
  291. X    {'t',        fcsrch_to},
  292. X    {'u',        undo},
  293. X    {'v',        shrinkwind},
  294. X    {'w',        forwviword},
  295. X    {'x',        forwdelchar},
  296. X    {'y',        operyank},
  297. X    {'z',        poswind},
  298. X    {LBRACE,    gotobop},
  299. X    {'|',        gotocol},
  300. X    {RBRACE,    gotoeop},
  301. X    {'~',        operflip},
  302. X    {tocntrl('['),        esc},
  303. #if TAGS
  304. X    {tocntrl(']'),        gototag},
  305. #endif
  306. X    {tocntrl('^'),        altbuff},
  307. X    {tocntrl('A'),        meta},
  308. X    {tocntrl('B'),        backpage},
  309. X    /* ctrl C */
  310. X    {tocntrl('D'),        forwhpage},
  311. X    {tocntrl('E'),        mvdnwind},
  312. X    {tocntrl('F'),        forwpage},
  313. X    {tocntrl('G'),        showcpos},
  314. X    {tocntrl('H'),        backchar},
  315. X    /* ctrl I */
  316. X    {tocntrl('J'),        forwline},
  317. X    {tocntrl('K'),        delwind},
  318. X    {tocntrl('L'),        refresh},
  319. X    {tocntrl('M'),        forwbline},
  320. X    {tocntrl('N'),        nextwind},
  321. X    {tocntrl('O'),        onlywind},
  322. X    {tocntrl('P'),        prevwind},
  323. X    {tocntrl('Q'),        nullproc},
  324. X    {tocntrl('R'),        insfile},
  325. X    {tocntrl('S'),        nullproc},
  326. X    {tocntrl('T'),        splitwind},
  327. X    {tocntrl('U'),        backhpage},
  328. X    {tocntrl('V'),        quote},
  329. X    {tocntrl('W'),        operwrite},
  330. X    {tocntrl('X'),        cex},
  331. X    {tocntrl('Y'),        mvupwind},
  332. #if BSD
  333. X    {tocntrl('Z'),        bktoshell},
  334. #endif
  335. X
  336. X    {META|tocntrl('D'),        scrnextdw},
  337. X    {META|tocntrl('E'),        mvdnnxtwind},
  338. X    {META|tocntrl('U'),        scrnextup},
  339. X    {META|tocntrl('Y'),        mvupnxtwind},
  340. X    {META|'H',        help},
  341. X    {META|'*',        listbuffers},
  342. X    {CTLX|'g',        operlineqreplace},
  343. X    {CTLX|'q',        operlinesreplace},
  344. X
  345. #if    AEDIT
  346. X    {META|' ',        detab},
  347. X    {META|tocntrl('I'),        entab},
  348. X    {META|'T',        trim},
  349. X    {META|'O',        deblank},
  350. #endif
  351. #if    WORDPRO
  352. X    {META|'F',        fillpara},
  353. X    {META|'J',        fillpara},
  354. #endif
  355. X    {META|'U',        operupper},
  356. X    {META|'L',        operlower},
  357. #if    CRYPT
  358. X    {CTLX|'X',        setkey},
  359. #endif
  360. #if    ISRCH
  361. X    {CTLX|'?',        risearch},
  362. X    {CTLX|'/',        fisearch},
  363. #endif
  364. X    {CTLX|'(',        ctlxlp},
  365. X    {CTLX|')',        ctlxrp},
  366. X    {CTLX|'0',        delwind},
  367. X    {CTLX|'1',        onlywind},
  368. X    {CTLX|'2',        splitwind},
  369. X    {CTLX|'=',        showcpos},
  370. X    {CTLX|'c',        operlinechg},
  371. X    {CTLX|'d',        operlinedel},
  372. X    {CTLX|'e',        ctlxe},
  373. X    {CTLX|'f',        setfillcol},
  374. X    {CTLX|'h',        help},
  375. X    {CTLX|'P',        lineputbefore},
  376. X    {CTLX|'p',        lineputafter},
  377. X    {CTLX|'t',        settab},
  378. X    {CTLX|'y',        operlineyank},
  379. X    {CTLX|tocntrl('C'),        quit},
  380. X    {CTLX|tocntrl('X'),        finderr},
  381. X    {CTLX|'!',        pipecmd},
  382. #if TERMCAP
  383. X    {SPEC|'0',        cbuf1},
  384. X    {SPEC|'1',        cbuf2},
  385. X    {SPEC|'2',        cbuf3},
  386. X    {SPEC|'3',        cbuf4},
  387. X    {SPEC|'4',        cbuf5},
  388. X    {SPEC|'5',        cbuf6},
  389. X    {SPEC|'6',        cbuf7},
  390. X    {SPEC|'7',        cbuf8},
  391. X    {SPEC|'8',        cbuf9},
  392. X    {SPEC|'9',        cbuf10},
  393. #endif
  394. X
  395. #ifdef BEFORE
  396. X    {CTLX|'!',        spawn},
  397. X    {CTLX|'#',        filter},
  398. X    {CTLX|'@',        pipecmd},
  399. #if ! SMALLER
  400. X    {CTLX|'a',        setvar},
  401. #endif
  402. X    {CTLX|'b',        usebuffer},
  403. X    {CTLX|'g',        enlargewind},
  404. X    {CTLX|'i',        killbuffer},
  405. X    {CTLX|'m',        setmode},
  406. X    {CTLX|'n',        filename},
  407. X    {CTLX|'w',        resize},
  408. X    {CTLX|'x',        nextbuffer},
  409. X    {CTLX|'s',        shrinkwind},
  410. X    {CTLX|'z',        enlargewind},
  411. X    {CTLX|'^',        enlargewind},
  412. X    {CTLX|tocntrl('B'),        listbuffers},
  413. X    {CTLX|tocntrl('F'),        filefind},
  414. X    {CTLX|tocntrl('I'),        insfile},
  415. X    {CTLX|tocntrl('L'),        lowerregion},
  416. X    {CTLX|tocntrl('M'),        delmode},
  417. X    {CTLX|tocntrl('N'),        mvdnwind},
  418. X    {CTLX|tocntrl('P'),        mvupwind},
  419. X    {CTLX|tocntrl('R'),        fileread},
  420. X    {CTLX|tocntrl('S'),        filesave},
  421. X    {CTLX|tocntrl('U'),        upperregion},
  422. X    {CTLX|tocntrl('V'),        viewfile},
  423. X    {CTLX|tocntrl('W'),        filewrite},
  424. X    {CTLX|tocntrl('Z'),        shrinkwind},
  425. X    /* {tocntrl('C'),        insspace}, */
  426. X    {tocntrl('T'),        twiddle},
  427. X    {META|' ',        setmark},
  428. X    {META|'.',        setmark},
  429. X    {META|'!',        reposition},
  430. X    {META|'C',        capword},
  431. X    {META|'K',        bindkey},
  432. X    {META|'L',        lowerword},
  433. X    {META|'M',        setgmode},
  434. X    {META|'R',        sreplace},
  435. X    {META|'U',        upperword},
  436. X    {META|tocntrl('K'),        unbindkey},
  437. X    {META|tocntrl('L'),        reposition},
  438. X    {META|tocntrl('M'),        delgmode},
  439. X    {META|tocntrl('N'),        namebuffer},
  440. X    {META|tocntrl('R'),        qreplace},
  441. X    {META|tocntrl('S'),        newsize},
  442. X    {META|tocntrl('T'),        newwidth},
  443. X    {META|tocntrl('V'),        scrnextdw},
  444. X    {META|tocntrl('Z'),        scrnextup},
  445. #if    WORDPRO
  446. X    {META|tocntrl('C'),        wordcount},
  447. X    /* {META|tocntrl('W'),        killpara}, */
  448. #endif
  449. #if    PROC
  450. X    {META|tocntrl('E'),        execproc},
  451. #endif
  452. #if    APROP
  453. X    {META|'A',        apro},
  454. #endif
  455. X    /* META|'D',        delfword, */
  456. X    /* META|0x7F,              delbword, */
  457. #if    WORDPRO
  458. X    {META|'N',        gotoeop},
  459. X    {META|'P',        gotobop},
  460. X    {META|'Q',        fillpara},
  461. #endif
  462. X
  463. #endif /* BEFORE */
  464. X
  465. #if    NeWS
  466. X    {SPEC|0,        setcursor},    /* mouse support */
  467. X    {SPEC|1,        newsadjustmode},/* quiet mode setting */
  468. X
  469. /* top fkeys */
  470. X    {SPEC|96,        filefind},
  471. X    {SPEC|97,        fileread},
  472. X    {SPEC|98,        insfile},
  473. X    {SPEC|99,        viewfile},
  474. X    {SPEC|100,        filesave},
  475. X    {SPEC|101,        filewrite},
  476. X    {SPEC|102,        filename},
  477. X    {SPEC|103,        yankregion},
  478. X    {SPEC|104,        unarg},
  479. X
  480. /* right function keys */
  481. X    {SPEC|80,        backpage},
  482. X    {SPEC|81,        gotobob},
  483. X    {SPEC|82,        risearch},
  484. X    {SPEC|83,        forwpage},
  485. X    {SPEC|84,        gotoeob},
  486. X    {SPEC|85,        fisearch},
  487. X    {SPEC|86,        gotobol},
  488. X    {SPEC|87,        backline},
  489. X    {SPEC|88,        gotoeol},
  490. X    {SPEC|89,        backchar},
  491. X    {SPEC|90,        setmark},
  492. X    {SPEC|91,        forwchar},
  493. X    {SPEC|92,        backword},
  494. X    {SPEC|93,        forwline},
  495. X    {SPEC|94,        forwword},
  496. #endif
  497. X
  498. #if    MSDOS & (HP150 == 0) & (WANGPC == 0) & (HP110 == 0)
  499. X    {SPEC|tocntrl('_'),        forwhunt},
  500. X    {SPEC|tocntrl('S'),        backhunt},
  501. X    {SPEC|71,        gotobob},
  502. X    {SPEC|72,        backline},
  503. X    {SPEC|73,        backpage},
  504. X    {SPEC|75,        backchar},
  505. X    {SPEC|77,        forwchar},
  506. X    {SPEC|79,        gotoeob},
  507. X    {SPEC|80,        forwline},
  508. X    {SPEC|81,        forwpage},
  509. X    {SPEC|82,        insspace},
  510. X    {SPEC|83,        forwdelchar},
  511. X    {SPEC|115,        backword},
  512. X    {SPEC|116,        forwword},
  513. #if    WORDPRO
  514. X    {SPEC|132,        gotobop},
  515. X    {SPEC|118,        gotoeop},
  516. #endif
  517. X    {SPEC|84,        cbuf1},
  518. X    {SPEC|85,        cbuf2},
  519. X    {SPEC|86,        cbuf3},
  520. X    {SPEC|87,        cbuf4},
  521. X    {SPEC|88,        cbuf5},
  522. X    {SPEC|89,        cbuf6},
  523. X    {SPEC|90,        cbuf7},
  524. X    {SPEC|91,        cbuf8},
  525. X    {SPEC|92,        cbuf9},
  526. X    {SPEC|93,        cbuf10},
  527. #endif
  528. X
  529. #if    HP150
  530. X    {SPEC|32,        backline},
  531. X    {SPEC|33,        forwline},
  532. X    {SPEC|35,        backchar},
  533. X    {SPEC|34,        forwchar},
  534. X    {SPEC|44,        gotobob},
  535. X    {SPEC|46,        forwpage},
  536. X    {SPEC|47,        backpage},
  537. X    {SPEC|82,        nextwind},
  538. X    {SPEC|68,        openline},
  539. X    {SPEC|69,        deltoeol},
  540. X    {SPEC|65,        forwdelchar},
  541. X    {SPEC|64,        ctlxe},
  542. X    {SPEC|67,        refresh},
  543. X    {SPEC|66,        reposition},
  544. X    {SPEC|83,        help},
  545. X    {SPEC|81,        deskey},
  546. #endif
  547. X
  548. #if    HP110
  549. X    {SPEC|0x4b,        backchar},
  550. X    {SPEC|0x4d,        forwchar},
  551. X    {SPEC|0x48,        backline},
  552. X    {SPEC|0x50,        forwline},
  553. X    {SPEC|0x43,        help},
  554. X    {SPEC|0x73,        backword},
  555. X    {SPEC|0x74,        forwword},
  556. X    {SPEC|0x49,        backpage},
  557. X    {SPEC|0x51,        forwpage},
  558. X    {SPEC|84,        cbuf1},
  559. X    {SPEC|85,        cbuf2},
  560. X    {SPEC|86,        cbuf3},
  561. X    {SPEC|87,        cbuf4},
  562. X    {SPEC|88,        cbuf5},
  563. X    {SPEC|89,        cbuf6},
  564. X    {SPEC|90,        cbuf7},
  565. X    {SPEC|91,        cbuf8},
  566. #endif
  567. X
  568. #if    AMIGA
  569. X    {SPEC|'?',        help},
  570. X    {SPEC|'A',        backline},
  571. X    {SPEC|'B',        forwline},
  572. X    {SPEC|'C',        forwchar},
  573. X    {SPEC|'D',        backchar},
  574. X    {SPEC|'T',        backpage},
  575. X    {SPEC|'S',        forwpage},
  576. X    {SPEC|'a',        backword},
  577. X    {SPEC|'`',        forwword},
  578. X    {SPEC|'P',        cbuf1},
  579. X    {SPEC|'Q',        cbuf2},
  580. X    {SPEC|'R',        cbuf3},
  581. X    {SPEC|'S',        cbuf4},
  582. X    {SPEC|'T',        cbuf5},
  583. X    {SPEC|'U',        cbuf6},
  584. X    {SPEC|'V',        cbuf7},
  585. X    {SPEC|'W',        cbuf8},
  586. X    {SPEC|'X',        cbuf9},
  587. X    {SPEC|'Y',        cbuf10},
  588. X    {127,            forwdelchar},
  589. #endif
  590. X
  591. #if    ST520
  592. X    {SPEC|'b',        help},
  593. X    {SPEC|'H',        backline},
  594. X    {SPEC|'P',        forwline},
  595. X    {SPEC|'M',        forwchar},
  596. X    {SPEC|'K',        backchar},
  597. X    {SPEC|'t',        setmark},
  598. X    {SPEC|'a',        put},
  599. X    {SPEC|'R',        insspace},
  600. X    {SPEC|'G',        gotobob},
  601. X    {127,            forwdelchar},
  602. X    {SPEC|84,        cbuf1},
  603. X    {SPEC|85,        cbuf2},
  604. X    {SPEC|86,        cbuf3},
  605. X    {SPEC|87,        cbuf4},
  606. X    {SPEC|88,        cbuf5},
  607. X    {SPEC|89,        cbuf6},
  608. X    {SPEC|90,        cbuf7},
  609. X    {SPEC|91,        cbuf8},
  610. X    {SPEC|92,        cbuf9},
  611. X    {SPEC|93,        cbuf10},
  612. #endif
  613. X
  614. #if  WANGPC
  615. X    SPEC|0xE0,              quit,           /* Cancel */
  616. X    SPEC|0xE1,              help,           /* Help */
  617. X    SPEC|0xF1,              help,           /* ^Help */
  618. X    SPEC|0xE3,              esc,          /* Print */
  619. X    SPEC|0xF3,              esc,          /* ^Print */
  620. X    SPEC|0xC0,              backline,       /* North */
  621. X    SPEC|0xD0,              gotobob,        /* ^North */
  622. X    SPEC|0xC1,              forwchar,       /* East */
  623. X    SPEC|0xD1,              gotoeol,        /* ^East */
  624. X    SPEC|0xC2,              forwline,       /* South */
  625. X    SPEC|0xD2,              gotobop,        /* ^South */
  626. X    SPEC|0xC3,              backchar,       /* West */
  627. X    SPEC|0xD3,              gotobol,        /* ^West */
  628. X    SPEC|0xC4,              esc,          /* Home */
  629. X    SPEC|0xD4,              gotobob,        /* ^Home */
  630. X    SPEC|0xC5,              filesave,       /* Execute */
  631. X    SPEC|0xD5,              esc,          /* ^Execute */
  632. X    SPEC|0xC6,              insfile,        /* Insert */
  633. X    SPEC|0xD6,              esc,          /* ^Insert */
  634. X    SPEC|0xC7,              forwdelchar,        /* Delete */
  635. X    SPEC|0xD7,              killregion,     /* ^Delete */
  636. X    SPEC|0xC8,              backpage,       /* Previous */
  637. X    SPEC|0xD8,              prevwind,       /* ^Previous */
  638. X    SPEC|0xC9,              forwpage,       /* Next */
  639. X    SPEC|0xD9,              nextwind,       /* ^Next */
  640. X    SPEC|0xCB,              esc,          /* Erase */
  641. X    SPEC|0xDB,              esc,          /* ^Erase */
  642. X    SPEC|0xDC,              esc,          /* ^Tab */
  643. X    SPEC|0xCD,              esc,          /* BackTab */
  644. X    SPEC|0xDD,              esc,          /* ^BackTab */
  645. X    SPEC|0x80,              esc,          /* Indent */
  646. X    SPEC|0x90,              esc,          /* ^Indent */
  647. X    SPEC|0x81,              esc,          /* Page */
  648. X    SPEC|0x91,              esc,          /* ^Page */
  649. X    SPEC|0x82,              esc,          /* Center */
  650. X    SPEC|0x92,              esc,          /* ^Center */
  651. X    SPEC|0x83,              esc,          /* DecTab */
  652. X    SPEC|0x93,              esc,          /* ^DecTab */
  653. X    SPEC|0x84,              esc,          /* Format */
  654. X    SPEC|0x94,              esc,          /* ^Format */
  655. X    SPEC|0x85,              esc,          /* Merge */
  656. X    SPEC|0x95,              esc,          /* ^Merge */
  657. X    SPEC|0x86,              setmark,        /* Note */
  658. X    SPEC|0x96,              esc,          /* ^Note */
  659. X    SPEC|0x87,              esc,          /* Stop */
  660. X    SPEC|0x97,              esc,          /* ^Stop */
  661. X    SPEC|0x88,              forwsearch,     /* Srch */
  662. X    SPEC|0x98,              backsearch,     /* ^Srch */
  663. X    SPEC|0x89,              sreplace,       /* Replac */
  664. X    SPEC|0x99,              qreplace,       /* ^Replac */
  665. X    SPEC|0x8A,              esc,          /* Copy */
  666. X    SPEC|0x9A,              esc,          /* ^Copy */
  667. X    SPEC|0x8B,              esc,          /* Move */
  668. X    SPEC|0x9B,              esc,          /* ^Move */
  669. X    SPEC|0x8C,              namedcmd,       /* Command */
  670. X    SPEC|0x9C,              spawn,          /* ^Command */
  671. X    SPEC|0x8D,              esc,          /* ^ */
  672. X    SPEC|0x9D,              esc,          /* ^^ */
  673. X    SPEC|0x8E,              esc,          /* Blank */
  674. X    SPEC|0x9E,              esc,          /* ^Blank */
  675. X    SPEC|0x8F,              gotoline,       /* GoTo */
  676. X    SPEC|0x9F,              usebuffer,      /* ^GoTo */
  677. #endif
  678. X
  679. X    /* special internal bindings */
  680. X    SPEC|META|'W',        wrapword,    /* called on word wrap */
  681. X    SPEC|META|'C',        nullproc,    /*  every command input */
  682. X    SPEC|META|'R',        nullproc,    /*  on file read */
  683. X    {0,            NULL}
  684. };
  685. X
  686. #if RAINBOW
  687. X
  688. #include "rainbow.h"
  689. X
  690. /*
  691. X * Mapping table from the LK201 function keys to the internal EMACS character.
  692. X */
  693. X
  694. short lk_map[][2] = {
  695. X    Up_Key,                         tocntrl('P'),
  696. X    Down_Key,                       tocntrl('N'),
  697. X    Left_Key,                       tocntrl('B'),
  698. X    Right_Key,                      tocntrl('F'),
  699. X    Shift+Left_Key,                 META+'B',
  700. X    Shift+Right_Key,                META+'F',
  701. X    Control+Left_Key,               tocntrl('A'),
  702. X    Control+Right_Key,              tocntrl('E'),
  703. X    Prev_Scr_Key,                   META+'V',
  704. X    Next_Scr_Key,                   tocntrl('V'),
  705. X    Shift+Up_Key,                   META+'<',
  706. X    Shift+Down_Key,                 META+'>',
  707. X    Cancel_Key,                     tocntrl('G'),
  708. X    Find_Key,                       tocntrl('S'),
  709. X    Shift+Find_Key,                 tocntrl('R'),
  710. X    Insert_Key,                     tocntrl('Y'),
  711. X    Options_Key,                    tocntrl('D'),
  712. X    Shift+Options_Key,              META+'D',
  713. X    Remove_Key,                     tocntrl('W'),
  714. X    Shift+Remove_Key,               META+'W',
  715. X    Select_Key,                     tocntrl('@'),
  716. X    Shift+Select_Key,               CTLX+tocntrl('X'),
  717. X    Interrupt_Key,                  tocntrl('U'),
  718. X    Keypad_PF2,                     META+'L',
  719. X    Keypad_PF3,                     META+'C',
  720. X    Keypad_PF4,                     META+'U',
  721. X    Shift+Keypad_PF2,               CTLX+tocntrl('L'),
  722. X    Shift+Keypad_PF4,               CTLX+tocntrl('U'),
  723. X    Keypad_1,                       CTLX+'1',
  724. X    Keypad_2,                       CTLX+'2',
  725. X    Do_Key,                         CTLX+'E',
  726. X    Keypad_4,                       CTLX+tocntrl('B'),
  727. X    Keypad_5,                       CTLX+'B',
  728. X    Keypad_6,                       CTLX+'K',
  729. X    Resume_Key,                     META+'!',
  730. X    Control+Next_Scr_Key,           CTLX+'N',
  731. X    Control+Prev_Scr_Key,           CTLX+'P',
  732. X    Control+Up_Key,                 CTLX+tocntrl('P'),
  733. X    Control+Down_Key,               CTLX+tocntrl('N'),
  734. X    Help_Key,                       CTLX+'=',
  735. X    Shift+Do_Key,                   CTLX+'(',
  736. X    Control+Do_Key,                 CTLX+')',
  737. X    Keypad_0,                       CTLX+'Z',
  738. X    Shift+Keypad_0,                 CTLX+tocntrl('Z'),
  739. X    Main_Scr_Key,                   tocntrl('C'),
  740. X    Keypad_Enter,                   CTLX+'!',
  741. X    Exit_Key,                       CTLX+tocntrl('C'),
  742. X    Shift+Exit_Key,                 tocntrl('Z')
  743. };
  744. X
  745. #define lk_map_size     (sizeof(lk_map)/2)
  746. #endif
  747. X
  748. SHAR_EOF
  749. chmod 0444 ebind.h ||
  750. echo 'restore of ebind.h failed'
  751. Wc_c="`wc -c < 'ebind.h'`"
  752. test 14722 -eq "$Wc_c" ||
  753.     echo 'ebind.h: original size 14722, current size' "$Wc_c"
  754. # ============= edef.h ==============
  755. echo 'x - extracting edef.h (Text)'
  756. sed 's/^X//' << 'SHAR_EOF' > 'edef.h' &&
  757. /*    EDEF:        Global variable definitions for
  758. X            MicroEMACS 3.9
  759. X
  760. X            written by Dave G. Conroy
  761. X            modified by Steve Wilhite, George Jones
  762. X            greatly modified by Daniel Lawrence
  763. */
  764. X
  765. /* some global function declarations */
  766. X
  767. char *flook();
  768. char *getctext();
  769. char *fnc2engl();
  770. char *tokval();
  771. #if ! SMALLER
  772. char *gtenv();
  773. char *gtfun();
  774. char *gtusr();
  775. char *itoa();
  776. char *ltos();
  777. char *mklower();
  778. char *mkupper();
  779. #endif
  780. #if ! VMALLOC
  781. char *malloc();
  782. #endif
  783. char *strcat();
  784. char *strcpy();
  785. char *strncpy();
  786. char *token();
  787. char *prc2engl();
  788. CMDFUNC *engl2fnc();
  789. CMDFUNC *kcod2fnc();
  790. int prc2kcod();
  791. BUFFER  *bfind();               /* Lookup a buffer by name      */
  792. WINDOW  *wpopup();              /* Pop up window creation       */
  793. LINE    *lalloc();              /* Allocate a line              */
  794. X
  795. /* I know this declaration stuff is really ugly, and I probably won't ever
  796. X *    do it again.  promise.  but it _does_ make it easy to add/change
  797. X *    globals.  Too bad about "comma".    -pgf
  798. X */
  799. #ifdef maindef
  800. # define comma ,
  801. # define decl_init(thing,value) thing = value
  802. # define decl_uninit(thing) thing
  803. #else
  804. # define decl_init(thing,value) extern thing
  805. # define decl_uninit(thing) extern thing
  806. #endif
  807. X
  808. decl_init( char prognam[], "vile");
  809. decl_init( char version[], "version three");
  810. X
  811. decl_init( int tabval, 8);        /* which column tabs are on,
  812. X                         always power of two */
  813. decl_init( int tabmask, 7);        /* one less than above. I know it's
  814. X                        wasteful */
  815. decl_init( int autoindented , -1);    /* how many chars (not cols) indented */
  816. decl_uninit( int isnamedcmd );        /* are we typing a command name */
  817. decl_uninit( int calledbefore );    /* called before during this command? */
  818. decl_uninit( short _chartypes_[N_chars] );    /* character types    */
  819. decl_uninit( int interrupted );        /* interrupt signal?        */
  820. decl_uninit( int insertmode );        /* are we inserting or overwriting? */
  821. decl_uninit( int lineinput );        /* are we inserting linestyle? */
  822. decl_uninit( int lastkey );        /* last keystoke (tgetc)    */
  823. decl_uninit( int last1key );        /* last keystoke (kbd_key)    */
  824. decl_uninit( int lastcmd );        /* last command    (kbd_seq)    */
  825. decl_uninit( short fulllineregions );   /* regions should be full lines */
  826. decl_uninit( short doingopcmd );        /* operator command in progress */
  827. decl_uninit( short opcmd );             /* what sort of operator?    */
  828. decl_uninit( CMDFUNC *havemotion );    /* so we can use "oper" routines
  829. X                       internally */
  830. decl_uninit( int fillcol );             /* Fill column                  */
  831. decl_uninit( short kbdm[NKBDM] );    /* Macro                        */
  832. decl_uninit( short dotcmdm[NKBDM] );    /* dot commands            */
  833. decl_uninit( short tmpcmdm[NKBDM] );    /* dot commands, 'til we're sure */
  834. decl_uninit( int currow );              /* Cursor row                   */
  835. decl_uninit( int curcol );              /* Cursor column                */
  836. decl_uninit( WINDOW *curwp );           /* Current window               */
  837. decl_uninit( BUFFER *curbp );           /* Current buffer               */
  838. decl_uninit( WINDOW *wheadp );          /* Head of list of windows      */
  839. decl_uninit( BUFFER *bheadp );          /* Head of list of buffers      */
  840. X
  841. decl_uninit( char sres[NBUFN] );        /* current screen resolution    */
  842. X
  843. decl_uninit( char pat[NPAT] );          /* Search pattern        */
  844. decl_uninit( char tap[NPAT] );        /* Reversed pattern array.    */
  845. decl_uninit( char rpat[NPAT] );        /* replacement pattern        */
  846. X
  847. /* The variable matchlen holds the length of the matched
  848. X * string - used by the replace functions.
  849. X * The variable patmatch holds the string that satisfies
  850. X * the search command.
  851. X * The variables matchline and matchoff hold the line and
  852. X * offset position of the start of match.
  853. X */
  854. decl_uninit( int matchlen );
  855. decl_uninit( int mlenold );
  856. decl_uninit( char *patmatch );
  857. decl_uninit( LINE *matchline );
  858. decl_uninit( int matchoff );
  859. X
  860. #if    MAGIC
  861. /*
  862. X * The variable magical determines if there are actual
  863. X * metacharacters in the string - if not, then we don't
  864. X * have to use the slower MAGIC mode search functions.
  865. X */
  866. decl_uninit( short int magical );
  867. decl_uninit( MC    mcpat[NPAT] );        /* the magic pattern        */
  868. decl_uninit( MC    tapcm[NPAT] );        /* the reversed magic pattern    */
  869. X
  870. #endif
  871. X
  872. /* directive name table:
  873. X    This holds the names of all the directives....    */
  874. X
  875. #if ! SMALLER
  876. decl_init(char *dname[],
  877. X     { "if" comma "else" comma "endif" comma
  878. X    "goto" comma "return" comma "endm" comma
  879. X    "while" comma "endwhile" comma "break" comma
  880. X    "force" }
  881. X     );
  882. #else
  883. decl_init(char *dname[],
  884. X     { "endm" }
  885. X    );
  886. #endif
  887. X
  888. X
  889. #if    DEBUGM
  890. /*    vars needed for macro debugging output    */
  891. /* global string to hold debug line text */
  892. decl_uninit( char outline[NSTRING] );
  893. #endif
  894. X
  895. #if    NeWS
  896. decl_uninit( int inhibit_update );    /* prevents output to terminal */
  897. #endif
  898. X
  899. /* initialized global definitions */
  900. X
  901. decl_init( int curgoal, -1 );           /* column goal            */
  902. decl_uninit( char *execstr );        /* pointer to string to execute    */
  903. decl_uninit( char golabel[NPAT] );    /* current line to go to    */
  904. decl_uninit( int execlevel );        /* execution IF level        */
  905. decl_init( int    eolexist, TRUE );    /* does clear to EOL exist    */
  906. decl_uninit( int revexist );        /* does reverse video exist?    */
  907. decl_uninit( int flickcode );        /* do flicker supression?    */
  908. X
  909. /* THE FOLLOWING MODE NAME TABLES MUST CORRESPOND EXACTLY WITH THE #DEFINES
  910. X    IN ESTRUCT.H */
  911. decl_init( char    *othermodes[] , {
  912. X    "lazy" comma
  913. X    "versionctrl" } );
  914. X
  915. decl_init( int othmode, 0);   /* "other" global modes    */
  916. X
  917. decl_init( char    *valuemodes[] , {
  918. X    "tabstop" comma
  919. X    "fillcol" } );
  920. X
  921. decl_init( char    *modename[] , {        /* names of modes        */
  922. X    "wrap" comma
  923. X    "cmode" comma
  924. X    "swrap" comma
  925. X    "exact" comma
  926. X    "view" comma
  927. X    "magic" comma
  928. X    "crypt" comma
  929. X    "asave" comma
  930. X    "list" comma
  931. X    "dos" comma
  932. X    "aindent" } );
  933. X
  934. decl_init( char    modecode[], "wcsevmyaldi" );/* letters to represent modes */
  935. X
  936. decl_init( int gmode, MDSWRAP|MDEXACT|MDMAGIC );/* global editor mode    */
  937. X
  938. decl_init( int gfcolor, 7 );        /* global forgrnd color (white)    */
  939. decl_uninit( int gbcolor );        /* global backgrnd color (black)*/
  940. decl_init( int gasave, 256 );        /* global ASAVE size        */
  941. decl_init( int gacount, 256 );        /* count until next ASAVE    */
  942. decl_init( int sgarbf, TRUE );          /* TRUE if screen is garbage    */
  943. decl_uninit( int mpresf );              /* TRUE if message in last line */
  944. decl_uninit( int clexec    );        /* command line execution flag    */
  945. decl_uninit( int mstore    );        /* storing text to macro flag    */
  946. decl_init( int discmd, TRUE );        /* display command flag        */
  947. decl_init( int disinp, TRUE );        /* display input characters    */
  948. decl_uninit( struct BUFFER *bstore );    /* buffer to store macro text to*/
  949. decl_uninit( int vtrow );               /* Row location of SW cursor    */
  950. decl_uninit( int vtcol );               /* Column location of SW cursor */
  951. decl_init( int ttrow, HUGE );           /* Row location of HW cursor    */
  952. decl_init( int ttcol, HUGE );           /* Column location of HW cursor */
  953. decl_uninit( int taboff    );        /* tab offset for display    */
  954. X
  955. decl_init( int cntl_a, tocntrl('A') );    /* current meta character    */
  956. decl_init( int cntl_x, tocntrl('X') );    /* current control X prefix char */
  957. decl_init( int reptc, 'K' );        /* current universal repeat char */
  958. decl_init( int abortc, tocntrl('[') );    /* ESC: current abort command char */
  959. decl_init( int quotec, tocntrl('V') );    /* quote char during mlreply()    */
  960. decl_init( int killc, tocntrl('U') );    /* current line kill char    */
  961. decl_init( int intrc, tocntrl('C') );    /* current interrupt char    */
  962. decl_init( int backspc, '\b');        /* current backspace char    */
  963. X
  964. #if    NeWS
  965. decl_init( char    *cname[], {        /* names of colors        */
  966. X    "WHITE" comma "RED" comma "GREEN" comma "YELLOW" comma "BLUE" comma
  967. X    "MAGENTA" comma "CYAN" comma "BLACK"} );
  968. #else
  969. decl_init( char    *cname[], {        /* names of colors        */
  970. X    "BLACK" comma "RED" comma "GREEN" comma "YELLOW" comma "BLUE" comma
  971. X    "MAGENTA" comma "CYAN" comma "WHITE"} );
  972. #endif
  973. X
  974. decl_uninit( int exmode );
  975. X
  976. decl_uninit( KILLREG kbs[NKREGS] );    /* all chars, 1 thru 9, and default */
  977. decl_uninit( short ukb );        /* index of current kbuffs */
  978. decl_uninit( int kregflag );        /* info for pending kill into reg */
  979. decl_uninit( WINDOW *swindow );        /* saved window pointer        */
  980. decl_uninit( int cryptflag );        /* currently encrypting?    */
  981. decl_uninit( short *tmpcmdptr );    /* current position in dot cmd buf */
  982. decl_init( short *tmpcmdend, &tmpcmdm[0] );/* ptr to end of the dot cmd */
  983. decl_uninit( short *dotcmdptr );    /* current position in dot cmd buf */
  984. decl_init( short *dotcmdend, &dotcmdm[0] );/* ptr to end of the dot command */
  985. decl_init( int dotcmdmode, RECORD );    /* current dot command mode    */
  986. decl_uninit( int dotcmdrep );        /* number of repetitions    */
  987. decl_uninit( short *kbdptr );        /* current position in keyboard buf */
  988. decl_init( short *kbdend, &kbdm[0] );    /* ptr to end of the keyboard */
  989. decl_init( int    kbdmode, STOP );    /* current keyboard macro mode    */
  990. decl_uninit( int kbdrep );        /* number of repetitions    */
  991. decl_uninit( int seed );        /* random number seed        */
  992. decl_uninit( long envram );        /* # of bytes current used malloc */
  993. decl_uninit( int macbug );        /* macro debuging flag        */
  994. decl_init( char    errorm[], "ERROR" );    /* error literal        */
  995. decl_init( char    truem[], "TRUE" );    /* true literal            */
  996. decl_init( char    falsem[], "FALSE" );    /* false litereal        */
  997. decl_init( int    cmdstatus, TRUE );    /* last command status        */
  998. decl_uninit( char palstr[49] );        /* palette string        */
  999. decl_uninit( char *fline );        /* dynamic return line        */
  1000. decl_uninit( int flen );        /* current length of fline    */
  1001. X
  1002. #if FINDERR
  1003. decl_init( char febuff[NBUFN], "" );    /* name of buffer to find errors in */
  1004. decl_uninit( unsigned newfebuff );    /* is the name new since last time? */
  1005. #endif
  1006. X
  1007. /* defined in nebind.h and nename.h */
  1008. extern NTAB nametbl[];
  1009. extern CMDFUNC *asciitbl[];
  1010. extern KBIND kbindtbl[];
  1011. X
  1012. /* terminal table defined only in TERM.C */
  1013. X
  1014. #ifndef    termdef
  1015. extern  TERM    term;                   /* Terminal information.        */
  1016. #endif
  1017. X
  1018. X
  1019. SHAR_EOF
  1020. chmod 0444 edef.h ||
  1021. echo 'restore of edef.h failed'
  1022. Wc_c="`wc -c < 'edef.h'`"
  1023. test 9852 -eq "$Wc_c" ||
  1024.     echo 'edef.h: original size 9852, current size' "$Wc_c"
  1025. # ============= efunc.h ==============
  1026. echo 'x - extracting efunc.h (Text)'
  1027. sed 's/^X//' << 'SHAR_EOF' > 'efunc.h' &&
  1028. THIS FILE IS NO LONGER USED -- IT IS INCLUDED FOR HISTORICAL PURPOSES
  1029. SEE THE mktbls PROGRAM, AND THE FILE cmdtbl
  1030. /*    EFUNC.H:    MicroEMACS function declarations and names
  1031. X
  1032. X        This file list all the C code functions used by MicroEMACS
  1033. X    and the names to use to bind keys to them. To add functions,
  1034. X    declare it here in both the extern function list and the name
  1035. X    binding table.
  1036. X
  1037. */
  1038. X
  1039. /*    External function declarations        */
  1040. X
  1041. #if FINDERR
  1042. extern  int     finderr();         /* look up and go to next error */
  1043. #endif
  1044. #if TAGS
  1045. extern  int     gototag();         /* look up and go to a tag */
  1046. #endif
  1047. extern  int     operqreplace();         /* do "query replace" on a region */
  1048. extern  int     opersreplace();         /* do "replace" on a region */
  1049. extern  int     operlineqreplace();     /* do "query replace" on a line region */
  1050. extern  int     operlinesreplace();     /* do "replace" on a line region */
  1051. extern  int     operwrite();         /* write a region to a file */
  1052. extern  int     showgmodes();         /* show modes set for current buffer */
  1053. extern  int     showmodes();         /* show modes set for current buffer */
  1054. extern  int     histbuff();         /* switch to num buffer in hist list */
  1055. extern  int     altbuff();             /* switch to previous buffer */
  1056. extern  int     deltoeol();         /* delete to end of line */
  1057. extern  int     chgtoeol();         /* change to end of line */
  1058. extern  int     yankline();         /* yank whole line */
  1059. extern  int     chgline();             /* change whole line */
  1060. extern  int     chgchar();             /* change character */
  1061. extern  int     join();              /* join two line together */
  1062. extern  int     lastnonwhite();          /* goto last non-whitespace on line */
  1063. extern  int     firstnonwhite();          /* goto first non-whitespace on line */
  1064. extern  int     fcsrch();              /* forw scan for char on line */
  1065. extern  int     bcsrch();              /* back scan for char on line */
  1066. extern  int     fcsrch_to();              /* forw scan up to char on line */
  1067. extern  int     bcsrch_to();              /* back scan up to char on line */
  1068. extern  int     rep_csrch();              /* repeat last scan for char on line */
  1069. extern  int     rev_csrch();              /* reverse last scan for char on line */
  1070. extern  int     replacechar();          /* replace character under cursor */
  1071. extern  int     poswind();               /* position window around cursor */
  1072. extern  int     overwrite();               /* overwrite text (temp set OVER mode)*/
  1073. extern  int     undo();               /* undo last command        */
  1074. extern  int     lineundo();               /* undo all changes to a line    */
  1075. extern  int     dotcmdplay();           /* replay last command        */
  1076. extern  int     operdel();              /* Delete with motion operator  */
  1077. extern  int     operlinedel();          /* Delete lines with motion operator  */
  1078. extern  int     operyank();             /* Yank with motion operator    */
  1079. extern  int     operlineyank();         /* Yank lines with motion operator    */
  1080. extern  int     operchg();              /* Change with motion operator  */
  1081. extern  int     operlinechg();          /* Change lines with motion operator  */
  1082. extern  int     operflip();             /* Flip case with motion operator  */
  1083. extern  int     operlower();             /* lower case with motion operator  */
  1084. extern  int     operupper();             /* upper case with motion operator  */
  1085. extern  int     operlshift();           /* Shift lines with motion operator  */
  1086. extern  int     operrshift();           /* Shift lines with motion operator  */
  1087. extern  int     esc();                /* Abort out of things          */
  1088. extern  int     writequit();            /* Write and Quit               */
  1089. extern  int     quit();                 /* Quit                         */
  1090. extern  int     quithard();             /* Quit, no questions asked     */
  1091. extern  int     ctlxlp();               /* Begin macro                  */
  1092. extern  int     ctlxrp();               /* End macro                    */
  1093. extern  int     ctlxe();                /* Execute macro                */
  1094. extern  int     fileread();             /* Get a file, read only        */
  1095. extern  int     filefind();        /* Get a file, read write       */
  1096. extern  int     filewrite();            /* Write a file                 */
  1097. extern  int     filesave();             /* Save current file            */
  1098. extern  int     filename();             /* Adjust file name             */
  1099. extern  int     getccol();              /* Get current column           */
  1100. extern  int     gotobol();              /* Move to start of line        */
  1101. extern  int     forwchar();             /* Move forward by characters   */
  1102. extern  int     gotoeol();              /* Move to end of line          */
  1103. extern  int     gotobos();              /* Move to beg of screen        */
  1104. extern  int     gotomos();              /* Move to mid of screen        */
  1105. extern  int     gotoeos();              /* Move to end of screen        */
  1106. extern  int     backchar();             /* Move backward by characters  */
  1107. extern  int     forwline();             /* Move forward by lines        */
  1108. extern  int     forwbline();            /* Move forward by lines, goto bol */
  1109. extern  int     backline();             /* Move backward by lines       */
  1110. extern  int     backbline();            /* Move backward by lines, goto bol */
  1111. extern  int     forwpage();             /* Move forward by pages        */
  1112. extern  int     forwhpage();            /* Move forward half page       */
  1113. extern  int     backpage();             /* Move backward by pages       */
  1114. extern  int     backhpage();            /* Move backward half page      */
  1115. extern  int     gotobob();              /* Move to start of buffer      */
  1116. extern  int     gotoeob();              /* Move to end of buffer        */
  1117. extern  int     setfillcol();           /* Set fill column.             */
  1118. extern  int     setnmmark();            /* Set named mark               */
  1119. extern  int     golinenmmark();         /* go to line of named mark     */
  1120. extern  int     goexactnmmark();        /* go exactly to named mark     */
  1121. extern  int     setmark();              /* Set mark                     */
  1122. extern  int     swapmark();             /* Swap "." and mark            */
  1123. extern  int     forwsearch();           /* Search forward               */
  1124. extern  int     backsearch();           /* Search backwards             */
  1125. extern    int    sreplace();        /* search and replace        */
  1126. extern    int    qreplace();        /* search and replace w/query    */
  1127. extern  int     showcpos();             /* Show the cursor position     */
  1128. extern  int     nextwind();             /* Move to the next window      */
  1129. extern  int     prevwind();             /* Move to the previous window  */
  1130. extern  int     onlywind();             /* Make current window only one */
  1131. extern  int     splitwind();            /* Split current window         */
  1132. extern  int     mvdnwind();             /* Move window down             */
  1133. extern  int     mvupwind();             /* Move window up               */
  1134. extern  int     mvdnnxtwind();          /* Move next window down        */
  1135. extern  int     mvupnxtwind();          /* Move next window up          */
  1136. extern  int     enlargewind();          /* Enlarge display window.      */
  1137. extern  int     shrinkwind();           /* Shrink window.               */
  1138. extern  int     listbuffers();          /* Display list of buffers      */
  1139. extern  int     togglelistbuffers();    /* Display/unDisplay list of buffers*/
  1140. extern  int     usebuffer();            /* Switch a window to a buffer  */
  1141. extern  int     killbuffer();           /* Make a buffer go away.       */
  1142. extern  int     reposition();           /* Reposition window            */
  1143. extern  int     refresh();              /* Refresh the screen           */
  1144. extern  int     tab();                  /* Insert tab                   */
  1145. extern  int     settab();               /* set tab stops                */
  1146. extern  int     newline();              /* Insert CR-LF                 */
  1147. extern  int     opendown();             /* Open up a blank line below   */
  1148. extern  int     openup();               /* Open up a blank line above   */
  1149. extern  int     append();               /* go into insert mode after dot*/
  1150. extern  int     appendeol();            /* go into insert mode at eol    */
  1151. extern  int     insert();               /* go into insert mode        */
  1152. extern  int     insertbol();            /* go into insert mode at bol    */
  1153. extern  int     quote();                /* Insert literal               */
  1154. extern  int     backviword();           /* Backup by vi words           */
  1155. extern  int     forwviword();           /* Advance by vi words          */
  1156. extern  int     backword();             /* Backup by words              */
  1157. extern  int     forwword();             /* Advance by words             */
  1158. extern  int     forwendw();             /* Advance to end of words      */
  1159. extern  int     forwviendw();           /* Advance to end of vi words   */
  1160. extern  int     forwdelchar();              /* Forward delete               */
  1161. extern  int     backdelchar();              /* Backward delete              */
  1162. /* extern  int     killtext();             /* Kill forward                 */
  1163. extern  int     put();                 /* Yank back from killbuffer.   */
  1164. extern  int     putbefore();            /* put back from killbuffer.    */
  1165. extern  int     putafter();             /* Put back from killbuffer.    */
  1166. extern  int     lineputbefore();       /* put lines back from killbuffer.    */
  1167. extern  int     lineputafter();        /* Put lines back from killbuffer.    */
  1168. #ifdef BEFORE
  1169. extern  int     upperword();            /* Upper case word.             */
  1170. extern  int     lowerword();            /* Lower case word.             */
  1171. extern  int     capword();              /* Initial capitalize word.     */
  1172. #endif
  1173. /* extern  int     delfword();             /* Delete forward word.         */
  1174. /* extern  int     delbword();             /* Delete backward word.        */
  1175. extern  int     spawncli();             /* Run CLI in a subjob.         */
  1176. extern  int     spawn();                /* Run a command in a subjob.   */
  1177. #if    BSD
  1178. extern    int    bktoshell();        /* suspend emacs to parent shell*/
  1179. extern    int    rtfrmshell();        /* return from a suspended state*/
  1180. #endif
  1181. extern  int     quickexit();            /* low keystroke style exit.    */
  1182. extern    int    setmode();        /* set an editor mode        */
  1183. extern    int    delmode();        /* delete a mode        */
  1184. extern    int    gotoline();        /* go to a numbered line    */
  1185. extern    int    gotocol();        /* go to a numbered column    */
  1186. extern    int    namebuffer();        /* rename the current buffer    */
  1187. #if    WORDPRO
  1188. extern    int    gotobop();        /* go to beginning/paragraph    */
  1189. extern    int    gotoeop();        /* go to end/paragraph        */
  1190. extern    int    gotobosec();        /* go to beginning/section    */
  1191. extern    int    gotoeosec();        /* go to end/section        */
  1192. extern    int    fillpara();        /* fill current paragraph    */
  1193. #endif
  1194. extern    int    help();            /* get the help file here    */
  1195. extern    int    deskey();        /* describe a key's binding    */
  1196. extern    int    viewfile();        /* find a file in view mode    */
  1197. extern    int    insfile();        /* insert a file        */
  1198. extern    int    scrnextup();        /* scroll next window back    */
  1199. extern    int    scrnextdw();        /* scroll next window down    */
  1200. extern    int    bindkey();        /* bind a function to a key    */
  1201. extern    int    unbindkey();        /* unbind a key's function    */
  1202. extern    int    namedcmd();        /* execute named command    */
  1203. extern    int    desbind();        /* describe bindings        */
  1204. extern    int    nextbuffer();        /* switch to the next buffer    */
  1205. #if BALPHA
  1206. extern    int    prevbuffer();        /* switch to the previous buffer*/
  1207. #endif
  1208. #if    WORDPRO
  1209. /* extern    int    killpara();        /* kill the current paragraph    */
  1210. #endif
  1211. extern    int    setgmode();        /* set a global mode        */
  1212. extern    int    delgmode();        /* delete a global mode        */
  1213. extern    int    insspace();        /* insert a space forword    */
  1214. extern    int    forwhunt();        /* hunt forward for next match    */
  1215. extern    int    backhunt();        /* hunt backwards for next match*/
  1216. extern    int    consearch();        /* continue search for match    */
  1217. extern    int    revsearch();        /* continue search for match*/
  1218. extern    int    pipecmd();        /* pipe command into buffer    */
  1219. extern    int    filter();        /* filter buffer through dos    */
  1220. extern    int    delwind();        /* delete the current window    */
  1221. extern    int    cbuf1();        /* execute numbered comd buffer */
  1222. extern    int    cbuf2();
  1223. extern    int    cbuf3();
  1224. extern    int    cbuf4();
  1225. extern    int    cbuf5();
  1226. extern    int    cbuf6();
  1227. extern    int    cbuf7();
  1228. extern    int    cbuf8();
  1229. extern    int    cbuf9();
  1230. extern    int    cbuf10();
  1231. extern    int    cbuf11();
  1232. extern    int    cbuf12();
  1233. extern    int    cbuf13();
  1234. extern    int    cbuf14();
  1235. extern    int    cbuf15();
  1236. extern    int    cbuf16();
  1237. extern    int    cbuf17();
  1238. extern    int    cbuf18();
  1239. extern    int    cbuf19();
  1240. extern    int    cbuf20();
  1241. extern    int    cbuf21();
  1242. extern    int    cbuf22();
  1243. extern    int    cbuf23();
  1244. extern    int    cbuf24();
  1245. extern    int    cbuf25();
  1246. extern    int    cbuf26();
  1247. extern    int    cbuf27();
  1248. extern    int    cbuf28();
  1249. extern    int    cbuf29();
  1250. extern    int    cbuf30();
  1251. extern    int    cbuf31();
  1252. extern    int    cbuf32();
  1253. extern    int    cbuf33();
  1254. extern    int    cbuf34();
  1255. extern    int    cbuf35();
  1256. extern    int    cbuf36();
  1257. extern    int    cbuf37();
  1258. extern    int    cbuf38();
  1259. extern    int    cbuf39();
  1260. extern    int    cbuf40();
  1261. extern    int    storemac();        /* store text for macro        */
  1262. extern    int    resize();        /* resize current window    */
  1263. extern    int    clrmes();        /* clear the message line    */
  1264. extern    int    meta();            /* meta prefix dummy function    */
  1265. extern    int    cex();            /* ^X prefix dummy function    */
  1266. extern    int    unarg();        /* ^U repeat arg dummy function    */
  1267. extern    int    unmark();        /* unmark current buffer    */
  1268. #if    ISRCH
  1269. extern    int    fisearch();        /* forward incremental search    */
  1270. extern    int    risearch();        /* reverse incremental search    */
  1271. #endif
  1272. #if    WORDPRO
  1273. extern    int    wordcount();        /* count words in region    */
  1274. #endif
  1275. extern    int    upscreen();        /* force screen update        */
  1276. extern    int    usekreg();        /* select named kill registers */
  1277. #if    FLABEL
  1278. extern    int    fnclabel();        /* set function key label    */
  1279. #endif
  1280. #if    APROP
  1281. extern    int    apro();            /* apropos fuction        */
  1282. #endif
  1283. #if    CRYPT
  1284. extern    int    setkey();        /* set encryption key        */
  1285. #endif
  1286. extern    int    wrapword();        /* wordwrap function        */
  1287. #if    CFENCE
  1288. extern    int    getfence();        /* move cursor to a matching fence */
  1289. #endif
  1290. #if    AEDIT
  1291. #if 0
  1292. extern  int     indent();               /* Insert CR-LF, then indent    */
  1293. #endif
  1294. extern  int     deblank();              /* Delete blank lines           */
  1295. extern    int    trim();            /* trim whitespace from end of line */
  1296. extern    int    detab();        /* detab rest of line */
  1297. extern    int    entab();        /* entab rest of line */
  1298. #endif
  1299. #if    PROC
  1300. extern    int    storeproc();        /* store names procedure */
  1301. extern    int    execproc();        /* execute procedure */
  1302. #endif
  1303. #if    NeWS
  1304. extern    int    setcursor() ;        /* mouse support function */
  1305. extern    int    newsadjustmode() ;    /* mouse support function */
  1306. #endif
  1307. #if ! SMALLER
  1308. extern    int    newsize();        /* change the current screen size */
  1309. extern    int    newwidth();        /* change the current screen width */
  1310. extern    int    setvar();        /* set a variables value */
  1311. extern    int    istring();        /* insert string in text    */
  1312. extern    int    savewnd();        /* save current window        */
  1313. extern    int    restwnd();        /* restore current window    */
  1314. extern    int    writemsg();        /* write text on message line    */
  1315. extern  int     twiddle();              /* Twiddle characters           */
  1316. extern    int    execcmd();        /* execute a command line    */
  1317. extern    int    execbuf();        /* exec commands from a buffer    */
  1318. extern    int    execfile();        /* exec commands from a file    */
  1319. #endif
  1320. X
  1321. extern    int    nullproc();        /* does nothing... */
  1322. X
  1323. X
  1324. /*    Name to function binding table
  1325. X
  1326. X        This table gives the names of all the bindable functions
  1327. X    end their C function address. These are used for the bind-to-key
  1328. X    function.
  1329. X
  1330. X    REDO means the dotcmd command recorder whould not be halted
  1331. X    UNDO means the undo stacks should be cleared
  1332. X    MOTION means this command moves dot, and is compatible with
  1333. X        the operator commands.
  1334. X    FL only occurs with MOTION, means that if the motion is an operator
  1335. X        argument, the operation should affect whole lines
  1336. X    ABS only occurs with MOTION, means that if the motion is absolute,
  1337. X        i.e. not relative to the current postion or screen.  It is used
  1338. X        for the "lastdotmark", ldmark.
  1339. X    GOAL signifies a motion that will attempt to retain the 
  1340. X        current column postition.
  1341. */
  1342. X
  1343. NBIND    names[] = {
  1344. X    {"!",                spawn,        NONE },
  1345. X    {"<",                pipecmd,    NONE },
  1346. X    {"|",                filter,        REDO|UNDO},
  1347. X    {"*",            togglelistbuffers,    NONE },
  1348. X    {"abort-command",        esc,        NONE },
  1349. X    {"add-mode",            setmode,    NONE },
  1350. X    {"add-global-mode",        setgmode,    NONE },
  1351. X    {"alternate-buffer",        altbuff,    NONE },
  1352. #if    APROP
  1353. X    {"apropos",            apro,        NONE },
  1354. #endif
  1355. X    {"append",            append,        REDO|UNDO },
  1356. X    {"append-eol",            appendeol,    REDO|UNDO },
  1357. X    {"b",                usebuffer,    NONE },
  1358. X    {"backward-character",        backchar,    MOTION },
  1359. X    {"backward-char-scan",        bcsrch,        MOTION },
  1360. X    {"backward-char-scan-to",    bcsrch_to,    MOTION },
  1361. X    {"begin-macro",            ctlxlp,        NONE },
  1362. X    {"beginning-of-file",        gotobob,    ABS|MOTION },
  1363. X    {"beginning-of-line",        gotobol,    MOTION },
  1364. X    {"beginning-of-screen",        gotobos,    MOTION|FL },
  1365. X    {"bind-key",            bindkey,    NONE },
  1366. X    {"buffer-position",        showcpos,    NONE },
  1367. #ifdef BEFORE
  1368. X    {"case-word-capitalize",    capword,    REDO|UNDO },
  1369. X    {"case-word-lower",        lowerword,    REDO|UNDO },
  1370. X    {"case-word-upper",        upperword,    REDO|UNDO },
  1371. #endif
  1372. X    {"change-char",            chgchar,    REDO|UNDO },
  1373. X    {"change-file-name",        filename,    NONE },
  1374. X    {"change-line",            chgline,    REDO|UNDO },
  1375. X    {"change-lines-til",        operlinechg,    REDO|UNDO },
  1376. #if ! SMALLER
  1377. X    {"change-screen-size",        newsize,    NONE },
  1378. X    {"change-screen-width",        newwidth,    NONE },
  1379. #endif
  1380. X    {"change-til",            operchg,    REDO|UNDO },
  1381. X    {"change-to-end-of-line",    chgtoeol,    REDO|UNDO },
  1382. X    {"clear-and-redraw",        refresh,    NONE },
  1383. X    {"clear-message-line",        clrmes,        NONE },
  1384. X    {"continue-search",        consearch,    ABS|MOTION },
  1385. #if    WORDPRO
  1386. X    {"count-words",            wordcount,    NONE },
  1387. #endif
  1388. X    {"ctlx-prefix",            cex,        NONE },
  1389. X    {"db",                killbuffer,    NONE },
  1390. X    {"dw",                delwind,    NONE },
  1391. #if AEDIT
  1392. X    {"delete-blank-lines",        deblank,    REDO|UNDO },
  1393. #endif
  1394. X    {"delete-buffer",        killbuffer,    NONE },
  1395. X    {"delete-global-mode",        delgmode,    NONE },
  1396. X    {"delete-mode",            delmode,    NONE },
  1397. X    {"delete-next-character",    forwdelchar,    REDO|UNDO },
  1398. X    {"delete-lines-til",        operlinedel,    REDO|UNDO },
  1399. X    {"delete-other-windows",    onlywind,    NONE },
  1400. X    {"delete-previous-character",    backdelchar,    REDO|UNDO },
  1401. X    {"delete-til",            operdel,    REDO|UNDO },
  1402. X    {"delete-to-end-of-line",    deltoeol,    REDO|UNDO },
  1403. X    {"delete-window",        delwind,    NONE },
  1404. X    {"describe-bindings",        desbind,    NONE },
  1405. X    {"describe-key",        deskey,        NONE },
  1406. #if    AEDIT
  1407. X    {"detab-line",            detab,        REDO|UNDO },
  1408. #endif
  1409. X    {"e",                filefind,    NONE },
  1410. X    {"e!",                fileread,    NONE },
  1411. #if 0
  1412. X    {"e#",                altbuff,    NONE },
  1413. #endif
  1414. X    {"edit-file",            filefind,    NONE },
  1415. X    {"end-macro",            ctlxrp,        NONE },
  1416. X    {"end-of-file",            gotoeob,    ABS|MOTION },
  1417. X    {"end-of-line",            gotoeol,    MOTION|GOAL },
  1418. X    {"end-of-screen",        gotoeos,    MOTION|FL },
  1419. #if    AEDIT
  1420. X    {"entab-line",            entab,        REDO|UNDO },
  1421. #endif
  1422. X    {"exchange-point-and-mark",    swapmark,    ABS|MOTION },
  1423. #if ! SMALLER
  1424. X    {"execute-buffer",        execbuf,    NONE },
  1425. X    {"execute-command-line",    execcmd,    NONE },
  1426. X    {"execute-file",        execfile,    NONE },
  1427. #endif
  1428. X    {"execute-macro",        ctlxe,    REDO },
  1429. X    {"execute-macro-1",        cbuf1,    REDO },
  1430. X    {"execute-macro-2",        cbuf2,    REDO },
  1431. X    {"execute-macro-3",        cbuf3,    REDO },
  1432. X    {"execute-macro-4",        cbuf4,    REDO },
  1433. X    {"execute-macro-5",        cbuf5,    REDO },
  1434. X    {"execute-macro-6",        cbuf6,    REDO },
  1435. X    {"execute-macro-7",        cbuf7,    REDO },
  1436. X    {"execute-macro-8",        cbuf8,    REDO },
  1437. X    {"execute-macro-9",        cbuf9,    REDO },
  1438. X    {"execute-macro-10",        cbuf10,    REDO },
  1439. X    {"execute-macro-11",        cbuf11,    REDO },
  1440. X    {"execute-macro-12",        cbuf12,    REDO },
  1441. X    {"execute-macro-13",        cbuf13,    REDO },
  1442. X    {"execute-macro-14",        cbuf14,    REDO },
  1443. X    {"execute-macro-15",        cbuf15,    REDO },
  1444. X    {"execute-macro-16",        cbuf16,    REDO },
  1445. X    {"execute-macro-17",        cbuf17,    REDO },
  1446. X    {"execute-macro-18",        cbuf18,    REDO },
  1447. X    {"execute-macro-19",        cbuf19,    REDO },
  1448. X    {"execute-macro-20",        cbuf20,    REDO },
  1449. X    {"execute-macro-21",        cbuf21,    REDO },
  1450. X    {"execute-macro-22",        cbuf22,    REDO },
  1451. X    {"execute-macro-23",        cbuf23,    REDO },
  1452. X    {"execute-macro-24",        cbuf24,    REDO },
  1453. X    {"execute-macro-25",        cbuf25,    REDO },
  1454. X    {"execute-macro-26",        cbuf26,    REDO },
  1455. X    {"execute-macro-27",        cbuf27,    REDO },
  1456. X    {"execute-macro-28",        cbuf28,    REDO },
  1457. X    {"execute-macro-29",        cbuf29,    REDO },
  1458. X    {"execute-macro-30",        cbuf30,    REDO },
  1459. X    {"execute-macro-31",        cbuf31,    REDO },
  1460. X    {"execute-macro-32",        cbuf32,    REDO },
  1461. X    {"execute-macro-33",        cbuf33,    REDO },
  1462. X    {"execute-macro-34",        cbuf34,    REDO },
  1463. X    {"execute-macro-35",        cbuf35,    REDO },
  1464. X    {"execute-macro-36",        cbuf36,    REDO },
  1465. X    {"execute-macro-37",        cbuf37,    REDO },
  1466. X    {"execute-macro-38",        cbuf38,    REDO },
  1467. X    {"execute-macro-39",        cbuf39,    REDO },
  1468. X    {"execute-macro-40",        cbuf40,    REDO },
  1469. X    {"execute-named-command",    namedcmd,    NONE },
  1470. #if    PROC
  1471. X    {"execute-procedure",        execproc,    REDO },
  1472. #endif
  1473. X    {"exit",            quit,        NONE },
  1474. X    {"f",                filename,    NONE },
  1475. X    {"file-name",            filename,    NONE },
  1476. #if    WORDPRO
  1477. X    {"fill-paragraph",        fillpara,    REDO|UNDO },
  1478. #endif
  1479. X    {"filter-buffer",        filter,        REDO|UNDO },
  1480. X    {"find-file",            filefind,    NONE },
  1481. #if FINDERR
  1482. X    {"find-next-error",        finderr,    NONE },
  1483. #endif
  1484. #if TAGS
  1485. X    {"find-tag",            gototag,    NONE },
  1486. #endif
  1487. X    {"first-nonwhite",        firstnonwhite,    MOTION },
  1488. X    {"flip-til",            operflip,    REDO|UNDO },
  1489. X    {"forward-character",        forwchar,    MOTION },
  1490. X    {"forward-char-scan",        fcsrch,        MOTION },
  1491. X    {"forward-char-scan-to",    fcsrch_to,    MOTION },
  1492. X    {"gmodes",            showgmodes,    NONE },
  1493. X    {"goto-column",            gotocol,    MOTION },
  1494. X    {"goto-line",            gotoline,    ABS|MOTION|FL },
  1495. /* goline and goexact are special cases-- no ABS, even though they are */
  1496. X    {"goto-named-mark",        golinenmmark,    MOTION|FL },
  1497. X    {"goto-named-mark-exact",    goexactnmmark,    MOTION },
  1498. #if    CFENCE
  1499. X    {"goto-matching-fence",        getfence,    ABS|MOTION },
  1500. #endif
  1501. X    {"grow-window",            enlargewind,    NONE },
  1502. X    {"h",                help,        NONE },
  1503. X    {"handle-tab",            settab,        NONE },
  1504. X    {"historical-buffer",        histbuff,    NONE },
  1505. X    {"hunt-forward",        forwhunt,    ABS|MOTION },
  1506. X    {"hunt-backward",        backhunt,    ABS|MOTION },
  1507. X    {"help",            help,        NONE },
  1508. X    {"i-shell",            spawncli,    NONE },
  1509. #if    ISRCH
  1510. X    {"incremental-search",        fisearch,    NONE },
  1511. #endif
  1512. X    {"insert",            insert,        REDO|UNDO },
  1513. X    {"insert-bol",            insertbol,    REDO|UNDO },
  1514. X    {"insert-file",            insfile,    REDO|UNDO },
  1515. X    {"insert-space",        insspace,    REDO|UNDO },
  1516. #if ! SMALLER
  1517. X    {"insert-string",        istring,    REDO|UNDO },
  1518. #endif
  1519. X    {"join-lines",            join,        REDO|UNDO },
  1520. X    {"kill-buffer",            killbuffer,    NONE },
  1521. #if    WORDPRO
  1522. X    /* {"kill-paragraph",        killpara,    REDO|UNDO }, */
  1523. #endif
  1524. #if    FLABEL
  1525. X    {"label-function-key",        fnclabel,    NONE },
  1526. #endif
  1527. X    {"last-nonwhite",        lastnonwhite,    MOTION },
  1528. X    {"list-buffers",        listbuffers,    NONE },
  1529. X    {"lower-til",            operlower,    REDO|UNDO },
  1530. X    {"meta-prefix",            meta,        NONE },
  1531. X    {"middle-of-screen",        gotomos,    MOTION|FL },
  1532. X    {"modes",            showmodes,    NONE },
  1533. X    {"move-next-window-down",    mvdnnxtwind,    NONE },
  1534. X    {"move-next-window-up",        mvupnxtwind,    NONE },
  1535. X    {"move-window-down",        mvdnwind,    NONE },
  1536. X    {"move-window-up",        mvupwind,    NONE },
  1537. X    {"n",                nextbuffer,    NONE },
  1538. X    {"name-buffer",            namebuffer,    NONE },
  1539. X    {"newline",            newline,    REDO|UNDO },
  1540. X    {"next-buffer",            nextbuffer,    NONE },
  1541. X    {"next-half-page",        forwhpage,    NONE },
  1542. X    {"next-line",            forwline,    GOAL|MOTION|FL },
  1543. X    {"next-line-at-bol",        forwbline,    MOTION|FL },
  1544. X    {"next-page",            forwpage,    MOTION },
  1545. #if    WORDPRO
  1546. X    {"next-paragraph",        gotoeop,    ABS|MOTION },
  1547. #endif
  1548. X    {"next-punc-word",        forwviword,    MOTION },
  1549. X    {"next-punc-word-end",        forwviendw,    MOTION },
  1550. X    {"next-section",        gotoeosec,    ABS|MOTION },
  1551. X    {"next-window",            nextwind,    NONE },
  1552. X    {"next-word",            forwword,    MOTION },
  1553. X    {"next-word-end",        forwendw,    MOTION },
  1554. X    {"nop",                nullproc,    NONE },
  1555. X    {"open-line-below",        opendown,    REDO|UNDO },
  1556. X    {"open-line-above",        openup,        REDO|UNDO },
  1557. X    {"overwrite",            overwrite,    REDO|UNDO },
  1558. #if BALPHA
  1559. X    {"p",                prevbuffer,    NONE },
  1560. X    {"pb",                prevbuffer,    NONE },
  1561. #else
  1562. X    {"p",                altbuff,    NONE },
  1563. X    {"pb",                altbuff,    NONE },
  1564. #endif
  1565. X    {"pw",                prevwind,    NONE },
  1566. X    {"pipe-command",        pipecmd,    NONE },
  1567. X    {"position-window",        poswind,    NONE },
  1568. X    {"previous-half-page",        backhpage,    NONE },
  1569. X    {"previous-line",        backline,    GOAL|MOTION|FL },
  1570. X    {"previous-line-at-bol",    backbline,    MOTION|FL },
  1571. X    {"previous-page",        backpage,    MOTION },
  1572. #if    WORDPRO
  1573. X    {"previous-paragraph",        gotobop,    ABS|MOTION },
  1574. #endif
  1575. X    {"previous-punc-word",        backviword,    MOTION },
  1576. X    {"previous-section",        gotobosec,    ABS|MOTION },
  1577. X    {"previous-window",        prevwind,    NONE },
  1578. X    {"previous-word",        backword,    MOTION },
  1579. X    {"put-after",            putafter,    REDO|UNDO },
  1580. X    {"put-before",            putbefore,    REDO|UNDO },
  1581. X    {"put-as-lines-after",        lineputafter,    REDO|UNDO },
  1582. X    {"put-as-lines-before",        lineputbefore,    REDO|UNDO },
  1583. X    {"q",                quit,        NONE },
  1584. X    {"q!",                quithard,    NONE },
  1585. X    {"query-replace-til",        operqreplace,    UNDO },
  1586. X    {"query-replace-lines-til",    operlineqreplace,    UNDO },
  1587. X    {"quick-exit",            quickexit,    NONE },
  1588. X    {"quote-character",        quote,        REDO|UNDO },
  1589. X    {"r",                insfile,    REDO|UNDO},
  1590. X    {"replace-with-file",        fileread,    NONE },
  1591. X    {"redraw-display",        reposition,    NONE },
  1592. X    {"repeat-char-scan",        rep_csrch,    MOTION },
  1593. X    {"repeat-last-cmd",        dotcmdplay,    NONE },
  1594. X    {"replace-character",        replacechar,    REDO|UNDO },
  1595. X    {"replace-silent-lines-til",    operlinesreplace,    REDO|UNDO },
  1596. X    {"replace-silent-til",        opersreplace,    REDO|UNDO },
  1597. X    {"resize-window",        resize,        NONE },
  1598. #if ! SMALLER
  1599. X    {"restore-window",        restwnd,    NONE },
  1600. #endif
  1601. X    {"reverse-char-scan",        rev_csrch,    MOTION },
  1602. #if    ISRCH
  1603. X    {"reverse-incremental-search",    risearch,    NONE },
  1604. #endif
  1605. X    {"reverse-search",        revsearch,    ABS|MOTION },
  1606. #if    PROC
  1607. X    {"run",                execproc,    NONE },
  1608. #endif
  1609. X    {"save-file",            filesave,    NONE },
  1610. SHAR_EOF
  1611. true || echo 'restore of efunc.h failed'
  1612. echo 'End of Vile part 4'
  1613. echo 'File efunc.h is continued in part 5'
  1614. echo 5 > _shar_seq_.tmp
  1615. exit 0
  1616. -- 
  1617.         paul fox, pgf@cayman.com, (617)494-1999
  1618.         Cayman Systems, 26 Landsdowne St., Cambridge, MA 02139
  1619.