home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume1 / 8711 / uemacs-3.9-doc / 1 next >
Internet Message Format  |  1990-07-13  |  31KB

  1. Path: uunet!husc6!necntc!ncoast!allbery
  2. From: nwd@j.cc.purdue.edu (Daniel Lawrence)
  3. Newsgroups: comp.sources.misc
  4. Subject: MicroEmacs 3.9 Documentation (1 of 4)
  5. Message-ID: <5703@ncoast.UUCP>
  6. Date: 19 Nov 87 00:16:54 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Lines: 1240
  9. Approved: allbery@ncoast.UUCP
  10. X-Archive: comp.sources.misc/uemacs-3.9-doc/1
  11.  
  12. # This is a shar archive.
  13. # Remove everything above this line.
  14. # Run the file through sh, not csh.
  15. # (type `sh med.1')
  16. # If you do not see the message
  17. #    `med.1 completed!'
  18. # then the file was incomplete.
  19. echo extracting - amiga.rc
  20. sed 's/^X//' > amiga.rc << 'FRIDAY_NIGHT'
  21. X;    EMACS.RC:    Startup file for MicroEMACS 3.8
  22. X;
  23. X;            This file is executed everytime the
  24. X;            editor is entered
  25. X
  26. Xset $discmd "FALSE"
  27. Xwrite-message "[Setting up....]"
  28. X
  29. X; If you screen "SNOWS", uncomment this line
  30. X;    set $flicker "TRUE"
  31. X
  32. X; If you are on an IBM-PC EGA card and want to force the
  33. X; screen to EGA mode, uncomment the following line
  34. X;    set $sres "EGA"
  35. X
  36. X;    ***** Rebind the Function key group
  37. X
  38. Xbind-to-key search-forward        FN0
  39. Xbind-to-key search-reverse        FN1
  40. Xbind-to-key hunt-forward        FN2
  41. Xbind-to-key hunt-backward        FN3
  42. Xbind-to-key next-window            FN4
  43. Xbind-to-key execute-macro        FN5
  44. Xbind-to-key find-file            FN6
  45. Xbind-to-key execute-file        FN7
  46. Xbind-to-key save-file            FN8
  47. Xbind-to-key exit-emacs            FN9
  48. X
  49. Xbind-to-key apropos            FNR
  50. Xbind-to-key describe-key        FNS
  51. Xbind-to-key fill-paragraph        FNT
  52. Xbind-to-key shell-command        FNX
  53. Xbind-to-key i-shell            FNY
  54. X
  55. X;    set screen colors
  56. Xadd-global-mode "black"
  57. X
  58. X;    toggle function key window off
  59. X1 store-macro
  60. X    save-window
  61. X    1 next-window
  62. X    !if &sequal "Function Keys" $cbufname
  63. X        delete-window
  64. X    !endif
  65. X    bind-to-key execute-macro-14 FNP
  66. X!force    restore-window
  67. X    write-message "[Function key window OFF]"
  68. X!endm
  69. X
  70. X;    toggle function key window back on
  71. X14 store-macro
  72. X    1 next-window
  73. X    !if &sequal $cbufname "emacs.hlp"
  74. X        execute-macro-11
  75. X    !endif
  76. X    !if ¬ &sequal $cbufname "Function Keys"
  77. X        1 split-current-window
  78. X        select-buffer "Function Keys"
  79. X        add-mode "red"
  80. X!force        5 resize-window
  81. X        beginning-of-file
  82. X    !endif
  83. X    bind-to-key execute-macro-1 FNP
  84. X    2 next-window
  85. X    write-message "[Function key window ON]"
  86. X!endm
  87. X
  88. X;    Enter Help
  89. X2 store-macro
  90. X    1 next-window        ;Make sure the function key window isn't up!
  91. X    !if &sequal $cbufname "Function Keys"
  92. X        delete-window
  93. X        bind-to-key execute-macro-14 FNP
  94. X    !endif
  95. X    help
  96. X    8 resize-window
  97. X    bind-to-key execute-macro-12 FNT
  98. X    bind-to-key execute-macro-13 FNS
  99. X    bind-to-key execute-macro-11 FNQ
  100. X    bind-to-key execute-macro-15 ^XO
  101. X    bind-to-key execute-macro-15 ^XP
  102. X    bind-to-key execute-macro-15 FN4
  103. X    add-mode "red"
  104. X    beginning-of-file
  105. X    2 forward-character
  106. X    clear-message-line
  107. X!endm
  108. X
  109. X;    Exit Help
  110. X11 store-macro
  111. X    bind-to-key previous-page FNT
  112. X    bind-to-key next-page FNS
  113. X    bind-to-key execute-macro-2 FNQ
  114. X    bind-to-key next-window ^XO
  115. X    bind-to-key previous-window ^XP
  116. X    bind-to-key next-window FN4
  117. X    delete-window
  118. X    clear-message-line
  119. X!endm
  120. X
  121. X;    don't allow these commands from within the HELP screen
  122. X15    store-macro
  123. X    write-message "[Use F2 to exit HELP]"
  124. X!endm
  125. X
  126. X;    last help page
  127. X12 store-macro
  128. X    beginning-of-line
  129. X    search-reverse "=>"
  130. X    1 redraw-display
  131. X!endm
  132. X
  133. X;    next help page
  134. X13 store-macro
  135. X    beginning-of-line
  136. X    2 forward-character
  137. X    search-forward "=>"
  138. X    1 redraw-display
  139. X!endm
  140. X
  141. X;    reformat indented paragraph
  142. X
  143. X6 store-macro
  144. X    write-message "                    [Fixing paragraph]"
  145. X    set $discmd "FALSE"
  146. X    kill-region
  147. X    2 split-current-window
  148. X    select-buffer "[temp]"
  149. X    yank
  150. X    beginning-of-file
  151. X    replace-string "~n    " "~n"
  152. X    66 set-fill-column
  153. X    fill-paragraph
  154. X    77 set-fill-column
  155. X    beginning-of-file
  156. X    handle-tab
  157. X    replace-string ~n "~n    "
  158. X    end-of-file
  159. X    2 delete-previous-character
  160. X    beginning-of-file
  161. X    set-mark
  162. X    end-of-file
  163. X    kill-region
  164. X    unmark-buffer
  165. X    delete-window
  166. X    yank
  167. X    delete-buffer "[temp]"
  168. X    set $discmd "TRUE"
  169. X    write-message "                    [Fixed paragraph]"
  170. X!endm
  171. X
  172. X;    indent region
  173. X
  174. X7 store-macro
  175. X    write-message "                    [Indenting region]"
  176. X    kill-region
  177. X    2 split-current-window
  178. X    select-buffer "[temp]"
  179. X    yank
  180. X    beginning-of-file
  181. X    handle-tab
  182. X    replace-string "~n" "~n    "
  183. X    end-of-file
  184. X    4 delete-previous-character
  185. X    beginning-of-file
  186. X    set-mark
  187. X    write-message "                    [Indenting region]"
  188. X    end-of-file
  189. X    kill-region
  190. X    unmark-buffer
  191. X    delete-window
  192. X    yank
  193. X    delete-buffer "[temp]"
  194. X    write-message "                    [Region Indented]"
  195. X!endm
  196. X
  197. X;    undent region
  198. X
  199. X8 store-macro
  200. X    write-message "                    [Undenting region]"
  201. X    kill-region
  202. X    2 split-current-window
  203. X    select-buffer "[temp]"
  204. X    yank
  205. X    beginning-of-file
  206. X    delete-next-character
  207. X    replace-string "~n    " "~n"
  208. X    end-of-file
  209. X    2 delete-previous-character
  210. X    beginning-of-file
  211. X    set-mark
  212. X    write-message "                    [Undenting region]"
  213. X    end-of-file
  214. X    kill-region
  215. X    unmark-buffer
  216. X    delete-window
  217. X    yank
  218. X    delete-buffer "[temp]"
  219. X    write-message "                    [Region undented]"
  220. X!endm
  221. X
  222. X;    bring up the function key window
  223. X
  224. X    1 split-current-window
  225. X    select-buffer "Function Keys"
  226. X    add-mode "red"
  227. X    5 resize-window
  228. X    insert-string "f1 search      f2 search back | F1 toggle function list F2 toggle help file~n"
  229. X    insert-string "f3 hunt        f4 hunt back   | F3 find command/apropos F4 describe key~n"
  230. X    insert-string "f5 next window f6 exec macro  | F5 reformat paragraph   F6 ref undented region~n"
  231. X    insert-string "f7 find file   f8 exec file   | F7 indent region        F8 undent region~n"
  232. X    insert-string "f9 save file  f10 exit emacs  | F9 execute DOS command F10 shell up~n"
  233. X    beginning-of-file
  234. X    unmark-buffer
  235. X    next-window
  236. X    set $discmd "TRUE"
  237. X    write-message "[Emacs is READY]"
  238. FRIDAY_NIGHT
  239. echo extracting - azmap.cmd
  240. sed 's/^X//' > azmap.cmd << 'FRIDAY_NIGHT'
  241. X;    AZMAP.CMD:    MicroEMACS Macro file
  242. X;            to translate an AZTEC C .SYM map file into
  243. X;            the form needed to read it into ADDSYMS
  244. X;            to be used with Pheonix's PFIX plus (C) debugger
  245. X;
  246. X;            written 6/5/86 by Daniel Lawrence
  247. X
  248. Xbeginning-of-file
  249. Xnewline
  250. Xprevious-line
  251. Xreplace-string "~n" "~n 0000:"
  252. Xbeginning-of-line
  253. Xkill-to-end-of-line
  254. Xnewline
  255. Xnewline
  256. Xnewline
  257. Xbeginning-of-file
  258. Xnewline
  259. Xinsert-string "  Address         Publics by Name"
  260. Xnewline
  261. Xset-mark
  262. Xend-of-file
  263. Xcase-region-upper
  264. Xbeginning-of-file
  265. Xreplace-string "_~n" "~n"
  266. X
  267. FRIDAY_NIGHT
  268. echo extracting - bdata.cmd
  269. sed 's/^X//' > bdata.cmd << 'FRIDAY_NIGHT'
  270. X;Create a block of DATA statements for a BASIC program
  271. X; within MicroEMACS 3.8
  272. X
  273. X    insert-string "1000 DATA "
  274. X    set %linenum 1000
  275. X
  276. X*nxtin
  277. X    update-screen        ;make sure we see the changes
  278. X    set %data @"Next number[0 to end]: "
  279. X    !if &equal %data 0
  280. X        !goto finish
  281. X    !endif
  282. X
  283. X    !if &greater $curcol 60
  284. X        2 delete-previous-character
  285. X        newline
  286. X        set %linenum &add %linenum 10
  287. X        insert-string &cat %linenum " DATA "
  288. X    !endif
  289. X
  290. X    insert-string &cat %data ", "
  291. X    !goto nxtin
  292. X
  293. X*finish
  294. X
  295. X    2 delete-previous-character
  296. X    newline
  297. X
  298. X
  299. FRIDAY_NIGHT
  300. echo extracting - bpage.cmd
  301. sed 's/^X//' > bpage.cmd << 'FRIDAY_NIGHT'
  302. X;    BPAGE.CMD:    Box Macro and rectangualr region page
  303. X;            for MicroEMACS 3.9d and above
  304. X;            (C)opyright 1987 by Suresh Konda and Daniel M Lawrence
  305. X;            Last Update: 11/02/87
  306. X
  307. X; make sure the function key window is up
  308. X    set %rcfkeys FALSE
  309. X    execute-macro-1
  310. X    write-message "Loading..."
  311. X
  312. X; set the clean procedure up
  313. Xstore-procedure clean
  314. X        delete-buffer "[Macro 10]"
  315. X        delete-buffer "[Macro 11]"
  316. X        delete-buffer "[Macro 12]"
  317. X        delete-buffer "[getblock]"
  318. X    delete-buffer "[putblock]"
  319. X    delete-buffer "[Macro 13]"
  320. X    delete-buffer "[Macro 14]"
  321. X    delete-buffer "[Macro 15]"
  322. X    delete-buffer "[Macro 16]"
  323. X    delete-buffer "[Macro 17]"
  324. X    delete-buffer "[Macro 18]"
  325. X    delete-buffer "[Macro 19]"
  326. X    delete-buffer "[drawbox]"
  327. X    delete-buffer "[setpoints]"
  328. X    delete-buffer "[horizontal]"
  329. X    delete-buffer "[vertical]"
  330. X    delete-buffer "[horline]"
  331. X    delete-buffer "[vertline]"
  332. X    delete-buffer "[delcol]"
  333. X    delete-buffer "[iline]"
  334. X!endm
  335. X
  336. X; Write out the page instructions
  337. X    save-window
  338. X    1 next-window
  339. X    beginning-of-file
  340. X    set $curcol 25
  341. X    overwrite-string " F1 Line type [DOUBLE]    F2 kill block   "
  342. X    next-line
  343. X    set $curcol 25
  344. X    overwrite-string " F3 draw box              F4 copy block   "
  345. X    next-line
  346. X    set $curcol 25
  347. X    overwrite-string " F5 insert line           F6 yank block   "
  348. X    next-line
  349. X    set $curcol 18
  350. X    overwrite-string "BOX "
  351. X    set $curcol 25
  352. X    overwrite-string " F7 insert space          F8 insert block "
  353. X    next-line
  354. X    set $curcol 25
  355. X    overwrite-string "                                          "
  356. X    unmark-buffer
  357. X    beginning-of-file
  358. X    !force restore-window
  359. X    update-screen
  360. X
  361. X; this sets overwrite mode to off.  to change it, set rcinsert to 1
  362. Xset %rcinsert 0
  363. X
  364. X;    change line type
  365. X
  366. X10    store-macro
  367. X    !if &equ %rcltype 1
  368. X        set %rcltype 2
  369. X        set %rctmp "DOUBLE"
  370. X    !else
  371. X        set %rcltype 1
  372. X        set %rctmp "SINGLE"
  373. X    !endif
  374. X    set %cbuf $cbufname
  375. X    set %cline $cwline
  376. X    select-buffer "Function Keys"
  377. X    beginning-of-file
  378. X    1 goto-line
  379. X    40 forward-character
  380. X    6 delete-next-character
  381. X    insert-string %rctmp
  382. X    unmark-buffer
  383. X    select-buffer %cbuf    
  384. X    %cline redraw-display
  385. X    !return
  386. X!endm
  387. X
  388. X;    Draw a box
  389. X
  390. X12    store-macro
  391. X    !if &equal %rcltype  1
  392. X        set %c1 "Z"
  393. X        set %c2 "D"
  394. X        set %c3 "?"
  395. X        set %c4 "@"
  396. X        set %c5 "Y"
  397. X        set %c6 "3"
  398. X    !else
  399. X        set %c1 "I"
  400. X        set %c2 "M"
  401. X        set %c3 ";"
  402. X        set %c4 "H"
  403. X        set %c5 "<"
  404. X        set %c6 ":"
  405. X    !endif
  406. X    run drawbox    
  407. X!endm
  408. X
  409. X;    insert a line in a box
  410. X
  411. X14    store-macro
  412. X    run iline
  413. X!endm
  414. X
  415. X;    insert a blank line in a box
  416. X
  417. X16    store-macro
  418. X    set %rctmp %rcltype
  419. X    set %rcltype 0
  420. X    run iline
  421. X    set %rcltype %rctmp
  422. X!endm
  423. X
  424. Xstore-procedure    iline
  425. X    run setpoints
  426. X    !if &equal %pcol %mcol
  427. X        run vertical
  428. X    !else
  429. X        !if &equal %pline %mline
  430. X            run horizontal
  431. X        !else
  432. X            write-message "Illegal point and mark for lines"
  433. X        !endif
  434. X    !endif
  435. X!endm
  436. X
  437. Xstore-procedure setpoints
  438. X; procedure will set pcol, pline, mcol and mline. currently at point
  439. X    set %pcol $curcol
  440. X    set %pline $curline
  441. X    exchange-point-and-mark
  442. X    set %mcol $curcol
  443. X    set %mline $curline
  444. X    exchange-point-and-mark
  445. X!endm
  446. X
  447. Xstore-procedure drawbox
  448. X    run setpoints
  449. X    set $curline %mline
  450. X    set $curcol %mcol
  451. X;draw top horizontal line
  452. X    insert-string %c1
  453. X;    set %width &sub &sub %pcol %mcol 1
  454. X    set %width &sub %pcol %mcol
  455. X    %width insert-string %c2
  456. X     insert-string %c3
  457. X    newline-and-indent
  458. X;draw bottom horizontal line
  459. X    %pline goto-line
  460. X    next-line
  461. X    end-of-line
  462. X    newline
  463. X    set $curcol %mcol
  464. X    insert-string %c4
  465. X    %width insert-string %c2
  466. X    insert-string %c5
  467. X; bump pline 
  468. X    set %pline &add %pline 1
  469. X;draw verticals -- go to top and work our way down
  470. X    %mline goto-line
  471. X    !while &less $curline %pline
  472. X        next-line
  473. X        detab-line
  474. X        previous-line
  475. X        end-of-line
  476. X        !if &less $curcol %pcol
  477. X            &sub %pcol $curcol insert-string " "
  478. X        !endif
  479. X        set $curcol %pcol
  480. X        insert-string %c6
  481. X        set $curcol %mcol
  482. X        insert-string %c6
  483. X    !endwhile
  484. X;return to point
  485. X    %pline goto-line
  486. X    next-line
  487. X    beginning-of-line
  488. X    %width forward-character
  489. X    2 forward-character
  490. X!endm
  491. X
  492. X; user procedure to draw a horizontal from mark to point making spaces for
  493. X; the characters.
  494. Xstore-procedure horizontal
  495. X    set %s1 ":"
  496. X    set %s2 "3"
  497. X    !if &equal %rcltype  0
  498. X;    then insert blanks
  499. X        set %c1 ":"
  500. X        set %c2 "3"
  501. X        set %c3 " "
  502. X        set %c4 ":"
  503. X        set %c5 "3"
  504. X        set %c6 ":"
  505. X        set %c7 "3"
  506. X    !else
  507. X        !if &equal %rcltype  1
  508. X;        then insert a single line
  509. X            set %c1 "G"
  510. X            set %c2 "C"
  511. X            set %c3 "D"
  512. X            set %c4 "W"
  513. X            set %c5 "E"
  514. X            set %c6 "6"
  515. X            set %c7 "4"
  516. X        !else
  517. X;        then insert a double line
  518. X            set %c1 "L"
  519. X            set %c2 "F"
  520. X            set %c3 "M"
  521. X            set %c4 "N"
  522. X            set %c5 "X"
  523. X            set %c6 "9"
  524. X            set %c7 "5"
  525. X        !endif
  526. X    !endif
  527. X    run horline
  528. X!endm
  529. X
  530. Xstore-procedure vertical
  531. X    set %s1 "M"
  532. X    set %s2 "D"
  533. X    !if &equal %rcltype  0
  534. X        set %c1 "M"
  535. X        set %c2 "D"
  536. X        set %c3 " "
  537. X        set %c4 "M"
  538. X        set %c5 "D"
  539. X        set %c6 "M"
  540. X        set %c7 "D"
  541. X    !else
  542. X        !if &equal %rcltype  1
  543. X            set %c1  "Q"
  544. X            set %c2 "B"
  545. X            set %c3  "3"
  546. X            set %c4 "X"
  547. X            set %c5  "E"
  548. X            set %c6 "O"
  549. X            set %c7  "A"
  550. X        !else
  551. X            set %c1 "K"
  552. X            set %c2  "R"
  553. X            set %c3 ":"
  554. X            set %c4  "N"
  555. X            set %c5 "W"
  556. X            set %c6  "J"
  557. X            set %c7 "P"
  558. X        !endif
  559. X    !endif
  560. X    run verline
  561. X!endm
  562. X
  563. Xstore-procedure horline
  564. X; procedure to draw a line from beginning of line to point
  565. X    !if &equal %mcol %pcol
  566. X        !return
  567. X    !endif
  568. X    !if &less %pcol %mcol
  569. X;    then point was to left of mark.  exchange and reset variables
  570. X        exchange-point-and-mark
  571. X        run setpoints
  572. X    !endif
  573. X    !if %rcinsert
  574. X        set $curcol %mcol
  575. X    !else
  576. X        end-of-line
  577. X        newline
  578. X        ; move to under mark
  579. X        %mcol insert-string " "
  580. X    !endif
  581. X; see if first char is a vertical line
  582. X    previous-line
  583. X    set %char &chr $curchar
  584. X    next-line
  585. X    %rcinsert delete-next-character
  586. X    !if &sequal %char %s1
  587. X            insert-string %c1
  588. X    !else
  589. X        !if &sequal %char %s2
  590. X            insert-string %c2
  591. X        !else
  592. X            insert-string %c3
  593. X        !endif
  594. X    !endif
  595. X; now for all chars but the last character i.e., char at point
  596. X    !while &less $curcol %pcol
  597. X        previous-line
  598. X        set %char  &chr $curchar
  599. X        next-line
  600. X        %rcinsert delete-next-character
  601. X        !if &sequal %char %s1
  602. X            insert-string %c4
  603. X            !else 
  604. X            !if &sequal %char %s2
  605. X                insert-string %c5
  606. X            !else
  607. X                insert-string %c3
  608. X            !endif
  609. X        !endif
  610. X    !endwhile
  611. X; see if last char is a vertical line
  612. X    previous-line
  613. X    set %char  &chr $curchar
  614. X    next-line
  615. X    %rcinsert delete-next-character
  616. X    !if &sequal %char %s1
  617. X            insert-string %c6
  618. X    !else
  619. X        !if &sequal %char %s2
  620. X            insert-string %c7
  621. X        !else
  622. X            insert-string %c3
  623. X        !endif
  624. X    !endif
  625. X!endm
  626. X
  627. Xstore-procedure verline
  628. X;  proc to draw vertical line from mark to point.  mark should be above point.
  629. X    !if &equal %mline %pline
  630. X        !return
  631. X    !endif
  632. X;    if point was above mark exchange and reset variables
  633. X    !if &less %pline %mline
  634. X        exchange-point-and-mark
  635. X        run setpoints
  636. X    !endif
  637. X;top line
  638. X    %mline goto-line
  639. X    set $curcol %pcol
  640. X    backward-character
  641. X    set %char &chr $curchar
  642. X    forward-character
  643. X    %rcinsert delete-next-character
  644. X    !if &sequal %char %s1
  645. X        insert-string %c1
  646. X    !else
  647. X        !if &sequal %char %s2
  648. X            insert-string %c2
  649. X        !else
  650. X            insert-string %c3
  651. X        !endif
  652. X    !endif
  653. X;all but pline
  654. X    !while &less $curline &sub %pline 1
  655. X        next-line
  656. X        beginning-of-line
  657. X        set $curcol %pcol
  658. X        backward-character
  659. X        set %char &chr $curchar
  660. X        forward-character
  661. X        %rcinsert delete-next-character
  662. X        !if &sequal %char %s1
  663. X            insert-string %c4
  664. X        !else
  665. X            !if &sequal %char %s2
  666. X                insert-string %c5
  667. X            !else
  668. X                insert-string %c3
  669. X            !endif
  670. X        !endif
  671. X    !endwhile
  672. X; bottom line
  673. X    next-line
  674. X    beginning-of-line
  675. X    set $curcol %pcol
  676. X    backward-character
  677. X    set %char &chr $curchar
  678. X    forward-character
  679. X    %rcinsert delete-next-character
  680. X    !if &sequal %char %s1
  681. X        insert-string %c6
  682. X    !else
  683. X        !if &sequal %char %s2
  684. X            insert-string %c7
  685. X        !else
  686. X            insert-string %c3
  687. X        !endif
  688. X    !endif
  689. X!endm
  690. X
  691. Xstore-procedure delcol 
  692. X; proc to delete column.  we will use the getblock procedure with the column of
  693. X; the point set to one beyond the column point
  694. X    set-points
  695. X    !if &equal %mcol %pcol
  696. X        ; same columns
  697. X        forward-character
  698. X        run getblock
  699. X        !return
  700. X    !else
  701. X        !if &equal %mline %pline
  702. X        run getblock
  703. X        !return
  704. X    !endif
  705. X!endm
  706. X
  707. X;    delete a rectangular block of text
  708. X
  709. X11    store-macro
  710. X    set %bkcopy FALSE
  711. X    run getblock
  712. X    write-message "[Block deleted]"
  713. X!endm
  714. X
  715. X;    copy a rectangular region
  716. X
  717. X13    store-macro
  718. X    set %bkcopy TRUE
  719. X    run getblock
  720. X    write-message "[Block copied]"
  721. X!endm
  722. X
  723. X;    yank a rectangular region
  724. X
  725. X15    store-macro
  726. X    set %bkcopy TRUE
  727. X    run putblock
  728. X!endm
  729. X
  730. X;    insert a rectangular region
  731. X
  732. X17    store-macro
  733. X    set %bkcopy FALSE
  734. X    run putblock
  735. X!endm
  736. X
  737. Xstore-procedure getblock
  738. X    ;set up needed variables
  739. X    set $discmd FALSE
  740. X    delete-buffer "[block]"
  741. X    set %rcbuf $cbufname
  742. X    set %cline $cwline
  743. X
  744. X    ;save block boundries
  745. X    set %endpos $curcol
  746. X    set %endline $curline
  747. X    exchange-point-and-mark
  748. X    set %begpos $curcol
  749. X    set %begline $curline
  750. X    set %blwidth &sub %endpos %begpos
  751. X
  752. X    ;detab the region
  753. X    &add &sub %endline %begline 1 detab-line
  754. X
  755. X    ;scan through the block
  756. X    set $curline %begline
  757. X    !while &less $curline &add %endline 1
  758. X        ;grab the part of this line needed
  759. X        !force set $curcol %begpos
  760. X        set-mark
  761. X        !force set $curcol %endpos
  762. X        kill-region
  763. X
  764. X        ;bring it back if this is just a copy
  765. X        !if %bkcopy
  766. X            yank
  767. X        !endif
  768. X
  769. X        ;put the line in the block buffer
  770. X        select-buffer "[block]"
  771. X        yank
  772. X
  773. X        ;and pad it if needed
  774. X        !if &less $curcol %blwidth
  775. X            &sub %blwidth $curcol insert-space
  776. X            end-of-line
  777. X        !endif
  778. X        forward-character
  779. X
  780. X        ;onward...
  781. X        select-buffer %rcbuf
  782. X        next-line
  783. X    !endwhile
  784. X
  785. X        ;unmark the block
  786. X        select-buffer "[block]"
  787. X        unmark-buffer
  788. X        select-buffer %rcbuf
  789. X        previous-line
  790. X        %cline redraw-display
  791. X    set $discmd TRUE
  792. X!endm
  793. X
  794. X;    insert/overlay a rectangular block of text
  795. X
  796. Xstore-procedure putblock
  797. X    ;set up needed variables
  798. X    set $discmd FALSE
  799. X    set %rcbuf $cbufname
  800. X    set %cline $cwline
  801. X
  802. X    ;save block boundries
  803. X    set %begpos $curcol
  804. X    set %begline $curline
  805. X
  806. X    ;scan through the block
  807. X    select-buffer "[block]"
  808. X    beginning-of-file
  809. X    set %endpos &add %begpos $lwidth
  810. X    !while ¬ &equ $lwidth 0
  811. X
  812. X        ;pad the destination if it is needed
  813. X        select-buffer %rcbuf
  814. X        beginning-of-line
  815. X        !if ¬ &equ $lwidth 0
  816. X            detab-line
  817. X            previous-line
  818. X        !endif
  819. X        !force set $curcol %begpos
  820. X        !if &less $curcol %begpos
  821. X            &sub %begpos $curcol insert-space
  822. X            end-of-line
  823. X        !endif
  824. X
  825. X        ;delete some stuff if this should overlay
  826. X        !if %bkcopy
  827. X            set-mark
  828. X            !force set $curcol %endpos
  829. X            kill-region
  830. X        !endif
  831. X
  832. X        ;grab the line from the block buffer
  833. X        select-buffer "[block]"
  834. X        beginning-of-line
  835. X        set-mark
  836. X        end-of-line
  837. X        copy-region
  838. X        forward-character
  839. X
  840. X        ;put the line in the destination position
  841. X        select-buffer %rcbuf
  842. X        yank
  843. X        next-line
  844. X
  845. X        ;onward...
  846. X        select-buffer "[block]"
  847. X    !endwhile
  848. X
  849. X    select-buffer %rcbuf
  850. X    set $curline %begline
  851. X    set $curcol %begpos
  852. X    %cline redraw-display
  853. X    set $discmd TRUE
  854. X!endm
  855. X
  856. X    ; and init some variables
  857. X    set %rcltype 2
  858. X    write-message "[Block mode loaded]"
  859. X
  860. FRIDAY_NIGHT
  861. echo extracting - emacs.hlp
  862. sed 's/^X//' > emacs.hlp << 'FRIDAY_NIGHT'
  863. X=>        MicroEMACS 3.8 Help screens        (01/18/87)
  864. X
  865. X    M-  means to use the <ESC> key prior to using another key
  866. X    ^A  means to use the control key at the same time as the A key
  867. X
  868. X^V or [Pg Dn]     Scroll down        M-< or <HOME>    Begining of file
  869. X^Z or [Pg Up]     Scroll up        M-> or <END>    End of file
  870. X
  871. X-----------------------------------------------------------------------
  872. X=>        (1) MOVING THE CURSOR
  873. X
  874. X^F  Forward character   M-F    Forward word        Keypad arrows
  875. X^B  Backward character  M-B    Backward word        are active!
  876. X^A  Front of line    M-G    Goto a line
  877. X^E  End of line        
  878. X^N  Next line        M-N    Front of paragraph
  879. X^P  Previous line    M-P    End of paragraph
  880. X-----------------------------------------------------------------------
  881. X=>        (2) DELETING & INSERTING
  882. X
  883. X<--             Delete previous character
  884. X^D or <DELETE>  Delete next character
  885. X^C or <INSERT>  Insert a space
  886. XM-<--           Delete previous word
  887. XM-D             Delete next word
  888. X^K              Close (delete) to end of line
  889. X-----------------------------------------------------------------------
  890. X=>        (2a) MORE DELETING & INSERTING
  891. X
  892. X<RETURN>   Insert a newline             <TAB>  Advance to next tab stop
  893. X^J         Insert a newline and indent  M-^W   Delete paragraph
  894. X^O         Open (insert) line
  895. X^W         Delete region between mark (set using M-<spacebar>) and cursor
  896. XM-W        Copy region to kill buffer
  897. X^X ^O      Delete blank lines around cursor
  898. X-----------------------------------------------------------------------
  899. X=>        (3) SEARCHING
  900. X
  901. X^S    Search forward from cursor position.
  902. X^R    Reverse search from cursor position.
  903. X^X S    Forward incremental search
  904. X^X R    Reverse incremental search
  905. X<ALT> S    Search for the next occurence of the last string (IBM-PC only)
  906. X<ALT> R    Search for the last occurence of the last string (IBM-PC only)
  907. X-----------------------------------------------------------------------
  908. X=>        (4) REPLACING
  909. X
  910. XM-R   Replace all instances of first typed-in string with second
  911. X          typed-in string.  End each string with ESC.
  912. XM-^R  Replace with query.  Answer with:
  913. X    ^G  cancel            .   exit to entry point
  914. X    !   replace the rest        Y    replace & continue
  915. X    ?   Get a list of options    N   no replacement & continue
  916. X-----------------------------------------------------------------------
  917. X=>        (5) CAPITALIZING & TRANSPOSING
  918. X
  919. XM-U    UPPERCASE word
  920. XM-C    Capitalize word        ^T    Transpose characters
  921. XM-L    lowercase word
  922. X^X ^L    lowercase region
  923. X^X ^U    uppercase region
  924. X^Q    Quote next entry, so that control codes may be entered into text
  925. X-----------------------------------------------------------------------
  926. X=>        (6) REGIONS & THE KILL BUFFER
  927. X
  928. XM-<spacebar>    set MARK at current position
  929. X^X ^X        eXchange mark and cursor
  930. X
  931. XA REGION will then be continuously-defined as the area between the mark and
  932. Xthe current cursor position.  The KILL BUFFER is the text which has been
  933. Xmost recently saved or deleted.
  934. X-----------------------------------------------------------------------
  935. X=>        (7) COPYING AND MOVING
  936. X
  937. X^W  Delete (Wipe) region        M-W    copy region to KILL buffer
  938. X^Y  Yankback save buffer at cursor
  939. XGenerally, the procedure for copying or moving text is:
  940. X    1)  Mark a REGION using M-<spacebar> at beginning and cursor at end.
  941. X    2)  Delete it (with ^W) or copy it (with M-W) into the KILL buffer.
  942. X    3)  Move the cursor to the desired location and yank it back (with ^Y).
  943. X-----------------------------------------------------------------------
  944. X=>        (8) MODES OF OPERATION
  945. X^X M    Add mode in buffer              M-M    Add global mode
  946. X^X ^M   Delete mode in buffer           M-^M   Delete global mode
  947. XOVER        Replaces (overwrites) rather than inserts characters
  948. XWRAP        Turns on word wrap (automatic carraige return).
  949. XVIEW        Allows viewing file without insertion and deletion.
  950. XCMODE        Automatic indenting for C program entry
  951. XEXACT/MAGIC    Changes how search and replace commands work (see next page)
  952. X-----------------------------------------------------------------------
  953. X=>        (9) SEARCH AND REPLACE MODES
  954. X
  955. XEXACT    Uppper/lower case is not ignored in searches
  956. XMAGIC   Regular pattern matching characters are active
  957. X    .   Matches any one character
  958. X    *   Matches any any number of the preceding character
  959. X    ^   Beginning of line        [ ]   Character class enclosure
  960. X    $   End of line              \     Quote next character
  961. X-----------------------------------------------------------------------
  962. X=>        (10) ON-SCREEN FORMATTING
  963. X
  964. X^X F        Set fill column
  965. XMn-<tab>    Set tab spacing to n charecters between tabs stops
  966. XM-Q        Format paragraph so that text lies between margins
  967. X^X =        Position report -- displays line number, char count,
  968. X                                   file size and character under cursor
  969. XM-^C        Count words/lines/chars in marked region
  970. X-----------------------------------------------------------------------
  971. X=>        (11) MULTIPLE WINDOWS
  972. X
  973. XMany WINDOWS may be active at once on the screen.  All windows may show
  974. Xdifferent parts of the same buffer, or each may display a different one.
  975. X^X 2    Split the current window in two    ^X O    Change to next window
  976. X^X 0    delete current window           ^X P    Change to previous window
  977. X^X 1    delete all other windows        M-^V    Page down next window
  978. X                                      M-^Z    Page up other window
  979. X-----------------------------------------------------------------------
  980. X=>        (12) CONTROLLING WINDOWS AND THE SCREEN
  981. X
  982. X^X ^    Enlarge current window   M-<n> ^X W   Resize window to <n> lines
  983. X^X ^Z   Shrink current window    M-<n> M-S    Change screen to <n> lines
  984. X^X ^N   Move window down         M-<n> M-T    Change screen to <n> columns
  985. X^X ^P   Move window up
  986. XM-^L    Reposition window
  987. X^L      Refresh the screen
  988. X-----------------------------------------------------------------------
  989. X=>        (13) MULTIPLE BUFFERS
  990. XA BUFFER is a named area containing a document being edited.  Many buffers
  991. Xmay be activated at once.
  992. X^X B    Switch to another buffer.  <CR> = use just-previous buffer
  993. X^X X    Switch to next buffer in buffer list
  994. XM-^N    Change name of current buffer
  995. X^X K    Delete a non-displayed buffer.
  996. X^X ^B    Display buffer directory in a window
  997. X-----------------------------------------------------------------------
  998. X=>        (14) READING FROM DISK
  999. X
  1000. X^X ^F    Find file; read into a new buffer created from filename.
  1001. X    (This is the usual way to begin editing a new file.)
  1002. X^X ^R    Read file into current buffer, erasing its previous contents.
  1003. X    No new buffer will be created.
  1004. X^X ^I    Insert file into current buffer at cursor's location.
  1005. X^X ^V    Find a file to make current in VIEW mode
  1006. X-----------------------------------------------------------------------
  1007. X=>        (15) SAVING TO DISK
  1008. X
  1009. X^X ^S    Save current buffer to disk
  1010. X^X ^W    Write current buffer to disk
  1011. X^X N    Change file name of current buffer
  1012. XM-Z    Write out all changed buffers and exit MicroEMACS
  1013. X
  1014. X
  1015. X-----------------------------------------------------------------------
  1016. X=>        (16) ACCESSING THE OPERATING SYSTEM
  1017. X
  1018. X^X !    Send one command to the operating system and return
  1019. X^X @    Pipe DOS command results to buffer
  1020. X^X #    Filter buffer through DOS filter program
  1021. X^X C    Start a new command processor under MicroEMACS
  1022. X^X D    Suspend MicroEMACS into the background (UNIX BSD4.2 only)
  1023. X^X ^C    Exit MicroEMACS
  1024. X-----------------------------------------------------------------------
  1025. X=>        (17) KEY BINDINGS AND COMMANDS
  1026. X
  1027. XM-K    Bind a key to a command        M-A  Describe a class of commands
  1028. XM-^K    Unbind a key from a command
  1029. X^X ?    Describe command bound to a key
  1030. XM-X    Execute a named (and possibly unbound) command
  1031. X{Describe-bindings}
  1032. X    Display a list of all commands and key bindings to a buffer
  1033. X-----------------------------------------------------------------------
  1034. X=>        (18) COMMAND EXECUTION
  1035. XCommands can be specified as command lines in the form:
  1036. X    <optional repeat count> {command-name} <optional arguments>
  1037. X{Execute-command-line}    execute a typed in command line
  1038. X{Execute-buffer}    executes commands lines in a buffer
  1039. X{Execute-file}        executes command lines from a file
  1040. X{clear-message-line}    clears the message line during execution
  1041. X   M-~            clears the change flag for a buffer
  1042. X-----------------------------------------------------------------------
  1043. X=>        (19) MACRO EXECUTION
  1044. X
  1045. X^X (    Start recording keyboard macro
  1046. X^X )    Stop recording keyboard macro
  1047. X^X E    Execute keyboard macro
  1048. XM-<n> {store-macro}    Start recording named macro
  1049. X      !endm        Stop recording named macro
  1050. X{execute-macro-n}    Execute macro n (where n is from 1 to 20)
  1051. X-----------------------------------------------------------------------
  1052. X=>        (20) SPECIAL KEYS
  1053. X
  1054. X^G        Cancel current command and return to top level of processing.
  1055. X^U or        Universal repeat.  May be followed by an integer (default = 4)
  1056. XM-<digit>    and repeats the next command that many times.
  1057. XM-X        Execute a named (and possibly unbound) command
  1058. X
  1059. X
  1060. FRIDAY_NIGHT
  1061. echo extracting - emacs.rc
  1062. sed 's/^X//' > emacs.rc << 'FRIDAY_NIGHT'
  1063. X;    EMACS.RC:    Standard micro Startup program
  1064. X;            for MicroEMACS 3.9d and above
  1065. X;            (C)opyright 1987 by Daniel M Lawrence
  1066. X;            Last Update: 10/20/87
  1067. X
  1068. Xset $discmd FALSE
  1069. Xwrite-message "[Setting up....]"
  1070. X
  1071. X; If you screen "SNOWS", uncomment this line
  1072. X;    set $flicker "TRUE"
  1073. X
  1074. X; To use an IBM-PC EGA card, uncomment the following line
  1075. X;    set $sres "EGA"
  1076. X
  1077. X;    ***** Rebind the Function key group
  1078. X
  1079. Xbind-to-key search-forward        FN;
  1080. Xbind-to-key search-reverse        FN<
  1081. Xbind-to-key hunt-forward        FN=
  1082. Xbind-to-key hunt-backward        FN>
  1083. Xbind-to-key execute-macro-1        FN?
  1084. Xbind-to-key execute-macro-2        FN@
  1085. Xbind-to-key next-window            FNA
  1086. Xbind-to-key execute-macro-3        FNB
  1087. Xbind-to-key save-file            FNC
  1088. Xbind-to-key exit-emacs            FND
  1089. X
  1090. Xbind-to-key execute-macro-10        FNT
  1091. Xbind-to-key execute-macro-11        FNU
  1092. Xbind-to-key execute-macro-12        FNV
  1093. Xbind-to-key execute-macro-13        FNW
  1094. Xbind-to-key execute-macro-14        FNX
  1095. Xbind-to-key execute-macro-15        FNY
  1096. Xbind-to-key execute-macro-16        FNZ
  1097. Xbind-to-key execute-macro-17        FN[
  1098. Xbind-to-key execute-macro-18        FN\
  1099. Xbind-to-key execute-macro-19        FN]
  1100. X
  1101. X;    Set Default Global modes
  1102. X
  1103. Xadd-global-mode "blue"
  1104. X;bind-to-key meta-prefix `
  1105. X
  1106. X;    Toggle function key window display
  1107. X
  1108. X1    store-macro
  1109. X    !if %rcfkeys
  1110. X        !goto rcfoff
  1111. X    !endif
  1112. X
  1113. X;    toggle function key window on
  1114. X    save-window
  1115. X    1 next-window
  1116. X    !if &sequal $cbufname "emacs.hlp"
  1117. X        delete-window
  1118. X    !endif
  1119. X    !if ¬ &sequal $cbufname "Function Keys"
  1120. X        1 split-current-window
  1121. X        select-buffer "Function Keys"
  1122. X        add-mode "red"
  1123. X        !force 5 resize-window
  1124. X        1 goto-line
  1125. X    !endif
  1126. X    set %rcfkeys TRUE
  1127. X    !force restore-window
  1128. X    !if &sequal $cbufname "Function Keys"
  1129. X        next-window
  1130. X    !endif
  1131. X    write-message "[Function key window ON]"
  1132. X    !return
  1133. X
  1134. X    ;Toggle the function key window off
  1135. X*rcfoff
  1136. X    save-window
  1137. X    1 next-window
  1138. X    !if &sequal "Function Keys" $cbufname
  1139. X        delete-window
  1140. X    !endif
  1141. X    !force restore-window
  1142. X    write-message "[Function key window OFF]"
  1143. X    set %rcfkeys FALSE
  1144. X!endm
  1145. X
  1146. X;    Toggle HELP file onscreen
  1147. X
  1148. X2 store-macro
  1149. X    1 next-window
  1150. X
  1151. X    ;Make sure the function key window isn't up!
  1152. X    !if &sequal $cbufname "Function Keys"
  1153. X        delete-window
  1154. X    !endif
  1155. X    set %rcfkeys FALSE
  1156. X
  1157. X    ;Bring up page 1
  1158. X    !if ¬ &seq $cbufname "emacs.hlp"
  1159. X        help
  1160. X        8 resize-window
  1161. X        add-mode "red"
  1162. X        beginning-of-file
  1163. X        2 forward-character
  1164. X    !endif
  1165. X
  1166. X*rchelp
  1167. X
  1168. X    write-message "[PgUp/PgDn] Page    [FN6] EXIT     ^G  Exit leaving page on screen"
  1169. X    update-screen
  1170. X    set %rctmp >key
  1171. X    !if &equ &asc %rctmp 0
  1172. X        set %rctmp >key
  1173. X        !if &seq %rctmp I
  1174. X            beginning-of-line
  1175. X            !force search-reverse "=>"
  1176. X            1 redraw-display
  1177. X            !goto rchelp
  1178. X        !endif
  1179. X        !if &seq %rctmp Q
  1180. X            beginning-of-line
  1181. X            2 forward-character
  1182. X            !force search-forward "=>"
  1183. X            1 redraw-display
  1184. X            !goto rchelp
  1185. X        !endif
  1186. X        !if &seq %rctmp "~@"
  1187. X            delete-window
  1188. X            !if &seq %rcfkeys TRUE
  1189. X                set %rcfkeys FALSE
  1190. X                execute-macro-1
  1191. X            !endif
  1192. X            write-message "[Help Exited]"
  1193. X            !return
  1194. X        !endif
  1195. X    !endif
  1196. X    !if &equ &asc %rctmp 7
  1197. X        next-window
  1198. X        set %rcfkeys FALSE
  1199. X        write-message "[Help Aborted]"
  1200. X        !return
  1201. X    !endif
  1202. X    !goto rchelp
  1203. X!endm
  1204. X
  1205. X;    Load a new page
  1206. X
  1207. X3    store-macro
  1208. X    !if &seq &find newpage.cmd ""
  1209. X        write-message "[Can not find NEWPAGE.CMD]"
  1210. X        !return
  1211. X    !endif
  1212. X    execute-file newpage.cmd
  1213. X!endm
  1214. X
  1215. X;procedure to clean out the current page (which is nothing right now)
  1216. X
  1217. Xstore-procedure    clean
  1218. X    ; nothing by default
  1219. X!endm
  1220. X
  1221. X;    Set up auto CMODE
  1222. X
  1223. X20    store-macro
  1224. X    set %rctmp &sin $cfname "."
  1225. X    !if &equ %rctmp 0
  1226. X        !return
  1227. X    !endif
  1228. X    set %rctmp &mid $cfname &add %rctmp 1 5
  1229. X    !if &or &seq %rctmp "c" &seq %rctmp "h"
  1230. X        add-mode "cmode"
  1231. X    !endif
  1232. X!endm
  1233. Xbind-to-key execute-macro-20    M-FNR
  1234. X
  1235. X;    bring up the function key window
  1236. X
  1237. X    1 split-current-window
  1238. X    select-buffer "Function Keys"
  1239. X    insert-string "f1 search-> f2 <-search [    MicroEMACS:  Text Editor~n"
  1240. X    insert-string "f3 hunt->   f4 <-hunt   [ ~n"
  1241. X    insert-string "f5 fkeys    f6 help     [  Available function key Pages include:~n"
  1242. X    insert-string "f7 nxt wind f8 pg[    ] [    WORD  PROG  BOX~n"
  1243. X    insert-string "f9 save     f10 exit    [  [use the f8 key to load Pages]~n"
  1244. X    unmark-buffer
  1245. X    delete-window
  1246. X    set %rcfkeys FALSE
  1247. X    execute-macro-1
  1248. X    set $discmd TRUE
  1249. FRIDAY_NIGHT
  1250. echo med.1 completed!
  1251. # That's all folks!
  1252.