Annotation of 43BSD/contrib/jove/doc/manual.n, revision 1.1.1.1

1.1       root        1: .de eg
                      2: .ti .5i
                      3: .sp 1
                      4: .bo \\$1
                      5: .sp 1
                      6: ..
                      7: .de ks
                      8: .sp
                      9: .ta .5i \\$1
                     10: .in \\$1
                     11: ..
                     12: .de dk         \" Describe Key
                     13: .ti 0
                     14: \t\\$1\t\c     \" Flow into the paragraph
                     15: ..
                     16: .de ke         \" Key list End
                     17: .in 0
                     18: ..
                     19: .nr si 3n
                     20: .st 2
                     21: .m1 3
                     22: .m4 0
                     23: .he '%''JOVE Manual for UNIX Users'
                     24: .bs "Introduction"
                     25: JOVE
                     26: .fb
                     27: JOVE stands for Jonathan's Own Version of Emacs.
                     28: .fe
                     29: is an advanced, self-documenting, customizable real-time display
                     30: editor.  It is based on the original EMACS editor written at M.I.T.
                     31: by Richard Stallman.
                     32: .fb
                     33: Although JOVE is meant to be compatible with
                     34: EMACS, and indeed many of the basic commands are very similar, there
                     35: are some major differences between the two editors, and you should not
                     36: rely on their behaving identically.
                     37: .fe
                     38: .lp
                     39: We say that JOVE is a display editor because normally the text being
                     40: edited is visible on the screen and is updated automatically as you
                     41: type your commands.
                     42: .lp
                     43: We call it a real-time editor because the display is updated very
                     44: frequently, usually after each character or pair of characters you
                     45: type.  This minimizes the amount of information you must keep in your
                     46: head as you edit.
                     47: .lp
                     48: We call JOVE advanced because it provides facilities that go beyond
                     49: simple insertion and deletion: filling of text; automatic indentations
                     50: of programs; view more than one file at once; and dealing in terms of
                     51: characters, words, lines, sentences and paragraphs.  It is much easier
                     52: to type one command meaning "go to the end of the paragraph" than to
                     53: find the desired spot with repetition of simpler commands.
                     54: .lp
                     55: Self-documenting means that at almost any time you can type a key to
                     56: find out what a command does, or to find all the commands that pertain
                     57: to a topic.
                     58: .lp
                     59: Customizable means that you can change the definition of JOVE commands
                     60: in little ways.  For example, you can rearrange the command set; if
                     61: you prefer to use arrow keys for the four basic cursor motion commands
                     62: (up, down, left and right), you can.  Another sort of customization is
                     63: writing new commands by combining built in commands.
                     64: .es
                     65: .bs "The Organization of the Screen"
                     66: JOVE divides the screen up into several sections.  The biggest of
                     67: these sections is used to display the text you
                     68: are editing.  The terminal's cursor shows the position of \fIpoint\fR,
                     69: the location at which editing takes place.  While the cursor appears
                     70: to point \fIat\fR a character, point should be thought of as between
                     71: characters; it points \fIbefore\fR the character that the cursor
                     72: appears on top of.  Terminals have only one cursor, and when output is
                     73: in progress it must appear where the typing is being done.  This
                     74: doesn't mean that point is moving; it is only that JOVE has no way of
                     75: showing you the location of point except when the terminal is idle.
                     76: .lp
                     77: The lines of the screen are usually available for displaying text but
                     78: sometimes are pre-empted by typeout from certain commands (such as, a
                     79: listing of all the editor functions).  Most of the time, output from
                     80: commands like these is only desired for a short period of time,
                     81: usually just long enough to glance at it.  When you have finished
                     82: looking at the output, you can type Space to make your text reappear.
                     83: (Usually typing a Space inserts itself, but when there is typeout on
                     84: the screen, it does nothing but get rid of that.) Any other command
                     85: executes normally, \fIafter\fR redrawing your text.
                     86: .bs "The Message Line"
                     87: The bottom line on the screen, called the \fImessage line\fR is
                     88: reserved for printing messages, and for accepting input from the user,
                     89: such as file names, or search strings.  When JOVE prompts for input,
                     90: the cursor will temporarily appear on the bottom line, waiting for you
                     91: to type a string.  When you have finished typing your input, you can
                     92: type a Return to send it to JOVE.  If you change your mind about
                     93: running the command that is waiting for input, you can type ^G to
                     94: abort, and you can continue with your editing.
                     95: .lp
                     96: Sometimes you will see --more-- on the message line.  This happens
                     97: when typeout from a command is too long to fit in the screen.  It
                     98: means that if you type a Space the next screenful of typeout will be
                     99: printed.  If you are not interested, typing anything but a Space will
                    100: cause the rest of the output to be discarded.  Typing C-G will discard
                    101: the output and print Aborted where the --more-- was.  Typing any other
                    102: command will discard the rest of the output and also do the command.
                    103: .es
                    104: .bs "The Mode Line"
                    105: At the bottom of the screen, but above the message line, is the
                    106: \fImode line\fR.  The mode line format looks like this:
                    107: .sp 1
                    108:      \fBJOVE (major minor)   Buffer: bufr  "file" *\fR
                    109: .sp 1
                    110: \fImajor\fR is the name of the current \fImajor mode\fR.  At any time,
                    111: JOVE can be in only one of the possible major modes.  Currently there
                    112: are only two major modes: Text and C.
                    113: .lp
                    114: \fIminor\fR is a list of the minor modes that are turned.  "Fill"
                    115: means that Auto Fill mode is on; "Save" means Auto Save mode is on;
                    116: "OvrWt" means that Over Write mode is on.  "Def" means that you are in
                    117: the process of defining a keyboard macro.  This is not really a mode,
                    118: but it's useful to be reminded about.
                    119: .lp
                    120: \fIbufr\fR is the name of the currently selected \fIbuffer\fR.
                    121: Each buffer has its own name and holds a file being edited; this is
                    122: how JOVE can hold several files at once.  But at any given time you
                    123: are editing only one of them, the \fIselected\fR buffer.  When we
                    124: speak of what some command does to "the buffer", we are talking about
                    125: the currently selected buffer.  Multiple buffers makes it easy to
                    126: switch around between several files, and then it is very useful that
                    127: the mode line tells you which one you are editing at any time.
                    128: .lp
                    129: \fIfile\fR is the name of the file that you are editing.  This is the
                    130: default file name for commands that expect a file name as input.
                    131: .lp
                    132: The star at the end of the mode line means that there are changes in
                    133: the buffer that have not been saved in the file.  If the file has not
                    134: been changed since it was read in or saved, there is no star.
                    135: .es
                    136: .es
                    137: .bs "Command Input Conventions"
                    138: .bs "Notational Conventions for ASCII Characters"
                    139: In this manual, "Control" characters (that is, characters that are
                    140: typed with the Control key and some other key at the same time) are
                    141: represented by "C-" followed by another character.  Thus, C-A is the
                    142: character you get when you type A with the Control key (sometimes
                    143: labeled CTRL) down.  Most control characters when present in the JOVE
                    144: buffer are displayed with a caret; thus, ^A for C-A.  Rubout is
                    145: displayed as ^?.
                    146: .es
                    147: .bs "Commands, Functions, and Variables"
                    148: JOVE is composed of \fIfunctions\fR, which have long names such as
                    149: "next-line" and definitions which are programs that perform the
                    150: editing operations.  Then \fIcommands\fR such as C-N are connected to
                    151: functions through the \fIcommand dispatch table\fR.  When we say that
                    152: C-N moves the cursor down a line, we are glossing over a distinction
                    153: which is unimportant for ordinary use, but essential for simple
                    154: customization: it is the function next-line which knows how to move
                    155: down a line, and C-N moves down a line because it is connected to that
                    156: function.
                    157: .lp
                    158: Sometimes the description of a command will say "to change this, set
                    159: the variable mumble foo".  A variable is a name used to remember a
                    160: value.  JOVE contains variables which are there so that you can change
                    161: them if you want to customize.  The variable's value is examined by
                    162: some command, and changing that value makes the command behave
                    163: differently.  Until you are interesting in customizing, you can ignore
                    164: this information.
                    165: .es
                    166: .bs "Prefix Characters"
                    167: Because there are more function names than keys, JOVE provides
                    168: \fIprefix characters\fR to increase the number of functions that can
                    169: easily be invoked.  When you type a prefix character JOVE will wait
                    170: for another character before deciding what to do.  If you wait more
                    171: than a second or so, JOVE will print the prefix character on the
                    172: message line and leave the cursor down there until you type your next
                    173: character.  There are two prefix characters built into JOVE: Escape
                    174: and Control-X.  How the next character is interpreted depends on which
                    175: prefix character you typed.  For example, if you type Escape followed
                    176: by F you'll run forward-word, but if you type Control-X followed by
                    177: B you'll run select-buffer.
                    178: .lp
                    179: To get a list of keys and their associated function, you type ESC X
                    180: describe-bindings.  If you want to describe a single key, ESC X
                    181: describe-key will work.
                    182: .es
                    183: .es
                    184: .bs "Basic Editing Commands"
                    185: .bs "Inserting Text"
                    186: To insert printing characters into the text you are editing, just type
                    187: them.  All printing characters your type are inserted into the text at
                    188: the cursor (that is, at \fIpoint\fR), and the cursor moves forward.
                    189: Any characters after the cursor move forward too.  If the text in the
                    190: buffer is FOOBAR, with the cursor before the B, then if you type XX,
                    191: you get FOOXXBAR, with the cursor still before the B.
                    192: .lp
                    193: To correct text you have just inserted, you can use Rubout.  Rubout
                    194: deletes the character \fIbefore\fR the cursor (not the one that the
                    195: cursor is on top of or under; that is the character \fIafter\fR the
                    196: cursor).  The cursor and all characters after it move backwards.
                    197: Therefore, if you typing a printing character and then type Rubout,
                    198: they cancel out.
                    199: .lp
                    200: To end a line and start typing a new one, type Return.  Return
                    201: operates by inserting a \fIline-separator\fR, so if you type Return in
                    202: the middle of a line, you break the line in two.  Because a
                    203: line-separator is just a single character, you can type Rubout at the
                    204: beginning of a line to delete the line-separator and join it with the
                    205: preceding line.
                    206: .lp
                    207: If you add too many characters to one line, without breaking it with
                    208: Return, the line will grow too long to display on one screen line.
                    209: When this happens, JOVE puts an "!" at the extreme right margin, and
                    210: doesn't bother to display the rest of the line.  The "!" is not part
                    211: of your text; conversely, even though you can't see the rest of your
                    212: line, it's still there, and if you break the line, the "!" will go
                    213: away.
                    214: .lp
                    215: Direct insertion works for printing characters and space, but other
                    216: characters act as editing commands and do not insert themselves.  If
                    217: you need to insert a control character, Escape, or Rubout, you must
                    218: first \fIquote\fR it by typing the Control-Q command first.
                    219: .es
                    220: .bs "Moving the Cursor"
                    221: To do more than insert characters, you have to know how to move the
                    222: cursor.  Here are a few of the commands for doing that.
                    223: .ks 1.5i
                    224: .dk C-A
                    225: Move to the beginning of the line.
                    226: .dk C-E
                    227: Move to the end of the line.
                    228: .dk C-F
                    229: Move forward over one character.
                    230: .dk C-B
                    231: Move backward over one character.
                    232: .dk C-N
                    233: Move down one line, vertically.  If you start in the middle of one
                    234: line, you end in the middle of the next.
                    235: .dk C-P
                    236: Move up one line, vertically.
                    237: .dk "ESC <"
                    238: Move to the beginning of your text.
                    239: .dk "ESC >"
                    240: Move to the end of your text.
                    241: .ke
                    242: .es
                    243: .bs "Erasing Text"
                    244: .ks 1.5i
                    245: .dk Rubout
                    246: Delete the character before the cursor.
                    247: .dk C-D
                    248: Delete the character after the cursor.
                    249: .dk C-K
                    250: Kill to the end of the line.
                    251: .ke
                    252: .lp
                    253: You already know about the Rubout command which deletes the character
                    254: before the cursor.  Another command, Control-D, deletes the character
                    255: after the cursor, causing the rest of the text on the line to shift
                    256: left.  If Control-D is typed at the end of a line, that line and the
                    257: next line are joined together.
                    258: .lp
                    259: To erase a larger amount of text, use the Control-K command, which
                    260: kills a line at a time.  If Control-K is done at the beginning or
                    261: middle of a line, it kills all the text up to the end of the line.  If
                    262: Control-K is done at the end of a line, it joins that line and the
                    263: next line.
                    264: .es
                    265: .bs "Files - Saving Your Work"
                    266: The commands above are sufficient for creating text in the JOVE
                    267: buffer.  The more advanced JOVE commands just make things easier.  But
                    268: to keep any text permanently you must put it in a \fIfile\fR.  Files
                    269: are the objects which UNIX uses for storing data for a length of
                    270: time.  To tell JOVE to edit text in a file, choose a \fIfilename\fR,
                    271: such as foo.bar, and type C-X C-R foo.bar<cr>.  This \fIreads\fR
                    272: the file foo.bar so that its contents appear on the screen for
                    273: editing.  You can make changes, and then save the file by typing C-X
                    274: C-S.  This makes the changes permanent and actually changes the file
                    275: foo.bar.  Until then, the changes are only inside you JOVE, and the
                    276: file foo.bar is not really changed.  If the file foo.bar doesn't
                    277: exist, and you want to create it, read it as if it did exist.  When
                    278: you save your text with C-X C-S the file will be created.
                    279: .es
                    280: .es
                    281: .bs "Giving Numeric Arguments to JOVE Commands"
                    282: Any JOVE command can be given a \fInumeric argument\fR.  Some commands
                    283: interpret the argument as a repetition count.  For example, giving an
                    284: argument of ten to the C-F command (forward-character) moves forward
                    285: ten characters.  With these commands, no argument is equivalent to an
                    286: argument of 1.
                    287: .lp
                    288: Some commands use the value of the argument, but do something peculiar
                    289: when there is no argument.  For example, ESC G (goto-line) with an
                    290: argument \fBn\fR goes to the beginning of the \fBn'th\fR line.  But
                    291: ESC G with no argument doesn't do anything.
                    292: .lp
                    293: The fundamental way of specifying an argument is to use ESC followed
                    294: by the digits of the argument.  Negative arguments are allowed,
                    295: although not all of the commands know what to do with one.
                    296: .lp
                    297: Typing C-U means do the next command four times.  Two such C-U's
                    298: multiply the next command by sixteen.  Thus, C-U C-U C-F moves forward
                    299: sixteen characters.  This is a good way to move forward quickly, since
                    300: it moves about 1/4 of a line on most terminals.  Other useful
                    301: combinations are: C-U C-U C-N (move down a good fraction of the
                    302: screen), C-U C-U C-O (make "a lot" of blank lines), and C-U C-K (kill
                    303: four lines).
                    304: .lp
                    305: There are other, terminal-dependent ways of specifying arguments.
                    306: They have the same effect but may be easier to type.  If your terminal
                    307: has a numeric keypad which sends something recognizably different from
                    308: the ordinary digits, it is possible to program JOVE to to allow use of
                    309: the numeric keypad for specifying arguments.
                    310: .es
                    311: .bs "The Mark and the Region"
                    312: In general, a command that processes an arbitray part of the buffer
                    313: must know where to start and where to stop.  In JOVE, such commands
                    314: usually operate on the text between point and \fIthe mark\fR.  This
                    315: range of text is called \fIthe region\fR.  To specify a region, you
                    316: set point to one end of it and mark at the other.  It doesn't matter
                    317: which one is set first \fIchronologically\fR, or which one comes
                    318: earlier in the text.
                    319: .ks 1.5i
                    320: .dk "C-@"
                    321: Set the mark where point is.
                    322: .dk "C-X C-X"
                    323: Interchange mark and point.
                    324: .ke
                    325: .lp
                    326: For example, if you wish to convert part of the buffer to all
                    327: upper-case, you can use the C-X C-U command, which operates on the
                    328: text in the region.  You can first go to the beginning of the text to
                    329: be capitalized, put the mark there, move to the end, and then type C-X
                    330: C-U.  Or, you can set the mark at the end of the text, move to the
                    331: beginning, and then type C-X C-U.  C-X C-U runs the function
                    332: \fIcase-region-upper\fR, whose name signifies that the region, or
                    333: everything between point and mark, is to be capitalized.
                    334: .lp
                    335: The way to set the mark is with the C-@ command or the C-Space
                    336: command.  They set the mark where point is.  Then you can move point
                    337: away, leaving mark behind.
                    338: .lp
                    339: Since terminals have only one cursor, there is no way for JOVE to show
                    340: you where the mark is located.  You have to remember.  The usual
                    341: solution to this problem is to set the mark and then use it soon,
                    342: before you forget where it is.  But you can see where the mark is with
                    343: the command C-X C-X which puts the mark where point was and point
                    344: where mark was.  The extent of the region is unchanged, but the cursor
                    345: and point are now at the previous location of the mark.
                    346: .bs "The Ring of Marks"
                    347: Aside from delimiting the region, the mark is also useful for
                    348: remembering a spot that you may want to go back to.  To make this
                    349: feature more useful, JOVE remembers 16 previous locations of the
                    350: mark.  Most commands that set the mark push the old mark onto this
                    351: stack.  To return to a marked location, use C-U C-@.  This moves point
                    352: to where the mark was, and restores the mark from the stack of former
                    353: marks.  So repeated use of this command moves point to all of the old
                    354: marks on the stack, one by one.  Since the stack is actually a ring,
                    355: enough uses of C-U C-@ bring point back to where it was originally.
                    356: .lp
                    357: Some commands whose primary purpose is to move point a great distance
                    358: take advantage of the stack of marks to give you a way to undo the
                    359: command.  The best example is ESC <, which moves to the beginning of
                    360: the buffer.  If there are more than 22 lines between the beginning of
                    361: the buffer and point, ESC < sets the mark first, so that you can use
                    362: C-U C-@ or C-X C-X to go back to where you were.  You can change the
                    363: 22 since it is kept in the variable \fImark-threshold\fR.  By setting
                    364: it to 0, you can make these commands always set the mark.  By setting
                    365: it to a very large number you can prevent these commands from ever
                    366: setting the mark.  If a command desides to set the mark, it prints the
                    367: message Point Pushed.
                    368: .es
                    369: .es
                    370: .bs "Killing and Moving Text"
                    371: The most common way of moving or copying text with JOVE is to kill it,
                    372: and get it back again in one or more places.  This is very safe
                    373: because the last several pieces of killed text are all remembered, and
                    374: it is versatile, because the many commands for killing syntactic units
                    375: can also be used for moving those units.  There are also other ways of
                    376: moving text for special purposes.
                    377: .bs "Deletion and Killing"
                    378: Most commands which erase text from the buffer save it so that you can
                    379: get it back if you change your mind, or move or copy it to other parts
                    380: of the buffer.  These commands are known as \fIkill\fR commands.  The
                    381: rest of the commands that erase text do not save it; they are known as
                    382: \fIdelete\fR commands.  The delete commands include C-D and Rubout,
                    383: which delete only one character at a time, and those commands that
                    384: delete only spaces or line separators.  Commands that can destroy
                    385: significant amounts of nontrivial data generally kill.  The commands'
                    386: names and individual descriptions use the words "kill" and "delete" to
                    387: say which they do.
                    388: .ks 1.8i
                    389: .dk C-D
                    390: Delete next character.
                    391: .dk Rubout
                    392: Delete previous character.
                    393: .dk "ESC \\\\"
                    394: Delete spaces and tabs around point.
                    395: .dk "C-X C-O"
                    396: Delete blank lines around the current line.
                    397: .dk "C-K"
                    398: Kill rest of line or one or more lines.
                    399: .dk "C-W"
                    400: Kill region (from point to the mark).
                    401: .dk "ESC D"
                    402: Kill word.
                    403: .dk "ESC Rubout"
                    404: Kill word backwards.
                    405: .dk "ESC K"
                    406: Kill to end of sentence.
                    407: .ke
                    408: .bs "Deletion"
                    409: The most basic delete commands are C-D and Rubout.  C-D deletes the
                    410: character after the cursor, the one the cursor is "on top of" or
                    411: "underneath".  The cursor doesn't move.  Rubout deletes the character
                    412: before the cursor, and moves the cursor back.  Line separators act
                    413: like normal characters when deleted.  Actually, C-D and Rubout aren't
                    414: always delete commands; if you give an argument, they kill instead.
                    415: This prevents you from losing a great deal of text by typing a large
                    416: argument to a C-D or Rubout.
                    417: .lp
                    418: The other delete commands are those which delete only formatting
                    419: characters: spaces, tabs, and line separators.  ESC \\ (delete white
                    420: space) deletes all the spaces and tab characters before and after
                    421: point.  C-X C-O (delete blank lines) deletes all blank lines after the
                    422: current line, and if the current line is blank deletes all the blank
                    423: lines preceding the current line as well (leaving one blank line, the
                    424: current line).
                    425: .es
                    426: .bs "Killing by Lines"
                    427: The simplest kill command is the C-K command.  If issued at the
                    428: beginning of a line, it kills all the text on the line, leaving it
                    429: blank.  If given on a blank line, the blank line disappears.  As a
                    430: consequence, if you go to the front of a non-blank line and type two
                    431: C-K's, the line disappears completely.
                    432: .lp
                    433: More generally, C-K kills from point up to the end of the line, unless
                    434: it is at the end of a line.  In that case, it kills the line separator
                    435: following the line, thus merging the next line into the current one.
                    436: Invisible spaces and tabs at the end of the line are ignored when
                    437: deciding which case applies, so if point appears to be at the end of the
                    438: line, you can be sure the line separator will be killed.
                    439: .lp
                    440: C-K with an argument of zero kills all the text before point on the
                    441: current line.
                    442: .es
                    443: .bs "Other Kill Commands"
                    444: A kill command which is very general is C-W (kill-region), which kills
                    445: everything between point and the mark.  With this command, you can
                    446: kill and contiguous characters, if you first set the mark at one end
                    447: of them and go to the other end.
                    448: .lp
                    449: Other syntactic units can be killed: words, with ESC Rubout and ESC D;
                    450: sentences, with ESC K.
                    451: .es
                    452: .es
                    453: .bs "Un-killing"
                    454: Un-killing is getting back text which was killed.  The usual way to
                    455: move or copy text is to kill it and then un-kill it one or more times.
                    456: .ks 1.5i
                    457: .dk C-Y
                    458: Yank (re-insert) last killed text.
                    459: .dk "ESC Y"
                    460: Replace re-inserted killed text with the previously killed text.
                    461: .dk "ESC W"
                    462: Save region as last killed text without killing.
                    463: .ke
                    464: .lp
                    465: Killed text is pushed onto a \fIring buffer\fR called the \fIkill
                    466: ring\fR that remembers the last 10 blocks of text that were killed.
                    467: (Why it is called a ring buffer will be explained below.) The command
                    468: C-Y (yank) reinserts the text of the most recent kill.  It leaves the
                    469: cursor at the end of the text, and puts the mark at the beginning.
                    470: Thus, a single C-W undoes the C-Y.
                    471: .lp
                    472: If you wish to copy a block of text, you might want to use ESC W
                    473: (copy-region), which copies the region into the kill ring without
                    474: removing it from the buffer.  This is approximately equivalent to C-W
                    475: followed by C-Y, except that ESC W does not mark the buffer as
                    476: "changed" and does not temporarily change the screen.
                    477: .lp
                    478: There is only one kill ring, and switching buffers or files has no
                    479: effect on it.  After visiting a new file, whatever was last killed in
                    480: the previous file is still on top of the kill ring.  This is important
                    481: for moving text between files.
                    482: .bs "Appending Kills"
                    483: Normally, each kill command pushes a new block onto the kill ring.
                    484: However, two or more kill commands in a row combine their text into a
                    485: single entry on the ring, so that a single C-Y command gets it all
                    486: back as it was before it was killed.  This means that you don't have
                    487: to kill all the text in one command; you can keep killing line after
                    488: line, or word after word, until you have killed it all, and you can
                    489: still get it all back at once.  (Thus we join television in leading
                    490: people to kill thoughtlessly.)
                    491: .fe
                    492: .lp
                    493: Commands that kill forward from point add onto the end of the previous
                    494: killed text.  Commands that kill backward from point add onto the
                    495: beginning.  This way, any sequence of mixed forward and backward kill
                    496: commands puts all the killed text into one entry without rearrangement.
                    497: .es
                    498: .bs "Un-killing Earlier Kills"
                    499: To recover killed text that is no longer the most recent kill, you
                    500: need the ESC Y (yank-pop) command.  The ESC Y command should be used
                    501: only after a C-Y command or another ESC Y.  It takes the un-killed
                    502: text inserted by the C-Y and replaces it with the text from an earlier
                    503: kill.  So, to recover the text of the next-to-the-last kill, you first
                    504: use C-Y to recover the last kill, and then use ESC Y to move back to
                    505: the previous kill.
                    506: .lp
                    507: You can think of all the last few kills as living on a ring.  After a
                    508: C-Y command, the text at the front of the ring is also present in the
                    509: buffer.  ESC Y "rotates" the ring bringing the previous string of text
                    510: to the front, and this text replaces the other text in the buffer as
                    511: well.  Enough ESC Y commands can rotate any part of the ring to the
                    512: front, so you can get at any kiled text solong as it is recent enough
                    513: to be still in the ring.  Eventually the ring rotates all the way
                    514: around and the most recent killed text comes to the front (and into
                    515: the buffer) again.  ESC Y with a negative argument rotates the ring
                    516: backwards.
                    517: .lp
                    518: When the text you are looking for is brought into the buffer, you can
                    519: stop doing ESC Y's and it will stay there.  It's really just a copy of
                    520: what's in at the front of the ring, so editing it does not change
                    521: what's in the ring.  And the ring, once rotated, stays rotated, so
                    522: that doing another C-Y gets another copy of what you rotated to the
                    523: fron with ESC Y.
                    524: .lp
                    525: If you change you mind about un-killing, and C-W gets rid of the
                    526: un-killed text at any point, after any number of ESC Y's.  C-W pushes
                    527: the text onto the ring again.
                    528: .es
                    529: .es
                    530: .es
                    531: .bs "Searching"
                    532: The search commands are useful for finding and moving to arbitrary
                    533: positions in the buffer in one swift motion.  For example, if you just
                    534: ran the spell program on a paper and you want to correct some word,
                    535: you can use the search commands to move directly to that word.
                    536: .bs "Conventional Search"
                    537: .ks 1.5i
                    538: .dk "C-S"
                    539: Search forward.
                    540: .dk "C-R"
                    541: Search backward.
                    542: .ke
                    543: .lp
                    544: To search for the string "FOO" you type "C-S FOO<CR>".  If JOVE finds
                    545: FOO it moves point to the end of it; otherwise JOVE prints an error
                    546: message and leaves point unchanged.  C-S searches forward from point
                    547: so only occurrences of FOO after point are found.  To search in the
                    548: other direction use C-R.  It is exactly the same as C-S except it
                    549: searches in the opposite direction, and if it finds the string, it
                    550: leaves point at the beginning of it, not at the end as in C-S.
                    551: .lp
                    552: While JOVE is searching it prints the search string on the message
                    553: line line.  This is so you know what JOVE is doing.  When the system
                    554: is heavily loaded, when editing in exceptionally large buffers,
                    555: searches can take several (sometimes many) seconds.
                    556: .lp
                    557: JOVE remembers the last search string you used, so if you want to
                    558: search for the same string you can type "C-S <cr>".  If you mistyped
                    559: the last search string, you can type C-S followed by C-R.  C-R, as
                    560: usual inserts the default search string into the minibuffer, and then
                    561: you can fix it up.
                    562: .es
                    563: .bs "Incremental Search"
                    564: This search command is unusual in that is is \fIincremental\fR; it
                    565: begins to search before you have finished typing the search string.
                    566: As you type in the search string, JOVE shows you where it would be
                    567: found.  WHen you have typed enough characters to identify the place
                    568: you want, you can stop.  Depending on what you will do next, you may
                    569: or may not need to terminate the search explicitly with a Return
                    570: first.
                    571: .lp
                    572: The command to search is C-S (i-search-forward).
                    573: .fb
                    574: It is assumed that your JOVE has i-search-forward bound to C-S and
                    575: i-search-reverse bound to C-R.  These are not the default bindings.
                    576: .fe
                    577: C-S reads in characters and positions the cursor at the first
                    578: occurrence of the characters that you have typed.  If you type C-S and
                    579: then F, the cursor moves right after the first "F".  Type an "O", and
                    580: see the cursor move to after the first "FO".  After another "O", the
                    581: cursor is after the first "FOO" after the place where you started the
                    582: search.  At the same time, the "FOO" has echoed on the message line.
                    583: .lp
                    584: If you type a mistaken character, you can rub it out.  After the FOO,
                    585: typing a Rubout makes the "O" disappear from the message line, leaving
                    586: only "FO".  The cursor moves back to the "FO".  Rubbing out the "O"
                    587: and "F" moves the cursor back to where you started the search.
                    588: .lp
                    589: When you are satisfied with the place you have reached, you can type a
                    590: Return, which stops searching, leaving the cursor where the search
                    591: brought it.  Also, any command not specially meaningful in searches
                    592: stops the searching and is then executed.  Thus, typing C-A would exit
                    593: the search and then move to the beginning of the line.  Return is
                    594: necessary only of the next character you want to type is a printing
                    595: character, Rubout, Return, or another search command, since those ar
                    596: ethe characters that have special meanings inside the search.
                    597: .lp
                    598: Sometimes you search for "FOO" and find it, but not the one you
                    599: expected to find.  There was a second FOO that you forgot about,
                    600: before the one you were looking for.  Then type another C-S and the
                    601: cursor will find the next FOO.  This can be done any number of times.
                    602: If you overshoot, you can rub out the C-S's.
                    603: .lp
                    604: After you exist a search, you can search for the same string again by
                    605: typing just C-S C-S: one C-S command to start the search and then
                    606: another C-S to mean "search again".
                    607: .lp
                    608: If your string is not found at all, the message line says "Failing
                    609: I-search".  The cursor is after the place where JOVE found as much of
                    610: your string as it could.  Thus, if you search for FOOT, and there is
                    611: not FOOT, you might see the cursor after the FOO in FOOL.  At this
                    612: point there are several things you can do.  If your string was
                    613: mistyped, you can rub some of it out and correct it.  If you like the
                    614: places you have found, you can type Return or some other JOVE command
                    615: to "accept what the search offered".  Or you can type C-G, which
                    616: undoes the search altogether and positions you back where you started
                    617: the search.
                    618: .lp
                    619: You can also type C-R at any time to start searching backwards.  If a
                    620: search fails because the place you started was too late in the file,
                    621: you should do this.  Repeated C-R's keep looking formore occurrences
                    622: backwards.  A C-S starts going forwards again.  C-R's can be rubbed
                    623: out just like anything else.  If you know that you want to start
                    624: search backwards, you can use C-R (i-search-reverse) to search
                    625: backward.
                    626: .es
                    627: .bs "Regular Expressions Search Strings"
                    628: I couldn't describe them if I tried!
                    629: .es
                    630: .es
                    631: .bs "Commands for English Text"
                    632: .bs "Word Commands"
                    633: JOVE has commands for moving over or operating on words.  By
                    634: convention, they are all ESC commands.
                    635: .ks 1.7i
                    636: .dk "ESC F"
                    637: Move Forward over a word.
                    638: .dk "ESC B"
                    639: Move Backward over a word.
                    640: .dk "ESC D"
                    641: Kill up to the end of a word.
                    642: .dk "ESC Rubout"
                    643: Kill up to the beginning of a word.
                    644: .dk "ESC T"
                    645: Transpose two words; drag a word forward or backward across other words.
                    646: .ke
                    647: .lp
                    648: Notice how these commands form a group that parallels the character
                    649: base commands, C-F, C-B, C-D, Rubout, and C-T.
                    650: .lp
                    651: The commands ESC F and ESC B move forward and backward over words.
                    652: They are thus analogous to Control-F and Control-B, which move over
                    653: single characters.  Like their Control- analogues, ESC F and ESC B
                    654: move several words if given an argument.  ESC F with a negative
                    655: argument moves backward like ESC B, and ESC B with a negative argument
                    656: moves forward.  Forward motion stops right after the last letter of
                    657: the word, while backward motion stops right before the first letter.
                    658: .lp
                    659: It is easy to kill a word at a time.  ESC D kills the word after
                    660: point.  To be precise, it kills everything from point to the place ESC
                    661: F would move to.  Thus, if point is in the middle of a word, only the
                    662: part after point is killed.  If some punctuation comes after point,
                    663: and before the next word, it is killed along with the word.  If you
                    664: wish to kill only the next word but not the punctuation, simply do ESC
                    665: F to get to the end, and kill the word backwards with ESC Rubout.  ESC
                    666: D takes arguments just like ESC F.
                    667: .lp
                    668: ESC Rubout kills the word before point.  It kills everything from
                    669: point back to where ESC B would move to.  If point is after the space
                    670: int "FOO, BAR", then "FOO, " is killed.  If you wish to kill just
                    671: "FOO", then do a ESC B and a ESC D instead of a ESC Rubout.
                    672: .es
                    673: .bs "Sentence and Paragraph Commands"
                    674: The JOVE commands for manipulating sentences and paragraphs are
                    675: entirely ESC commands, so as to resemble the word-handling commands.
                    676: .ks 1.7i
                    677: .dk "ESC A"
                    678: Move back to the beginning of the sentence.
                    679: .dk "ESC E"
                    680: Move forward to the end of the sentence.
                    681: .dk "ESC K"
                    682: Kill forward to the end of the sentence."
                    683: .dk "ESC ["
                    684: Move back to previous paragraph beginning.
                    685: .dk "ESC ]"
                    686: Move forward to next paragraph end.
                    687: .dk "C-X Rubout"
                    688: Kill back to the beginning of the sentence.
                    689: .ke
                    690: .bs Sentences
                    691: The commands ESC A and ESC E move to the beginning and end of the
                    692: current sentence, respectively.  They were chosen to resemble
                    693: Control-A and Control-E, which move to the beginning and end of a
                    694: line.  Unlike them, ESC A and ESC E if repeated or given numeric
                    695: arguments move over successive sentences.  JOVE considers a sentence
                    696: to end wherever there is a ".", "?", or "!" followed by the end of a
                    697: line, or one or more spaces.  Neither ESC A nor ESC E moves past the
                    698: end of the line or spaces which delimit the sentence.
                    699: .lp
                    700: Just as C-A and C-E have a kill command, C-K, to go with them, so ESC
                    701: A and ESC E have a corrisponding kill command ESC K which kills from
                    702: point to the end of the sentence.  With minus one as an argument it
                    703: kills back to the beginning of the sentence.  Larger arguments serve
                    704: as a repeat count.
                    705: .lp
                    706: There is a special command, C-X Rubout for killing back to the
                    707: beginning of a sentence, because this is useful when you change your
                    708: mind in the middle of composing text.
                    709: .es
                    710: .bs Paragraphs
                    711: ESC [ moves to the beginning of the current or previous paragraph,
                    712: while ESC ] moves to the end of the current or next paragraph.  Blank
                    713: lines and text justifier command lines separate paragraphs and are not
                    714: part of any paragraph.  Also, an indented line starts a new
                    715: paragraph.  A line beginning with a letter which can't be part of a
                    716: word, e.g., period, singlequote, "-", "\\", it is considered a
                    717: paragraph terminator.
                    718: .es
                    719: .es
                    720: .bs Indentation Commands for Text
                    721: .ks 1.7i
                    722: .dk "Tab"
                    723: Indent "appropriately" in a mode-dependent fashion.
                    724: .dk "LineFeed"
                    725: Is the same as Return, except it copies the indent of the line you
                    726: just left.
                    727: .dk "ESC M"
                    728: Moves to the line's first non-blank character.
                    729: .ke
                    730: .lp
                    731: The way to request indentation is with the Tab command.  Its precise
                    732: effect depends on the major mode.  In Text mode, it indents to the
                    733: next tab stop.  In C mode, it indents to the "right" position for C
                    734: programs.
                    735: .lp
                    736: To move over the indentation on a line, do ESC M.  This command, given
                    737: anywhere on a line, positions the cursor at the first nonblank
                    738: character on the line.
                    739: .es
                    740: .bs "Text Filling"
                    741: auto-fill mode lets you type in text that is \fIfilled\fR (broken up
                    742: into lines that fit ina specified width) as you go.  If you alter
                    743: existing text and this cause it to cease to be properly filled, JOVE
                    744: can fill it again if you ask.
                    745: .lp
                    746: Entering auto-fill mode is done with ESC X auto-fill.  From then on,
                    747: lines are broken automatically at spaces when they get longer than the
                    748: desired width.  To leave auto-fill mode, execute ESC X auto-fill
                    749: again.  When auto-fill mode is in effect, the word "Fill" appears in
                    750: the mode line.
                    751: .lp
                    752: If you edit the middle of a paragraph, it may no longer correctly be
                    753: filled.  To refill a paragraph, use the command ESC J.  It causes the
                    754: paragraph that point is inside to be filled.  All the line breaks are
                    755: removed and then new ones are inserted where necessary.
                    756: .lp
                    757: The maximum line width for filling is in the variable right-margin.
                    758: Both ESC J and auto-fill make sure that no line exceeds this width.
                    759: right-margin is initially 72.
                    760: .es
                    761: .bs "Case Conversion Commands"
                    762: .ks 1.5i
                    763: .dk "ESC L"
                    764: Convert following word to lower case.
                    765: .dk "ESC U"
                    766: Convert following word to upper case.
                    767: .dk "ESC C"
                    768: Capitalize the following word.
                    769: .ke
                    770: .lp
                    771: The word conversion commands are most useful.  ESC L converts the word
                    772: after point to lower case, moving past it.  This, successive ESC L's
                    773: convert successive words.  ESC U converts to all capitals instead,
                    774: while ESC C puts the first letter of the word into upper case and the
                    775: rest into lower case.  All these commands convert several words at
                    776: once if given an argument.  They are especially convenient for
                    777: converting a large amount of text from all upper case to mixed case,
                    778: because you can move through the test using ESC L, ESC U or ESC C on
                    779: each word as appropriate.
                    780: .lp
                    781: When given a negative argument, the word case conversion commands
                    782: apply to the appropriate number of words before point, but do not move
                    783: point.  This is convenient when you have just typed a word in the
                    784: wrong case.  You can give the case conversion command and continue
                    785: typing.
                    786: .lp
                    787: If a word case conversion command is given in the middle of a word, it
                    788: applies only to the part of the word which follows the cursor,
                    789: treating it as a whole word.
                    790: .lp
                    791: The other case conversion functions are case-region-upper and
                    792: case-region-lower, which convert everything between point and mark to
                    793: the specified case.  Point and mark do not move.
                    794: .es
                    795: .es
                    796: .bs "Commands for Fixing Typos"
                    797: In this section we describe the commands that are especially useful
                    798: for the times when you catch a mistake on your text after you have
                    799: made it, or change your mind while composing text on line.
                    800: .ks 2.2i
                    801: .dk "Rubout"
                    802: Delete last character.
                    803: .dk "ESC Rubout"
                    804: Kill last word.
                    805: .dk "C-X Rubout"
                    806: Kill to beginning of sentence.
                    807: .dk "C-T"
                    808: Transpose two characters.
                    809: .dk "C-X C-T"
                    810: Transpose two lines.
                    811: .dk "ESC Minus ESC L"
                    812: Convert last word to lower case.
                    813: .dk "ESC Minus ESC U"
                    814: Convert last word to upper case.
                    815: .dk "ESC Minus ESC C"
                    816: Convert last word to lower case with capital initial.
                    817: .ke
                    818: .bs "Killing Your Mistakes"
                    819: The Rubout command is the most important correction command.  When
                    820: used among printing (self-inserting) characters, it can be thought of
                    821: as canceling the last character typed.
                    822: .lp
                    823: When your mistake is longer than a couple of characters, it might be
                    824: more convenient to use ESC Rubout or C-X Rubout.  ESC Rubout kills
                    825: back to the start of the last word, and C-X Rubout kills back to the
                    826: start of the last sentence.  C-X Rubout is particularly useful when
                    827: you are thinking of what to write as you type it, in case you change
                    828: your mind about phrasing.  ESC Rubout and C-X Rubout save the killed
                    829: text for C-Y and ESC Y to retrieve.
                    830: .lp
                    831: ESC Rubout is often useful even when you have typed only a few
                    832: characters wrong, if you know you are confused in your typing and
                    833: aren't sure what you typed.  At such a time, you cannot correct with
                    834: Rubout except by looking at the screen to see what you did.  It
                    835: requires less thought to kill the whole word and start over again,
                    836: especially if the system is heavily loaded.
                    837: .es
                    838: .bs "Transposition"
                    839: The command error of transposing two characters can be fixed, when
                    840: they are adjacent, with the C-T command.  Normally, C-T transposes the
                    841: two characters on either side of the cursor.  When given at the end of
                    842: a line, rather than switching the last character of the line with the
                    843: line separator, which would be useless, C-T transposees the last two
                    844: characters on the line.  So, if you catch your transposition error
                    845: right away, you can fix it with just a C-T.  If you don't catch it so
                    846: fast, you must move the cursor back to between the two characters.
                    847: .lp
                    848: To transpose two lines, use the C-X C-T command.
                    849: .es
                    850: .bs "Checking and Correcting Spelling"
                    851: When you write a paper, you should correct its spelling at some point
                    852: close the finishing it.  To correct the entire buffer, do ESC X
                    853: spell-buffer.  This invokes the UNIX spell program, which prints a list
                    854: of all the misspelled words.  JOVE catches the list and places it in a
                    855: JOVE buffer called Spell, and then looks up each misspelled word and
                    856: remembers where it is in the buffer being corrected.  Then you can go
                    857: forward to each misspelled word with C-X C-N (next-error) and backward
                    858: with C-X C-P (previous-error).  See error parsing.
                    859: .es
                    860: .es
                    861: .bs "File Handling"
                    862: The basic unit of stored data is the file.  Each program, each paper,
                    863: lives usually in its own file.  To edit a program or paper, the editor
                    864: must be told the name of the file that contains it.  This is called
                    865: \fIvisiting\fR a file.  To make your changes to the file perminent on
                    866: disk, you must \fIsave\fR the file.
                    867: .bs "Visiting Files"
                    868: .ks 1.5i
                    869: .dk "C-X C-V"
                    870: Visit a file.
                    871: .dk "C-X C-R"
                    872: Same as C-X C-V.
                    873: .dk "C-X C-S"
                    874: Save the visited file.
                    875: .dk "ESC ~"
                    876: Tell JOVE to forget that the buffer has been changed.
                    877: .ke
                    878: .lp
                    879: \fIVisiting\fR a file means copying its contents into JOVE where you
                    880: can edit them.  JOVE remembers the name of the file you visited.
                    881: Unless you use the multiple buffer or window features of JOVE, you can
                    882: only be visiting one file at a time.  The name of the current selected
                    883: buffer is visible in the mode line.
                    884: .lp
                    885: The changes you make with JOVE are made in a copy inside JOVE.  The
                    886: file itself is not changed.  The changed test is not permanent until
                    887: you \fIsave\fR it in a file.  The first time you change the text, a
                    888: star appears at the end of the mode line; this indicates that the text
                    889: contains fresh changes which will be lost unless you save them.
                    890: .lp
                    891: To visit a file, use the command C-X C-V.  Follow the command with the
                    892: name of the file you wish to visit, terminated by a Return.  You can
                    893: abort the command by typing C-G, or edit the filename with the many of
                    894: the standard JOVE commands (e.g., C-A, C-E, C-F, ESC F, ESC Rubout).
                    895: If the filename you wish to visit is similar to the filename in the
                    896: mode line (the default file name), you can type C-R to insert the
                    897: default and then edit it.  If you do type a Return to finish the
                    898: command, the new file's text appears on the screen, and its name
                    899: appears in the mode line.  In addition, its name becomes the new
                    900: default filename.
                    901: .lp
                    902: If you wish to save the file and make your changes permanent, type C-X
                    903: C-S.  After the save is finished, C-X C-S prints the filename and the
                    904: number of characters and lines that it wrote to the file.  If there
                    905: are no changes to save (no star at the end of the mode line), the file
                    906: is not saved; otherwise the changes saved and the star at the end of
                    907: the mode line will disappear.
                    908: .lp
                    909: Because a system crash can cause you to lose everything you have done
                    910: since the last save, we provide auto-save mode, which saves the files
                    911: you are visiting at regular intervals automatically.  See auto-save.
                    912: .lp
                    913: What if you want to create a file?  Just visit it.  JOVE prints "(New
                    914: file)" but aside from that behaves as if you had visited an existing
                    915: empty file.  If you make any changes and save them, the file is
                    916: created.  If you visit a nonexistent file unintentionally (because you
                    917: typed the wrong filename), go ahead and visit the file you meant.  If
                    918: you don't save the unwanted file, it is not created.
                    919: .lp
                    920: If you alter one file and then visit another in the same buffer, JOVE
                    921: offers to save the old one.  If you answer YES, the old file is saved;
                    922: if you answer NO, all the changes you have made to it since the last
                    923: save are lost.  You should not type ahead after a file visiting
                    924: command, because your type-ahead might answer an unexpected question
                    925: in a way that you would regret.
                    926: .lp
                    927: Sometimes you will change a buffer by accident.  Even if you undo the
                    928: change by hand, JOVE still knows that "the buffer has been changed".
                    929: You can tell JOVE to belive that there have been no changes with the
                    930: ESC ~ command.  This command simply clears the "modified" flag which
                    931: says that the buffer contains changes which need to be saved.  Even if
                    932: the buffer really \fIis\fR changed JOVE will still act as if it were
                    933: not.
                    934: .lp
                    935: If JOVE is about to save a file and sees that the date of the version
                    936: on disk does not match what JOVE last read or wrote, JOVE notifies you
                    937: of this fact, and asks what to do, because this probably means that
                    938: something is wrong.  For example, somebody else may have been editing
                    939: the same file.  If this is so, there is a good chance that your work
                    940: or his work will be lost if you don't take the proper steps.  You
                    941: should first find out exactly what is going on.  If you determine that
                    942: somebody else has modified the file, save your file under a different
                    943: name and then DIFF the two files to merge the two sets of changes.
                    944: Also get in touch with the other person so that he doesn't continue
                    945: editing.
                    946: .es
                    947: .bs "How to Undo Drastic Changes to a File"
                    948: If you have made several extensive changes to a file and then change
                    949: your mind about them, and you haven't yet saved them, you can get rid
                    950: of them by reading in the previous version of the file.  You can do
                    951: this with the C-X C-V command, to visit the unsaved version of the file.
                    952: .es
                    953: .bs "Auto Save Mode"
                    954: In auto-save mode, JOVE saves your file from time to time (based on
                    955: counting your commands) without being asked.  This prevents you from
                    956: losing more than a limited amount of work in a disaster.
                    957: .lp
                    958: You can turn auto saving on or off in an individual buffer with ESC X
                    959: auto-save.  In addition, you can have auto savng by default in all
                    960: buffers by putting the auto-save line in your initialization file.
                    961: See initialization files.  The frequency of saving can be specified.
                    962: .lp
                    963: Once you have visited a file, you can turn auto saving on or off with
                    964: ESC X auto-save.  Line other minor mode commands, ESC X auto-save
                    965: toggles.  If you start typing a new file into a buffer without
                    966: visiting anything, auto-save mode is initially off, but you can turn
                    967: it on with ESC X auto-save.
                    968: .lp
                    969: When JOVE decides to do an auto-save, it doesn't save it under the
                    970: name you have visited; instead it saves it under some special "auto
                    971: save file name".  This file name will be the same as your visited file
                    972: name except for having "+" appended to it.  An error in the process of
                    973: auto saving prints "(Auto Save Error!)".  When you leave the editor
                    974: normally, all auto saved files are removed.  However, if there is an
                    975: internal error or the system crashes, the save files will not be
                    976: removed so that you salvage your work.
                    977: .lp
                    978: If you want to save your file "for real", use C-X C-S, as always.
                    979: .es
                    980: .bs "Miscellaneous File Operations"
                    981: .lp
                    982: ESC X write-named-file <file><cr> writes the contents of the buffer
                    983: into the file <file>, and then visits that file.  It can be thought of
                    984: as a way of "changing the name" of the file you are visiting.  Unlike
                    985: C-X C-S, write-file saves even if the buffer has not been changed.
                    986: C-X C-W is another way of getting this command.
                    987: .lp
                    988: ESC X insert-file <file><cr> inserts the contents of <file> into the
                    989: buffer at point, leaving point unchanged before the contents.  You can
                    990: also use C-X C-I to get this command.
                    991: .lp
                    992: ESC X write-region <file><cr> writes the region (the text between
                    993: point and mark) to the specified file.  It does not set the visited
                    994: filenames.  The buffer is not changed.
                    995: .lp
                    996: ESC X append-region <file><cr> appends the region to <file>.  The text
                    997: is added to the end of <file>.
                    998: .es
                    999: .es
                   1000: .bs "Using Multiple Buffers"
                   1001: When we speak of "the buffer", which contains the text you are
                   1002: editing, we have given the impression that there is only one.  In
                   1003: fact, there may be many of them, each with its own body of text.  At
                   1004: any time only one buffer can be \fIselected\fR and available for
                   1005: editing, but it isn't hard to switch to a different one.  Each buffer
                   1006: individually remembers which file it is visiting, what modes are in
                   1007: effect, and whether there are any changes that need saving.
                   1008: .ks 1.3i
                   1009: .dk "C-X B"
                   1010: Select or create a buffer.
                   1011: .dk "C-X C-F"
                   1012: Visit a file in its own buffer.
                   1013: .dk "C-X C-B"
                   1014: List the existing buffers.
                   1015: .dk "C-X K"
                   1016: Kill a buffer.
                   1017: .ke
                   1018: .lp
                   1019: Each buffer in JOVE has a single name, which normally doesn't change.
                   1020: A buffer's name can be anylength.  The name of the currently selected
                   1021: buffer, and the name of the file visited in it, are visible in the
                   1022: mode line when you are at top level.  A newly started JOVE has only
                   1023: one buffer, named "Main".
                   1024: .bs "Creating and Selecting Buffers"
                   1025: To create a new buffer, you need only think of a name for it (say,
                   1026: FOO) and then do C-X B FOO<cr>, which is the command C-X B
                   1027: (select-buffer) followed by the name.  This makes a new, empty buffer
                   1028: and selects it for editing.  The new buffer is not visiting any file,
                   1029: so if you try to save it you will be asked for the filename to use.
                   1030: Each buffer as its own major mode; the new buffer's major mode is
                   1031: always Text mode.
                   1032: .lp
                   1033: To return to buffer FOO later after hacing switched to another, the
                   1034: same command C-X B FOO<cr> is used, since C-X B can atell whether a
                   1035: buffer named FOO exists already or not.  C-X B Main<cr> reselects the
                   1036: buffer Main that JOVE started out with.  Just C-X B<cr> reselects the
                   1037: previous buffer.  Repeated C-X B<cr>'s alternate between the last two
                   1038: buffers selected.
                   1039: .lp
                   1040: You can also read a file into its own newly created buffer, all with
                   1041: one command: C-X C-F (find-file), followed by the filename.  The name
                   1042: of the buffer is the last name in the element of the file's pathname.
                   1043: C-F stands for "Find", because if the specified file already resides
                   1044: in a buffer in your JOVE, that buffer is reselected.  So you need not
                   1045: remember whether you have brought the file in already or not.  A
                   1046: buffer created by C-X C-F can be reslected later with C-X B or C-X
                   1047: C-F, whichever you find more convenient.  Nonexistent files can be
                   1048: created with C-X C-F just as they can with C-X C-V.
                   1049: .es
                   1050: .bs "Using Existing Buffers"
                   1051: To get a list of all the buffers that exist, do C-X C-B
                   1052: (list-buffers).  Each buffer's type, name, and visited
                   1053: filenames are printed.  A star before the buffer name indicates a
                   1054: buffer which contains changes that hav enot been saved.  The number
                   1055: that appears at the beginning of a line in a C-X C-B listing is that
                   1056: buffer's \FIbuffer number\fR.  You can select a buffer by typing its
                   1057: number in place of its name.  If a buffer with that number doesn't
                   1058: already exist, a new buffer is created with that number as its name.
                   1059: .lp
                   1060: If several buffers have stars, you should save some of them with C-X
                   1061: C-M (write-modified-files).  This finds all the buffers that need
                   1062: saving and then saves them.  Saving the buffers this way is much
                   1063: easier and more efficient than selecting each one and typing C-X C-S.
                   1064: If a numeric argument is supplied, it asks whether to save each buffer,
                   1065: individually.
                   1066: .lp
                   1067: ESC X rename-buffer <new name><cr> changes the name of the currently
                   1068: selected buffer.
                   1069: .lp
                   1070: ESC X erase-buffer<buffer name><cr> erases the contents of the <buffer
                   1071: name> without deleting the buffer entirely.
                   1072: .es
                   1073: .bs "Killing Buffers"
                   1074: After you use a JOVE for a while, it may fill up with buffers which
                   1075: you no longer need.  Eventually you can reach a point where trying to
                   1076: create any more results in an "out of memory" or "out of lines"
                   1077: error.  When this happens you will want to kill some buffers with the
                   1078: C-X K (delete-buffer) command.  You can kill the buffer FOO by doing
                   1079: C-X K FOO<cr>.  If you type C-X K <cr> JOVe will kill the previously
                   1080: selected buffer.  If you try to kill a buffer that needs saving JOVE
                   1081: will ask you to confirm it.
                   1082: .es
                   1083: .es
                   1084: .bs "Controlling the Display"
                   1085: Since only part of a large file fits on the screen, JOVE tries to show
                   1086: the part that is likely to be interesting.  The display control
                   1087: commands allow you to see a different part of the file.
                   1088: .ks 1.5i
                   1089: .dk "C-L"
                   1090: Reposition point at a specified vertical position, OR clear and redraw
                   1091: the screen with point in the same place.
                   1092: .dk "C-V"
                   1093: Scroll forwards (a screen or a few lines).
                   1094: .dk "ESC V"
                   1095: Scroll backwards.
                   1096: .dk "C-Z"
                   1097: Scroll forward some lines.
                   1098: .dk "ESC Z"
                   1099: Scroll backwards some lines.
                   1100: .dk "ESC ,"
                   1101: Beginning of screen.
                   1102: .dk "ESC ."
                   1103: End of screen.
                   1104: .ke
                   1105: .lp
                   1106: The terminal screen is rarely large enough to display all of your
                   1107: file.  If the whole buffer doesn't fit on the screen, JOVE shows a
                   1108: contiguous portion of it, containing point.  It continues to show
                   1109: approximately the same portion until point moves outside of it; then
                   1110: JOVE chooses a new portion centered the new point.  This is JOVE's
                   1111: guess as to what you are most interested in seeing.  But if the guess
                   1112: is wrong, you can use the display control commands to see a different
                   1113: portion.  The finite area of screen through which you can see part of
                   1114: the buffer is called \fIthe window\fR, and the choice of where in the
                   1115: buffer to start displaying is also called \fIthe window\fR.
                   1116: .lp
                   1117: First we describe how JOVE chooses a new window position on its own.
                   1118: The goal is usually to place point half way down the screen.  This is
                   1119: controlled by the variable scroll-step, whose value is the number of
                   1120: lines above the bottom or below the top of the window that the line
                   1121: containing point is placed.  A value of 0 (the initial value) means
                   1122: center the screen.
                   1123: .lp
                   1124: The basic display control command is C-L (redraw-display).  In its
                   1125: simplest form, with no argument, it tells JOVE to choose a new window
                   1126: position, centering point half way from the top as usual.
                   1127: .lp
                   1128: C-L with a positive argument chooses a new window so as to point point
                   1129: that many lines from the top.  An argument of zero puts point on the
                   1130: very top line.  Point does not move with respect to the text; rather,
                   1131: the text and point move rigidly on the screen.
                   1132: .lp
                   1133: If point stays on the same line, the screen is first cleared and then
                   1134: redrawn.  Thus, two C-L's in a row are guarenteed to clear the screen.
                   1135: .lp
                   1136: The \fIscrolling\fR commands C-V, ESC V, C-Z, and ESC Z, let you move
                   1137: the whole display up or down a few lines.  C-V (next-page) with an
                   1138: argument shows you that many more lines at the bottom of the screen,
                   1139: moving the text and point up together as C-L might.  C-V with a
                   1140: negative argument shows you more lines at the top of the screen, as
                   1141: does ESC V with a positive argument.
                   1142: .lp
                   1143: To read the buffer a screenful at a time, use the C-V command with no
                   1144: argument.  It takes the last line at the bottom of the screen and puts
                   1145: it at the top, followed by nearly a whole screenful of lines not
                   1146: visible before.  Point is put at the top of the screen.  Thus, each
                   1147: C-V shows the "next screenful", except for one line of overlap to
                   1148: provide continuity.  To move backward, use ESC V without an argument,
                   1149: which moves a whole screenful backwards (again with overlap).
                   1150: .lp
                   1151: C-Z and ESC Z scroll one line forward and one line backward,
                   1152: respectively.  These are convenient for moving in units of lines
                   1153: without having to type a numeric argument.
                   1154: .lp
                   1155: Use ESC , to move to the top of the window and ESC .  to go to the
                   1156: end.  Notice the similarity between ESC , and ESC <, and ESC .  and
                   1157: ESC >.  The only difference between them is how far they move.
                   1158: .es
                   1159: .bs "Multiple Windows"
                   1160: JOVE allows you to split the screen into two or more \fIwindows\fR and
                   1161: use them to display parts of different files, or different parts of
                   1162: the same file.
                   1163: .ks 1.5i
                   1164: .dk "C-X 2"
                   1165: Divide the current window into two smaller ones.
                   1166: .dk "C-X 1"
                   1167: Delete windows all but the current one.
                   1168: .dk "C-X N"
                   1169: Switch to the next window.
                   1170: .dk "C-X P"
                   1171: Switch to the previous window.
                   1172: .dk "C-X O"
                   1173: Same as C-X P.
                   1174: .dk "C-X ^"
                   1175: Make this window bigger.
                   1176: .dk "ESC C-V"
                   1177: Scroll the other window.
                   1178: .ke
                   1179: .lp
                   1180: When using \fImultiple window\fR mode, the text portion of the screen
                   1181: is divided into separate parts called \fIwindows\fR, which display
                   1182: different pieces of text.  Each window can display different files, or
                   1183: parts of the same file.  Only one of the windows is selected; that is
                   1184: the window which the cursor is in.  Editing normally takes place in
                   1185: that window alone.  To edit in another window, you would give a
                   1186: special command to move the cursor to the other window, and then edit
                   1187: there.
                   1188: .lp
                   1189: Each window displays a mode line for the buffer it's displaying.  This
                   1190: is useful when we are editing different files and want to know which
                   1191: file the other window is displaying.  In addition, all except the bottom
                   1192: window put dashes at the beginning and end of the mode line so that
                   1193: there is a clear seperator between windows.
                   1194: .lp
                   1195: The command C-X 2 (split-current-window) enters multiple window mode.
                   1196: A new mode line appears accross the middle of the screen, dividing the
                   1197: text display area into two halves.  Both windows contain the same
                   1198: buffer and display the same position in it, namely where point was at
                   1199: the time you issued the command.  The cursor moves to the second
                   1200: window.
                   1201: .lp
                   1202: To return to viewing only one window, use the command C-X 1
                   1203: (delete-other-windows).  The current window expands to fill the whole
                   1204: screen, and the other windows disappear until the next C-X 2.
                   1205: .lp
                   1206: While there is more than one window, you can use C-X N (next-window)
                   1207: to switch to the next window, and C-X P (previous-window) to switch to
                   1208: the previous one.  If you are in the bottom window and you type C-X N,
                   1209: you will be placed in the top window, and the same kind of thing
                   1210: happens when you type C-X P in the top window, namely you will be
                   1211: placed in the bottom window.  C-X O is the same as C-X P.  It stands
                   1212: for other window because when there are only two windows, repeated use
                   1213: of this command with switch between the two windows.
                   1214: .lp
                   1215: Often you will be editing one window while using the other just for
                   1216: reference.  Then, the command ESC C-V (page-next-window) is very
                   1217: useful.  It scrolls the next window, as if you switched to the next
                   1218: window, typed C-V, and switched back, without your having to do all
                   1219: that.  With a negative argument, ESC C-V will do an ESC V in the next
                   1220: window.
                   1221: .lp
                   1222: When a window splits, both halves are approximately the same size.
                   1223: You can redistribute the screen space between the windows with the C-X
                   1224: ^ (grow-window) command.  It makes the currently selected window grow
                   1225: one line bigger, or as many lines as is specified with a numeric
                   1226: argument.  Use ESC X shrink-window to make the current window smaller.
                   1227: .bs Multiple Windows and Mulitple Buffers
                   1228: Buffers can be selected independently in each window.  The C-X B
                   1229: command selects a new buffer in whichever window the cursor is in.
                   1230: The other window's buffer does not change.
                   1231: .lp
                   1232: You can view the same buffer in more than one window.  Although the
                   1233: same buffer appears in both windows, they have different values of
                   1234: point, so you can move around in one window while the other window
                   1235: continues to show the same text.  Then, having found the place you
                   1236: wish to refer to, you can go back into the other window with C-X O to
                   1237: make your changes.
                   1238: .lp
                   1239: If you have the same buffer in both windows, you must beware of trying
                   1240: to visit a different file in one of the windows with C-X C-V, because
                   1241: if you bring a new file into this buffer, it will replaced the old
                   1242: file in \fIboth\fR windows.  To view different files in differnent
                   1243: windows, you must switch buffers in one of the windows first (with C-X
                   1244: B or C-X C-F, perhaps).
                   1245: .lp
                   1246: A convenient "combination" command for viewing something in another
                   1247: window is C-X 4 (visit-in-other-window).  With this command you can
                   1248: ask to see any specified buffer, file or tag in the other window.
                   1249: Follow the C-X 4 with either B and a buffer name, F and a file name,
                   1250: or T and a tag name.  This switches to the other window and finds
                   1251: there what you specified.  If you were previously in one-window mode,
                   1252: multiple-window mode is entered.  C-X 4 B is similar to C-X 2 C-X B.
                   1253: C-X 4 F is similar to C-X 2 C-X C-F.  C-X 4 T is similar to C-X 2 C-X
                   1254: T.  The difference is one of efficiency, and also that C-X 4 works
                   1255: equally as well if you are already using two windows.
                   1256: .es
                   1257: .es
                   1258: .bs "Replacement Commands"
                   1259: Global search-and-replace operations are not needed as often in JOVE
                   1260: as they are in other editors, but they are available.  In addition to
                   1261: the simple Replace operation which is like that found in most editors,
                   1262: there is a Query Replace operation which asks you, for each occurrence
                   1263: of the pattern, whether to replace it.
                   1264: .lp
                   1265: To replace every occurrence of FOO after point which BAR, you can do
                   1266: .eg "ESC R FOO<cr>BAR"
                   1267: Replacement occurs only after point, so if you want to cover the whole
                   1268: buffer you must go to the beginning first.  Replacement continues to
                   1269: the end of the buffer.
                   1270: .bs "Query Replace"
                   1271: If you want to change only some of the occurrences of FOO, not all,
                   1272: then you cannot use and ordinary Replace.  Instead, use
                   1273: .eg "ESC Q FOO<cr>BAR"
                   1274: This displays each occurrence of FOO and waits for you to say whether
                   1275: to replace it with a BAR.  The things you can type when you are shown
                   1276: an occurrence of FOO are:
                   1277: .ks 1.3i
                   1278: .dk "Space"
                   1279: to replace the FOO.
                   1280: .dk "Rubout"
                   1281: to skip the next FOO without replacing this one.
                   1282: .dk "Return"
                   1283: to exit without doing any more replacements.
                   1284: .dk "Period"
                   1285: to replace this FOO and then exit.
                   1286: .dk "! or P"
                   1287: to replace all remaining FOO's without asking.
                   1288: .dk "C-R or R"
                   1289: to enter a recursive editing level, in case the FOO needs to be edited
                   1290: rather than just replaced with a BAR.  When you are done, exit the
                   1291: recursive editing level with C-X C-C and the next FOO will be
                   1292: displayed.
                   1293: .dk "C-W"
                   1294: to delete the FOO, and then start editing the buffer.  When you are
                   1295: finished editing whatever is to replace the FOO, exit the recursive
                   1296: editing level with C-X C-C and the next FOO will be displayed.
                   1297: .dk "U"
                   1298: move to the last replacement and undo it, and then enter a recursive
                   1299: editing level.  When you have finished editing the FOO, exit the
                   1300: recursive editing level with C-X C-C and then next FOO will be
                   1301: displayed.
                   1302: .ke
                   1303: .es
                   1304: .es
                   1305: .bs "Processes Under JOVE"
                   1306: Another feature in JOVE is its ability to interact with UNIX in a
                   1307: useful way.  You can run other UNIX commands from JOVE and catch their
                   1308: output in JOVE buffers.  In this chapter we will discuss the different
                   1309: ways to run and interact with UNIX commands.
                   1310: .bs Non-interactive UNIX commands
                   1311: To run a UNIX command from JOVE just type "C-X !" followed by the name
                   1312: of the command terminated with Return.  For example, to get a list of
                   1313: all the users on the system, you do:
                   1314: .eg "C-X ! who<cr>"
                   1315: Then JOVE picks a reasonable buffer in which the output from the
                   1316: command will be placed.  E.g., "who" uses the buffer called "who", and
                   1317: "ps alx" uses "ps", and "fgrep -n foo *.c" uses "fgrep".  If JOVE
                   1318: wants to use a buffer that already exists it first erases the old
                   1319: contents.  If the buffer it selects holds a file, not output from a
                   1320: previous shell command, you must first delete that buffer with C-X K.
                   1321: .lp
                   1322: Once JOVE has picked a buffer it puts that buffer in a window so you
                   1323: can see the command's output as it is running.  If there is only one
                   1324: window JOVE will automatically make another one.  Otherwise, JOVE
                   1325: tries to pick the most convenient one window which isn't the current
                   1326: one.
                   1327: .lp
                   1328: It's not a good idea to type anything while the command is running.
                   1329: There are two reasons for this:
                   1330: .ks 1i
                   1331: .dk "(1)"
                   1332: JOVE won't see the characters (thus won't execute them) until the
                   1333: command finishes, so you may forget what you've typed.
                   1334: .dk "(2)"
                   1335: Although JOVE won't know what you've typed, it WILL know that you've
                   1336: typed something, and then it will try to be "smart" and not update the
                   1337: display until it's interpreted your what you've typed.  But, of
                   1338: course, JOVE won't interpret what you type until the UNIX command
                   1339: completes, so you're left with the uneasy feeling you get when you
                   1340: don't know what the hell the computer is doing.
                   1341: .fb
                   1342: This is a bug and should be fixed, but probably won't be for a while.
                   1343: .fe
                   1344: .ke
                   1345: .lp
                   1346: If you want to interrupt the command for some reason (perhaps you
                   1347: mistyped it,or you changed your mind) you can type C-].  Typing this
                   1348: inside JOVE while a process is running is the same as type C-C when
                   1349: you are outside JOVE, namely the process stops in a hurry.
                   1350: .lp
                   1351: When the command finishes JOVE puts you back in the window you started
                   1352: in.  Then it prints a message indicating whether or not the command
                   1353: completed successfully in its (the command's) opinion.  That is, if
                   1354: the command had what it considers and error, JOVE will print an
                   1355: appropriate message.  Interrupting a command with C-] is considered an
                   1356: error.
                   1357: .bs "Limitations of Non-Interactive Processes"
                   1358: The reason these are called non-interactive processes is that you
                   1359: can't type any input to them; you can't interact with them; they can't
                   1360: ask you questions because there is no way for you to answer.  For
                   1361: example, you can't run a command interpreter (a shell) with C-X !
                   1362: because there is no way to type it a command.  Remember that JOVE is
                   1363: listening to your keyboard, not the process in the window, and JOVE
                   1364: doesn't see what you type until the process dies.
                   1365: .lp
                   1366: C-X ! is useful for running commands that do some output and then
                   1367: exit.  For example, it's very useful to use with the C compiler to
                   1368: catch compilation error messages (see Compiling C Programs), or with
                   1369: the "grep" commands.
                   1370: .es
                   1371: .es
                   1372: .bs "Interactive Processes -- Run a Shell in a Window"
                   1373: Some versions of JOVE have the capability of running interative
                   1374: processes.  This is more useful than non-interactive processes for
                   1375: certain types of jobs:
                   1376: .ks
                   1377: .dk "(1)"
                   1378: You can go off and do some editing while the command is running.  This
                   1379: is useful for commands that do sporadic output and run for fairly long
                   1380: periods of time.
                   1381: .dk "(2)"
                   1382: Unlike non-interactive processes, you can type input to this type.  In
                   1383: addition, you can edit what you type with the power of all the JOVE
                   1384: commands \fBbefore\fR you send the input to the process.  This is a
                   1385: really important feature, and is especially useful for running a shell
                   1386: in a window.
                   1387: .dk "(3)"
                   1388: Because you can continue with normal editing while one of the
                   1389: processes is running, you can create a bunch of contexts and manage
                   1390: them (select them, delete them, or temporarily put them aside) with
                   1391: JOVE's window and buffer mechanisms.
                   1392: .ke
                   1393: .lp
                   1394: Although we've created an image of processes being attached to
                   1395: windows, in fact they are attached to buffers.  Therefore, once an
                   1396: i-process is running you can select another buffer into that window,
                   1397: or if you wish you can delete the window altogether.  If you reselect
                   1398: that buffer later it will be up to date.  That is, even though the
                   1399: buffer wasn't visible it was still receiving output from the process.
                   1400: You don't have to worry about missing anything when the buffer isn't
                   1401: visible.
                   1402: .bs Advantages of Running Processes in JOVE Windows.
                   1403: There are several advantages to running a shell in a window.  What you
                   1404: type isn't seen immediately by the process ; instead JOVE waits until
                   1405: you type an entire line before passing it on to the process to read.
                   1406: This means that before you type Return, all JOVE's editing
                   1407: capabilities are available for fixing typos on your input line.  If
                   1408: you discover an error at the beginning of the line, rather than
                   1409: erasing it and starting over, you can simply move to the error,
                   1410: correct it, move back and continue typing.
                   1411: .lp
                   1412: Another feature is that you have the entire history of your session is
                   1413: a JOVE buffer.  You don't have to worry about output from a command
                   1414: moving past the top of the screen.  if you missed some output you can
                   1415: move back through it with ESC V and other command.  In addition, you
                   1416: can save yourself retyping a command (or a similar one) by sending
                   1417: edited versions of previous ones.
                   1418: .es
                   1419: .bs "Differences between Normal and I-process Buffers"
                   1420: JOVE behaves differently in several ways when you are in an I-process
                   1421: buffer.  The most obvious one is that Return does different things
                   1422: depending on both your position in the buffer and on the state of the
                   1423: process.  In the normal case, when point is at the end of the buffer,
                   1424: Return does what you'd expect: it inserts a line-separator and then
                   1425: sends the line to the process.  If you are somewhere else in the
                   1426: buffer, possibly positioned at a previous command that you want to
                   1427: edit, Return will place a copy of that line (with the prompt discarded
                   1428: if there is one) at the end of the buffer and move you there.  Then
                   1429: you can edit the line and type Return as in the normal case.  If the
                   1430: process has died for some reason, Return does nothing.  It doesn't
                   1431: even insert itself.  If that happens unexpectedly, you should type ESC
                   1432: X list-processes<cr> to get a list of each process and its state.  If
                   1433: your process died abnormally, list-processes may help you figure out
                   1434: why.
                   1435: .es
                   1436: .bs "How to Run a Shell in a Window"
                   1437: Type ESC X i-shell<cr> to start up a shell.  As with C-X !, JOVE will
                   1438: create a buffer, called \fBshell.1\fR, and select a window for this
                   1439: new buffer.  But unlike C-X ! you will be left in the new window.  Now,
                   1440: the shell process is said to be attached to shell.1, and it is
                   1441: considered an I-process buffer.
                   1442: .lp
                   1443: Needs work.
                   1444: .es
                   1445: .es
                   1446: .es
                   1447: 
                   1448: .bs "Editing C Programs"
                   1449: .bs "Compiling Your Program"
                   1450: .es
                   1451: .bs "Indentation Commands"
                   1452: .es
                   1453: .bs "Parenthesis and Brace Matching"
                   1454: .es
                   1455: .bs "C Tags"
                   1456: .es
                   1457: .es
                   1458: .bs "Error Message Parsing"
                   1459: .es
                   1460: .bs "Simple Customization"
                   1461: .bs "Minor Modes"
                   1462: .es
                   1463: .bs "Variables"
                   1464: .es
                   1465: .bs "Key Re-binding"
                   1466: .es
                   1467: .bs "Keyboard Macros"
                   1468: .es
                   1469: .bs "Initialization Files"
                   1470: .es
                   1471: .es
                   1472: .TC
                   1473: .hy 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.