home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / util / jade-3.0.lha / Jade / doc / jade.info-2 < prev    next >
Encoding:
GNU Info File  |  1994-04-20  |  44.1 KB  |  1,241 lines

  1. This is Info file jade.info, produced by Makeinfo-1.55 from the input
  2. file jade.texi.
  3.  
  4.    This is Edition 1, last updated 19 April 1994, of `The Jade Manual',
  5. for Jade, Version 3.0.
  6.  
  7.    Jade is a text editor for Unix (with X11) and the Amiga.
  8.  
  9.    Copyright 1993, 1994 John Harper.
  10.  
  11.    Permission is granted to make and distribute verbatim copies of this
  12. manual provided the copyright notice and this permission notice are
  13. preserved on all copies.
  14.  
  15.    Permission is granted to copy and distribute modified versions of
  16. this manual under the conditions for verbatim copying, provided that
  17. the entire resulting derived work is distributed under the terms of a
  18. permission notice identical to this one.
  19.  
  20.    This is so that jade doesn't try to eval the example use.
  21. ::jade-code::
  22. ::end::
  23.  
  24. 
  25. File: jade.info,  Node: Commands for Searching,  Next: Commands for Replacing,  Prev: Regular Expressions,  Up: Searching and Replacing
  26.  
  27. Commands for Searching
  28. ----------------------
  29.  
  30. `Ctrl-s'
  31.      Asks for a regular expression then tries to move to the start of
  32.      the next match in this buffer.
  33.  
  34. `Ctrl-S'
  35.      Attempts to move to the next occurrence of the regexp which was
  36.      last entered for the `Ctrl-s' or `Ctrl-r' commands.
  37.  
  38. `Ctrl-r'
  39.      Asks for a regexp, then moves to the start of previous occurrence
  40.      of that regexp.
  41.  
  42. `Ctrl-R'
  43.      Attempts to move to the previous occurrence of the regexp which
  44.      was last entered for the `Ctrl-s' or `Ctrl-r' commands.
  45.  
  46. 
  47. File: jade.info,  Node: Commands for Replacing,  Prev: Commands for Searching,  Up: Searching and Replacing
  48.  
  49. Commands for Replacing
  50. ----------------------
  51.  
  52. `ESC p'
  53.      Asks for a template to replace the string under the cursor (which
  54.      should match the regexp which the search commands last looked for.
  55.      This string is then replaced with the expansion (re the string
  56.      under the cursor) of the template you entered.
  57.  
  58. `ESC P'
  59.      Variant of the above, doesn't prompt for the template, uses the
  60.      last one that you gave.
  61.  
  62. 
  63. File: jade.info,  Node: Editing Modes,  Next: Using Buffers,  Prev: Searching and Replacing,  Up: Using Jade
  64.  
  65. Editing Modes
  66. =============
  67.  
  68.    Modes are used to tailor the editor to the *type* of the file being
  69. edited in a buffer. They are normally a file of Lisp which installs the
  70. buffer-local keybindings and variables which are needed for that type of
  71. file.
  72.  
  73.    For example, C-mode is a mode used to edit C source code, its main
  74. function is to try to indent each line to its correct position
  75. automatically.
  76.  
  77.    At present there are only a small number of modes available. It is
  78. fairly straightforward to write a mode for most types of files though.
  79.  
  80. * Menu:
  81.  
  82. * Invoking a Mode::        How editing modes are invoked on a buffer
  83.  
  84. * Generic-mode::        The foundations which all modes build from
  85. * C-mode::            Mode for C source code
  86. * Lisp-mode::            Mode for Lisp
  87. * Texinfo-mode::        Mode for editing Texinfo source
  88. * Info-mode::            The Info browser
  89.  
  90. 
  91. File: jade.info,  Node: Invoking a Mode,  Next: Generic-mode,  Up: Editing Modes
  92.  
  93. Invoking a Mode
  94. ---------------
  95.  
  96.    When a new file is loaded the function `init-mode' tries to find the
  97. mode that it should be edited with. If it is successful the mode will be
  98. automatically invoked. For more information see *Note Automatic Mode
  99. Selection:: and the documentation for `init-mode'.
  100.  
  101. 
  102. File: jade.info,  Node: Generic-mode,  Next: C-mode,  Prev: Invoking a Mode,  Up: Editing Modes
  103.  
  104. Generic-mode
  105. ------------
  106.  
  107.    This is not a mode as such since there is no Lisp code associated
  108. with it.  When no mode is being used to edit the buffer, it is said to
  109. use the "Generic" mode.
  110.  
  111.    This is the base from which all other modes build, it consists of
  112. all the standard keybindings. Words are defined as one or more
  113. alphanumeric characters, paragraphs are separated by a single blank
  114. line.
  115.  
  116. 
  117. File: jade.info,  Node: C-mode,  Next: Lisp-mode,  Prev: Generic-mode,  Up: Editing Modes
  118.  
  119. C-mode
  120. ------
  121.  
  122.    `c-mode' is used for editing C source code files. Any files which
  123. end in `.c' or `.h' are automatically edited in this mode.
  124.  
  125.    It's one and only function is to try and indent lines to their
  126. correct depth, it doesn't always get it right but it works fairly well.
  127. The keys that it rebinds to achieve this are,
  128.  
  129. `RET'
  130.      Splits the line in two like normal. If `c-mode-auto-indent' is
  131.      non-nil then the line that the cursor ends up on is automatically
  132.      indented.
  133.  
  134. `Shift-RET'
  135.      Splits the line in two, doesn't take any notice of
  136.      `c-mode-auto-indent'.
  137.  
  138. `{'
  139. `}'
  140. `:'
  141.      These keys are handled specially since the indentation of the line
  142.      that they are inserted on may have to be adjusted.
  143.  
  144. `TAB'
  145.      Indents the current line to what the editor thinks is the correct
  146.      position.
  147.  
  148. `Meta-TAB'
  149.      Moves the cursor to the next tab stop.
  150.  
  151.    Words are defined as being a sequence of alphanumeric or underscore
  152. characters, paragraphs as being separated by a `{' as the first
  153. character of a line.
  154.  
  155.  - Function: c-mode
  156.      Editing mode for C source code. Automatically used for files
  157.      ending in `.c' or `.h'.
  158.  
  159.  - Hook: c-mode-hook
  160.      Called by `c-mode' each time it is called.
  161.  
  162.  - Variable: c-mode-tab
  163.      Size of tab stops used by `c-mode'.
  164.  
  165.  - Variable: c-mode-auto-indent
  166.      When non-nil `RET' will indent the line after splitting it.
  167.  
  168. 
  169. File: jade.info,  Node: Lisp-mode,  Next: Texinfo-mode,  Prev: C-mode,  Up: Editing Modes
  170.  
  171. Lisp-mode
  172. ---------
  173.  
  174.    `lisp-mode' is used to edit files of Lisp intended to be read by the
  175. editor. It is *very* basic, all it does is count the number of unmatched
  176. parentheses in each line and indent it accordingly. I find this okay
  177. though.
  178.  
  179.    There is also support for using a buffer as a simple shell-interface
  180. to the editor's Lisp subsystem.
  181.  
  182.    Special keybindings are,
  183.  
  184. `RET'
  185.      Splits the line in two like normal. If `lisp-mode-auto-indent' is
  186.      non-nil then the line that the cursor ends up on is automatically
  187.      indented.
  188.  
  189. `Shift-RET'
  190.      Splits the line in two, doesn't take any notice of
  191.      `c-mode-auto-indent'.
  192.  
  193. `Ctrl-RET'
  194.      Evaluates the paragraph preceding the cursor, prints the value on
  195.      the next line.
  196.  
  197. `TAB'
  198.      Indents the current line.
  199.  
  200. `Meta-TAB'
  201.      Moves the cursor to the next tab stop.
  202.  
  203. `ESC Ctrl-x'
  204.      Evaluates the paragraph before the cursor, prints it's value in
  205.      the status line.
  206.  
  207.  - Function: lisp-mode
  208.      Editing mode for Jade's Lisp. Automatically invoked for files
  209.      ending in `.jl'.
  210.  
  211.  - Hook: lisp-mode-hook
  212.      Evaluated as soon as `lisp-mode' is called.
  213.  
  214.  - Variable: lisp-mode-tab
  215.      Size of tabs in `lisp-mode'.
  216.  
  217.  - Variable: lisp-mode-auto-indent
  218.      When non-nil `RET' indents lines after splitting them.
  219.  
  220. 
  221. File: jade.info,  Node: Texinfo-mode,  Next: Info-mode,  Prev: Lisp-mode,  Up: Editing Modes
  222.  
  223. Texinfo-mode
  224. ------------
  225.  
  226.    `texinfo-mode' is used to edit Texinfo source files, it is
  227. automatically selected for files ending in `.texi' or `.texinfo'. It
  228. provides a few basic keybindings to take some of the tedium out of
  229. editing these files.
  230.  
  231.    Paragraphs are separated by the regexp `^@node', ie, each node is a
  232. separate paragraph.
  233.  
  234.    The provided keybindings are,
  235.  
  236. `Ctrl-c Ctrl-c c'
  237.      Insert the string `@code{}', positioning the cursor between the
  238.      braces.
  239.  
  240. `Ctrl-c Ctrl-c d'
  241.      Insert the string `@dfn{}', positioning the cursor between the
  242.      braces.
  243.  
  244. `Ctrl-c Ctrl-c e'
  245.      Inserts the string `@end'.
  246.  
  247. `Ctrl-c Ctrl-c f'
  248.      Inserts the string `@file{}', the cursor is put between the braces.
  249.  
  250. `Ctrl-c Ctrl-c i'
  251.      Inserts the string `@item'.
  252.  
  253. `Ctrl-c Ctrl-c l'
  254.      Inserts the string `@lisp\n'.
  255.  
  256. `Ctrl-c Ctrl-c m'
  257.      Inserts the string `@menu\n'.
  258.  
  259. `Ctrl-c Ctrl-c Ctrl-m'
  260.      Prompts for the name of a node and makes a menuitem for it.
  261.  
  262. `Ctrl-c Ctrl-c n'
  263.      Prompts for each part of a node definition (name, next, prev, up)
  264.      and inserts the `@node ...' string needed.
  265.  
  266. `Ctrl-c Ctrl-c s'
  267.      Inserts the string `@samp{}' and puts the cursor between the
  268.      braces.
  269.  
  270. `Ctrl-c Ctrl-c v'
  271.      Inserts the string `@var{}', the cursor is put between the braces.
  272.  
  273. `Ctrl-c Ctrl-c {'
  274.      Inserts a pair of braces with the cursor between them.
  275.  
  276. `Ctrl-c Ctrl-c }'
  277. `Ctrl-c Ctrl-c ]'
  278.      Moves the cursor to the character after the next closing brace.
  279.  
  280.  - Function: texinfo-mode
  281.      Mode for editing Texinfo source files.
  282.  
  283.  - Hook: texinfo-mode-hook
  284.      Evaluated when `texinfo-mode' is invoked.
  285.  
  286. 
  287. File: jade.info,  Node: Info-mode,  Prev: Texinfo-mode,  Up: Editing Modes
  288.  
  289. Info-mode
  290. ---------
  291.  
  292.    Despite the name of this section there is actually no such thing as
  293. the `info-mode'. The Lisp file `info.jl' is what this section documents
  294. -- it is a set of Lisp functions which make a buffer (the `*Info*'
  295. buffer) into a simple browser for Info files.
  296.  
  297.    To invoke it type `Ctrl-h i' or `ESC x info', the `*Info' buffer
  298. will be displayed showing the `(dir)' node (the root of the Info
  299. documentation tree).
  300.  
  301.    When in the `*Info*' buffer these keybindings are in effect,
  302.  
  303. `SPC'
  304.      Moves to the next page.
  305.  
  306. `BS'
  307.      Moves to the previous page.
  308.  
  309. `1'
  310. `2'
  311. `3'
  312. `4'
  313. `5'
  314.      Move to the specified menuitem (`1' means the first, etc) in the
  315.      menu in this node.
  316.  
  317. `b'
  318.      Move to the beginning of the current node.
  319.  
  320. `f'
  321.      Follow a reference, the one under the cursor if it exists.  This
  322.      command is still unimplemented.
  323.  
  324. `g'
  325.      Prompt for the name of a node and try to display it.
  326.  
  327. `l'
  328.      Go back to the last node that was displayed before this one.
  329.  
  330. `m'
  331.      Prompts for a menuitem (the one on the same line as the cursor is
  332.      the default) and display the node it points to.
  333.  
  334. `n'
  335.      Display the next node.
  336.  
  337. `p'
  338.      Display the previous node.
  339.  
  340. `u'
  341.      Display the node "above" this one.
  342.  
  343. `q'
  344.      Quit the Info browser.
  345.  
  346.    This mode has a number of disadvantages over the other Info browsers
  347. available (ie, the standalone `info' program, or Emacs' Info viewer):
  348.  
  349.    * It depends wholly on being able to find a tag table in the Info
  350.      file, if it can't it will complain and exit.
  351.  
  352.    * There is no support for the `*' node name.
  353.  
  354.    * As yet, no automatic following of references.
  355.  
  356.    * Seems not to work 100% with files formatted by Emacs, `makeinfo'
  357.      formatted files work properly though.
  358.  
  359.    * No editing of modes.
  360.  
  361.  - Function: info [NODE-NAME]
  362.      Invoke the Info viewer. If NODE-NAME is given display it, otherwise
  363.      the node `(dir)' is used.
  364.  
  365. 
  366. File: jade.info,  Node: Using Buffers,  Next: Using Windows,  Prev: Editing Modes,  Up: Using Jade
  367.  
  368. Using Buffers
  369. =============
  370.  
  371.    As you have probably realised, buffers are probably the most
  372. important part of the editor. Each file that is being edited must be
  373. stored in a buffer. They are not restricted to editing files though,
  374. all buffers are reguarded as simply being a list of lines which can be
  375. displayed in a window and modified as needed.
  376.  
  377.    This means that they are very flexible, for example, the Lisp
  378. debugger uses a buffer for its user interface, the Info reader uses two
  379. buffers - one to display the current node, the other to store the
  380. file's tag table (never displayed, just used to look up the position of
  381. nodes).
  382.  
  383.    Each buffer has a name, generally buffers which contain proper files
  384. use the base part of the filename, while buffers which don't correspond
  385. to files use a word which starts and ends with asterisks (ie, `*jade*').
  386.  
  387.    Each window can display one buffer at any time. There is no
  388. restriction on the number of windows which may display the same buffer
  389. at once.
  390.  
  391. * Menu:
  392.  
  393. * Displaying Buffers::        How to make a window display a buffer
  394. * Deleting Buffers::        Killing unwanted buffers
  395. * Other Buffer Commands::    General buffer manipulation
  396.  
  397. 
  398. File: jade.info,  Node: Displaying Buffers,  Next: Deleting Buffers,  Up: Using Buffers
  399.  
  400. Displaying Buffers
  401. ------------------
  402.  
  403.    There are two main commands for switching to a different buffer,
  404.  
  405. `Ctrl-x b'
  406.      Prompt for the name of a buffer and display it in the current
  407.      window.
  408.  
  409. `Ctrl-x 4 b'
  410.      In a different window (opens a new window if there is currently
  411.      only one) prompt for the name of a buffer and display it in that
  412.      window.
  413.  
  414.    Both commands are very similar, the `Ctrl-x 4 b' variant simply
  415. invokes a command to switch to a different window before calling the
  416. `Ctrl-x b' command.
  417.  
  418.    When typing the name of the new buffer you can use the prompt's
  419. completion mechanism to expand abbreviations (see *note The Buffer
  420. Prompt::.). If you just press RET with an empty prompt the default
  421. choice will be used.  This will be the the buffer that was being shown
  422. in this window before the current buffer was selected (its name is
  423. displayed in the prompt's title).
  424.  
  425.    The `Ctrl-x Ctrl-f' command and its variants also switch buffers
  426. since they look an existing copy of the file in a buffer before loading
  427. it from disk, see *Note Commands To Load Files::.
  428.  
  429. 
  430. File: jade.info,  Node: Deleting Buffers,  Next: Other Buffer Commands,  Prev: Displaying Buffers,  Up: Using Buffers
  431.  
  432. Deleting Buffers
  433. ----------------
  434.  
  435.    There is no real need to delete buffers, those that haven't been
  436. used for a while just hang around at the end of the list. If you're
  437. short on memory though it can help to kill some of the unused buffers
  438. which you have accumulated.
  439.  
  440.    The command to kill a buffer is,
  441.  
  442. `Ctrl-x k'
  443.      Prompts for the name of a buffer (with completion) then deletes
  444.      that buffer (if the buffer contains unsaved modifications you are
  445.      asked if you really want to lose them). It is removed from all
  446.      window's buffer-lists and any window which is displaying it is
  447.      switched to another buffer (the next in its list).  Any marks
  448.      which point to the buffer are made "non-resident" (that is, they
  449.      point to the name of the file in the buffer) and the buffer is
  450.      discarded.
  451.  
  452. 
  453. File: jade.info,  Node: Other Buffer Commands,  Prev: Deleting Buffers,  Up: Using Buffers
  454.  
  455. Other Buffer Commands
  456. ---------------------
  457.  
  458. `ESC x rotate-buffers-forward'
  459.      Rotates the current window's list of buffers.
  460.  
  461. `ESC x recover-file'
  462.      Loads the auto-saved copy of the file stored in this buffer
  463.      overwriting its current contents (if any changes are to be lost
  464.      the user will have to agree to losing them).
  465.  
  466. `ESC x revert-buffer'
  467.      Restores the contents of the current buffer to the contents of the
  468.      file that it was loaded from, if an auto-save file exists you are
  469.      asked if you want to revert to that instead.
  470.  
  471. `Ctrl-x s'
  472.      Ask whether to save any modified buffers that exist.
  473.  
  474. `ESC x clear-buffer'
  475.      Deletes the contents of the current buffer. Beware, you *won't* be
  476.      warned if you're about to lose any unsaved modifications!
  477.  
  478. 
  479. File: jade.info,  Node: Using Windows,  Next: Using the Prompt,  Prev: Using Buffers,  Up: Using Jade
  480.  
  481. Using Windows
  482. =============
  483.  
  484.    Windows have two main functions: to display the contents of buffers
  485. (but only one buffer at a time) and to collect input from you, the user.
  486.  
  487.    The editor *must* have at least one window open at all times, when
  488. you close the last window jade will exit, there is no limit to the
  489. number of windows which you may have open though.
  490.  
  491.    Each window is split into two parts, they are
  492.  
  493. "The Main Display Area"
  494.      This is the largest part of the window, it is where the buffer
  495.      that this window is displaying is drawn.
  496.  
  497. "The Status Line"
  498.      A single line of text associated with the window, under X11 this
  499.      is the area of the beneath the horizontal line at the bottom of
  500.      the window, on the Amiga it is the title of the window. The status
  501.      line is normally used to display information about this window and
  502.      what it is displaying, it has this format:
  503.  
  504.           BUFFER-NAME [MODE-NAME] (COL,ROW) N line(s) [FLAGS]
  505.  
  506.      Where the individual parts mean
  507.  
  508.     BUFFER-NAME
  509.           The name of the buffer being edited, it can have either a `+'
  510.           or a `-' appended to it, a plus means the buffer has been
  511.           modified since it was saved, a minus means that the buffer is
  512.           read-only.
  513.  
  514.     MODE-NAME
  515.           Most editing modes set this to their name.
  516.  
  517.     COL
  518.           The column that the cursor is at.
  519.  
  520.     ROW
  521.           The row number of the cursor.
  522.  
  523.     N
  524.           The number of lines in this buffer
  525.  
  526.     FLAGS
  527.           General one-character flags related to the status of the
  528.           window and its buffer.
  529.  
  530.    Each window maintains a list of all buffers which are available for
  531. displaying, this is kept in order, from the most recently used to the
  532. least. This list (called `buffer-list') is used by some of the buffer
  533. manipulation commands when they are working out which buffer should be
  534. displayed.
  535.  
  536. * Menu:
  537.  
  538. * Creating Windows::        Opening a new window
  539. * Killing Windows::        How to close windows
  540. * Other Window Commands::    General window manipulation
  541.  
  542. 
  543. File: jade.info,  Node: Creating Windows,  Next: Killing Windows,  Up: Using Windows
  544.  
  545. Creating Windows
  546. ----------------
  547.  
  548. `Ctrl-x 2'
  549. `Ctrl-x 5'
  550.      Opens a new window, it will have the most of the attributes that
  551.      the current window does, things like: size, buffer, font, etc...
  552.      If you are using X11 you will probably have to use your mouse to
  553.      select its position, depending on the window manager you use, on
  554.      the Amiga it will be created at the same position as the current
  555.      window.
  556.  
  557. `Ctrl-x 4 Ctrl-f'
  558. `Ctrl-x 4 f'
  559.      In a different window, one will be created if only one window is
  560.      open, find a file, for more details see *Note Commands To Load
  561.      Files::.
  562.  
  563. `Ctrl-x 4 a'
  564.      In a different window add an entry to a change-log file. *Note
  565.      Keeping ChangeLogs::.
  566.  
  567. `Ctrl-x 4 b'
  568.      In a different window, choose a buffer to display, similar to the
  569.      `Ctrl-x b' command. *Note Displaying Buffers::.
  570.  
  571. `Ctrl-x 4 h'
  572.      Enter the help system in a different window. *Note The Help
  573.      System::.
  574.  
  575. `Ctrl-x 4 i'
  576.      Enter the Info browser in a different window. *Note Info-mode::.
  577.  
  578. `Ctrl-x 4 `'
  579.      Display the next error (or whatever) in the `*compilation*' buffer
  580.      in a different window. *Note Finding Errors::.
  581.  
  582. 
  583. File: jade.info,  Node: Killing Windows,  Next: Other Window Commands,  Prev: Creating Windows,  Up: Using Windows
  584.  
  585. Killing Windows
  586. ---------------
  587.  
  588. `Ctrl-x 0'
  589.      Close the current window, if it is the last window that the editor
  590.      has open it will exit (after asking you if you wish to lose any
  591.      unsaved modifications to buffers).
  592.  
  593. `Ctrl-x 1'
  594.      Close all windows except the current one.
  595.  
  596. 
  597. File: jade.info,  Node: Other Window Commands,  Prev: Killing Windows,  Up: Using Windows
  598.  
  599. Other Window Commands
  600. ---------------------
  601.  
  602. `Ctrl-x o'
  603.      Activate the next window of the editor's. Under X11 this involves
  604.      warping the [mouse-]cursor to the top left corner of the newly
  605.      activated window.
  606.  
  607. 
  608. File: jade.info,  Node: Using the Prompt,  Next: Using Marks,  Prev: Using Windows,  Up: Using Jade
  609.  
  610. Using the Prompt
  611. ================
  612.  
  613.    There are two different styles of prompt that the editor uses when it
  614. wants you to enter a string.
  615.  
  616. * Menu:
  617.  
  618. * The Simple Prompt::        The prompt at the bottom of the window
  619. * The Buffer Prompt::        Prompt with its own buffer and completion
  620.  
  621. 
  622. File: jade.info,  Node: The Simple Prompt,  Next: The Buffer Prompt,  Up: Using the Prompt
  623.  
  624. The Simple Prompt
  625. -----------------
  626.  
  627.    The simplest prompt uses the the bottom-most line in the window, it
  628. prints the prompt's title on the left hand side, you should type your
  629. response and then press the RET key. This prompt is very primitive, the
  630. only special commands that it has are,
  631.  
  632. `BS'
  633.      Delete the previous character.
  634.  
  635. `UP'
  636. `DOWN'
  637.      Replace the contents of the prompt with the last string entered.
  638.      When you type `UP' or `DOWN' again the original contents are
  639.      restored.
  640.  
  641. `ESC'
  642.      Cancel the prompt.
  643.  
  644. All other keys are simply printed in the prompt -- whatever they are.
  645.  
  646. 
  647. File: jade.info,  Node: The Buffer Prompt,  Prev: The Simple Prompt,  Up: Using the Prompt
  648.  
  649. The Buffer Prompt
  650. -----------------
  651.  
  652.    This type of prompt is more sophisticated. It creates a new buffer
  653. for you to type your response into (called `*prompt*'), the title of the
  654. prompt is displayed in the buffer's first line.
  655.  
  656.    Normally you type the answer to the prompt into the buffer and then
  657. press the RET key. All normal editor commands are available while you
  658. are using the prompt, you can switch buffers, load new files, whatever
  659. you like.
  660.  
  661.    Another advantage of this type of prompt is that it supports
  662. "completion", this allows you to type the beginning of your response
  663. then press the TAB key. What you have typed will be matched against the
  664. list of responses that the editor has (ie, when being prompted for the
  665. name of a file it will be matched against all available files), if a
  666. unique match is found your response will be completed to that match.
  667.  
  668.    If several potential completions are found, these will be displayed
  669. after the line `::Completions::' in the buffer and your response will
  670. only be completed as far as the potential completions are similar. For
  671. example, if you enter `fo' then press TAB and files called `foo' and
  672. `foobar' exist, the contents of the prompt will become `foo'.
  673.  
  674.    Completion is provided for many different things, some are: files,
  675. buffers, symbols, functions, variables, Info nodes, etc...
  676.  
  677.    The special commands for this type of prompt are,
  678.  
  679. `TAB'
  680.      Complete the contents of the prompt. If more than one potential
  681.      completion exists they are printed in the buffer.
  682.  
  683. `RET'
  684.      Enter the result of this prompt. If you press RET while the cursor
  685.      is on a printed potential completion (those under the
  686.      `::Completions::' line) the whole line will be entered. Otherwise,
  687.      just the text to the left of the cursor is entered.
  688.  
  689. `ESC ?'
  690.      Print all possible completions of the current prompt but do not
  691.      try to actually change the contents of the prompt.
  692.  
  693. `Ctrl-g'
  694.      Cancel the prompt.
  695.  
  696. 
  697. File: jade.info,  Node: Using Marks,  Next: Compiling Programs,  Prev: Using the Prompt,  Up: Using Jade
  698.  
  699. Using Marks
  700. ===========
  701.  
  702.    Marks are used to record a position in a file, as the file's buffer
  703. is modifed so does the position that the mark points to -- a mark will
  704. keep pointing at the same character no matter what happens (unless the
  705. character is deleted!).
  706.  
  707.    The other good thing about marks is that they point to files *not*
  708. buffers. This means that you can set a mark in a buffer, delete the
  709. buffer and then move to the position of the mark, the file will be
  710. reloaded and the cursor will point at the original character.
  711.  
  712.    Normally there are three user-accessible marks (1) and one special
  713. `auto-mark' which is used, amongst other things, to record the
  714. "previous" position of the cursor, allowing you to retrace your last
  715. major step.
  716.  
  717.    The commands available on marks are,
  718.  
  719. `F1'
  720. `F2'
  721. `F3'
  722.      Move to the mark #1, #2 or #3, depending on which function key is
  723.      pressed (F1 means mark #1, etc...). If the file pointed to is not
  724.      in memory it will be loaded into a new buffer.
  725.  
  726. `Shift-F1'
  727. `Shift-F2'
  728. `Shift-F3'
  729.      Set the position of mark #1, #2 or #3, depending on the function
  730.      key.
  731.  
  732. `Ctrl-x Ctrl-x'
  733.      Swap the positions of the cursor and the `auto-mark'.
  734.  
  735. `Ctrl-@'
  736.      Set the position of the `auto-mark'.
  737.  
  738.    ---------- Footnotes ----------
  739.  
  740.    (1)  There is no reason why you can't have more, the editor sets no
  741. limitation on the number of marks available. This is just how I have
  742. set the editor up.
  743.  
  744. 
  745. File: jade.info,  Node: Compiling Programs,  Next: Simple Customisation,  Prev: Using Marks,  Up: Using Jade
  746.  
  747. Compiling Programs
  748. ==================
  749.  
  750.    Jade has a number of features to help you develop programs, foremost
  751. is the ability to run a compilation inside one of the editor's buffers.
  752. Unfortunately, this is only possible when using the Unix operating
  753. system at the present.
  754.  
  755.    Once the compilation has finished you can then step through each
  756. error produced.
  757.  
  758. * Menu:
  759.  
  760. * Running a Compilation::
  761. * Finding Errors::        Stepping through compile errors
  762. * Using Grep::            Searching files for a regexp
  763. * Keeping ChangeLogs::        Simple recording of file revisions
  764.  
  765. 
  766. File: jade.info,  Node: Running a Compilation,  Next: Finding Errors,  Up: Compiling Programs
  767.  
  768. Running a Compilation
  769. ---------------------
  770.  
  771.    The command to run a shell command in a buffer is,
  772.  
  773. `ESC x compile'
  774.      Prompts you for the command to execute, with a default of the last
  775.      command you ran (starts as `make'). A shell process is created
  776.      which runs asynchronously to the editor in the same directory as
  777.      the current buffer's file was loaded from. The buffer
  778.      `*compilation*' is selected and this is where all output from the
  779.      program is printed.
  780.  
  781.    When the process finishes running a message is printed in the
  782. `*compilation*' buffer telling you its exit-code.
  783.  
  784.    Only one process may be run with the `compile' function at once.
  785.  
  786.    This command is not available on the Amiga version yet.
  787.  
  788. 
  789. File: jade.info,  Node: Finding Errors,  Next: Using Grep,  Prev: Running a Compilation,  Up: Compiling Programs
  790.  
  791. Finding Errors
  792. --------------
  793.  
  794.    When you have compiled something with the `ESC x compile' command it
  795. is possible to step through each of the errors that it produces. To do
  796. this use the command,
  797.  
  798. `Ctrl-x `'
  799. `ESC x next-error'
  800.      Displays the next error in the `*compilation*' buffer. The file
  801.      that is in is loaded (if necessary) and the line with the error is
  802.      found.
  803.  
  804.    If you edit a file which has errors in it, then try to find the next
  805. error (which is in the same file) everything will still work. The
  806. positions of errors are updated as the buffers are modified.
  807.  
  808.    The only exception to this is when you invoke the `next-error'
  809. function while the `*compilation*' buffer is still being written to. If
  810. more errors are produced in a file which has been modified since the
  811. compilation started it is likely that the positions will get out of
  812. sync.
  813.  
  814.    By default, the `next-error' function understands the type of error
  815. output that `gcc' produces. This is of the form,
  816.  
  817.      FILE:LINE-NUMBER:DESCRIPTION
  818.  
  819.    It is possible to use other formats though, the variables which
  820. control this are,
  821.  
  822.  - Variable: compile-error-regexp
  823.      Regular expression to match a line containing an error. For `gcc'
  824.      this is `^(.*):([0-9]+):(.+)'.
  825.  
  826.  - Variable: compile-file-expand
  827.      Expansion template to produce the name of the file with the error,
  828.      using `compile-error-regexp' and the line containing the error. By
  829.      default this is `\1'.
  830.  
  831.  - Variable: compile-line-expand
  832.      Similar to `compile-file-expand' except that it expands to a string
  833.      defining the number of the line with the error. By default, `\2'.
  834.  
  835.  - Variable: compile-error-expand
  836.      Similar to `compile-file-expand', but produces the description of
  837.      the error. By default, `\3'.
  838.  
  839. 
  840. File: jade.info,  Node: Using Grep,  Next: Keeping ChangeLogs,  Prev: Finding Errors,  Up: Compiling Programs
  841.  
  842. Using Grep
  843. ----------
  844.  
  845.    It is often very useful to grep through a set of files looking for a
  846. regular expression, this is what the `grep' command does. With jade it
  847. is possible to run an external `grep' program in the `*compilation*'
  848. buffer. This then enables you to step through each grep hit using the
  849. `Ctrl-x `' command, *Note Finding Errors::.
  850.  
  851.    The commands to use grep are,
  852.  
  853. `ESC x grep'
  854.      Prompt for a string of arguments to give `grep', you do not need to
  855.      provide the name of the program, or the `-n' switch, this is done
  856.      automatically. The shell will do any filename-globbing on the
  857.      arguments so it is advisable to surround the regular expression
  858.      with single quotes.
  859.  
  860.      Note that the regular expression syntax will be different to that
  861.      which jade uses. Also this command won't work on an Amiga.
  862.  
  863. `ESC x grep-buffer'
  864.      This command provides a method for scanning the current buffer for
  865.      all lines matching a regular expression (which you are prompted
  866.      for). It is written entirely in Lisp -- this means that the normal
  867.      regular expression syntax is needed and it will work on an Amiga.
  868.  
  869. 
  870. File: jade.info,  Node: Keeping ChangeLogs,  Prev: Using Grep,  Up: Compiling Programs
  871.  
  872. Keeping ChangeLogs
  873. ------------------
  874.  
  875.    A ChangeLog is a file (usually called `ChangeLog') which keeps a log
  876. of all changes you have made to the files in its directory. For
  877. example, the `src/ChangeLog' file for Jade keeps a list of changes made
  878. to the editor's source code.
  879.  
  880.    There is no magic involved, you simply use a command to add a new
  881. entry to a directory's log after modifying a file in that directory.
  882. You then have to enter a summary of the changes that you made.
  883.  
  884.    The command to do this is,
  885.  
  886. `ESC a'
  887.      Prompts for the name of a directory then lets you type a
  888.      description of the changes you have made.
  889.  
  890.    If you enter more than one change in the same day (and from the same
  891. host) the same heading will be used. The heading consists of the time
  892. and date, your name, your login and the name of the host you're on. (1)
  893.  
  894.    ---------- Footnotes ----------
  895.  
  896.    (1)  On the Amiga there is no way to get these details. So, Jade
  897. looks for some environment variables, `USERNAME' for the login name,
  898. `HOSTNAME' for the name of the host and `REALNAME' for your actual name.
  899.  
  900. 
  901. File: jade.info,  Node: Simple Customisation,  Prev: Compiling Programs,  Up: Using Jade
  902.  
  903. Simple Customisation
  904. ====================
  905.  
  906.    The best way to tailor the editor to your own requirements is with
  907. your personal startup file. This is called `.jaderc' in your home
  908. directory (1), it is a file of Lisp forms evaluated when Jade
  909. initialises itself.
  910.  
  911.    Usually, setting the values of variables in your startup file is
  912. enough to configure Jade how you want, the Lisp function to set a
  913. variable is called `setq', it's first argument is the name of the
  914. variable, it's second the value you wish to set it to. Normally this
  915. value will be one of the following data types,
  916.  
  917. `"xyz"'
  918.      A string `xyz'.
  919.  
  920. `123'
  921. `0173'
  922. `0x7b'
  923.      A number, all of the above have the value 123 (in decimal, octal
  924.      and hexadecimal).
  925.  
  926. `nil'
  927. `t'
  928.      A boolean value, `nil' means false, or not true. `t' is the
  929.      opposite (in fact, any value not `nil' is true).
  930.  
  931.    My `.jaderc' file looks something like this (note that semicolons
  932. introduce comments),
  933.  
  934.      ;; Size of tabs for C source is 4
  935.      (setq c-mode-tab 4)
  936.      
  937.      ;; Size of tabs for Lisp source is 2
  938.      (setq lisp-mode-tab 2)
  939.      
  940.      ;; On X11 scroll quarter of a screen at once, else a line at a time
  941.      (setq y-scroll-step-ratio (if (x11-p) 4 0))
  942.      
  943.      ;; When on an Amiga, flag that I don't want pulldown menus
  944.      (when (amiga-p)
  945.        (setq amiga-no-menus t))
  946.  
  947.    ---------- Footnotes ----------
  948.  
  949.    (1)  On the Amiga, your home directory is defined as the contents of
  950. the environment variable `HOME'.
  951.  
  952. 
  953. File: jade.info,  Node: Programming Jade,  Next: Reporting Bugs,  Prev: Using Jade,  Up: Top
  954.  
  955. Programming Jade
  956. ****************
  957.  
  958.    Unfortunately I haven't written this section yet. If you wan't to
  959. program Jade your best bet is to look at the files in the `lisp/'
  960. directory.  Online documentation is available for all editor functions,
  961. *Note The Help System::.
  962.  
  963.    If you don't know Lisp look at any Lisp book. Jade's Lisp is fairly
  964. similar to Emacs-Lisp (though the editor-related functions differ
  965. greatly) so a good starting point may be the Emacs-Lisp manual.
  966.  
  967. 
  968. File: jade.info,  Node: Reporting Bugs,  Next: Function Index,  Prev: Programming Jade,  Up: Top
  969.  
  970. Reporting Bugs
  971. **************
  972.  
  973.    If you think you've found a bug in Jade I want to know about it,
  974. there is a list of problems that I am aware of in the `BUGS' file, if
  975. your's appears in here tell me anyway to make me fix it.
  976.  
  977.    When submitting bug reports I need to know as much as possible, both
  978. about the problem and the circumstamces in which it occurs. In general,
  979. send me as much information as possible, even if you think it's probably
  980. irrelevant.
  981.  
  982.    If you can, contact me via email, my address is `jsh@ukc.ac.uk'.  If
  983. you don't get a reply within about a week it's probably a university
  984. vacation -- this means that I won't get your message for a while, if
  985. it's important try my postal address, this is,
  986.  
  987.      John Harper
  988.      91 Springdale Road
  989.      Broadstone
  990.      Dorset
  991.      BH18 9BW
  992.      England
  993.  
  994.    As well as bugs I'm interested in any comments you have about the
  995. editor, even if you just tell me you hate it (as long as you say *why*
  996. you hate it!).
  997.  
  998. 
  999. File: jade.info,  Node: Function Index,  Next: Variable Index,  Prev: Reporting Bugs,  Up: Top
  1000.  
  1001. Function Index
  1002. **************
  1003.  
  1004. * Menu:
  1005.  
  1006. * c-mode:                               C-mode.
  1007. * compile:                              Running a Compilation.
  1008. * grep:                                 Using Grep.
  1009. * grep-buffer:                          Using Grep.
  1010. * info:                                 Info-mode.
  1011. * lisp-mode:                            Lisp-mode.
  1012. * next-error:                           Finding Errors.
  1013. * recover-file:                         Other Buffer Commands.
  1014. * revert-buffer:                        Other Buffer Commands.
  1015. * rotate-buffers-forward:               Other Buffer Commands.
  1016. * texinfo-mode:                         Texinfo-mode.
  1017.  
  1018. 
  1019. File: jade.info,  Node: Variable Index,  Next: Key Index,  Prev: Function Index,  Up: Top
  1020.  
  1021. Variable Index
  1022. **************
  1023.  
  1024. * Menu:
  1025.  
  1026. * auto-save-interval:                   Auto-Saving Files.
  1027. * auto-save-p:                          Auto-Saving Files.
  1028. * backup-by-copying:                    Backup Files.
  1029. * c-mode-auto-indent:                   C-mode.
  1030. * c-mode-hook:                          C-mode.
  1031. * c-mode-tab:                           C-mode.
  1032. * compile-error-expand:                 Finding Errors.
  1033. * compile-error-regexp:                 Finding Errors.
  1034. * compile-file-expand:                  Finding Errors.
  1035. * compile-line-expand:                  Finding Errors.
  1036. * default-auto-save-interval:           Auto-Saving Files.
  1037. * disk-tab:                             Loading and Saving Tabs.
  1038. * lisp-mode-auto-indent:                Lisp-mode.
  1039. * lisp-mode-hook:                       Lisp-mode.
  1040. * lisp-mode-tab:                        Lisp-mode.
  1041. * make-backup-files:                    Backup Files.
  1042. * mode-alist:                           Automatic Mode Selection.
  1043. * no-file-code-p:                       Embedding Lisp In Files.
  1044. * save-tabs:                            Loading and Saving Tabs.
  1045. * screen-tab:                           Moving Around Buffers.
  1046. * texinfo-mode-hook:                    Texinfo-mode.
  1047. * x-scroll-step-ratio:                  Moving Around Buffers.
  1048. * y-scroll-step-ratio:                  Moving Around Buffers.
  1049.  
  1050. 
  1051. File: jade.info,  Node: Key Index,  Next: Concept Index,  Prev: Variable Index,  Up: Top
  1052.  
  1053. Key Index
  1054. *********
  1055.  
  1056. * Menu:
  1057.  
  1058. * 1:                                    Info-mode.
  1059. * 2:                                    Info-mode.
  1060. * 3:                                    Info-mode.
  1061. * 4:                                    Info-mode.
  1062. * 5:                                    Info-mode.
  1063. * ::                                    C-mode.
  1064. * BS:                                   Info-mode.
  1065. * BS:                                   Editing Buffers.
  1066. * DEL:                                  Editing Buffers.
  1067. * DOWN:                                 Moving Around Buffers.
  1068. * ESC <:                                Moving Around Buffers.
  1069. * ESC >:                                Moving Around Buffers.
  1070. * ESC ?:                                The Buffer Prompt.
  1071. * ESC @:                                Marking Blocks.
  1072. * ESC BS:                               Editing Buffers.
  1073. * ESC DEL:                              Editing Buffers.
  1074. * ESC TAB:                              Moving Around Buffers.
  1075. * ESC a:                                Keeping ChangeLogs.
  1076. * ESC b:                                Moving Around Buffers.
  1077. * ESC Ctrl-x:                           Lisp-mode.
  1078. * ESC d:                                Editing Buffers.
  1079. * ESC f:                                Moving Around Buffers.
  1080. * ESC h:                                Marking Blocks.
  1081. * ESC i:                                Moving Around Buffers.
  1082. * ESC i:                                Editing Buffers.
  1083. * ESC l:                                Editing Buffers.
  1084. * ESC m:                                Moving Around Buffers.
  1085. * ESC P:                                Commands for Replacing.
  1086. * ESC p:                                Commands for Replacing.
  1087. * ESC u:                                Editing Buffers.
  1088. * ESC v:                                Moving Around Buffers.
  1089. * ESC w:                                Commands on Blocks.
  1090. * ESC x clear-buffer:                   Other Buffer Commands.
  1091. * ESC x compile:                        Running a Compilation.
  1092. * ESC x goto-line:                      Moving Around Buffers.
  1093. * ESC x grep:                           Using Grep.
  1094. * ESC x grep-buffer:                    Using Grep.
  1095. * ESC x recover-file:                   Other Buffer Commands.
  1096. * ESC x revert-buffer:                  Other Buffer Commands.
  1097. * ESC x rotate-buffers-forward:         Other Buffer Commands.
  1098. * ESC [:                                Moving Around Buffers.
  1099. * ESC ]:                                Moving Around Buffers.
  1100. * F1:                                   Using Marks.
  1101. * F2:                                   Using Marks.
  1102. * F3:                                   Using Marks.
  1103. * HELP:                                 The Help System.
  1104. * HELP a:                               The Help System.
  1105. * HELP e:                               The Help System.
  1106. * HELP f:                               The Help System.
  1107. * HELP h:                               The Help System.
  1108. * HELP i:                               The Help System.
  1109. * HELP m:                               The Help System.
  1110. * HELP v:                               The Help System.
  1111. * LEFT:                                 Moving Around Buffers.
  1112. * RET:                                  The Buffer Prompt.
  1113. * RET:                                  Lisp-mode.
  1114. * RET:                                  C-mode.
  1115. * RET:                                  Editing Buffers.
  1116. * RIGHT:                                Moving Around Buffers.
  1117. * SPC:                                  Info-mode.
  1118. * TAB:                                  The Buffer Prompt.
  1119. * TAB:                                  Lisp-mode.
  1120. * TAB:                                  C-mode.
  1121. * TAB:                                  Moving Around Buffers.
  1122. * UP:                                   Moving Around Buffers.
  1123. * {:                                    C-mode.
  1124. * }:                                    C-mode.
  1125. * b:                                    Info-mode.
  1126. * Ctrl:                                 Modifiers.
  1127. * Ctrl-@:                               Using Marks.
  1128. * Ctrl-DEL:                             Editing Buffers.
  1129. * Ctrl-DOWN:                            Moving Around Buffers.
  1130. * Ctrl-RET:                             Lisp-mode.
  1131. * Ctrl-SPC:                             Marking Blocks.
  1132. * Ctrl-TAB:                             Moving Around Buffers.
  1133. * Ctrl-UP:                              Moving Around Buffers.
  1134. * Ctrl-a:                               Moving Around Buffers.
  1135. * Ctrl-b:                               Moving Around Buffers.
  1136. * Ctrl-c Ctrl-c {:                      Texinfo-mode.
  1137. * Ctrl-c Ctrl-c }:                      Texinfo-mode.
  1138. * Ctrl-c Ctrl-c c:                      Texinfo-mode.
  1139. * Ctrl-c Ctrl-c Ctrl-m:                 Texinfo-mode.
  1140. * Ctrl-c Ctrl-c d:                      Texinfo-mode.
  1141. * Ctrl-c Ctrl-c e:                      Texinfo-mode.
  1142. * Ctrl-c Ctrl-c f:                      Texinfo-mode.
  1143. * Ctrl-c Ctrl-c i:                      Texinfo-mode.
  1144. * Ctrl-c Ctrl-c l:                      Texinfo-mode.
  1145. * Ctrl-c Ctrl-c m:                      Texinfo-mode.
  1146. * Ctrl-c Ctrl-c n:                      Texinfo-mode.
  1147. * Ctrl-c Ctrl-c s:                      Texinfo-mode.
  1148. * Ctrl-c Ctrl-c v:                      Texinfo-mode.
  1149. * Ctrl-c Ctrl-c ]:                      Texinfo-mode.
  1150. * Ctrl-d:                               Editing Buffers.
  1151. * Ctrl-e:                               Moving Around Buffers.
  1152. * Ctrl-f:                               Moving Around Buffers.
  1153. * Ctrl-g:                               The Buffer Prompt.
  1154. * Ctrl-h:                               The Help System.
  1155. * Ctrl-h a:                             The Help System.
  1156. * Ctrl-h e:                             The Help System.
  1157. * Ctrl-h f:                             The Help System.
  1158. * Ctrl-h h:                             The Help System.
  1159. * Ctrl-h i:                             The Help System.
  1160. * Ctrl-h m:                             The Help System.
  1161. * Ctrl-h v:                             The Help System.
  1162. * Ctrl-i:                               Commands on Blocks.
  1163. * Ctrl-j:                               Moving Around Buffers.
  1164. * Ctrl-M:                               Rectangular Blocks.
  1165. * Ctrl-m:                               Marking Blocks.
  1166. * Ctrl-n:                               Moving Around Buffers.
  1167. * Ctrl-o:                               Editing Buffers.
  1168. * Ctrl-p:                               Moving Around Buffers.
  1169. * Ctrl-R:                               Commands for Searching.
  1170. * Ctrl-r:                               Commands for Searching.
  1171. * Ctrl-S:                               Commands for Searching.
  1172. * Ctrl-s:                               Commands for Searching.
  1173. * Ctrl-v:                               Moving Around Buffers.
  1174. * Ctrl-w:                               Commands on Blocks.
  1175. * Ctrl-x 0:                             Killing Windows.
  1176. * Ctrl-x 1:                             Killing Windows.
  1177. * Ctrl-x 2:                             Creating Windows.
  1178. * Ctrl-x 4 a:                           Creating Windows.
  1179. * Ctrl-x 4 b:                           Creating Windows.
  1180. * Ctrl-x 4 b:                           Displaying Buffers.
  1181. * Ctrl-x 4 Ctrl-f:                      Creating Windows.
  1182. * Ctrl-x 4 f:                           Creating Windows.
  1183. * Ctrl-x 4 h:                           Creating Windows.
  1184. * Ctrl-x 4 i:                           Creating Windows.
  1185. * Ctrl-x 4 `:                           Creating Windows.
  1186. * Ctrl-x 5:                             Creating Windows.
  1187. * Ctrl-x b:                             Displaying Buffers.
  1188. * Ctrl-x Ctrl-f:                        Commands To Load Files.
  1189. * Ctrl-x Ctrl-l:                        Commands on Blocks.
  1190. * Ctrl-x Ctrl-r:                        Commands To Load Files.
  1191. * Ctrl-x Ctrl-s:                        Commands To Save Files.
  1192. * Ctrl-x Ctrl-u:                        Commands on Blocks.
  1193. * Ctrl-x Ctrl-v:                        Commands To Load Files.
  1194. * Ctrl-x Ctrl-w:                        Commands To Save Files.
  1195. * Ctrl-x Ctrl-x:                        Using Marks.
  1196. * Ctrl-x h:                             Marking Blocks.
  1197. * Ctrl-x i:                             Commands To Load Files.
  1198. * Ctrl-x k:                             Deleting Buffers.
  1199. * Ctrl-x s:                             Other Buffer Commands.
  1200. * Ctrl-x s:                             Commands To Save Files.
  1201. * Ctrl-x `:                             Finding Errors.
  1202. * Ctrl-Y:                               Rectangular Blocks.
  1203. * Ctrl-Y:                               Cutting And Pasting.
  1204. * Ctrl-y:                               Cutting And Pasting.
  1205. * Ctrl-z:                               Commands on Blocks.
  1206. * f:                                    Info-mode.
  1207. * g:                                    Info-mode.
  1208. * l:                                    Info-mode.
  1209. * LMB:                                  Modifiers.
  1210. * m:                                    Info-mode.
  1211. * Meta:                                 Modifiers.
  1212. * Meta-DOWN:                            Moving Around Buffers.
  1213. * Meta-LEFT:                            Moving Around Buffers.
  1214. * Meta-RIGHT:                           Moving Around Buffers.
  1215. * Meta-TAB:                             Lisp-mode.
  1216. * Meta-TAB:                             C-mode.
  1217. * Meta-UP:                              Moving Around Buffers.
  1218. * Meta-M:                               Marking Blocks.
  1219. * Meta-m:                               Marking Blocks.
  1220. * MMB:                                  Modifiers.
  1221. * n:                                    Info-mode.
  1222. * p:                                    Info-mode.
  1223. * q:                                    Info-mode.
  1224. * RMB:                                  Modifiers.
  1225. * Shift:                                Modifiers.
  1226. * Shift-BS:                             Editing Buffers.
  1227. * Shift-DEL:                            Editing Buffers.
  1228. * Shift-DOWN:                           Moving Around Buffers.
  1229. * Shift-F1:                             Using Marks.
  1230. * Shift-F2:                             Using Marks.
  1231. * Shift-F3:                             Using Marks.
  1232. * Shift-LEFT:                           Moving Around Buffers.
  1233. * Shift-RET:                            Lisp-mode.
  1234. * Shift-RET:                            C-mode.
  1235. * Shift-RIGHT:                          Moving Around Buffers.
  1236. * Shift-TAB:                            Moving Around Buffers.
  1237. * Shift-UP:                             Moving Around Buffers.
  1238. * Space:                                Keys.
  1239. * u:                                    Info-mode.
  1240.  
  1241.