home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / util / edit / jade / man / jade.info-1 < prev    next >
Encoding:
GNU Info File  |  1994-10-16  |  49.0 KB  |  1,457 lines

  1. This is Info file jade.info, produced by Makeinfo-1.55 from the input
  2. file jade.texi.
  3.  
  4. START-INFO-DIR-ENTRY
  5. * Jade: (jade).            An editor for X11 and AmigaDOS
  6. END-INFO-DIR-ENTRY
  7.  
  8.    This is Edition 1.3, last updated 7 October 1994, of `The Jade
  9. Manual', for Jade, Version 3.2.
  10.  
  11.    Jade is a text editor for X11 (on Unix) and the Amiga.
  12.  
  13.    Copyright 1993, 1994 John Harper.
  14.  
  15.    Permission is granted to make and distribute verbatim copies of this
  16. manual provided the copyright notice and this permission notice are
  17. preserved on all copies.
  18.  
  19.    Permission is granted to copy and distribute modified versions of
  20. this manual under the conditions for verbatim copying, provided that
  21. the entire resulting derived work is distributed under the terms of a
  22. permission notice identical to this one.
  23.  
  24. 
  25. File: jade.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
  26.  
  27. Jade
  28. ****
  29.  
  30.    Jade is a highly flexible Emacs-style text editor for X11 (on Unix)
  31. and AmigaDOS.
  32.  
  33.    This is Edition 1.3 of its documentation, last updated 7 October
  34. 1994 for Jade version 3.2.
  35.  
  36. * Menu:
  37.  
  38. * Copying::                     Distribution conditions
  39. * Introduction::                Brief introduction to Jade
  40. * News::                        New features in this release
  41.  
  42. * Systems Supported::           The operating systems Jade supports
  43. * Editor Concepts::             Some ideas you should understand
  44. * Key Names::                   How keys are described in this manual
  45.  
  46. * Starting Jade::               How to start the editor
  47. * Using Jade::                  Instructions for using the editor
  48. * Programming Jade::            How to extend Jade -- its Lisp system
  49.  
  50. * Reporting Bugs::              How to contact me
  51.  
  52. * Function Index::              Menu of all documented functions
  53. * Variable Index::              All variables which have been mentioned
  54. * Key Index::                   Menu of all key bindings
  55. * Concept Index::               Main index, references to all sections
  56.  
  57. 
  58. File: jade.info,  Node: Copying,  Next: Introduction,  Prev: Top,  Up: Top
  59.  
  60. Copying
  61. *******
  62.  
  63.    Jade is distributed under the terms of the GNU General Public
  64. License, this basically means that you can give it to anyone for any
  65. price as long as full source code is included. For the actual legalese
  66. see the file `COPYING' in the distribution. I reserve the right to use
  67. a different licence in future releases.
  68.  
  69.    The only parts of Jade which are not my own work are the regexp
  70. code, this is by Henry Spencer (though I have made some small
  71. modifications) and is distributed under his conditions, and the ARexx
  72. interface in the Amiga version which is based on `MinRexx' by Radical
  73. Eye Software.
  74.  
  75.    Be aware that there is absolutely NO WARRANTY for this program, you
  76. use it at your own risk. Obviously I hope there are no bugs, but I make
  77. no promises regarding the reliability of this software.
  78.  
  79. 
  80. File: jade.info,  Node: Introduction,  Next: News,  Prev: Copying,  Up: Top
  81.  
  82. Introduction
  83. ************
  84.  
  85.    Jade is a text editor primarily designed for programmers. It is
  86. easily customised through a Lisp-style extension language and can be
  87. tailored to the user's own requirements.
  88.  
  89.    Jade is designed to run under a graphical windowing system, systems
  90. currently supported are the Commodore Amiga and the X Window System
  91. version 11 (but only under Unix).
  92.  
  93.    It is the successor to the editor `Jed 2.10' which I released for the
  94. Amiga in early 1993. I have decided to rename it now that I have made an
  95. X11 version since there is already an editor called `Jed' available
  96. (there is no connection between the two, I haven't even looked at the
  97. other one). "Jade" is an anagram of "A Jed", if you want an acronym you
  98. could use "Just Another Damn Editor", if you can think of anything
  99. better please tell me.
  100.  
  101.    Jade is compatible with GNU Emacs in terms of key presses and
  102. command names to a certain extent but it is not intended as a simple
  103. copy of Emacs (indeed, when I started this I had never actually used
  104. Emacs!). I have tried to take my favourite aspects of all the editors I
  105. have used as well as adding features that I have not found elsewhere.
  106. Consequently, it is very much the editor that *I* want -- you may not
  107. find it so appealing.
  108.  
  109. 
  110. File: jade.info,  Node: News,  Next: Systems Supported,  Prev: Introduction,  Up: Top
  111.  
  112. News
  113. ****
  114.  
  115.    This chapter lists the major changes to Jade and which release they
  116. occurred in. Only changes relevant to you, the user, are detailed; for
  117. more explicit history see the `ChangeLog' files with the sources.
  118.  
  119. Version 3.2
  120. ===========
  121.  
  122.    * The programmer's manual has finally be written.
  123.  
  124.    * Undo; devote as much memory as you want to keep track of all
  125.      modifications to a buffer which can then be wound back.
  126.  
  127.    * Arguments can be given to commands as they're invoked.
  128.  
  129.    * Buffer menu for interactive buffer manipulation.
  130.  
  131.    * An Emacs-style local variables section can be embedded in a file;
  132.      replaces the naff `::jade-code::' thing.
  133.  
  134.    * `Ctrl-k' (`kill-line') works at last.
  135.  
  136.    * Now possible to interrupt jade while it's working (i.e. to let you
  137.      kill infinite loops).
  138.  
  139.    * The Help system now has commands to list key bindings, display
  140.      what is bound to any key sequence.
  141.  
  142.    * Use of the Latin-1 character set is now controlled by the minor
  143.      mode `latin-1-mode'.
  144.  
  145.    * Can load and save compressed (compress or gzip) files into/out of
  146.      buffers transparently when running on Unix.
  147.  
  148.    * Transposing commands; `transpose-chars', `transpose-words',
  149.      `transpose-exps'. Bound to `Ctrl-t', `Meta-t' and `Ctrl-Meta-t'
  150.      respectively.
  151.  
  152.    * Can now run a shell in an editor buffer, very basic (no
  153.      completion) but it works okay.
  154.  
  155.    * Support for using gdb through the shell interface, the current
  156.      frame's source code is highlighted in a separate window.
  157.  
  158.    * `Ctrl-z' moves to `Ctrl-W' so that `Ctrl-z' can (de)iconify the
  159.      current window.
  160.  
  161.    * Some programs written for the previous incarnation will need to be
  162.      altered; all will have to be recompiled.
  163.  
  164. Version 3.1
  165. ===========
  166.  
  167.    * Now properly supports characters which print as more than one
  168.      character (i.e. proper tabs, `^L', `\123', etc...). In general any
  169.      character can print as any sequence of up to four character-images.
  170.  
  171.    * Doesn't expand tabs to spaces anymore, this means that loading and
  172.      saving of largish files is noticeably quicker.
  173.  
  174.    * Files containing NUL characters can be edited (more or less)
  175.      successfully.  Some commands (notably the regexp matcher) still
  176.      don't like these characters but, in the main, binary files can be
  177.      edited successfully.
  178.  
  179.    * Searching and replacing has changed, it's easier to use now and
  180.      replacing globally is built in.
  181.  
  182.    * Many improvements to the Info viewer, not least, the dir file
  183.      doesn't have to have a tag-table anymore.
  184.  
  185.    * Client editing. This lets you load files into a running editor
  186.      from a shell. For example, if your mailer runs an editor on the
  187.      message you're writing you can use the client to edit the message
  188.      in a Jade that you are running.
  189.  
  190.    * The buffer prompt's completion is now controllable by the mouse as
  191.      well as the keyboard. Click the right button to complete the
  192.      current word.  Double-clicking the left mouse button on one of the
  193.      lines under the `::Completions::' line selects that completion.
  194.  
  195.    * `text-mode' and `indented-text-mode' major-modes for editing
  196.      English language (as opposed to programming languages).
  197.  
  198.    * Minor-modes. These provide small variations to the major-modes.
  199.      For example, `overwrite-mode' makes typed keys overwrite
  200.      whatever's under the cursor.  Also included is a minor mode to do
  201.      auto-filling (word wrap).
  202.  
  203.    * On Unix, a tilde (`~') in a filename is handled properly in most
  204.      cases
  205.  
  206.    * It is now possible to Meta qualify a key press and it will pretend
  207.      that you pressed ESC then the un-Meta'd key.
  208.  
  209. 
  210. File: jade.info,  Node: Systems Supported,  Next: Editor Concepts,  Prev: News,  Up: Top
  211.  
  212. Requirements
  213. ************
  214.  
  215.    Jade will only run on certain operating systems, this chapter
  216. details just what it needs as well as some notes relevant to each
  217. system.
  218.  
  219. Amiga Jade
  220. ==========
  221.  
  222.    The only real requirement for Jade running on an Amiga is that it
  223. must run an operating system revision of at least V37 (thats V2.04) and
  224. have about 300K free memory available.
  225.  
  226.    It also needs more stack than the average Amiga application. For
  227. normal use 20K should be okay. If you want to use the Lisp compiler 50K
  228. would be a better bet.
  229.  
  230.    It assumes that its directory is pointed to by the `JADE:'
  231. assignment.  This means that the main Lisp files are stored in
  232. `JADE:lisp/' and the file of doc-strings is `JADE:DOC'.
  233.  
  234. X11 Jade
  235. ========
  236.  
  237.    Jade will only run on version 11 of X, it has absolutely no support
  238. for character terminals or different windowing systems. As long as it
  239. compiles it should work on your system.
  240.  
  241.    One problem you might find is that the Backspace and Delete keys
  242. don't work properly. As far as I have been able to find out, most X
  243. terminals map both the Backspace (normally at the top-right of the
  244. alpha-keyboard) and the Delete (normally somewhere above the cursor
  245. keys) keys to the `Delete' keysym. Obviously, since I want these keys
  246. to have different effects (1) this is no good. What I decided to do
  247. about this was two things,
  248.  
  249.   1. Use `xmodmap' to map the Delete key to the `Backspace' keysym.
  250.      This may sound backwards but most programs seem to use the
  251.      `Delete' keysym as what I call `Backspace' so mapping as I
  252.      described doesn't break this.
  253.  
  254.      To do this, I have the following in my `.Xmodmap' file
  255.  
  256.           keycode 107 = Backspace
  257.  
  258.      Note that the `107' is the Delete key's key code on *my* keyboard,
  259.      your keyboard may, and probably will, be different.
  260.  
  261.   2. In the function which binds descriptions of key presses to Lisp
  262.      forms, swap the meanings of the `Backspace' and `Delete' keysyms.
  263.  
  264.    This means that everything works okay! You can bind to Delete key
  265. and it will work properly.
  266.  
  267.    ---------- Footnotes ----------
  268.  
  269.    (1)  Backspace should rub out the key before the cursor and Delete
  270. should delete the character under the cursor
  271.  
  272. 
  273. File: jade.info,  Node: Editor Concepts,  Next: Key Names,  Prev: Systems Supported,  Up: Top
  274.  
  275. Editor Concepts
  276. ***************
  277.  
  278.    Before I describe the editor in detail there are several concepts
  279. which you should be familiar with. Some will be explained in more
  280. detail later.
  281.  
  282. "buffer"
  283.      Buffers are used by the editor to store the text that you are
  284.      editing.  Broadly speaking, each buffer holds the contents of one
  285.      text-file loaded into the editor (it is not necessary for each
  286.      buffer to be associated with a file, some buffers exist for other
  287.      purposes for example the `*jade*' buffer is used to interact with
  288.      the Lisp system).
  289.  
  290. "current buffer"
  291.      The buffer being edited in the current window (see below), most
  292.      editor commands work on this buffer unless told otherwise.
  293.  
  294. "window"
  295.      Corresponds to a window in the window-system. Each window can
  296.      display one buffer at a single time (although a buffer may be
  297.      displayed in more than one window at once).
  298.  
  299. "current window"
  300.      Jade always keeps track of which one of its windows is active. It
  301.      is called the current window. Whenever you type a key or press a
  302.      mouse button in one of Jade's windows, that window automatically
  303.      becomes the current window.  Amongst other things, all messages
  304.      from the editor are displayed in the status line of the current
  305.      window.
  306.  
  307. "cursor"
  308.      The cursor marks your current position in the current buffer (see
  309.      above), when you type something it is inserted into the buffer
  310.      between the cursor and the character preceding it (unless you type
  311.      a command).
  312.  
  313. "status line"
  314.      One line in a window is devoted to displaying messages from the
  315.      editor, *Note Using Windows::.
  316.  
  317. "Lisp"
  318.      The programming language which Jade uses, although the internals
  319.      of the editor are written in C, all commands are written in a
  320.      dialect of Lisp (even if the command only calls a C function).
  321.      Jade contains an interpreter, compiler and debugger for this
  322.      language. *Note Programming Jade::.
  323.  
  324. "variable"
  325.      Variables are used to store Lisp values, each variable has a
  326.      unique name.  Note that unlike many programming languages
  327.      variables in Lisp are *not* typed, the data values themselves have
  328.      a type associated with them.
  329.  
  330. "form"
  331.      A form is a single Lisp expression. For example, all of these are
  332.      forms:
  333.  
  334.           foo
  335.           42
  336.           "hello"
  337.           (setq foo 200)
  338.  
  339. "command"
  340.      A command is a sequence of Lisp forms which may be called
  341.      interactively (i.e.  from the keyboard). It may be a key sequence
  342.      (such as `Ctrl-x Ctrl-f') or a Lisp function to evaluate (such as
  343.      `find-file').
  344.  
  345. "regular expression"
  346.      A regular expression is a string which is used to match against
  347.      other strings.  It has a special syntax which allows you to form a
  348.      kind of template against which the other strings can be matched.
  349.      They are used extensively by the editor, but you -- the user --
  350.      will mainly encounter them when searching and replacing strings in
  351.      buffers.
  352.  
  353. 
  354. File: jade.info,  Node: Key Names,  Next: Starting Jade,  Prev: Editor Concepts,  Up: Top
  355.  
  356. Key Names
  357. *********
  358.  
  359.    In this manual I have adopted a consistent notation for all key
  360. presses, since most editor commands are invoked via a typed key
  361. sequence it is very important that you can decipher this notation.
  362.  
  363.    Note that the term `input event' (or `event') and the term `key
  364. press' have been used interchangeably throughout this manual.  A `key
  365. press' may mean a mouse event, they don't always come from the keyboard.
  366.  
  367.    Every key press has a set of "modifiers"; these are the keys such as
  368. "Shift" or "Control" which don't actually produce a character when
  369. typed, they only effect the rest of the keyboard. Each key, then, can
  370. have one or more modifiers.
  371.  
  372.    The name of an event consists of zero or more hyphen-separated
  373. modifier names, followed by a hyphen and the name of the actual event.
  374.  
  375.    Some commands are triggered by more than one of these key presses;
  376. press each key (or do whatever is necessary to precipitate the input
  377. event) in turn to invoke the command.
  378.  
  379.    Note that the case of modifiers is not important, however some of
  380. the keys *are*, so you should always specify them in their correct case.
  381.  
  382. * Menu:
  383.  
  384. * Modifiers::                   Names of modifier keys
  385. * Keys::                        Names of actual keys
  386. * Example Keys::                Some examples and what they mean
  387.  
  388. 
  389. File: jade.info,  Node: Modifiers,  Next: Keys,  Up: Key Names
  390.  
  391. Modifiers
  392. =========
  393.  
  394. "Shift"
  395. "SFT"
  396.      The shift key.
  397.  
  398. "Ctrl"
  399. "CTL"
  400.      The control key, or its equivalent.
  401.  
  402. "Meta"
  403.      This depends on the window-system, on X11 it is the "Mod1"
  404.      modifier, on the Amiga the "Alt" key. When the `meta-sends-esc'
  405.      variable is non-nil the Meta modifier is treated specially,
  406.  
  407.       - Variable: meta-sends-esc
  408.           When non-nil, any Meta-modified key presses are expanded into
  409.           a sequence of two key presses, ESC and the pressed key minus
  410.           its Meta modifier.  For example typing `Meta-f' would expand
  411.           to `ESC f'. This feature is provided for compatibility with
  412.           GNU Emacs.
  413.  
  414.           What this really means is that when the option is enabled (it
  415.           is by default) you can either type the key sequence `ESC X'
  416.           or the sequence `Meta-X' (where Meta is your keyboard's meta
  417.           key) to invoke a command described as `Meta-X'.
  418.  
  419. "LMB"
  420.      The left mouse button.
  421.  
  422. "MMB"
  423.      The middle mouse button.
  424.  
  425. "RMB"
  426.      The right mouse button.
  427.  
  428.    As well as these, there are also some others, "Mod1" to "Mod5"
  429. represent the X11 modifiers of the same name. "Button1" to "Button5"
  430. also correspond to their X11 counterparts (Button1 to Button3 are LMB
  431. to RMB). For Amiga users, "Amiga" corresponds to the Amiga key (this is
  432. the same as Mod2).
  433.  
  434. 
  435. File: jade.info,  Node: Keys,  Next: Example Keys,  Prev: Modifiers,  Up: Key Names
  436.  
  437. Keys
  438. ====
  439.  
  440.    As far as possible each single character key-definition corresponds
  441. to where that character is on the keyboard (a is `a', etc...).
  442.  
  443.    When using an Amiga this should be true for *all* keys since the
  444. Amiga's "keymap.library" makes it easy to look up what key a character
  445. belongs to.  However, this is not so easy on X11. All of the standard
  446. ASCII character set should be okay, but the more esoteric characters
  447. may have to be specified by the names of their X11 keysym (without the
  448. `XK_' prefix). Look in the <X11/keysymdef.h> include file for all
  449. keysyms, for example `XK_question' would have to be used for `?' if the
  450. editor didn't treat it, and many others, specially.
  451.  
  452.    Some keys which don't follow this pattern are
  453.  
  454. "SPC"
  455. "Space"
  456.      The space bar.
  457.  
  458. "TAB"
  459.      The tab key.
  460.  
  461. "RET"
  462. "Return"
  463.      The return key.
  464.  
  465. "ESC"
  466. "Escape"
  467.      The escape key.
  468.  
  469. "BS"
  470. "Backspace"
  471.      The backspace key.
  472.  
  473. "DEL"
  474. "Delete"
  475.      The delete key.
  476.  
  477. "Help"
  478.      The help key, not all keyboards have this.
  479.  
  480. "Up"
  481.      The cursor up key.
  482.  
  483. "Down"
  484.      The cursor down key
  485.  
  486. "Left"
  487.      The cursor left key.
  488.  
  489. "Right"
  490.      The cursor right key.
  491.  
  492. "KP_Enter"
  493. "KP_Multiply"
  494. "KP_Divide"
  495. "KP_Minus"
  496. "KP_Add"
  497. "KP_Decimal"
  498. "KP_N"
  499.      Keys on the numeric keypad. For KP_N, N is a digit.
  500.  
  501. "Click1"
  502.      Single clicking a mouse button.
  503.  
  504. "Click2"
  505.      Double clicking a mouse button.
  506.  
  507. "Off"
  508.      Releasing a mouse button.
  509.  
  510. "Move"
  511.      Moving the mouse. This doesn't work on X11 yet.
  512.  
  513. 
  514. File: jade.info,  Node: Example Keys,  Prev: Keys,  Up: Key Names
  515.  
  516. Example Keys
  517. ============
  518.  
  519.    Some examples of proper key names are,
  520.  
  521. `Ctrl-x'
  522.      Hold down Control, type x.
  523.  
  524. `Meta-Shift-RET'
  525.      Hold down Meta and Shift, then type the Return key, or
  526.      alternatively, type the Escape key then hold down Shift and type
  527.      Return.
  528.  
  529. `LMB-Click1'
  530.      Click the left mouse button once.
  531.  
  532. `Ctrl-RMB-Click1'
  533.      Hold down Ctrl then click the right mouse button once.
  534.  
  535. 
  536. File: jade.info,  Node: Starting Jade,  Next: Using Jade,  Prev: Key Names,  Up: Top
  537.  
  538. Starting Jade
  539. *************
  540.  
  541.    This chapter describes Jade's initialisation process. This includes
  542. how to start it, what options it will accept and what it actually does
  543. after being started.
  544.  
  545. * Menu:
  546.  
  547. * Invocation::                  How to start the editor
  548. * Startup Options::             Arguments specified on the command line
  549. * Startup Procedure::           What happens on startup
  550.  
  551. 
  552. File: jade.info,  Node: Invocation,  Next: Startup Options,  Up: Starting Jade
  553.  
  554. Invocation
  555. ==========
  556.  
  557.    Since Jade supports two vastly different operating systems they both
  558. need to be covered separately.
  559.  
  560. Amiga
  561. -----
  562.  
  563.    The normal way to start Jade on the Amiga is to type its name at the
  564. Shell (or CLI) together with any options (*note Startup Options::.) you
  565. want. Note that these options are in the traditional Unix style, a dash
  566. followed by the option name and any arguments, not the standard
  567. AmigaDOS method.
  568.  
  569.    It is also possible to invoke the editor from the Workbench, simply
  570. double clicking on its icon will cause Jade to open its initial window.
  571. Unfortunately there is no support for passing arguments via Tool Types,
  572. nor is there any way to create icons with saved files. This is largely
  573. due to the fact that I rarely use the Workbench -- if enough people
  574. complain about this I will probably fix it. Jade doesn't have an icon
  575. yet, you'll have to make one yourself.
  576.  
  577. X11
  578. ---
  579.  
  580.    Jade should be started like most other Unix programs, type its name
  581. and any arguments to a shell. It must be able to connect to an X server
  582. (preferably the one controlling your terminal), the `-display' option
  583. can be used if needed.
  584.  
  585. 
  586. File: jade.info,  Node: Startup Options,  Next: Startup Procedure,  Prev: Invocation,  Up: Starting Jade
  587.  
  588. Startup Options
  589. ===============
  590.  
  591.    The acceptable options can be split into three classes. Note that
  592. they must be specified on the command line in order of their class.
  593. This means that, for example, the `-rc' option must be after the `-font'
  594. option.
  595.  
  596.    So, the general usage pattern is
  597.  
  598.      jade [SYSTEM-DEPENDENT-OPTIONS] [STANDARD-OPTIONS] [LISP-OPTIONS]
  599.  
  600.    Note that the LISP-OPTIONS may include files to be loaded.
  601.  
  602.   1. System dependent options.
  603.  
  604.         * Options for the Amiga system.
  605.  
  606.          `-pubscreen SCREEN-NAME'
  607.                Defines the name of the public screen on which the first
  608.                window is opened. By default (or if SCREEN-NAME doesn't
  609.                exits) the `Workbench' screen is used.
  610.  
  611.          `-font FONT-STRING'
  612.                Defines the font used in the first window. FONT-STRING
  613.                is the font to use, it is the name of the font (for
  614.                example, `topaz.font'), followed by a hyphen and the
  615.                point size to use. For example, a FONT-STRING of
  616.                `topaz.font-8' gives 8-point topaz. This is the default.
  617.  
  618.          `-stack STACK-SIZE'
  619.                When this argument is given Jade allocates a new stack.
  620.                STACK-SIZE is a decimal number defining the size (in
  621.                bytes) of the new stack.
  622.  
  623.                If this argument is not given Jade simply uses the stack
  624.                that AmigaDOS gave it.
  625.  
  626.         * Options for X11.
  627.  
  628.           There are two types of options to the X11 version of the
  629.           editor, those specified on the command line and those defined
  630.           in the resource database (i.e.  in your `.Xdefaults' file).
  631.           Resources are looked for under two names, firstly the name
  632.           under which the editor was invoked (normally `jade'), if this
  633.           fails it tries again with the name `Jade'. Naturally, options
  634.           specified on the command line override those in the resource
  635.           database.
  636.  
  637.          `-display DISPLAY-NAME'
  638.                Defines the name of the X display to open, by default
  639.                the contents of the environment variable `DISPLAY'. It
  640.                is a string of the form `HOST-NAME:NUMBER.SCREEN-NUMBER'.
  641.  
  642.          `-name NAME'
  643.                The name to use when looking up resource values, this
  644.                replaces the base name of the executable (normally
  645.                `jade').
  646.  
  647.          `-geometry GEOM-SPEC'
  648.                Specifies where to place the first window on the screen.
  649.                This is a standard X style geometry specification.
  650.  
  651.          `-fg FOREGROUND-COLOUR'
  652.          Resource: `fg: FOREGROUND-COLOUR'
  653.                The colour of the window's foreground (i.e. the text).
  654.  
  655.          `-bg BACKGROUND-COLOUR'
  656.          Resource: `bg: BACKGROUND-COLOUR'
  657.                The background colour of the window.
  658.  
  659.          `-font FONT-NAME'
  660.          Resource: `font: FONT-NAME'
  661.                The name of the font used for all text in the initial
  662.                window.
  663.  
  664.   2. Standard options.
  665.  
  666.     `-rc LISP-FILE'
  667.           Load the Lisp script LISP-FILE instead of the normal
  668.           initialisation script (`init'). Warning: the editor depends
  669.           heavily on the normal file, if you change this without due
  670.           care the editor could be unusable -- no keys will be bound
  671.           and many standard functions won't exist.
  672.  
  673.     `-v'
  674.           Print the version and revision numbers of this copy of the
  675.           editor then quit.
  676.  
  677.     `-log-msgs'
  678.           This option makes all messages which are displayed in the
  679.           status line also be written to the standard error stream.
  680.           This is sometimes useful for debugging purposes.
  681.  
  682.   3. All other options are passed to the Lisp initialisation process in
  683.      the variable `command-line-args', these are available to any Lisp
  684.      packages loaded in the initialisation script. Any left after that
  685.      are scanned for the following options,
  686.  
  687.     `-f FUNCTION'
  688.           Call the Lisp function FUNCTION.
  689.  
  690.     `-l FILE'
  691.           Load the Lisp file FILE.
  692.  
  693.     `-q'
  694.           Quit cleanly.
  695.  
  696.     `FILE'
  697.           Load the file of text FILE into a new buffer.
  698.  
  699.    An example command line for starting Jade from a Unix shell could be
  700.  
  701.      $ jade -fg white -bg black -log-msgs foo.c bar.jl
  702.  
  703.    This means white text, black background, save messages and load the
  704. files `foo.c' and `bar.jl'.
  705.  
  706. 
  707. File: jade.info,  Node: Startup Procedure,  Prev: Startup Options,  Up: Starting Jade
  708.  
  709. Startup Procedure
  710. =================
  711.  
  712.    This is a description of what happens when the editor initialises
  713. itself.
  714.  
  715.   1. Firstly lots of internal data structures are created, memory
  716.      pools, symbols and their symbol-table (including all the primitive
  717.      Lisp functions).
  718.  
  719.   2. The window-system is initialised (parse the system-dependent
  720.      options, and the xrdb resources if in X).
  721.  
  722.   3. Parse the standard options.
  723.  
  724.   4. Create the initial window and the first buffer to display in it
  725.      (this is the buffer called `*jade*').
  726.  
  727.   5. Load the initialisation script, this is either the Lisp file
  728.      called `init' or whatever was given to the `-rc' command line
  729.      option.
  730.  
  731.      Some selected highlights of what the standard file does are,
  732.  
  733.         * Load lots of Lisp files, some notable ones are
  734.  
  735.          `autoload'
  736.                Initialise the autoload stubs.
  737.  
  738.          `loadkeys'
  739.                Creates the standard keymaps and key bindings.
  740.  
  741.         * Try to find the user's personal startup file, this is
  742.           normally the file `.jaderc' in their home directory (1).
  743.  
  744.         * Load any files which were specified on the command line.
  745.  
  746.   6. Start the top-level recursive edit, this doesn't exit until the
  747.      editor does.
  748.  
  749.    ---------- Footnotes ----------
  750.  
  751.    (1)  The Amiga has no notion of a user's home directory, Jade uses
  752. the contents of the environment variable `HOME', or if this doesn't
  753. exist the `SYS:' assignment.
  754.  
  755. 
  756. File: jade.info,  Node: Using Jade,  Next: Programming Jade,  Prev: Starting Jade,  Up: Top
  757.  
  758. Using Jade
  759. **********
  760.  
  761.    This chapter of the manual is meant to teach you to *use* the editor,
  762. because of this I have attempted to reduce references to the Lisp
  763. extension language to an absolute minimum.
  764.  
  765. * Menu:
  766.  
  767. * Invoking Commands::           How to use the commands and key-sequences
  768.                                   described in this manual.
  769. * Command Arguments::           Many commands can be modified by prefixing
  770.                                   them with a numeric argument
  771.  
  772. * The Help System::             Online help facilities
  773.  
  774. * Loading and Saving Files::    Manipulating files
  775. * Editing Buffers::             Simple editing commands
  776. * Moving Around Buffers::       Commands for moving the cursor
  777. * Undo::                        Go back in time
  778.  
  779. * Editing Units::               Characters, words, lines, etc...
  780. * Cutting And Pasting::         How to insert text from the clipboard
  781. * Using Blocks::                Highlighting regions to manipulate
  782. * Killing::                     Deleting text for later insertion
  783. * Searching and Replacing::     Searching the buffer for a regexp
  784.  
  785. * Editing Modes::               Editing different types of files
  786. * Minor Modes::                 Small alterations to editing modes
  787.  
  788. * Using Buffers::               Selecting & deleting buffers
  789. * Using Windows::               Opening new windows
  790. * Using the Prompt::            Entering strings and completion
  791. * Using Marks::                 Recording positions in files
  792.  
  793. * Interrupting Jade::           Breaking out of commands
  794. * Recursive Editing::           Editing within a command
  795. * Character Images::            How to get a Latin1 character set
  796. * Client Editing::              Using Jade from other programs
  797. * Compiling Programs::          Help for developing programs
  798. * Info Mode::                   Reading Info files with Jade
  799. * Shell::                       Using a shell inside a buffer
  800. * Simple Customisation::        Configuring Jade
  801.  
  802. 
  803. File: jade.info,  Node: Invoking Commands,  Next: Command Arguments,  Up: Using Jade
  804.  
  805. Invoking Commands
  806. =================
  807.  
  808.    Throughout this manual I have documented the key sequences you have
  809. to enter to make the editor perform a certain action. In fact, the key
  810. sequences are mapped to "commands" when they are typed and it is the
  811. *command* which performs the action.
  812.  
  813.    Commands are simply pieces of Lisp code, usually with a unique name
  814. associated with that command. If you know the name of a command it is
  815. possible to invoke it using the `Meta-x' key sequence; simply type
  816. `Meta-x COMMAND RET' where COMMAND is the name of the command you wish
  817. to invoke.
  818.  
  819. `Meta-x'
  820.      Prompt for the name of a command (completion is available) then
  821.      invoke it.
  822.  
  823.    For the sake of simplicity I have often referred to key sequences as
  824. commands; what I actually mean is that the key sequence is bound to the
  825. command. For example the key sequence `Ctrl-x Ctrl-f' opens a file, in
  826. fact the key sequence `Ctrl-x Ctrl-f' is bound to the command
  827. `find-file', this Lisp function actually loads the file.
  828.  
  829.    More detailed information about commands is available in the
  830. programmer's manual, see *Note Programming Jade::.
  831.  
  832. 
  833. File: jade.info,  Node: Command Arguments,  Next: The Help System,  Prev: Invoking Commands,  Up: Using Jade
  834.  
  835. Command Arguments
  836. =================
  837.  
  838.    The actions of many commands can be altered by giving them a numeric
  839. argument, this argument is entered immediately prior to invoking the
  840. command (they are technically called prefix arguments).
  841.  
  842.    Each argument is built using a number of special key sequences,
  843.  
  844. `Meta-0' to `Meta-9'
  845.      Append a digit to the end of the current prefix argument. Use a
  846.      sequence of these keys to build up a decimal number. For example
  847.      typing `Meta-1 Meta-0 Meta-0' creates an argument of 100 for the
  848.      following command.
  849.  
  850. `Meta--'
  851.      (That's `Meta-minus'.) Negates the value of current argument, if
  852.      the command is invoked after a single `Meta--' prefix the actual
  853.      argument is -1.
  854.  
  855. `Ctrl-u'
  856.      Successive `Ctrl-u' key presses multiply the argument by 4 each
  857.      time.  Note that any existing argument entered by the numeric or
  858.      minus commands (described above) is discarded with the first
  859.      `Ctrl-u'.
  860.  
  861. 
  862. File: jade.info,  Node: The Help System,  Next: Loading and Saving Files,  Prev: Command Arguments,  Up: Using Jade
  863.  
  864. The Help System
  865. ===============
  866.  
  867.    To invoke the help system type the key sequence `Ctrl-h' or if your
  868. keyboard has it the `HELP' key.
  869.  
  870.    A prompt will be displayed in the status line showing you which keys
  871. you can press next to enter one of the main options of the help system
  872. explained below. Alternatively, you can type either `Ctrl-h' or `HELP'
  873. again to display some text telling you more about the help system and
  874. how to use it.
  875.  
  876.    The help system is exited after successfully invoking one of the
  877. commands described below or typing anything which is not a recognised
  878. command to the help system.
  879.  
  880. `a'
  881.      To list all function names matching REGEXP, type `a REGEXP RET'
  882.      when in the help system.
  883.  
  884. `b'
  885.      Prints all key bindings and their associated commands which are
  886.      installed in the current buffer.
  887.  
  888. `e'
  889.      Similarly to the `a' command, to list all variable names matching
  890.      REGEXP, type `e REGEXP RET' when in the help system.
  891.  
  892. `f'
  893.      Displays the online documentation for a function. After invoking
  894.      this option type the name of the function.
  895.  
  896. `h'
  897.      Shows some helpful text describing how to use the help system.
  898.  
  899. `i'
  900.      Enters the Info viewer. This allows you to browse through files
  901.      written in the Info hypertext format. For more information see
  902.      *Note Info Mode::, for more information on Info files in general
  903.      see *Note Info: (info)Top.
  904.  
  905. `k'
  906.      Displays the command (with its documentation) for a key sequence.
  907.      After typing `Ctrl-h k' enter the key sequence you want documented
  908.      as if you were going to invoke the command.
  909.  
  910. `m'
  911.      Display the documentation for the current major mode.
  912.  
  913. `v'
  914.      Displays the online documentation and current value of a variable.
  915.      Type the name of the variable after invoking this option.
  916.  
  917. 
  918. File: jade.info,  Node: Loading and Saving Files,  Next: Editing Buffers,  Prev: The Help System,  Up: Using Jade
  919.  
  920. Loading and Saving Files
  921. ========================
  922.  
  923.    Since `Jade' is a text editor its main function is to edit files of
  924. text.  This means that you must be able to read the text contained in a
  925. file into one of the editor's buffers, then save it back to disk when
  926. you have finished editing it. That is what this section deals with.
  927.  
  928. * Menu:
  929.  
  930. * Commands To Load Files::      Key sequences to load files
  931. * Commands To Save Files::      How to save a buffer
  932. * File Variables::              Local variables defined in files
  933. * Backup Files::                Making backups
  934. * Auto-Saving Files::           Files can be saved periodically
  935. * Accessing Compressed Files::  Reading and writing gzipped files
  936. * Other File Commands::         How to delete, rename or copy files
  937.  
  938. 
  939. File: jade.info,  Node: Commands To Load Files,  Next: Commands To Save Files,  Up: Loading and Saving Files
  940.  
  941. Commands To Load Files
  942. ----------------------
  943.  
  944.    There are several commands used to load files into buffers, these
  945. are,
  946.  
  947. `Ctrl-x Ctrl-f'
  948.      Prompts for the name of a file (using file-completion) and display
  949.      the buffer containing that file. If the file has not already been
  950.      loaded it will be read into a new buffer.
  951.  
  952. `Ctrl-x Ctrl-v'
  953.      Prompts for the name of a file, the current buffer is killed and
  954.      the buffer in which the prompted-for file is being edited is
  955.      displayed. As in `find-file' it will be read into a new buffer if
  956.      it is not already in memory.
  957.  
  958. `Ctrl-x Ctrl-r'
  959.      Similar to `find-file' except that the buffer is marked as being
  960.      read-only. This means that no modifications can be made to the
  961.      buffer.
  962.  
  963. `Ctrl-x i'
  964.      Prompts for a file, then inserts it into the current buffer at the
  965.      cursor position.
  966.  
  967.    You can use the prompt's completion feature to expand abbreviated
  968. filenames typed to the prompt, for more information see *Note The
  969. Buffer Prompt::.
  970.  
  971. 
  972. File: jade.info,  Node: Commands To Save Files,  Next: File Variables,  Prev: Commands To Load Files,  Up: Loading and Saving Files
  973.  
  974. Commands To Save Files
  975. ----------------------
  976.  
  977.    These are the commands used to save buffers and the key sequences
  978. associated with them,
  979.  
  980. `Ctrl-x Ctrl-s'
  981.      Saves the current buffer to the file that it is associated with
  982.      (this is either the file that it was loaded from or something else
  983.      set by the function `set-file-name'). If no modifications have
  984.      been made to the file since it was loaded it won't be saved (a
  985.      message will be displayed warning you of this).
  986.  
  987. `Ctrl-x Ctrl-w'
  988.      Prompts for a name to save the file as. The file associated with
  989.      this buffer is renamed and the file is saved as its new name.
  990.  
  991. `Ctrl-x s'
  992.      For each buffer which has been modified since it was loaded, ask
  993.      the user if it should be saved or not. If so, the command
  994.      `save-file' is used to save the file
  995.  
  996. 
  997. File: jade.info,  Node: File Variables,  Next: Backup Files,  Prev: Commands To Save Files,  Up: Loading and Saving Files
  998.  
  999. File Variables
  1000. --------------
  1001.  
  1002.    It is often useful to define `local' values of certain variables
  1003. which only come into effect when a particular file is being edited.
  1004. Jade allows you to include a special section in a file which, when the
  1005. file is loaded, is used to give the variables specified buffer-local
  1006. values. (For more information about buffer-local variables see *Note
  1007. Buffer-Local Variables::.)
  1008.  
  1009.    The special section must be somewhere in the last twenty lines of a
  1010. file, and must be formatted as in the following example,
  1011.  
  1012.      XXX Local Variables: YYY
  1013.      XXX VARIABLE:VALUE YYY
  1014.      ...
  1015.      XXX End: YYY
  1016.  
  1017. That is, the string `Local Variables:' followed by as many lines
  1018. defining local values as necessary then the string `End:'. The two
  1019. strings `XXX' and `YYY' may be anything (even nothing!) as long as they
  1020. are the same on each line. They are normally used to put the local
  1021. variable section into a comment in a source file.
  1022.  
  1023.    For example, in a Texinfo source file the following piece of text at
  1024. the bottom of the file would set the column at which lines are broken to
  1025. 74 (note that `@c' introduces a comment in Texinfo).
  1026.  
  1027.      @c Local Variables:
  1028.      @c fill-column:74
  1029.      @c End:
  1030.  
  1031.    Two pseudo-variables which can be set using a local variables section
  1032. are `mode' and `eval'. Setting the `mode' variable actually defines the
  1033. major mode to use with the file (*note Editing Modes::.) while setting
  1034. `eval' actually evaluates the Lisp form VALUE then discards its value.
  1035.  
  1036.    For example,
  1037.  
  1038.      /* Local Variables: */
  1039.      /* mode:C */
  1040.      /* eval:(message "How pointless!") */
  1041.      /* End: */
  1042.  
  1043. This Forces the file to be edited with the C mode and displays a
  1044. pointless message. Note that no variables called `mode' or `eval' are
  1045. actually set.
  1046.  
  1047.    Several variables are used to control how the local variables feature
  1048. works.
  1049.  
  1050.  - Variable: enable-local-variables
  1051.      Defines how to process the `Local Variables:' section of a file:
  1052.      `nil' means to ignore it, `t' means process it as normal and
  1053.      anything else means that each variable being set has to be
  1054.      confirmed by the user. Its default value it `t'.
  1055.  
  1056.  - Variable: enable-local-eval
  1057.      This variable defines how the pseudo-variable `eval' is treated in
  1058.      a local variables list, it works in the same way as the
  1059.      `enable-local-variables' variable does. Its default value is
  1060.      `maybe', making each form be confirmed before being evaluated.
  1061.  
  1062.  - Variable: local-variable-lines
  1063.      Defines how many lines at the bottom of a file are scanned for the
  1064.      `Local Variables:' marker, by default it is 20.
  1065.  
  1066.    Note that this feature is compatible with GNU Emacs, and since I have
  1067. tried to keep the names of variables compatible as well, there should
  1068. be few problems.
  1069.  
  1070. 
  1071. File: jade.info,  Node: Backup Files,  Next: Auto-Saving Files,  Prev: File Variables,  Up: Loading and Saving Files
  1072.  
  1073. Backup Files
  1074. ------------
  1075.  
  1076.    The editor can optionally preserve the previous contents of a file
  1077. when it is about to be overwritten by the saving of a buffer. It does
  1078. this by renaming the old file, `foo' as `foo~' (the original name plus
  1079. a tilde appended to it) before it is obliterated.
  1080.  
  1081.  - Variable: make-backup-files
  1082.      This variable controls whether or not backups are made of files
  1083.      about to overwritten by the function `write-buffer' (i.e. the
  1084.      commands `save-file' and `save-file-as'). When non-nil the old
  1085.      instance of the file is renamed so that it has a tilde appended to
  1086.      its old name.
  1087.  
  1088.  - Variable: backup-by-copying
  1089.      When non-nil all backups are made by copying the original file
  1090.      instead of renaming it as the backup file. This is slower but less
  1091.      destructive.
  1092.  
  1093.  - Variable: else-backup-by-copying
  1094.      If `backup-by-copying' is `nil' and renaming the original file
  1095.      would not be a good idea (i.e. it might break a link or something)
  1096.      and this variable is non-`nil' the backup will be made by copying
  1097.      the original file.
  1098.  
  1099. 
  1100. File: jade.info,  Node: Auto-Saving Files,  Next: Accessing Compressed Files,  Prev: Backup Files,  Up: Loading and Saving Files
  1101.  
  1102. Auto-Saving Files
  1103. -----------------
  1104.  
  1105.    Jade is able to save snapshots of a buffer's contents at set time
  1106. intervals.  When this time interval expires and the buffer has been
  1107. modified since it was last (auto-) saved to disk (and the editor is
  1108. idle) the buffer is saved to a special file (usually the base component
  1109. of the file's name surrounded by `#' characters in the file's
  1110. directory).
  1111.  
  1112.  - Variable: auto-save-p
  1113.      When non-nil this makes the function `open-file' (and therefore the
  1114.      commands `find-file', etc) flag that the file it just read should
  1115.      be auto saved regularly.
  1116.  
  1117.  - Variable: default-auto-save-interval
  1118.      This is the default number of seconds between each auto save. This
  1119.      variable is only referenced when each file is opened.
  1120.  
  1121.      Its standard value is 120 seconds.
  1122.  
  1123.  - Variable: auto-save-interval
  1124.      This buffer-local variable controls the number of seconds between
  1125.      each auto-save of the buffer it belongs to. A value of zero means
  1126.      never auto-save.
  1127.  
  1128.    When the buffer is saved properly (i.e. with `save-file' and
  1129. friends) its auto-save file is deleted. Note that this doesn't happen
  1130. when you kill a buffer and an auto-save file exists (in case you didn't
  1131. mean to kill the buffer).
  1132.  
  1133.    To recover an auto-saved file (i.e. after an editor crash or
  1134. something!) use the command `recover-file'.
  1135.  
  1136. `Meta-x recover-file'
  1137.      Loads the auto-saved copy of the file stored in this buffer
  1138.      overwriting its current contents (if any changes are to be lost
  1139.      you will have to agree to losing them).
  1140.  
  1141. 
  1142. File: jade.info,  Node: Accessing Compressed Files,  Next: Other File Commands,  Prev: Auto-Saving Files,  Up: Loading and Saving Files
  1143.  
  1144. Accessing Compressed Files
  1145. --------------------------
  1146.  
  1147.    Jade contains basic support for reading, inserting and writing
  1148. buffers which have been compressed using the `gzip' or `compress'
  1149. compression programs. When this feature is enabled such files are
  1150. transparently decompressed when loaded into the buffer and compressed
  1151. when saved back to a file.
  1152.  
  1153.    Unfortunately this doesn't work on Amigas yet. To install it the
  1154. Lisp form,
  1155.  
  1156.      (require 'gzip)
  1157.  
  1158. should be in your `.jaderc' file (or you can do this by hand in the
  1159. `*jade*' buffer if you want).
  1160.  
  1161.    After the `gzip' package has been installed any files loaded into
  1162. buffers whose filename end in `.gz' or `.Z' are uncompressed, this
  1163. suffix is stripped when searching for a major mode to install in the
  1164. buffer but otherwise the buffer's filename is left intact.
  1165.  
  1166.    Any buffer saved whose filename ends in one of the above suffixes is
  1167. automatically compressed (`.gz' is compressed by `gzip', `.Z' by
  1168. `compress').
  1169.  
  1170. 
  1171. File: jade.info,  Node: Other File Commands,  Prev: Accessing Compressed Files,  Up: Loading and Saving Files
  1172.  
  1173. Other File Commands
  1174. -------------------
  1175.  
  1176. `Meta-x delete-file RET FILE-NAME RET'
  1177.      Deletes the file called FILE-NAME.
  1178.  
  1179. `Meta-x rename-file RET SOURCE RET DEST RET'
  1180.      Renames the file called SOURCE as the file DEST.
  1181.  
  1182. `Meta-x copy-file RET SOURCE RET DEST RET'
  1183.      Makes a copy of the file called SOURCE as the file DEST.
  1184.  
  1185. 
  1186. File: jade.info,  Node: Editing Buffers,  Next: Moving Around Buffers,  Prev: Loading and Saving Files,  Up: Using Jade
  1187.  
  1188. Editing Buffers
  1189. ===============
  1190.  
  1191.    The majority of keys when typed will simply insert themselves into
  1192. the buffer (this is not always true but it's a good assumption) since
  1193. they have not been bound. Typically this includes all normal characters
  1194. (i.e. alphanumeric, punctuation, etc) as well as any of the more obtuse
  1195. key-sequences which have not been bound to a function (`Ctrl-l' is one
  1196. of the more useful of these).
  1197.  
  1198.    The behaviour of the TAB key is different to many other editors -- it
  1199. doesn't insert anything (unless a specific editing mode has bound it to
  1200. something else, like `c-mode' for example), generally it just moves the
  1201. cursor to the next tab stop. This is partly because Jade doesn't use
  1202. "proper" tabs and partly because it makes it easier to move around a
  1203. line (because the key sequence `Shift-TAB' moves to the previous tab
  1204. stop).
  1205.  
  1206.    Some miscellaneous editing commands follow.
  1207.  
  1208. `RET'
  1209.      This generally splits the line into two at the position of the
  1210.      cursor, some editing modes may provide an option which
  1211.      automatically indents the line after it's split.
  1212.  
  1213. `Backspace'
  1214.      Deletes the character before the cursor.
  1215.  
  1216. `DEL'
  1217. `Ctrl-d'
  1218.      Deletes the character under the cursor.
  1219.  
  1220. `Shift-Backspace'
  1221.      Kills the characters between the start of the line and the cursor.
  1222.      *Note Killing::.
  1223.  
  1224. `Shift-DEL'
  1225.      Kills the characters from the cursor to the end of the line.
  1226.  
  1227. `Ctrl-DEL'
  1228.      Kills the whole line.
  1229.  
  1230. `Ctrl-o'
  1231.      Splits the line in two at the cursor, but leaves the cursor in its
  1232.      original position.
  1233.  
  1234. `Meta-d'
  1235. `Meta-DEL'
  1236.      Kills from the cursor to the end of the current word.
  1237.  
  1238. `Ctrl-k'
  1239.      Kills from the cursor to the end of the line, or if the cursor is
  1240.      at the end of the line from the cursor to the start of the next
  1241.      line. Each successive `Ctrl-k' appends to the text in the kill
  1242.      buffer.
  1243.  
  1244. `Meta-l'
  1245.      Makes the characters from the cursor to the end of the word lower
  1246.      case.
  1247.  
  1248. `Meta-u'
  1249.      Upper cases the characters from the cursor to the end of the word.
  1250.  
  1251. `Meta-c'
  1252.      Capitalises the characters from the cursor to the end of the word,
  1253.      this means make the first character upper case and the rest lower.
  1254.  
  1255. `Meta-Backspace'
  1256.      Kills from the cursor to the beginning of the word.
  1257.  
  1258. 
  1259. File: jade.info,  Node: Moving Around Buffers,  Next: Undo,  Prev: Editing Buffers,  Up: Using Jade
  1260.  
  1261. Moving Around Buffers
  1262. =====================
  1263.  
  1264.    Here is a selection of the most commonly used commands which move the
  1265. cursor around the current buffer.
  1266.  
  1267. `Up'
  1268. `Ctrl-p'
  1269.      Move one line up.
  1270.  
  1271. `Down'
  1272. `Ctrl-n'
  1273.      Move one line down.
  1274.  
  1275. `Left'
  1276.      Move one column to the left, stopping at the first column.
  1277.  
  1278. `Ctrl-b'
  1279.      Move to the previous character, at the beginning of the line moves
  1280.      to the end of the previous line.
  1281.  
  1282. `Right'
  1283.      Move one column to the right. This keeps moving past the end of
  1284.      the line.
  1285.  
  1286. `Ctrl-f'
  1287.      Move to the next character, at the end of a line moves to the
  1288.      start of the next line.
  1289.  
  1290. `Shift-Up'
  1291.      Move to the first line in the buffer.
  1292.  
  1293. `Shift-Down'
  1294.      Move to the last line in the buffer.
  1295.  
  1296. `Meta-<'
  1297.      Move to the first character in the buffer.
  1298.  
  1299. `Meta->'
  1300.      Move to the last character in the buffer.
  1301.  
  1302. `Shift-Left'
  1303. `Ctrl-a'
  1304.      Move to the beginning of the current line.
  1305.  
  1306. `Shift-Right'
  1307. `Ctrl-e'
  1308.      Move to the last character in the current line.
  1309.  
  1310. `Ctrl-Up'
  1311. `Meta-v'
  1312.      Move to the previous screen of text.
  1313.  
  1314. `Ctrl-Down'
  1315. `Ctrl-v'
  1316.      Move to the next screen of text.
  1317.  
  1318. `Meta-Left'
  1319. `Meta-b'
  1320.      Move to the previous word.
  1321.  
  1322. `Meta-Right'
  1323. `Meta-f'
  1324.      Move to the next word.
  1325.  
  1326. `Meta-Up'
  1327. `Meta-['
  1328.      Move to the start of the previous paragraph.
  1329.  
  1330. `Meta-Down'
  1331. `Meta-]'
  1332.      Move to the start of the next paragraph.
  1333.  
  1334. `TAB'
  1335. `Meta-i'
  1336.      Insert a tab character, indenting the cursor to the next tab
  1337.      position.
  1338.  
  1339.      Note that some editing modes redefine TAB to make it indent the
  1340.      current line to its correct depth.
  1341.  
  1342. `Shift-TAB'
  1343.      Move to the position of the previous tab.
  1344.  
  1345. `Ctrl-TAB'
  1346.      Move to the position of the next tab.
  1347.  
  1348. `Meta-j'
  1349.      Prompt for a line number and go to it.
  1350.  
  1351. `Meta-m'
  1352.      Move to the first non-space character in the current line.
  1353.  
  1354. 
  1355. File: jade.info,  Node: Undo,  Next: Editing Units,  Prev: Moving Around Buffers,  Up: Using Jade
  1356.  
  1357. Undo
  1358. ====
  1359.  
  1360.    Jade makes it very easy to undo changes to a buffer, this is very
  1361. useful when you realise that actually, *that wasn't* the part of the
  1362. file you wanted to delete!
  1363.  
  1364.    Basically to undo the last command type either `Ctrl-_' or `Ctrl-x
  1365. u'.  If the last thing you did was to type some text into the buffer
  1366. all the consecutively-typed characters count as one command.
  1367.  
  1368.    To undo more than one command, simply type more than one `Ctrl-_' (or
  1369. `Ctrl-x u') consecutively; this will progressively work its way back
  1370. through the buffer's history. The first non-undo command cancels this
  1371. effect, so if you undo too far back invoke a command which doesn't
  1372. modify the buffer, then undo whatever you undid.
  1373.  
  1374. `Ctrl-_'
  1375. `Ctrl-x u'
  1376.      Undo the previous command, or the last block of consecutively
  1377.      typed characters.  Successive undo commands work backwards though
  1378.      the undo-history until a non-undo command is invoked.
  1379.  
  1380.    The exact amount of undo-information kept for each buffer is
  1381. controlled by the `max-undo-size' variable. This defines the maximum
  1382. number of bytes which may be devoted to undo-information in a single
  1383. buffer, the default is 10000. No matter what this is set to, the last
  1384. command is *always* recoverable.
  1385.  
  1386.  - Variable: max-undo-size
  1387.      The maximum memory which may be devoted to recording
  1388.      undo-information in each buffer.
  1389.  
  1390. 
  1391. File: jade.info,  Node: Editing Units,  Next: Cutting And Pasting,  Prev: Undo,  Up: Using Jade
  1392.  
  1393. Editing Units
  1394. =============
  1395.  
  1396.    To make it easier to remember which key sequences do what Jade
  1397. provides a number of commands which are similar to one another but
  1398. operate on different "units" in the buffer. These related-commands are
  1399. bound to the same key but with a different prefix or modifier. For
  1400. example `Ctrl-f' moves forward one character while `Meta-f' moves
  1401. forward one word.
  1402.  
  1403. * Menu:
  1404.  
  1405. * Editing Characters::          Commands operating on characters,
  1406. * Editing Words::               words,
  1407. * Editing Expressions::         expressions,
  1408. * Editing Lines::               and lines.
  1409.  
  1410. 
  1411. File: jade.info,  Node: Editing Characters,  Next: Editing Words,  Up: Editing Units
  1412.  
  1413. Editing Characters
  1414. ------------------
  1415.  
  1416.    These are the commands which operate on characters. Note that when an
  1417. argument (*note Command Arguments::.) is given to one of these commands
  1418. it actually operates on *number* of characters. For example, if you
  1419. want to delete the next 5 characters starting at the cursor type
  1420. `Meta-5 Ctrl-d'.
  1421.  
  1422. `Ctrl-f'
  1423.      Move forward one character.
  1424.  
  1425. `Ctrl-b'
  1426.      Move back one character.
  1427.  
  1428. `Right'
  1429.      Move one character to the right, when the end of the line is
  1430.      encountered it's ignored and the cursor keeps moving to the right.
  1431.  
  1432. `Left'
  1433.      Move one character to the left, stops when the beginning of the
  1434.      line is reached.
  1435.  
  1436. `Ctrl-d'
  1437. `DEL'
  1438.      Deletes the character beneath the cursor.
  1439.  
  1440. `Backspace'
  1441.      Deletes the character before the cursor.
  1442.  
  1443. `Ctrl-t'
  1444.      Transposes the character before the cursor with the one under the
  1445.      cursor. When given an argument the character before the cursor is
  1446.      dragged forward over that many characters.
  1447.  
  1448. `Meta-SPC'
  1449.      Delete all white space characters surrounding the cursor leaving a
  1450.      single space in their place. If a prefix argument is given that
  1451.      many spaces are left.
  1452.  
  1453. `Meta-\'
  1454.      Delete all white space characters surrounding the cursor. This is
  1455.      equivalent to the key sequence `Meta-0 Meta-SPC'.
  1456.  
  1457.