home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume1 / 8711 / 16 < prev    next >
Internet Message Format  |  1990-07-13  |  50KB

  1. Path: uunet!husc6!hao!ames!necntc!ncoast!allbery
  2. From: nwd@j.cc.purdue.edu (Daniel Lawrence)
  3. Newsgroups: comp.sources.misc
  4. Subject: MicroEmacs 3.9 Manual (5 of 6)
  5. Message-ID: <5818@ncoast.UUCP>
  6. Date: 26 Nov 87 04:17:24 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Lines: 1424
  9. Approved: allbery@ncoast.UUCP
  10. X-Archive: comp.sources.misc/8711/16
  11.  
  12. X          Modes                                 MicroEMACS Reference Manual
  13. X
  14. X
  15. X          7.7  WRAP mode
  16. X
  17. X
  18. X                  Wrap  mode  is  used  when  typing  in  continuous  text.
  19. X          Whenever the cursor is past the currently set fill column  (72 by
  20. X          default) and the user types a space or a <NL>,  the  last word of
  21. X          the line  is  brought  down  to  the  beginning of the next line.
  22. X          Using this, one just types a continuous stream of words and EMACS
  23. X          automatically inserts <NL>s at appropriate places.
  24. X
  25. X                                NOTE to programmers:
  26. X
  27. X               EMACS actually  calls  up  the  function  bound  to the
  28. X               illegal keystroke M-FNW.  This is bound to the function
  29. X               wrap-word by default, but can be  re-bound  to activate
  30. X               different functions and macros at wrap time.
  31. X
  32. X
  33. X          7.8  VIEW mode
  34. X
  35. X
  36. X                  VIEW mode disables  all  commands  which  can  change the
  37. X          current buffer.  EMACS will display an error message and ring the
  38. X          bell every time you attempt to change a buffer in VIEW mode.
  39. X
  40. X
  41. X
  42. X
  43. X
  44. X
  45. X
  46. X
  47. X
  48. X
  49. X
  50. X
  51. X
  52. X
  53. X
  54. X
  55. X
  56. X
  57. X
  58. X
  59. X
  60. X
  61. X
  62. X
  63. X
  64. X
  65. X
  66. X
  67. X
  68. X
  69. X
  70. X
  71. X          31
  72. X
  73. X
  74. X
  75. X
  76. X
  77. X
  78. X          MicroEMACS Reference Manual                                 Modes
  79. X
  80. X
  81. X
  82. X
  83. X
  84. X
  85. X                                  Chapter 7 Summary
  86. X
  87. X
  88. X                  In Chapter 7 you learned about modes and their effects.
  89. X
  90. X          Key Binding             Keystroke                      Effect
  91. X          Add-Mode                ^X-M            Add a mode to the current buffer
  92. X
  93. X          Delete-Mode             ^X-^M           Delete a mode from the current
  94. X                                                  buffer
  95. X
  96. X          Add-Global-Mode         M-M             Add a global mode to the
  97. X                                                  current buffer
  98. X
  99. X          Delete-Global-Mode      M-^M            Delete a global mode from the
  100. X                                                  current buffer
  101. X
  102. X
  103. X
  104. X
  105. X
  106. X
  107. X
  108. X
  109. X
  110. X
  111. X
  112. X
  113. X
  114. X
  115. X
  116. X
  117. X
  118. X
  119. X
  120. X
  121. X
  122. X
  123. X
  124. X
  125. X
  126. X
  127. X
  128. X
  129. X
  130. X
  131. X
  132. X
  133. X
  134. X
  135. X
  136. X
  137. X                                                                         32
  138. X
  139. X
  140. X
  141. X
  142. X
  143. X
  144. X          Files                                 MicroEMACS Reference Manual
  145. X
  146. X
  147. X
  148. X
  149. X
  150. X
  151. X
  152. X
  153. X                                      Chapter 8
  154. X
  155. X                                        Files
  156. X
  157. X
  158. X                  A file is simply a collection of related data.   In EMACS
  159. X          we  are  dealing  with  text  files -- named collections of  text
  160. X          residing  on a disk (or some other storage  medium).    You  will
  161. X          recall  that the major entities EMACS  deals  with  are  buffers.
  162. X          Disk-based  versions  of  files are only active in EMACS when you
  163. X          are reading into or writing out  of  buffers.  As we have already
  164. X          seen, buffers and physical  files  are  linked by associated file
  165. X          names.  For example, the  buffer  "ch7.txt"  which  is associated
  166. X          with the physical disk file "ch7.txt." You will  notice  that the
  167. X          file  is usually specified by the drive name or (in the case of a
  168. X          hard drive) a  path.    Thus  you  can specify full file names in
  169. X          EMACS,
  170. X
  171. X                  e.g. disk:\directories\filename.extension
  172. X
  173. X                  If you do not specify a disk and directories, the default
  174. X          disk is used.
  175. X
  176. X                  IMPORTANT -- If you do not explicitly save your buffer to
  177. X          a  file,  all  your edits will  be  lost  when  you  leave  EMACS
  178. X          (although EMACS will prompt you when you are about to  lose edits
  179. X          by exiting).  In addition, EMACS does not protect your disk-based
  180. X          files from overwriting  when  it  saves  files.    Thus  when you
  181. X          instruct EMACS to save a file to disk, it will  create  a file if
  182. X          the  specified  file  doesn't  exist,  or it will  overwrite  the
  183. X          previously saved version of the file thus replacing it.  Your old
  184. X          version is gone forever.
  185. X
  186. X                  If you are at all unsure about your edits, or if (for any
  187. X          reason) you wish  to  keep  previous  versions of a file, you can
  188. X          change the name of  the  associated  file  with the command ^X-N.
  189. X          When this file is saved to disk, EMACS will create a new physical
  190. X          file  under  the  new  name.    The  earlier  disk  file will  be
  191. X          preserved.
  192. X
  193. X                  For example, let's load  the  file  fang.txt  into EMACS.
  194. X          Now, type ^X-N.  The EMACS command line prompts "name:".  Enter a
  195. X          new name for the file --  say  new.txt  and press <NL>.  The file
  196. X          will be saved under  the  new  filename,  and your disk directory
  197. X          will show both fang.txt and new.txt.
  198. X
  199. X                  An alternative method is  to  write  the file directly to
  200. X          disk under a new  filename.    Let's  pull our "publish.txt" file
  201. X
  202. X
  203. X          33
  204. X
  205. X
  206. X
  207. X
  208. X
  209. X
  210. X          MicroEMACS Reference Manual                                 Files
  211. X
  212. X
  213. X          into EMACS.  To write this file under another filename,  type ^X-
  214. X          ^W.  EMACS  will  prompt  you  "write file:".  Enter an alternate
  215. X          filename -- desktop.txt.  Your file will be saved as the physical
  216. X          file "desktop.txt".
  217. X
  218. X                  Note  that  in  the  examples  above,  although  you have
  219. X          changed the names of the related files, the  buffer  names remain
  220. X          the same.   However,  when  you  pull the physical file back into
  221. X          EMACS,  you will find that the buffer name  now  relates  to  the
  222. X          filename.
  223. X
  224. X                  For example --  You  are working with a buffer "fang.txt"
  225. X          with the related  file  "fang.txt".    You change the name of the
  226. X          file to "new.txt".   EMACS  now shows you working with the buffer
  227. X          "fang.txt" and the related  file  "new.txt".    Now pull the file
  228. X          "new.txt" into EMACS.    Notice  that  the  buffer  name  has now
  229. X          changed to "new.txt".
  230. X
  231. X                  If for any  reason  a conflict of buffer names occurs,(if
  232. X          you have files of the same name on different drives  for example)
  233. X          EMACS will prompt you "use buffer:".  Enter an alternative buffer
  234. X          name if you need to.
  235. X
  236. X                  For a list of file related commands (including some we`ve
  237. X          already seen), see the summary page.
  238. X
  239. X
  240. X
  241. X
  242. X
  243. X
  244. X
  245. X
  246. X
  247. X
  248. X
  249. X
  250. X
  251. X
  252. X
  253. X
  254. X
  255. X
  256. X
  257. X
  258. X
  259. X
  260. X
  261. X
  262. X
  263. X
  264. X
  265. X
  266. X
  267. X
  268. X
  269. X                                                                         34
  270. X
  271. X
  272. X
  273. X
  274. X
  275. X
  276. X          Files                                 MicroEMACS Reference Manual
  277. X
  278. X
  279. X
  280. X
  281. X
  282. X
  283. X                                  Chapter 8 Summary
  284. X
  285. X
  286. X                  In  Chapter  8  you  learned  some of the  more  advanced
  287. X          concepts of  file  naming  and  manipulation.    The relationship
  288. X          between files and buffers was discussed in some detail.
  289. X
  290. X          Key Binding     Keystroke       Effect
  291. X
  292. X          Save-file       ^X-^S           Saves contents of current buffer with
  293. X                                          associated filename on default disk/
  294. X                                          directory (if not specified)
  295. X
  296. X          Write-File      ^X-^W           Current buffer contents will be
  297. X                                          saved under specified name
  298. X
  299. X          Change-File-name
  300. X                          ^X-N            The associated filename is changed
  301. X                                          (or associated if not previously
  302. X                                          specified) as specified
  303. X
  304. X          Find-File       ^X-^F           Reads specified file into buffer and
  305. X                                          switches you to that buffer, or switches
  306. X                                          to buffer in which the file has previously
  307. X                                          been read
  308. X
  309. X          Read-File       ^X-^R           Reads file into buffer thus overwriting
  310. X                                          buffer contents.  If file has already
  311. X                                          been read into another buffer, you will
  312. X                                          be switched to it
  313. X
  314. X          View-File       ^X-^V           The same as read-file except the buffer
  315. X                                          is automatically put into VIEW mode thus
  316. X                                          preventing any changes from being made
  317. X
  318. X
  319. X
  320. X
  321. X
  322. X
  323. X
  324. X
  325. X
  326. X
  327. X
  328. X
  329. X
  330. X
  331. X
  332. X
  333. X
  334. X
  335. X          35
  336. X
  337. X
  338. X
  339. X
  340. X
  341. X
  342. X          MicroEMACS Reference Manual                     Screen Formatting
  343. X
  344. X
  345. X
  346. X
  347. X
  348. X
  349. X
  350. X
  351. X                                      Chapter 9
  352. X
  353. X                                  Screen Formatting
  354. X
  355. X
  356. X          9.1  Wrapping Text
  357. X
  358. X
  359. X                  As  we  learned  in the introduction, EMACS is not a word
  360. X          processor, but an editor.   Some  simple  formatting  options are
  361. X          available however, although in  most  cases  they will not affect
  362. X          the appearence of the finished text when it is  run  through  the
  363. X          formatter.  We have already  encountered  WRAP  mode  which wraps
  364. X          lines longer than a  certain  length  (default is 75 characters).
  365. X          You  will  recall  that WRAP is  enabled  by  entering  ^X-M  and
  366. X          responding to the command line prompt with wrap.
  367. X
  368. X                  You  can  also  set your own wrap margin with the command
  369. X          ^X-F set-fill-column.  Notice  EMACS  responds  "[Fill  column is
  370. X          1]." Now try typing  some  text.  You'll notice some very strange
  371. X          things happening -- your text wraps at every  word!!  This effect
  372. X          occurs because the set wrap margin command must be preceeded by a
  373. X          numeric argument or EMACS sets it to the first column.   Thus any
  374. X          text you type that extends past the first column will wrap at the
  375. X          most convenient line break.
  376. X
  377. X                  To  reset the wrap column to  72  characters,  press  the
  378. X          <META> key and  enter  72.    EMACS  will respond "Arg: 72".  Now
  379. X          press ^X-F.  EMACS will respond "[Fill column is 72]".  Your text
  380. X          will again wrap at the margin you've been using up to this point.
  381. X
  382. X
  383. X          9.2  Reformatting Paragraphs
  384. X
  385. X
  386. X                  After an intensive editing session, you may find that you
  387. X          have paragraphs containing lines of differing lengths.   Although
  388. X          this disparity  will not affect the formatted text, aesthetic and
  389. X          technical concerns  may  make  it  desirable  to  have consistent
  390. X          paragraph blocks on the screen.  If you are in WRAP mode, you can
  391. X          reformat a paragraph  with  the command M-Q fill-paragraph.  This
  392. X          command 'fills'  the current paragraph reformatting it so all the
  393. X          lines are filled and wrap logically.  The process is complex, and
  394. X          (especially with longer paragraphs) may take a little time.
  395. X
  396. X
  397. X
  398. X
  399. X
  400. X
  401. X                                                                         36
  402. X
  403. X
  404. X
  405. X
  406. X
  407. X
  408. X          Screen Formatting                     MicroEMACS Reference Manual
  409. X
  410. X
  411. X          9.3  Changing Case
  412. X
  413. X
  414. X                  There  may be occasions when you  find  it  necessary  to
  415. X          change the case of the text you've entered.  EMACS allows  you to
  416. X          change the case of even large  amounts  of text with ease.  Let's
  417. X          try and convert a few of the office traditionalists to the joy of
  418. X          word processing.  Type in the following text:
  419. X
  420. X               Throw  away your typewriter and learn  to  use  a  word
  421. X               processor.  Word processing is relatively easy to learn
  422. X               and will increase  your productivity enormously.  Enter
  423. X               the Computer Age and find out just how much fun  it can
  424. X               be!!
  425. X
  426. X                  Let's give it a  little  more  impact by capitalizing the
  427. X          first four words.  The first step is to define the region of text
  428. X          just as you would if you  were  doing an extensive deletion.  Set
  429. X          the  mark  at  the beginning of the paragraph with M-<space> set-
  430. X          mark  and  move  the cursor to the space beyond "typewriter." Now
  431. X          enter ^X-^U case-region-upper.   Your  text  should now look like
  432. X          this:
  433. X
  434. X               THROW  AWAY YOUR TYPEWRITER and learn  to  use  a  word
  435. X               processor.  Word processing is relatively easy to learn
  436. X               and will increase  your productivity enormously.  Enter
  437. X               the Computer Age and find out just how much fun  it can
  438. X               be!!
  439. X
  440. X                  If you want to  change  the text back to lower case, type
  441. X          ^X-^L  case-region-lower.   You can  also  capitalize  individual
  442. X          words.   To capitalize the word "fun",  position  the  cursor  in
  443. X          front of the word and type M-U case-word-upper.  The word  is now
  444. X          capitalized.  To change it back to lower case,  move  the  cursor
  445. X          back to the beginning of the word and type M-L case-word-lower.
  446. X
  447. X                  You may also capitalize individual letters in EMACS.  The
  448. X          command M-C  case-word-capitalize  capitalizes  the  first letter
  449. X          after the point.  This command would normally be issued  with the
  450. X          cursor positioned in front of the first letter of  the  word  you
  451. X          wish to capitalize.  If you issue it in the middle of a word, you
  452. X          can end up with some strAnge looking text.
  453. X
  454. X
  455. X          9.4  Tabs
  456. X
  457. X
  458. X                  Unless your formatter is instructed to  take  screen text
  459. X          literally (as MicroSCRIBE does in the 'verbatim'  environment for
  460. X          example), tabs in EMACS generally affect screen formatting only.
  461. X
  462. X                  When EMACS is first started, it sets the  default  tab to
  463. X          every eighth column.    As  long  as you stay with default, every
  464. X          time you press the tab key a tab character, ^I is inserted.  This
  465. X
  466. X
  467. X          37
  468. X
  469. X
  470. X
  471. X
  472. X
  473. X
  474. X          MicroEMACS Reference Manual                     Screen Formatting
  475. X
  476. X
  477. X          character, like  other control characters, is invisible -- but it
  478. X          makes  a  subtle  and  significant  difference to your  file  and
  479. X          editing.
  480. X
  481. X                  For example, in default mode,  press the tab key and then
  482. X          type the word Test.  "Test"  appears  at the eighth column.  Move
  483. X          your cursor to the beginning of the word and delete  the backward
  484. X          character.    The  word doesn't move back just one character, but
  485. X          flushes  to the left margin.  The reason  for  this  behavior  is
  486. X          easily explained.  In  tab  default,  EMACS  inserts a 'real' tab
  487. X          character when you press the tab key.  This character is inserted
  488. X          at the default position, but NO SPACES are  inserted  between the
  489. X          tab character and the margin (or previous tab character).  As you
  490. X          will recall,  EMACS only recognizes characters (such as spaces or
  491. X          letters) and thus when  the  tab  character  is removed, the text
  492. X          beyond  the tab is flushed back to the  margin  or  previous  tab
  493. X          mark.
  494. X
  495. X                  This  situation  changes  if   you   alter   the  default
  496. X          configuration.    The  default value may be changed by entering a
  497. X          numeric argument before pressing the tab key.  As we saw earlier,
  498. X          pressing the META key and entering a number allows you to specify
  499. X          how EMACS performs a  given  action.  In this case, let's specify
  500. X          an argument of 10 and hit the tab key.
  501. X
  502. X                  Now hit the tab key again and type Test.  Notice the word
  503. X          now  appears  at  the tenth column.  Now move to the beginning of
  504. X          the word and delete the  backward character. "Test" moves back by
  505. X          one character.
  506. X
  507. X                  EMACS behaves differently in these  circumstances because
  508. X          the ^I handle-tab function deals  with  tabbing  in  two distinct
  509. X          ways.  In default conditions, or if the numeric argument  of zero
  510. X          is used, handle-tab inserts a true tab character.  If, however, a
  511. X          non-zero numeric argument is  specified,  handle-tab  inserts the
  512. X          correct number of spaces  needed  to  position  the cursor at the
  513. X          next specified tab position.    It does NOT insert the single tab
  514. X          character and  hence any editing functions should take account of
  515. X          the number of spaces between tabbed columns.
  516. X
  517. X                  Many times you would  like  to take a line which has been
  518. X          created using the tab character and change it to use just spaces.
  519. X          The command ^X-^D detab-line changes any tabs from  the  point to
  520. X          the  end  of  the current line into the right number of spaces so
  521. X          the line does not change.  This is very useful for times when the
  522. X          file must be printed or transfered to a machine  which  does  not
  523. X          understand tabs.
  524. X
  525. X                  Also,  the inverse  command,  ^X-^E  entab-lines  changes
  526. X          multiple  spaces  to  tabs where possible.  This is a good way to
  527. X          shrink the  size of large documents, especially with data tables.
  528. X          Both of these commands can take a numeric argument which  will be
  529. X          interpeted as the number of lines to en/detab.
  530. X
  531. X
  532. X
  533. X                                                                         38
  534. X
  535. X
  536. X
  537. X
  538. X
  539. X
  540. X          Screen Formatting                     MicroEMACS Reference Manual
  541. X
  542. X
  543. X
  544. X
  545. X
  546. X
  547. X                                  Chapter 9 Summary
  548. X
  549. X
  550. X                  In Chapter 9 introduced some of  the  formatting features
  551. X          of  EMACS.  Text-wrap,  paragraph  reformatting,  and  tabs  were
  552. X          discussed  in  some  detail.  The commands in the following table
  553. X          were covered in the chapter.
  554. X
  555. X
  556. X          Key Binding             Keystroke                   Effect
  557. X          Add-Mode/WRAP           ^X-M[WRAP]      Add wrap mode to current buffer
  558. X
  559. X          Delete-Mode/WRAP        ^X-^M[WRAP]     Remove wrap mode from current
  560. X                                                  buffer
  561. X
  562. X          Set-Fill-Column         ^X-F            Set fill column to given numeric
  563. X                                                  argument
  564. X
  565. X          Fill-Paragraph          M-Q             Logically reformats the current
  566. X                                                  paragraph
  567. X
  568. X          Case-Word-Upper         M-U             Text from point to end of the
  569. X                                                  current word is changed to
  570. X          uppercase
  571. X
  572. X          Case-Word-Lower         M-L             Text from point to end of the
  573. X                                                  current word is changed to
  574. X          lowercase
  575. X
  576. X          Case-Word-Capitalize    M-C             First word (or letter) after the
  577. X                                                  point is capitalized
  578. X
  579. X          Case-Region-Upper       ^X-^U           The current region is uppercased
  580. X
  581. X          Case-Region-Lower       ^X-^L           The current region is lowercased
  582. X
  583. X          Handle-Tab              ^I              Tab interval is set to the given
  584. X                                                  numeric argument
  585. X          Entab-Line              ^X-^E           Changes multiple spaces to tabs
  586. X                                                  characters where possible
  587. X          Detab-Line              ^X-^D           Changes tab characters to the
  588. X                                                  appropriate number of spaces
  589. X
  590. X
  591. X
  592. X
  593. X
  594. X
  595. X
  596. X
  597. X
  598. X
  599. X          39
  600. X
  601. X
  602. X
  603. X
  604. X
  605. X
  606. X          MicroEMACS Reference Manual           Access to the Outside World
  607. X
  608. X
  609. X
  610. X
  611. X
  612. X
  613. X
  614. X
  615. X                                     Chapter 10
  616. X
  617. X                             Access to the Outside World
  618. X
  619. X
  620. X                  EMACS has  the ability to interface to other programs and
  621. X          the environment of the computer outside of itself.  It  does this
  622. X          through  a  series  of  commands  that  allow  it  to talk to the
  623. X          computer's command processor or shell.   Just what this is varies
  624. X          between  different  computers.   Under MSDOS or PCDOS this is the
  625. X          command.com command processor.  Under UNIX it is  the  csh shell.
  626. X          On  the Atari ST is can be the Mark Williams MSH or the Beckmeyer
  627. X          shell.  In each case, it is the part of the  computer's operating
  628. X          system that is  responcable  for  determining  what  programs are
  629. X          executed, and when.
  630. X
  631. X                  The ^X-! shell-command command  prompts  the  user  for a
  632. X          command line to send out to the shell  to  execute.  This  can be
  633. X          very  useful for doing file listings  and  changing  the  current
  634. X          directory or folder.   EMACS  gives  control  to the shell, which
  635. X          executed the command, and then types [END] and waits for the user
  636. X          to  type a character before redrawing  the  screen  and  resuming
  637. X          editing. If the shell-command command  is  used  from  within the
  638. X          macro language, there is no pause.
  639. X
  640. X                  ^X-@ pipe-command command allows EMACS to execute a shell
  641. X          command,  and  if  the particular computer allows  it,  send  the
  642. X          results into a buffer which  is  automatically  displayed  on the
  643. X          screen. The resulting buffer, called "command" can be manipulated
  644. X          just like any other editing buffer. Text can be copied out  of it
  645. X          or rearanged as needed. This buffer is originally created in VIEW
  646. X          mode, so remember to ^X-^Mview<NL> in order to change it.
  647. X
  648. X                  Many computers provide  tools  which  will  allow  you to
  649. X          filter text, making some  modifications  to  it  along the way. A
  650. X          very common tool is the SORT program which accepts a  file, sorts
  651. X          it, and prints the  result  out.  The EMACS command, ^X-# filter-
  652. X          buffer  sends  the  current  buffer   through   such   a  filter.
  653. X          Therefore, if you wished  to  sort the current buffer on a system
  654. X          which supplied a sort filter, you would type  ^X-#sort<NL>.   You
  655. X          can  also  create  your  own  filters  by  writing  programs  and
  656. X          utilities  which  read  text from the keyboard  and  display  the
  657. X          results.  EMACS  will  use  any  of these which would normally be
  658. X          available from the current shell.
  659. X
  660. X                  If you would like to  execute  another  program directly,
  661. X          without the overhead of  an  intervening  shell,  you can use the
  662. X          ^X-$ execute-program  command. It will prompt you for an external
  663. X
  664. X
  665. X                                                                         40
  666. X
  667. X
  668. X
  669. X
  670. X
  671. X
  672. X          Access to the Outside World           MicroEMACS Reference Manual
  673. X
  674. X
  675. X          program and its arguments  and  attempt to execute it.  Like when
  676. X          EMACS looks for command files, EMACS will look first in  the HOME
  677. X          directory, then down the execute PATH, and finally in the current
  678. X          directory  for  the  named  program.  On  some  systems, it  will
  679. X          automatically  tack  the  proper extension on the  file  name  to
  680. X          indicate it is a program. On some systems that don't support this
  681. X          function, ^X-$ will be equivalent to ^X-! shell-command.
  682. X
  683. X                  Sometimes,  you  would  like to get back to the shell and
  684. X          execute other commands, without losing  the  current  contents of
  685. X          EMACS.  The ^X-C  i-shell  command  shells  out of EMACS, leaving
  686. X          EMACS in the computer and  executing another command shell.  Most
  687. X          systems would allow  you  to  return  to  EMACS  with  the "exit"
  688. X          command.
  689. X
  690. X                  On some systems, mainly advanced  versions  of  UNIX, you
  691. X                  can
  692. X          direct EMACS to "go into the background" with  the  ^X-D suspend-
  693. X          emacs command.  This places EMACS in the background returning you
  694. X          to the original command  shell.  EMACS can then be returned to at
  695. X          any time with the "fg" foreground command.
  696. X
  697. X
  698. X
  699. X
  700. X
  701. X
  702. X
  703. X
  704. X
  705. X
  706. X
  707. X
  708. X
  709. X
  710. X
  711. X
  712. X
  713. X
  714. X
  715. X
  716. X
  717. X
  718. X
  719. X
  720. X
  721. X
  722. X
  723. X
  724. X
  725. X
  726. X
  727. X
  728. X
  729. X
  730. X
  731. X          41
  732. X
  733. X
  734. X
  735. X
  736. X
  737. X
  738. X          MicroEMACS Reference Manual           Access to the Outside World
  739. X
  740. X
  741. X
  742. X
  743. X
  744. X
  745. X                                 Chapter 10 Summary
  746. X
  747. X
  748. X                  In Chapter 10 introduced  different  ways  to  access the
  749. X          computers  shell or command processor from  within  EMACS.    The
  750. X          commands in the following table were covered in the chapter.
  751. X
  752. X
  753. X          Key Binding             Keystroke                   Effect
  754. X          Execute-program         ^X-$            Execute an external program
  755. X                                                  directly
  756. X
  757. X          Filter-command          ^X-#            Send the current buffer through
  758. X                                                  a shell filter
  759. X
  760. X          I-shell                 ^X-C            Escape to a new shell
  761. X
  762. X          Pipe-command            ^X-@            Send the results of an external
  763. X                                                  shell command to a buffer
  764. X
  765. X          Shell-command           ^X-!            Execute one shell command
  766. X
  767. X          Suspend-emacs           ^X-D            Place EMACS in the background
  768. X                                                  (some UNIX systems only)
  769. X
  770. X
  771. X
  772. X
  773. X
  774. X
  775. X
  776. X
  777. X
  778. X
  779. X
  780. X
  781. X
  782. X
  783. X
  784. X
  785. X
  786. X
  787. X
  788. X
  789. X
  790. X
  791. X
  792. X
  793. X
  794. X
  795. X
  796. X
  797. X                                                                         42
  798. X
  799. X
  800. X
  801. X
  802. X
  803. X
  804. X          Keyboard Macros                       MicroEMACS Reference Manual
  805. X
  806. X
  807. X
  808. X
  809. X
  810. X
  811. X
  812. X
  813. X                                     Chapter 11
  814. X
  815. X                                   Keyboard Macros
  816. X
  817. X
  818. X                  In many applications, it may  be  necessary  to  repeat a
  819. X          series  of characters or commands frequently.    For  example,  a
  820. X          paper may require the frequent repetition of a complex formula or
  821. X          a long name.  You may also have a series  of  EMACS commands that
  822. X          you invoke frequently.  Keyboard macros offer a convenient method
  823. X          of recording and repeating these commands.
  824. X
  825. X                  Imagine, for example, you are writing  a  scholarly paper
  826. X          on  Asplenium  platyneuron,  the  spleenwort  fern.     Even  the
  827. X          dedicated botanist would probably find it a task bordering on the
  828. X          agonizing to type Asplenium platyneuron frequently throughout the
  829. X          paper.  An alternative method is 'record' the name in  a keyboard
  830. X          macro.  Try it yourself.
  831. X
  832. X                  The command ^X-( begin-macro starts recording the all the
  833. X          keystrokes and commands you input.   After you've typed it, enter
  834. X          Asplenium platyneuron.  To stop recording,  type  ^X-) end-macro.
  835. X          EMACS has stored all the keystrokes between the two commands.  To
  836. X          repeat the name you've stored, just enter ^X-E execute-macro, and
  837. X          the name "Asplenium platyneuron"  appears.    You can repeat this
  838. X          action as often  as  you  want,  and  of course as with any EMACS
  839. X          command, you may precede it with a numerical argument.
  840. X
  841. X                  Because EMACS records keystrokes, you may freely intermix
  842. X          commands and text.  Unfortunately, you can only  store  one macro
  843. X          at  a  time.   Thus, if you begin to record  another  macro,  the
  844. X          previously  defined  macro  is lost. Be careful  to  ensure  that
  845. X          you've finished with one macro before defining another.    If you
  846. X          have a series  of  commands  that  you would like to 'record' for
  847. X          future use, use the macro  or  procedure  facilities  detailed in
  848. X          chapter <X>.
  849. X
  850. X
  851. X
  852. X
  853. X
  854. X
  855. X
  856. X
  857. X
  858. X
  859. X
  860. X
  861. X
  862. X
  863. X          43
  864. X
  865. X
  866. X
  867. X
  868. X
  869. X
  870. X          MicroEMACS Reference Manual                       Keyboard Macros
  871. X
  872. X
  873. X
  874. X
  875. X
  876. X
  877. X                                 Chapter 11 Summary
  878. X
  879. X
  880. X                  Chapter 11 covered  keyboard  macros.  You learned how to
  881. X          record keystrokes and how to repeat the stored sequence.
  882. X
  883. X          Key Binding             Keystroke               Effect
  884. X
  885. X          Start-Macro             ^X-(            Starts recording all keyboard input
  886. X
  887. X          End-Macro               ^X-)            Stops recording keystrokes for
  888. X                                                  macro
  889. X
  890. X          Execute-Macro           ^X-E            Entire sequence of recorded
  891. X                                                  keystrokes is replayed
  892. X
  893. X
  894. X
  895. X
  896. X
  897. X
  898. X
  899. X
  900. X
  901. X
  902. X
  903. X
  904. X
  905. X
  906. X
  907. X
  908. X
  909. X
  910. X
  911. X
  912. X
  913. X
  914. X
  915. X
  916. X
  917. X
  918. X
  919. X
  920. X
  921. X
  922. X
  923. X
  924. X
  925. X
  926. X
  927. X
  928. X
  929. X                                                                         44
  930. X
  931. X
  932. X
  933. X
  934. X
  935. X
  936. X          MicroEMACS Macros                     MicroEMACS Reference Manual
  937. X
  938. X
  939. X
  940. X
  941. X
  942. X
  943. X
  944. X
  945. X                                     Chapter 12
  946. X
  947. X                                  MicroEMACS Macros
  948. X
  949. X
  950. X                  Macros are programs that are used to customize the editor
  951. X          and to perform complicated editing tasks.  They may be  stored in
  952. X          files  or  buffers  and  may  be  executed  using an  appropriate
  953. X          command, or bound to  a  particular  keystroke.   Portions of the
  954. X          standard start-up file are implemented via macros, as well as the
  955. X          example menu system.  The  execute-macro-<n>  commands  cause the
  956. X          macro, numbered from 1  to  40, to be executed.  The execute-file
  957. X          command allows you to execute a macro stored in a disk  file, and
  958. X          the execute-buffer command  allows  you to execute a macro stored
  959. X          in a buffer.   Macros  are stored for easy execution by executing
  960. X          files that contain the store-macro command.
  961. X
  962. X                  If you need more  than  40  macros, named macroes, called
  963. X          procedures, can be used.   The  store-procedure  command  takes a
  964. X          string argument which is the name of a procedure to store.  These
  965. X          procedures than can be executed with  the  M-^E execute-procedure
  966. X          or the run commands.
  967. X
  968. X                  There are many different aspects  to  the  macro language
  969. X          within MicroEMACS.  Editor commands are the various commands that
  970. X          manipulate  text,  buffers,  windows,  etc,  within  the  editor.
  971. X          Directives are commands which  control  what  lines  get executed
  972. X          within  a  macro.    Also  there are various types of  variables.
  973. X          Environmental  variables  both control and  report  on  different
  974. X          aspects of the editor.  User variables hold  string  values which
  975. X          may be changed and inspected.  Buffer variables allow text  to be
  976. X          placed into variables.  Interactive variable allow the program to
  977. X          prompt the user  for  information.    Functions  can  be  used to
  978. X          manipulate all these variables.
  979. X
  980. X
  981. X          12.1  Constants
  982. X
  983. X
  984. X                  All constants and variable contents in  EMACS  are stored
  985. X          as  strings  of  characters. Numbers are stored digit by digit as
  986. X          characters.  This  allows  EMACS  to  be  "typeless",  not having
  987. X          different variables types be legal  in  different  contexts. This
  988. X          has  the disadvantage of forcing the user  to  be  more  carefull
  989. X          about the context of the  statements variables are placed in, but
  990. X          in  turn  gives  them  more  flexibility in where they can  place
  991. X          variables. Needless to say, this also  allows  EMACS's expression
  992. X          evaluator to be both consice and quick.
  993. X
  994. X
  995. X          45
  996. X
  997. X
  998. X
  999. X
  1000. X
  1001. X
  1002. X          MicroEMACS Reference Manual                     MicroEMACS Macros
  1003. X
  1004. X
  1005. X                  Wherever statements need to have arguments,  it  is legal
  1006. X          to  place constants.  A constant is  a  double  quote  character,
  1007. X          followed by a string of  characters,  and  terminated  by another
  1008. X          double  quote character. To represent various special  characters
  1009. X          within a constant, the tilde (~) character is used. The character
  1010. X          following the tilde  is  interpeted  according  to  the following
  1011. X          table:
  1012. X
  1013. X          Sequence        Result
  1014. X          ~n              ^J      linefeed/newline, (EMACS newline character)
  1015. X          ~r              ^M      carraige return
  1016. X          ~~              ~
  1017. X          ~b              ^H      backspace
  1018. X          ~f              ^L      formfeed
  1019. X          ~t              ^I      tab
  1020. X          ~"              "
  1021. X
  1022. X                  Any character not in the table which follows a tilde will
  1023. X          be passed unmodified.  This action is similar to  the  ^Q  quote-
  1024. X          character command available from the keyboard.
  1025. X
  1026. X                  The double  quotes around constants are not needed if the
  1027. X          constant contains no internal whitespace  and  it  also  does not
  1028. X          happen  to  meet   the   rules  for  any  other  EMACS  commands,
  1029. X          directives, variables, or functions.  This  is  reasonable useful
  1030. X          for numeric constants.
  1031. X
  1032. X
  1033. X          12.2  Variables
  1034. X
  1035. X
  1036. X                  Variables in MicroEMACS  can  be  used  to  return values
  1037. X          within expressions, as  repeat  counts to editing commands, or as
  1038. X          text  to be inserted into buffers and messages.    The  value  of
  1039. X          these  variables  is  set using the  set  (^X-A)  command.    For
  1040. X          example, to set the  current  fill  column  to 64 characters, the
  1041. X          following macro line would be used:
  1042. X
  1043. X                  set $fillcol 64
  1044. X
  1045. X                  or to have the contents of %name inserted at the point in
  1046. X          the current buffer, the command to use would be:
  1047. X
  1048. X                  insert-string %name
  1049. X
  1050. X
  1051. X
  1052. X
  1053. X
  1054. X
  1055. X
  1056. X
  1057. X
  1058. X
  1059. X
  1060. X
  1061. X                                                                         46
  1062. X
  1063. X
  1064. X
  1065. X
  1066. X
  1067. X
  1068. X          MicroEMACS Macros                     MicroEMACS Reference Manual
  1069. X
  1070. X
  1071. X
  1072. X          12.2.1  Environmental Variables
  1073. X
  1074. X
  1075. X                  "What good is a quote if you can't change it?"
  1076. X
  1077. X                  These variables are used to change  different  aspects of
  1078. X          the  way the editor works.  Also they  will  return  the  current
  1079. X          settings if used as  part  of  an  expression.  All environmental
  1080. X          variable  names begin with a dollar sign ($)  and  are  in  lower
  1081. X          case.
  1082. X
  1083. X          $acount        The countdown  of  inserted  characters  until the
  1084. X                         next save-file.
  1085. X
  1086. X          $asave         The   number   of  inserted   characters   between
  1087. X                         automatic file-saves in ASAVE mode.
  1088. X
  1089. X          $cbufname      Name of the current buffer
  1090. X
  1091. X          $cfname        File name of the current buffer
  1092. X
  1093. X          $cmode         Integer containing the mode of the current buffer.
  1094. X                         (See Appendix F for values)
  1095. X
  1096. X          $curchar       Character currently at the point
  1097. X
  1098. X          $curcol        Current column of point in current buffer
  1099. X
  1100. X          $curline       Current line of point in current buffer
  1101. X
  1102. X          $curwidth      Number of columns used currently
  1103. X
  1104. X          $cwline        Current display line in current window
  1105. X
  1106. X          $debug         Flag to trigger  macro debugging (try it... you'll
  1107. X                         like it!)
  1108. X
  1109. X          $discmd        Flag to disable the  echoing  of  messages  on the
  1110. X                         command line
  1111. X
  1112. X          $disinp        Flag  to disable the echoing of characters  during
  1113. X                         command line input
  1114. X
  1115. X          $fillcol       Current fill column
  1116. X
  1117. X          $flicker       Flicker Flag set to TRUE if IBM CGA  set  to FALSE
  1118. X                         for most others
  1119. X
  1120. X          $gflags        Global  flags  controlling  some  EMACS   internal
  1121. X                         functions (See appendix G for details)
  1122. X
  1123. X          $gmode         Global mode flags. (See Appendix F for values)
  1124. X
  1125. X
  1126. X
  1127. X          47
  1128. X
  1129. X
  1130. X
  1131. X
  1132. X
  1133. X
  1134. X          MicroEMACS Reference Manual                     MicroEMACS Macros
  1135. X
  1136. X
  1137. X          $lastkey       [READ ONLY]Last keyboard character typed
  1138. X
  1139. X          $line          The current line  in  the  current  buffer  can be
  1140. X                         retrieved and set with this environment variable
  1141. X
  1142. X          $lwidth        [READ ONLY]Returns the number of characters in the
  1143. X                         current line
  1144. X
  1145. X          $match         [READ  ONLY]Last  string  matched  in a magic mode
  1146. X                         search
  1147. X
  1148. X          $pagelen       Number of screen lines used currently
  1149. X
  1150. X          $palette       string  used  to  control  the   palette  register
  1151. X                         settings  on graphics versions.  The usually  form
  1152. X                         consists  of groups of three octal digits  setting
  1153. X                         the red, green, and blue levels.
  1154. X
  1155. X          $pending       [READ  ONLY]Flag  to  determine  if there are user
  1156. X                         keystrokes waiting to be processed.
  1157. X
  1158. X          $progname      [READ ONLY]Always contains the string "MicroEMACS"
  1159. X                         for standard MicroEMACS.   Could be something else
  1160. X                         if EMACS is incorporated as part of someone else's
  1161. X                         program
  1162. X
  1163. X          $replace       Current default replace string
  1164. X
  1165. X          $rval          This contains  the  return  value  from  the  last
  1166. X                         subprocess which was invoked from EMACS
  1167. X
  1168. X          $search        Current default search string
  1169. X
  1170. X          $seed          Integer seed of the random number generator
  1171. X
  1172. X          $sres          Current screen resolution (CGA, MONO or EGA on the
  1173. X                         IBM-PC driver.   LOW, MEDIUM, HIGH or DENSE on the
  1174. X                         Atari ST1040, NORMAL on all others)
  1175. X
  1176. X          $status        [READ ONLY]Status  of  the  success  of  the  last
  1177. X                         command (TRUE or FALSE).    This  is  usually used
  1178. X                         with !force to  check  on the success of a search,
  1179. X                         or a file operation.
  1180. X
  1181. X          $target        Current target for line moves (setting this fool's
  1182. X                         EMACS into believing the last command  was  a line
  1183. X                         move)
  1184. X
  1185. X          $tpause        Controls the length  of  the  pause  to  display a
  1186. X                         matched fence when the current buffer is  in CMODE
  1187. X                         and a close fence has been typed
  1188. X
  1189. X          $version       [READ ONLY]Contains the current MicroEMACS version
  1190. X                         number
  1191. X
  1192. X
  1193. X                                                                         48
  1194. X
  1195. X
  1196. X
  1197. X
  1198. X
  1199. X
  1200. X          MicroEMACS Macros                     MicroEMACS Reference Manual
  1201. X
  1202. X
  1203. X          $wline         Number of display lines in current window
  1204. X
  1205. X                  Obviously, many more of these variables will be availible
  1206. X          in  future releases of MicroEMACS. (Yes, send  a  vote  for  your
  1207. X          favorite new environmental variables today).
  1208. X
  1209. X
  1210. X          12.2.2  User variables
  1211. X
  1212. X
  1213. X                  User variables  allow you, the user, to store strings and
  1214. X          manipulate  them.    These strings can be pieces of text, numbers
  1215. X          (in  text form), or the logical values TRUE  and  FALSE.    These
  1216. X          variables can be combined,  tested,  inserted  into  buffers, and
  1217. X          otherwise used to control the way your macros execute.    At  the
  1218. X          moment, up to 255 user variables may be  in  use  in  one editing
  1219. X          session.  All users variable names must begin with a percent sign
  1220. X          (%) and may contain  any  printing characters.  Only the first 10
  1221. X          characters are  significant  (ie  differences  beyond  the  tenth
  1222. X          character are  ignored).  Most operators will truncate strings to
  1223. X          a length of 128 characters.
  1224. X
  1225. X
  1226. X          12.2.3  Buffer Variables
  1227. X
  1228. X
  1229. X                  Buffer variables are special in  that  they  can  only be
  1230. X          queried and cannot be set.  What buffer variables are is a way to
  1231. X          take text from a buffer and place it in a variable.  For example,
  1232. X          if I  have  a  buffer  by the name of RIGEL2, and it contains the
  1233. X          text:
  1234. X
  1235. X                  Richmond
  1236. X                  Lafayette
  1237. X                  <*>Bloomington          (where <*> is the current point)
  1238. X                  Indianapolis
  1239. X                  Gary
  1240. X                  =* MicroEMACS 3.9e (WRAP) == rigel2 == File: /data/rigel2.txt =====
  1241. X
  1242. X                  and within a command I reference #rigel2, like:
  1243. X
  1244. X                  insert-string #rigel2
  1245. X
  1246. X                  MicroEMACS would start at the current point in the RIGEL2
  1247. X          buffer and grab  all the text up to the end of that line and pass
  1248. X          that back.  Then it would  advance  the point to the beginning of
  1249. X          the next line. Thus, after  our last command executes, the string
  1250. X          "Bloomington" gets inserted  into  the  current  buffer,  and the
  1251. X          buffer RIGEL2 now looks like this:
  1252. X
  1253. X
  1254. X
  1255. X
  1256. X
  1257. X
  1258. X
  1259. X          49
  1260. X
  1261. X
  1262. X
  1263. X
  1264. X
  1265. X
  1266. X          MicroEMACS Reference Manual                     MicroEMACS Macros
  1267. X
  1268. X
  1269. X                  Richmond
  1270. X                  Lafayette
  1271. X                  Bloomington
  1272. X                  <*>Indianapolis         (where <*> is the current point)
  1273. X                  Gary
  1274. X                  =* MicroEMACS 3.9e (WRAP) == rigel2 == File: /data/rigel2.txt =====
  1275. X
  1276. X                  as you have probably noticed, a buffer  variable consists
  1277. X          of the buffer name, preceded by a pound sign (#).
  1278. X
  1279. X
  1280. X          12.2.4  Interactive variables
  1281. X
  1282. X
  1283. X                  Interactive variables are actually a method to prompt the
  1284. X          user for a string.  This is done by using an at sign (@) followed
  1285. X          either with a quoted string, or a variable  containing  a string.
  1286. X          The string is the placed on the bottom line, and the editor waits
  1287. X          for the user to type in a string.  Then the  string  typed  in by
  1288. X          the users is returned as the value of  the  interactive variable.
  1289. X          For example:
  1290. X
  1291. X                  set %quest "What file? "
  1292. X                  find-file @%quest
  1293. X
  1294. X                  will ask the user for a file name, and  then  attempt  to
  1295. X          find it. Note also that complex expressions can be built  up with
  1296. X          these operators, such as:
  1297. X
  1298. X          @&cat &cat "File to decode[" %default "]: "
  1299. X
  1300. X                  which prompts the user with the concatinated string.
  1301. X
  1302. X
  1303. X          12.3  Functions
  1304. X
  1305. X
  1306. X                  Functions can be used to manipulate variables  in various
  1307. X          ways.  Functions can have one, two, or three  arguments.    These
  1308. X          arguments will always be placed after the function on the current
  1309. X          command line.  For example, if we wanted to increase  the current
  1310. X          fill  column  by  two, using emacs's set (^X-A) command, we would
  1311. X          write:
  1312. X
  1313. X                  set $fillcol &add $fillcol 2
  1314. X                   \      \      \      \     \____second operand
  1315. X                    \      \      \      \_________first operand
  1316. X                     \      \      \_______________function to execute
  1317. X                      \      \_____________________variable to set
  1318. X                       \___________________________set (^X-A) command
  1319. X
  1320. X                  Function  names  always  begin  with  the  ampersand  (&)
  1321. X          character, and are only significant to the first three characters
  1322. X          after the ampersand.  Functions will normal expect  one  of three
  1323. X
  1324. X
  1325. X                                                                         50
  1326. X
  1327. X
  1328. X
  1329. X
  1330. X
  1331. X
  1332. X          MicroEMACS Macros                     MicroEMACS Reference Manual
  1333. X
  1334. X
  1335. X          types of arguments, and  will  automatically  convert  types when
  1336. X          needed.
  1337. X
  1338. X          <num>          an ascii string of digits which is interpeted as a
  1339. X                         numeric value.  Any string  which  does  not start
  1340. X                         with  a   digit  or  a  minus  sign  (-)  will  be
  1341. X                         considered zero.
  1342. X
  1343. X          <str>          An arbitrary string of characters.  At the moment,
  1344. X                         strings are limited to 128 characters in length.
  1345. X
  1346. X          <log>          A logical value consisting of the string "TRUE" or
  1347. X                         "FALSE".  Numeric strings  will  also  evaluate to
  1348. X                         "FALSE" if they  are  equal to zero, and "TRUE" if
  1349. X                         they are non-zero.   Arbitrary  text  strings will
  1350. X                         have the value of "FALSE".
  1351. X
  1352. X                  A  list  of the currently  availible  functions  follows:
  1353. X          (Once again, send in those votes on what kind  of  functions  you
  1354. X          would  like to see added!) Functions are  always  used  in  lower
  1355. X          case, the uppercase letters in the function table  are  the short
  1356. X          form of the function (ie &div for ÷).
  1357. X
  1358. X          Numeric Functions:      (returns <num>)
  1359. X
  1360. X          &ADD            <num> <num>     Add two numbers
  1361. X          &SUB            <num> <num>     Subtract the second number from the first
  1362. X          &TIMes          <num> <num>     Multiply two numbers
  1363. X          &DIVide         <num> <num>     Divide the first number by the second
  1364. X                                          giving an integer result
  1365. X          &MOD            <num> <num>     Return the reminder of dividing the
  1366. X                                          first number by the second
  1367. X          &NEGate         <neg>           Multiply the arg by -1
  1368. X          &LENgth         <str>           Returns length of string
  1369. X          &SINdex         <str1> <str2>   Finds the position of <str2> within
  1370. X                                          <str1>. Returns zero if not found.
  1371. X          &ASCii          <str>           Return the ascii code of the first
  1372. X                                          character in <str>
  1373. X          &RND            <num>           Returns a random integer between 1 and
  1374. X                                          <num>
  1375. X          &ABS            <num>           Returns the absolute value of <num>
  1376. X          &BANd           <num> <num>     Bitwise AND function
  1377. X          &BOR            <num> <num>     Bitwise OR function
  1378. X          &BXOr           <num> <num>     Bitwise XOR function
  1379. X          &BNOt           <num>           Bitwise NOT function
  1380. X
  1381. X          String manipulation functions:  (returns <str>)
  1382. X
  1383. X          &CAT            <str> <str>     Concatinate the two strings to form one
  1384. X          &LEFt           <str> <num>     return the <num> leftmost characters
  1385. X                                          from <str>
  1386. X          &RIGht          <str> <num>     return the <num> rightmost characters
  1387. X                                          from <str>
  1388. X
  1389. X
  1390. X
  1391. X          51
  1392. X
  1393. X
  1394. X
  1395. X
  1396. X
  1397. X
  1398. X          MicroEMACS Reference Manual                     MicroEMACS Macros
  1399. X
  1400. X
  1401. X          &MID            <str> <num1> <num2>
  1402. X                                          Starting from <num1> position in <str>,
  1403. X                                          return <num2> characters.
  1404. X          &UPPer          <str>           Uppercase <str>
  1405. X          &LOWer          <str>           lowercase <str>
  1406. X          &CHR            <num>           return a string with the character
  1407. X                                          represented by ascii code <num>
  1408. X          >K                            return a string containing a single
  1409. X                                          keystroke from the user
  1410. X          &ENV            <str>           If the operating system is capable, this
  1411. X                                          returns the environment string associated
  1412. X                                          with <str>
  1413. X          &BIND           <str>           return the function name bound to the
  1414. X                                          keystroke <str>
  1415. X          &ENV            <str>           Returns the operating system value
  1416. X                                          attached to environmental variable <str>
  1417. X          &FINd           <str>           Find the named file <str> along the
  1418. X                                          path and return its full file specification
  1419. X                                          or an empty string if none exists
  1420. X
  1421. X          Logical Testing functions:      (returns <log>)
  1422. X
  1423. X          &NOT            <log>           Return the opposite logical value
  1424. X          &AND            <log1> <log2>   Returns TRUE if BOTH logical arguments
  1425. X                                          are TRUE
  1426. X          &OR             <log1> <log2>   Returns TRUE if either argument
  1427. X                                          is TRUE
  1428. X          &EQUal          <num> <num>     If <num> and <num> are numerically
  1429. X                                          equal, return TRUE
  1430. X          &LESs           <num1> <num2>   If <num1> is less than <num2>, return
  1431. X                                          TRUE.
  1432. X          &GREater        <num1> <num2>   If <num1> is greater than, or equal to
  1433. X                                          <num2>, return TRUE.
  1434. X          &SEQual         <str1> <str2>   If the two strings are the same, return
  1435. X                                          TRUE.
  1436.