Annotation of researchv9/cmd/emacs/emacs.tm, revision 1.1.1.1

1.1       root        1: .tr ~
                      2: .\" EMACS_MODES: fill !c
                      3: .TL 126010-2200 40158-100
                      4: An Interactive Screen Editor for Unix (Issue 2)
                      5: .AU "Warren Montgomery" WAM IH 55235 2494 6C-501 85-55235-?
                      6: .TM ??
                      7: .SA 1
                      8: .NR Pt 0
                      9: .AS 2
                     10: High speed data communication and display screen terminals make
                     11: possible a fundamentally different mode of entering and editing text
                     12: to a computer system.  An interactive screen editor allows a user to
                     13: enter and edit files, and to see the effects of the editing
                     14: immediately.
                     15: .P
                     16: A good screen editor can improve productivity in several ways.  The
                     17: need for paper listings, and thus the expense and delay in dealing
                     18: with them, is greatly reduced with the availability of a screen
                     19: editor.  The editor can provide a customized environment for
                     20: particular tasks, such as editing program source or word processing,
                     21: which can relieve the user of the mechanical parts of the task (such
                     22: as maintaining proper indentation).  The immediate feedback provided
                     23: reduces mistakes, and speeds up their detection.  A simple set of editing
                     24: commands can be used 
                     25: effectively by relatively unskilled users, because of the feedback
                     26: obtained by seeing the effects of editing.
                     27: .P
                     28: This memorandum describes an interactive screen editor for UNIX\*F
                     29: .FS
                     30: Unix is a Trademark of AT&T Bell Laboratories
                     31: .FE
                     32: known as EMACS.  The editor is patterned after a very popular screen
                     33: editor originally developed at the Artificial Intelligence
                     34: Laboratory M.I.T.  It was developed by the
                     35: author as a tool for his own work and is currently used by a large
                     36: number of users in Bell Laboratories.  Emacs is available through
                     37: the experimental tools facility within Bell Labs, and through the
                     38: Toolchest package to outside customers.  The editor provides a
                     39: friendly editing environment with the advantages outlined above,
                     40: while running in the small address space provided to the UNIX user
                     41: on the PDP\*F-11/70.  This memorandum describes the commands and
                     42: editing environment of EMACS, and some experience with its use.
                     43: It obsoletes the first users manual published in 1980.
                     44: .FS
                     45: PDP is a Trademark of Digital Equipment Corporation
                     46: .FE
                     47: .AE
                     48: .MT "TECHNICAL MEMORANDUM"
                     49: .H 1 "INTRODUCTION"
                     50: Text editing is the most common task of many computer users.  The
                     51: creation and modification of programs, data bases, and memoranda
                     52: occupies much of the time that a user spends with a computer system.
                     53: The ability to edit programs and recompile them was one of the
                     54: primary reasons for the success of early time-sharing systems over
                     55: batch processing systems.
                     56: .P
                     57: Many of the text editing tools now in use are based on the editors
                     58: for the early timesharing systems.  These editors were developed for
                     59: an environment that included mostly low-speed (110 baud) printing
                     60: terminals, and expensive computer systems that were not prepared to
                     61: interact with the user on a character at a time basis.  In such a
                     62: environment, it was appropriate to minimize the amount of output
                     63: produced by the editor, and to allow the user to specify a lot of
                     64: changes to be made by a single editor "command".  Editors such as
                     65: the standard UNIX\*F editor (ed) are ideal for this environment.
                     66: .FS
                     67: Unix is a Trademark of AT&T Bell Laboratories
                     68: .FE
                     69: .P
                     70: In recent years, printing terminals have been repaced by display
                     71: terminals capable of handling high data rates in many applications.
                     72: The cost of
                     73: computing has steadily dropped.  The text editing tools made
                     74: available to users must evolve to take advantage of these changes. 
                     75: With a high-speed display terminal, minimizing output is no longer
                     76: appropriate.  Instead, the display can be used to provide feedback
                     77: for the user on the results of editing.  The lower cost of
                     78: computing, and better hardware support for terminals, make character
                     79: at a time interaction with the computing system feasible.  The EMACS
                     80: editor described in this report is one attempt to take advantage of
                     81: these effects in order to provide the user with a simple and
                     82: powerful editing environment.
                     83: .P
                     84: EMACS is a screen editor that can be used to build or to edit files 
                     85: using a display terminal, such as the hp2621, vt-100, or teletype
                     86: 5420.  The user
                     87: interface to this editor is quite simple.  The user is presented
                     88: with a display of the contents of a portion of the buffer being
                     89: edited.  This display indicates \fIexactly\fP what is
                     90: in the area being displayed, including any non-printing characters.
                     91: The contents of the buffer being edited can be read from or written
                     92: to a UNIX file.
                     93: Characters typed by the user will be inserted into the buffer
                     94: (and reflected in the display) at the point indicated by the
                     95: terminal's cursor.  This is the primary mechanism for entering and
                     96: modifying text.
                     97: .P
                     98: Control characters and escape sequences can be used to perform other
                     99: editing functions, such as moving the cursor to a different position
                    100: in the buffer, deleting text, replacing text, or searching.  Thus
                    101: there is only one mode of interpretation of characters typed to
                    102: EMACS, in which either text to be entered or commands can be
                    103: entered.  This simple interface relieves the user of the need to
                    104: remember what mode he is in, and prevents the disastrous
                    105: mistakes that can occur when text to be inserted is evaluated as an
                    106: editor command.  A simple mechanism is provided to allow a user to
                    107: insert control and escape characters when needed.
                    108: .P
                    109: Although there is a rich vocabulary of commands available,
                    110: including commands that perform functions tailored to a particular
                    111: application (such as indenting a C program), the most common way in
                    112: which EMACS is used to edit is simply to position the cursor
                    113: over the area to be changed, and enter the changes.  The immediate
                    114: feedback provided by the visual display appears to be very important
                    115: to the user.
                    116: .P
                    117: This editor was written by the author as an aide to his other work,
                    118: and patterned after the EMACS editor written for the PDP\*F-10 systems
                    119: .FS
                    120: PDP is a Trademark of Digital Equipment Corporation
                    121: .FE
                    122: at the M.I.T. Artificial Intelligence Laboratory.  The interface to the
                    123: user closely follows that provided by the M.I.T. version, because
                    124: the author was familiar with that version.  The implementation of
                    125: EMACS for UNIX described in this report was done by the author, and
                    126: is independent of any other implementations of Emacs.
                    127: .P
                    128: The author and his organization are not supporting EMACS.  The
                    129: author is, however, willing to distribute copies of the software for
                    130: use within Bell Laboratories, and is interested in comments
                    131: regarding features or problems with EMACS.  The author will repair
                    132: problems as time allows, but makes no guarantees to fix problems
                    133: promptly.
                    134: .P
                    135: The remainder of this report contains a user's manual for the EMACS
                    136: editor, and a discussion of the experience that we have had with
                    137: EMACS in our department.  EMACS continues to evolve to provide more
                    138: commands and remove implementation restrictions.  The users manual
                    139: here describes EMACS version 4.9, which was in use in March, 1985.
                    140: .P
                    141: This document is intended to serve the needs of a number of
                    142: different kinds of readers.  Briefly, here is a guide on how to read
                    143: it for various kinds of readers.
                    144: .VL 40
                    145: .LI "Getting Started as a New User:"
                    146: Read Chapters 2, 3, and 6.  As you need to, refer to the information
                    147: in Chapters 4, 5, and 7.
                    148: .LI "Getting Started as an Experienced User:"
                    149: Users of other Emacs like editors will probably find the material in
                    150: chapters 6 to be most useful to start.
                    151: .LI "Referring to Specific Commands:"
                    152: All users will find the command and mode descriptions in chapters 4,
                    153: 5, and 6 to be useful to refer back to specific command
                    154: descriptions.
                    155: .LI "Learning about Editors in General:"
                    156: People interested in the general flavor of emacs and in our
                    157: experiences with it should read chapters 2 and 8 to get an
                    158: introduction and to see a discussion of how the features are used.
                    159: .LE
                    160: .H 1 "Basic concepts"
                    161: Before going into the editing commands of EMACS, some basic concepts
                    162: should be learned.  EMACS operates rather differently from 
                    163: line oriented editors, and even from other screen oriented editors
                    164: in the way that it treats the screen and the keyboard.  Some of it's
                    165: conventions for displaying and inputing characters are not like
                    166: other Unix tools, primarily because they were originally developed
                    167: for another environment.
                    168: .H 2 "The Character Set"
                    169: EMACS operates on characters from an alphabet of 256 different
                    170: characters.  These include the 128 ASCII characters that can be entered
                    171: from a terminal, and 128 "Meta" characters.  A Meta character is
                    172: entered by preceding it with an escape (ESC key).  
                    173: .P
                    174: In this document and in the displays produced by emacs, control
                    175: characters are indicated by the character '^' followed by the
                    176: equivalent printable character (usually capitalized).  Thus '^X'
                    177: represents a control-x, which is typed by hitting the control
                    178: and 'x' keys simultaneously.  For some
                    179: unusual non-printing characters, the display is not obvious:
                    180: .VL 10
                    181: .LI "^?"
                    182: Rubout or delete (ASCII 0177)
                    183: .LI "^@"
                    184: Null (ASCII 0)
                    185: .LI "^["
                    186: Escape (ASCII 033)
                    187: .LI "^\e"
                    188: The "fs" character (ASCII 034)
                    189: .LI "^]"
                    190: The "gs" character (ASCII 035)
                    191: .LI "^^"
                    192: The "rs" character (ASCII 036)
                    193: .LI "^_"
                    194: The "us" character (ASCII 037)
                    195: .LE
                    196: .P
                    197: Meta characters are typed to Emacs by hitting the escape character,
                    198: and then any second character (including a control character.)  They
                    199: are displayed by emacs as "M-" followed by the equivalent ASCII
                    200: character.  Thus "M-a" (Meta - a) is the character obtained by typing escape
                    201: followed by a, and "M-^B" (Meta - control-b) is the character
                    202: obtained by typing escape followed by control-b.
                    203: .H 2 "The display"
                    204: The display screen contains a window showing a view of the buffer
                    205: being edited, which contains about 20 lines on a typical display
                    206: terminal.  The terminal cursor is positioned at the
                    207: point where the editor cursor (the current position where editing is
                    208: taking place) is in the buffer.  Each line of the buffer
                    209: (delimited by a newline character) begins at the beginning of a display
                    210: line.  A line that exceeds the screen width is normally continued on
                    211: the next screen line.  Whenever a line must be continued on the next
                    212: screen line an exclamation mark (!) is displayed in the last column
                    213: of the first screen line.  If the editor is in line number (lnumb)
                    214: mode, then a line number is printed at the beginning of each line in the buffer.
                    215: .P
                    216: Printable characters are displayed normally, while tabs are displayed as
                    217: white space that fills up the space on the screen until the next
                    218: position at a multiple of eight.
                    219: Non printing control characters and meta characters are printed with
                    220: the conventions outlined above.
                    221: .SP
                    222: If you edit a file which contains characters that have the high
                    223: order (parity) bit set, they will display as "M-" followed by the
                    224: display of the character.  You will only run into this when trying
                    225: to edit files containing binary information.
                    226: .P
                    227: In addition to the display buffer, several lines of the screen are used
                    228: for status information and for displaying parameters entered into EMACS,
                    229: such a file name.  One of these lines known as the status line contains the
                    230: editor name, editor version, buffer number and name, and file name.  Some
                    231: of the more recently introduced commands described in this document
                    232: indicate the version in which they were introduced, so that you can
                    233: determine whether or not a particular command is in the version that
                    234: you are running.
                    235: If the buffer has not been modified since the file was read or written,
                    236: an '=' will be displayed between the buffer and file names.  Otherwise,
                    237: a '>' will appear.
                    238: .P
                    239: The lines below the status line are used for the time of day display
                    240: (if time mode is on), and for emacs to prompt for parameters for
                    241: commands.  Some commands cause the buffer display to be erased in
                    242: order to display other information in place of the buffer.  The word
                    243: "Continue?" will be displayed at the bottom of the screen when this
                    244: happens.  Typing 'y', ' ', or return will bring back the buffer
                    245: display.  Typing 'n' may allow you to re-execute the command
                    246: producing the display.
                    247: .P
                    248: Figure 1 shows a typical screen during a EMACS session.  The buffer
                    249: "Main", number 0, is being used to edit a program test.c.  The
                    250: buffer has been modified since the last write to the file test.c.
                    251: .DF
                    252: .ce
                    253: Figure 1 EMACS screen Display
                    254: .SP 2
                    255: 1   #include <stdio.h>
                    256: 2   /* EMACS_MODES: c, !fill, comcol=43 */
                    257: 3
                    258: 4
                    259: 5   /* This is a c program */
                    260: 6
                    261: 7   main()
                    262: 8   {
                    263: 9           int i;
                    264: 10          char c;
                    265: 11
                    266: 12          for (i = 0;i > 0; i++) {
                    267: 13                  printf("i = %d\en",i); /* print i */
                    268: 14          }
                    269: 15  }
                    270: 16
                    271: 
                    272: EMACS 4.8  (0) Main > test.c
                    273: 
                    274: 
                    275: .DE
                    276: .H 2 "The Text in The Buffer"
                    277: Each buffer that you edit holds a sequence of characters.  Any
                    278: characters can be present in an emacs buffer, including control and
                    279: meta characters.  The only limitation is on the number of characters
                    280: that can be on one line in the buffer.  Normally, emacs treats the
                    281: buffer just as a sequence of characters.
                    282: .P
                    283: One difference between emacs and many editors is that emacs does not
                    284: treat "newline" characters specially.  Between each pair of adjacent
                    285: lines of text in the buffer is an invisible "newline" character.  If
                    286: the cursor is at the end of one line, it is in front of the newline
                    287: character, and deleting a single character will delete the newline,
                    288: causing the text in the following line to be joined to the current
                    289: line.  Newlines can be inserted, deleted, and searched for like any
                    290: other characters.
                    291: .P
                    292: Some emacs commands operate on units of text in the buffer, like
                    293: words, lines, sentences, pages, etc.  These work on top of the base
                    294: level which still treats the buffer as a string of
                    295: characters.
                    296: .H 2 "Command structure"
                    297: Unlike most other editors, emacs does not have distinct "modes" for
                    298: inserting text into the buffer and for entering commands.  Thus
                    299: there are no commands for inserting text, and no special convention
                    300: to end a text insertion.  Instead, at any point ordinary characters
                    301: can be inserted into the buffer simply by typing them, while control
                    302: and meta characters are used for editing commands.
                    303: .P
                    304: Each character that is typed into EMACS is in fact interpreted as a
                    305: command.  All of the ordinary printing characters insert themselves into the 
                    306: buffer being edited at the point defined by the cursor.  Thus
                    307: the command invoked when you type the character 'x' inserts an x
                    308: into the buffer at the point shown by the cursor.  The control and
                    309: meta characters are used for various editing functions.
                    310: .H 2 "Arguments and Parameters"
                    311: All commands, including the printing characters, take a numeric argument
                    312: that has some effect on their interpretation.  The default argument
                    313: given to a command for which no argument is specified is 1.  To
                    314: specify some other argument to a command, you can enter escape,
                    315: followed by a sequence of digits, and then the command.
                    316: You can specify a negative value for an argument by entering escape
                    317: followed by '-', followed by a sequence of digits.
                    318: Numbers starting with a 0 are interpreted as
                    319: octal, while numbers starting with any other digit are decimal.
                    320: A second
                    321: way of specifying the argument is to precede the command by one or more 
                    322: ^U (control-u) characters.  Each ^U multiplies the value of the argument 
                    323: by 4.  
                    324: .P
                    325: For most commands, the effect of the argument is to multiply the
                    326: number of times that the command is applied.  Thus the sequence ^U^Ux 
                    327: inserts 16 x's into the buffer at the current location.  The sequence 
                    328: ESC13^N moves forward 13 lines in the buffer.
                    329: .P
                    330: In addition to the numeric argument given to all commands, some
                    331: commands will prompt the user for additional character string
                    332: parameters.  The commands that take parameters, and the method of
                    333: entering parameters are described in the section on file and buffer
                    334: commands.
                    335: .H 1 "Basic Emacs Commands"
                    336: As noted above, every character you type to emacs is interpreted as
                    337: a command.  This section describes a simple set of commands that
                    338: will be sufficient for most editing that you do.  Subsequent
                    339: sections describe more advanced commands that are very useful in
                    340: certain situations, and other aspects of emacs.
                    341: .P
                    342: Emacs has a large number of commands.  Most of them have a mnemonic
                    343: significance that should be obvious (like ^B for backwards or ^D for
                    344: delete).  Some, unfortunately, don't have any obvious meaning.  As a
                    345: general rule, control character commands operate on characters and
                    346: lines, while the corresponding meta character commands operate on
                    347: words or sentences.
                    348: .P
                    349: The user interface of emacs was designed for touch typists.  A
                    350: deliberate choice was made to use control and meta characters for
                    351: commands rather than special keys, such as the function or "arrow"
                    352: keys on many terminals, since these keys are different on every
                    353: terminal and generally cannot be reached without taking your fingers
                    354: off of the home position of the keyboard.  Typically the only
                    355: difficulty faced by an emacs user in adapting to a new terminal is
                    356: locating the escape key, which is unfortunately located differently
                    357: on every terminal.  With a little practice, you will find that your
                    358: fingers become adept at locating the keys for all of the basic
                    359: commands with little thought and without having to look at the
                    360: keyboard.
                    361: .H 2 "Getting Help or getting out of trouble"
                    362: Emacs has many self-help features.  The commands listed in this
                    363: section are useful to know about because they can provide help or
                    364: remedy mistakes.
                    365: .VL 10
                    366: .LI "M-?"
                    367: Explain.   This command prompts for a character and prints a brief 
                    368: explanation of what that character does.
                    369: .LI "M-w"
                    370: Wall Chart.  This command puts a listing of all commands (including
                    371: user defined commands), and their help explanations into the
                    372: current buffer.  This command is a
                    373: convenient way of producing a "wall chart" of the commands.  The
                    374: list is inserted into the buffer at the current position, so that
                    375: normally one would want to execute it in an empty buffer.
                    376: The appendix to this report contains a current copy of the wall chart.
                    377: .LI "^L"
                    378: Refresh.  refresh the display.  Occasionally, some error may cause the
                    379: display to become garbled.  ^L re-creates it from scratch.  If you
                    380: give an argument to ^L, it is used to specify how many lines will
                    381: appear on the screen before the current line.  When invoked with an
                    382: argument, this command does not re-create the display from scratch.
                    383: .LI "^G"
                    384: Abort.  Typing ^G at any point that emacs is asking for input
                    385: will abort the current command.  This applies at
                    386: any step (specifying arguments, typing escape, entering parameters
                    387: that emacs asks for, etc.).  (There are a couple of exceptions
                    388: related to advanced editing commands, but even with these, typing ^G
                    389: several times will always get you out with minimal damage).
                    390: This is a convenient way of aborting anything that you are not sure
                    391: that you want to complete, and may not know how you started.
                    392: .LI "M-u"
                    393: Undo.  This command undoes the effect of the last significant text
                    394: modifying command that can be undone.  Undo is it's own inverse, so
                    395: invoking undo twice in a row undoes the result of the undo command. 
                    396: Significant text modifying commands include all except insertion of
                    397: individual characters (including newlines), and the open-line (^O)
                    398: command.
                    399: .P
                    400: Almost all commands can be undone, but a few effects of commands
                    401: can't be undone.  M-u will not undo the
                    402: effects of reading or writing files, nor can it undo anything done
                    403: by executing unix commands from emacs.  Undo cannot be used to bring
                    404: back buffers that may have been inadvertently killed with the ^X^K
                    405: command (see below).  Undo can undo all other significant text
                    406: modifications, with the exception that when the last significant text
                    407: modification was a replace command, only a limited number of
                    408: replacements can be undone.  If more replacements were done with one
                    409: command, undo prints a warning error message and if the user
                    410: specifies then undoes what it can.
                    411: .LI "^X^C"
                    412: Quit Emacs.
                    413: If any buffers have been modified since the last write, EMACS will
                    414: ask whether or not to write out each such buffer before exiting.
                    415: EMACS will not ask whether or not to save an empty buffer.
                    416: .LI "BREAK"
                    417: Emacs will not respond to your normal interrupt character, but it
                    418: will respond if you hit the BREAK key on your terminal.  Break
                    419: causes emacs to stop anything that it was doing at the next
                    420: convenient point, and displays a message to you listing some
                    421: options.  When you hit break you can either continue what you were
                    422: doing, abort what you were doing, exit from emacs, or suspend what
                    423: you were doing such that you can return to it later if you wish.
                    424: .LE
                    425: .H 2 "Simple cursor movement commands"
                    426: There are many ways to move the cursor around in the buffer without modifying
                    427: the text in the buffer.  Most of these use their argument to specify
                    428: how many times the movement is to be repeated.  
                    429: .VL 10
                    430: .LI "^F,^B"
                    431: Move forward or backward one character.  Recall that the end of each
                    432: line counts as one character, so that ^F at the end of one
                    433: line will put you at the beginning of the next line.
                    434: .LI "^N,^P"
                    435: Move to next or previous line.  Emacs moves to the same character
                    436: position in the line below (^N) or above (^P) the current line.
                    437: Note that if the buffer contains tab or control characters, the same
                    438: character position in the lines in the buffer may display at
                    439: different points in the screen. 
                    440: .LI "^A,^E"
                    441: Move to the beginning (^A) or end (^E) of the current line of the
                    442: buffer.  Note that these work on one line of the buffer, not one
                    443: line of the screen. If the current line is longer than will fit on
                    444: one line of the screen display, these commands will move up or down
                    445: on the screen to the real beginning or end of the line in the buffer.
                    446: .LI "M-<,M->"
                    447: Move the cursor to the beginning or end of the buffer.
                    448: .LI "M-f,M-b"
                    449: Move the cursor forward or backward by one word.  In emacs, words
                    450: are delimited by non-alphabetic or non-numeric characters.  If your
                    451: terminal is capable of displaying underscored characters, emacs will
                    452: not consider these characters as separating words.
                    453: .LI "M- a,M-e"
                    454: Move the cursor to the beginning or end of the current sentence. 
                    455: The end of a sentence is defined as a punctuation mark followed by two
                    456: or more whitespace characters (blanks or newlines).  With an
                    457: argument, these commands can be used to move forwards or backwards
                    458: by a specified number of sentences.
                    459: .LI "^V,M-v"
                    460: Move to next or previous page.  The cursor is moved forward or
                    461: backward so that the display will show the text just before or just
                    462: after the text now in the window on the screen.
                    463: .LI "M-g"
                    464: Move the cursor to the line number specified by the argument given
                    465: to the command.
                    466: .LE
                    467: .H 2 "Simple Text Deleting and Moving Commands"
                    468: Several commands are available to delete text from the buffer.  All of
                    469: these commands operate on text near the current cursor position.  The 
                    470: deletion commands are:
                    471: .VL 10
                    472: .LI "^D,^H"
                    473: Delete forwards or backwards from the cursor.  ^H, or backspace
                    474: deletes the character immediately before the cursor.  ^? or rubout,
                    475: is a synonym for ^H.  ^D deletes the character on top of the cursor.
                    476: If given arguments, these commands delete blocks of text forward or
                    477: backward of the current cursor position.
                    478: .LI "M-d,M-^?"
                    479: Delete words forwards or backwards from the cursor.  These two
                    480: commands delete words (as defined for M-f and M-b).  If the current
                    481: cursor position is in the middle of a word, M-d will delete from the
                    482: cursor to the end of the word while M-^? will delete everything
                    483: before the cursor.
                    484: .LI "^K"
                    485: Delete to the end of this line.  If invoked without an argument, ^K 
                    486: deletes the remaining text on this line (if any).  If no text follows the
                    487: cursor on the current line, ^K deletes the newline.  With an
                    488: argument of 0, ^K deletes the text before the cursor on the current
                    489: line.  With an argument of n greater than zero, it
                    490: deletes n lines forward from the cursor position.  The text from the
                    491: cursor up to and including the nth newline  is deleted.  With an
                    492: argument less than zero, the deletion is backwards from the cursor
                    493: position.
                    494: .LI "M-~"
                    495: (Meta space)
                    496: The command Meta-space places an invisible mark on the 
                    497: current cursor position.  This mark can be used in subsequent editing.
                    498: Each mark is simply a position in the buffer (line number and
                    499: character within the line.)  Thus if you add or delete text in front
                    500: of a position where a mark was placed, the mark may not remain on
                    501: the same character, but stays on the same position.
                    502: .P
                    503: Emacs actually maintains 16 different marks, normally allocated as
                    504: one per buffer.  (Thus if you set marks in different buffers, they
                    505: are normally independent.)  You can, however, alter this by
                    506: specifying a mark number as an argument to Meta-space and other
                    507: commands that work with marks.  This allows you to mark up to 16
                    508: different positions in one buffer.  The command ^@ (Control-@) is a
                    509: synonym for Meta-space, but cannot be typed on all keyboards.
                    510: .LI "^W"
                    511: The command '^W' deletes the text between the current cursor position and 
                    512: the mark.  This is a convenient way to delete a well defined block of text.
                    513: If an argument is specified, it is used to select the mark number
                    514: The mark can be either before or after the cursor position and
                    515: achieve the same effect.
                    516: .LI "^Y"
                    517: Insert last killed text.  All text that is deleted is saved in a "kill 
                    518: stack".  The kill stack holds the last 16 deletions.  There is
                    519: also a limit on the total amount of text that can be held in the
                    520: kill stack, but you are unlikely to encounter it.
                    521: ^Y retrieves the most recently deleted text.  The most
                    522: frequent use of this command is in moving text around.  The procedure 
                    523: is: kill the text to be moved, move the cursor to where you want it, and 
                    524: enter ^Y.  Another use of ^Y is to undo an unwanted deletion.  ^Y 
                    525: leaves the mark at the beginning of the inserted text, and puts the 
                    526: cursor at the end.  ^Y treats it's argument (if any) as a count for
                    527: the number of copies of the deleted text to bring back, and not a
                    528: mark number.  ^Y operates only with the default mark.
                    529: .LI "M-y"
                    530: Replace last retrieved text.  This command kills the text between
                    531: the cursor and the mark and replaces it with the next to last item on
                    532: the kill stack.  This command can only be used immediately after ^Y,
                    533: where it changes text that has just been retrieved.  By entering ^Y
                    534: followed by some number of M-y's, any text in the kill stack can be
                    535: retrieved.
                    536: .LI "M-p"
                    537: Pickup the region of text.  This command picks up the text between
                    538: the current position and the mark and puts it in the kill stack,
                    539: without changing the buffer.  This is useful for duplicating blocks
                    540: of text in the buffer.  An argument can be used to specify which mark
                    541: to use
                    542: .LI "^X^X"
                    543: (Type control-X twice) Exchange the cursor position and the mark. 
                    544: An argument can be specified to indicate the mark to exchange with.
                    545: .LE
                    546: .H 2 "Simple File and buffer Commands"
                    547: Commands that access files and buffers must ask for the
                    548: name of the appropriate file or buffer.  All of these commands (and
                    549: some of the others) ask for the appropriate information at the
                    550: bottom of the screen.  You can use some of the simple editing
                    551: commands described here, plus a couple of special commands, to edit
                    552: a file or buffer name that you enter this way.  The commands that
                    553: you can use for editing are:
                    554: .VL 10
                    555: .LI "^F,^B"
                    556: Move forward or backward one character
                    557: .LI "^A,^E
                    558: Go to beginning or end of line.
                    559: .LI "^D,^H"
                    560: Delete forward or backward
                    561: .LI "^U"
                    562: Multiply the effect of the next command by 4.
                    563: .LI "^K"
                    564: Kill (erase) the whole line
                    565: .LI "^G"
                    566: Abort the command asking for information
                    567: .LI "^X"
                    568: Enter the current line from the file at the cursor
                    569: .LI "^Y"
                    570: Enter the current file name at the cursor
                    571: .LI "^L"
                    572: Redisplay the prompt and the string being entered
                    573: .LI "^T"
                    574: Transpose the characters before and after the cursor
                    575: .LI "^Q"
                    576: Quote the following character (eliminates the special significance
                    577: of the next character and just sticks it literally in the string
                    578: being typed.)
                    579: .LI "return"
                    580: End the string being typed, and continue editing.  (If the cursor is
                    581: in the middle of the line, the whole line is given to whatever
                    582: command asked for it, not just the text before the cursor).
                    583: .LE
                    584: .P
                    585: Most of the file accessing commands are invoked through the ^X command.
                    586: ^X is a prefix for several useful commands, most of which involve file
                    587: or buffer access.
                    588: These commands are invoked by a ^X followed by a second character.
                    589: .P
                    590: In the commands that ask for filenames, the normal shell conventions
                    591: for partially specified names can be used.  Any of the following
                    592: sequences can be used in a filename and will be substituted
                    593: properly.
                    594: .tr ~~
                    595: .VL 20
                    596: .LI "$VARIABLE"
                    597: Substitutes the value of the environment variable $VARIABLE or
                    598: nothing if VARIABLE is not defined.  Thus you can use path names like
                    599: $HOME/.profile.
                    600: .LI "* and ?"
                    601: These characters can be used to specify incomplete filenames and
                    602: will be expanded.  If more than one file matches the name given,
                    603: then emacs will pick only the first one.
                    604: .LI "~USER"
                    605: This translates into the home directory of the user USER.  In
                    606: addition, EMACS always translates the special name ~EMACS into an
                    607: emacs library directory.  This is a directory where special
                    608: files needed by emacs are stored and where standard macros are
                    609: stored (in ~EMACS/macros).
                    610: .LI "`COMMAND`"
                    611: This causes COMMAND to be run and substitutes it's standard output.
                    612: .LE
                    613: .tr ~ 
                    614: .P
                    615: With these preliminaries out of the way, here are some of the
                    616: commands that work with files and buffers
                    617: .VL 10
                    618: .LI "^X^R"
                    619: Read file.  EMACS will prompt for a file name, which you enter as
                    620: described above. When the file name for ^X^R has been entered, EMACS
                    621: will read the specified file into the buffer.
                    622: .P
                    623: Many of the commands in this section, including ^X^R, use their
                    624: argument to specify minor variations on the basic action of the
                    625: command, rather than specifying a count.  In the normal case, (with
                    626: the default argument of one), ^X^R clears the buffer before reading.
                    627: If ^X^R is invoked with an argument that is not 1 (i.e. ^U^X^R) it
                    628: inserts the file into the buffer at the current cursor position. 
                    629: If ^X^R is invoked with a negative argument, no error message is
                    630: produced if the specified file cannot be read.
                    631: .LI "^X^W"
                    632: Write file.
                    633: Normally, if the specified file exists and has two or more links to
                    634: it, EMACS will ask whether to overwrite the existing copy of the
                    635: file or to unlink the specified file name and create a new file in
                    636: its place, leaving the contents of the old file (which may be
                    637: obtained through the other names it was linked to) unchanged.
                    638: If emacs fails or the unix system crashes during an attempted write
                    639: (either ^X^W or ^X^S), the previous contents of the file are saved
                    640: in a file .EMACS in your current working directory.
                    641: .P
                    642: Passing an argument to ^X^W (i.e. ^U^X^W) causes the contents of the
                    643: current buffer to be appended to the specified file rather than
                    644: replacing it.
                    645: .LI "^X^S"
                    646: Save buffer.  This writes out the buffer to the last file read or written if
                    647: the file has been modified.  If the buffer was not read from a file,
                    648: and has never been written to one, such that there is no file name
                    649: associated with the buffer, emacs will ask for a filename to save
                    650: the buffer in.
                    651: .LI "^X^B"
                    652: Change buffer.  EMACS allows up to 12 named buffers to be edited
                    653: concurrently.  Each buffer can hold a different file, and has it's
                    654: own current cursor position.  In emacs you work with one buffer at a
                    655: time, although you can display two buffers on the screen at the same
                    656: time.   The ^X^B command asks for the name of a buffer and makes
                    657: that buffer the current buffer.
                    658: .P
                    659: All of the commands that ask for buffer names accept either the text
                    660: name of the buffer, or the buffer number (shown in parentheses after
                    661: the editor name on the status line) for a buffer name.  The number
                    662: is convenient if you
                    663: don't like typing long names.  Emacs treats two buffer names
                    664: specially.  For any of the commands that ask for buffer name, if you
                    665: enter an empty buffer name (by just hitting return in response to
                    666: the prompt, emacs shows you a display of all of your currently
                    667: defined buffers, indicating which one is current and which ones have
                    668: been modified since they were last written.  If you type space
                    669: or 'y' in response to the prompt that appears after the display,
                    670: emacs will abort whatever command asked for the buffer name and
                    671: continue editing.  If you type 'n' in response to the prompt,
                    672: emacs will ask again for the buffer name, and then complete whatever
                    673: command asked for the buffer name.  If the buffer
                    674: name "..." is entered, a new, empty buffer with a unique name is created.
                    675: .LI "^X^F"
                    676: Find file.  This command prompts for a file name and switches to a
                    677: buffer that holds the specified file.  If the specified file has
                    678: been read into a buffer, the effect of find file is to change to
                    679: that buffer.  If no buffer holds the specified file, the effect of
                    680: find file is to create a new buffer and read the specified file into
                    681: it.  Find file is a convenient way to switch between editing several files.
                    682: If ^X^F is invoked with a negative argument, no error message is
                    683: produced if the specified file cannot be found.
                    684: .LI "^X^K"
                    685: Kill Buffer.  This command prompts for a buffer name and destroys
                    686: the specified buffer.  You cannot kill the current buffer this way. 
                    687: Text in the buffer that is killed is lost and cannot be recovered.
                    688: .LE
                    689: .H 2 "Simple Search, Replace, and other commands"
                    690: Emacs provides several commands that search for text in the buffer,
                    691: and also commands which allow you to specify global replacements,
                    692: like change every instance of "football" to "baseball".  The
                    693: simplest forms of these commands are described here, along with a
                    694: couple of miscellaneous commands that are useful.  More complex
                    695: versions of search and replace are described in the subsequent
                    696: section on advanced editing.
                    697: .VL 10
                    698: .LI "^S,^R"
                    699: Forward and Reverse Search.  These commands allow you to look for
                    700: text in your buffer.  Emacs will prompt at the bottom of the screen
                    701: with "Search" or "Reverse Search".  In response to the prompt, you
                    702: can type in characters, and emacs will begin to look for the next
                    703: match for what you type, going either forwards (^S) or backwards
                    704: (^R) from the current position in the buffer.  Emacs will
                    705: show you the text that matches what you have typed as you type it,
                    706: by moving the cursor to the text, possibly moving the display window
                    707: in the buffer if the text you are looking for was not visible.  As
                    708: you type in the string to look for, you get immediate feedback about
                    709: what emacs has found.  In addition to typing normal printing
                    710: characters that become part of the string you are looking for, you
                    711: can type some special characters to either edit the string you are
                    712: looking for, or control the search in some other way:
                    713: .VL 15
                    714: .LI "^H"
                    715: This deletes the last character of the search string, and will cause
                    716: the cursor to go back to whatever matches what is left.
                    717: .LI "escape"
                    718: Hitting escape stops the search, leaving the cursor on whatever you
                    719: last found.
                    720: .LI "^G: "
                    721: This quits from the search and goes back to the point in the buffer
                    722: where you started the search from.
                    723: .LI "return or newline: "
                    724: These both cause a newline to become part of the search string.  the
                    725: newline is displayed as "^J" (which is the control character
                    726: actually used by unix to indicate "newline") in the search string to
                    727: allow you to see it.  Thus if you type "^Sthe~end<return>of", emacs
                    728: will look for a spot where "the~end" appears at the end of one line
                    729: and "of" appears at the start of the next line
                    730: .LI "^S or ^R: "
                    731: These characters control the search.  In general, if you are going
                    732: forward, and type ^R, or going backwards and type ^S, the search
                    733: changes direction, starting from the last thing you found.  If you
                    734: are going forward and type ^S or backwards and type ^R, the search
                    735: proceeds to the next occurrence (in whatever direction you were
                    736: going) of the search string.  If you type ^S or ^R as the very first
                    737: thing after starting a search, emacs takes the \fIlast\fP string
                    738: that you successfully found with a search and makes it the current
                    739: search string.  These characters provide a convenient way to
                    740: navigate when looking for something that occurs many times in the
                    741: buffer.
                    742: .LI "^Q: "
                    743: Typing ^Q "quotes" the next character, making it part of the search
                    744: string.  This is a way to look for strings that contain control
                    745: characters.
                    746: .LI "other control characters: "
                    747: Typing any other control character causes the search to stop at
                    748: whatever you found, and then executes the command corresponding to
                    749: that control character.
                    750: .LE
                    751: .P
                    752: This kind of search is called an incremental search in emacs,
                    753: because it shows you what you have matched incrementally as you type
                    754: it.  It is very easy to learn to use.  For incremental search, the
                    755: search string must \fIexactly\fP match whatever you are looking for. 
                    756: (There is a more complicated search available that allows some
                    757: pattern matching, and is described in the advanced commands
                    758: section.)  Incremental search stops, indicating that it fails if you
                    759: reach the beginning or end of the buffer.  Normally, search
                    760: considers upper and lower case letters to be different, however you
                    761: can override this with "caseless" mode.
                    762: .LI "M-r"
                    763: Query replace.  You will be prompted for a From string and a To string.  
                    764: Each can be edited using the conventions described in the previous
                    765: section for editing filenames.  In general, Query
                    766: replace will allow you to replace all of the strings in your buffer
                    767: from the current cursor position to the end of the buffer that match
                    768: the From string with the To string.  In the To string, the '&'
                    769: character can be used to designate replacement with the From string.
                    770: To get a real '&', prefix it with a '\e'.  To get a real '\e', prefix
                    771: it with another '\e'.
                    772: EMACS then searches for the from string, positions the cursor in
                    773: front of it, and prompts you. You can control the replacement of the
                    774: item in question by what you type:
                    775: .VL 15
                    776: .LI "<space> or y"
                    777: Replace this occurrence and move on to the next one.
                    778: .LI "n or ^?"
                    779: Skip this occurrence and move on to the next.
                    780: .LI "."
                    781: Replace this occurrence and exit query replace.
                    782: .LI "^G"
                    783: Quit.  (Exit query replace without replacing the current match.)
                    784: .LI "b"
                    785: Go back to the previous occurrence of the "To" string.  It won't find
                    786: one that you have already replaced!
                    787: .LI "r"
                    788: Replace the rest without stopping to ask after each, and show the
                    789: result of the replacement after each.
                    790: .LI "R"
                    791: Replace the rest silently.  (i.e. don't show the result after each
                    792: replacement.)
                    793: .LI "<ESCAPE>"
                    794: (Version 4.6) Causes emacs to ask for a new string to replace the "To" string with
                    795: with.  The current occurrence will be replaced with what you type,
                    796: and emacs will go on to the next occurrence.
                    797: .LE 
                    798: .P
                    799: Normally, query replace will show all occurrences of the search
                    800: string.  With an argument (i.e. ^UM-r), it behaves like the
                    801: substitute command of the ed editor, looking at only the first match
                    802: of the From string on each line.  Query replace exits when the from
                    803: string is no longer matched.  '?' prints a summary of the options.
                    804: As with incremental search, the From string must match exactly to
                    805: something in the buffer.  There is a more advanced form of query
                    806: replace that allows pattern matching and is described in the section
                    807: on advanced commands.
                    808: .LI "^O"
                    809: Open up a line.  This command creates one or more empty lines at the 
                    810: current cursor position.  This is useful for inserting text in the 
                    811: middle of the buffer, while minimizing the amount of screen refresh 
                    812: needed.
                    813: .LI "^T"
                    814: Transpose the next two characters.  The cursor moves forward one
                    815: character for each transposition, such giving ^T a count as an
                    816: argument causes the character in front of the cursor to be dragged
                    817: forward through the text.
                    818: .LE
                    819: .H 1 "Advanced Editing Commands"
                    820: The commands described in the previous section are sufficient to
                    821: allow a user to perform most editing tasks efficiently.  The
                    822: commands in this section for the most part cover special situations,
                    823: like inserting control characters into files, or provide more
                    824: efficient ways to to things in certain situations.
                    825: .H 2 "Inserting 'odd' characters"
                    826: Because EMACS uses control and escape characters for commands, you
                    827: cannot directly insert them into the buffer by typing them.  The
                    828: following three commands are useful for the occasional need to get
                    829: such characters into a buffer.
                    830: .VL 10
                    831: .LI "^Q"
                    832: Quote the next character(s).  ^Q accepts one or more characters (the
                    833: number of characters specified by its argument) from the terminal
                    834: and inserts them "blindly" into the buffer without interpretation.  
                    835: Only the newline (line feed) character is interpreted.  EMACS strips
                    836: the parity bit from all characters read from the terminal, so all
                    837: characters inserted this way have zero parity.
                    838: .LI "M-q"
                    839: Quote characters and turn on parity bit.  This acts just like ^Q,
                    840: however it turns on the parity bit in the character before
                    841: inserting.  Characters inserted this way will be displayed as meta
                    842: characters by EMACS.
                    843: .LI "M-\e"
                    844: Convert the argument to a character and insert into the buffer. 
                    845: This command takes its argument and converts it to a character and
                    846: inserts it.  This provides an easy way to convert from octal or
                    847: decimal to ASCII, and is occasionally useful for inserting odd
                    848: characters for which the ASCII code is known.
                    849: .LE
                    850: .H 2 "Commands related to Windows"
                    851: Emacs provides a way to display two buffers on the screen at the
                    852: same time.  When this is done, the screen is split vertically, and
                    853: one buffer is displayed in the top half and one in the bottom half. 
                    854: The status line will show status of the current buffer.
                    855: .P
                    856: When emacs displays two buffers like this, only the one that is the
                    857: current buffer is actively updated.  The display for the other just
                    858: sits on the screen undisturbed until you return to that buffer.  You
                    859: can have the same buffer displayed in both windows, however note
                    860: that the current position is associated with a buffer, not a window,
                    861: thus if you move the current position in the lower window, when you
                    862: return to the upper window, the cursor will immediately move to
                    863: wherever you were in the lower window.  If you have different
                    864: buffers in the two windows, the current positions in both buffers
                    865: are independent, as they are with any two buffers.
                    866: .VL 10
                    867: .LI "^X2"
                    868: Enter two window mode.  Emacs will ask for a buffer to show in the
                    869: second window.  The current buffer becomes the top window, while the
                    870: buffer that you type in response to the prompt goes in the lower
                    871: window and becomes the current buffer. 
                    872: .LI "^X^^"
                    873: Grow window.  Makes the current window grow by the number of lines
                    874: specified by the argument to ^X^^.  This command works only when you
                    875: are in two window mode.  You can use a negative argument to cause
                    876: the current window to shrink.
                    877: .P
                    878: You can also use this command to grow or shrink the buffer display
                    879: with only one window on the screen.  This can be useful in avoiding
                    880: long delays when working from a low speed terminal port.
                    881: .LI "^X1"
                    882: Return to one window.  The current window grows to fill the screen.
                    883: .LI "^X^O"
                    884: Switch windows.  Make the dormant window current and the current
                    885: window dormant.
                    886: .LE
                    887: .H 2 "Advanced Search and Replace Commands"
                    888: The simple incremental versions of search and replace described
                    889: above require that you match what you are looking for exactly.  The
                    890: commands described here allow pattern matching of regular
                    891: expressions, like those used by the ed editor.  
                    892: .P
                    893: The description of regular expressions is to complex to reproduce
                    894: here.  Refer to the manual for ed for a brief description.  Emacs
                    895: provides two additional special sequences for regular expressions. 
                    896: The character sequences "\e<" and "\e>" can be used
                    897: to match the beginning and end of words.  Thus the string \e<the\e>
                    898: will match any occurrence of the word "the", but not any word
                    899: containing the sequence of letters "the", such as "other".
                    900: .P
                    901: In constructing regular expressions, it is important to remember
                    902: that in order to avoid the special significance of a character
                    903: like '.' or '*', you must prefix it with a backslash '\e'.  If you
                    904: must have control characters in regular expressions, you can quote
                    905: them for emacs by typing ^Q before the control character.
                    906: .P
                    907: Note also that regular expression searches are constrainted to
                    908: matching only those things that fit all one one line.
                    909: .P
                    910: .VL 10
                    911: .LI "M-^S"
                    912: Regular Expression Search.  This will prompt for a
                    913: regular expression to search for.  You can edit the expression like
                    914: editing filenames.  You can search forward or backward, either
                    915: ending at the beginning or end of buffer, or wrapping around (like
                    916: ed) depending on the argument given to the search command:
                    917: .VL 10
                    918: .LI "1"
                    919: (default) Search forward, wrapping from the end of the buffer to the
                    920: beginning, and failing only if the buffer contains no match for the
                    921: given string. 
                    922: .LI "-1"
                    923: Search backwards, wrapping around from the beginning to end of the
                    924: buffer.
                    925: .LI "> 1"
                    926: Search forwards, stopping at the end of the buffer.
                    927: .LI "< -1"
                    928: Search backwards, stopping at the beginning of the buffer.
                    929: .LE
                    930: .P
                    931: In all cases, you can have emacs repeat the search, looking for the
                    932: next (or previous) occurrence of the search string by typing ^S or ^R
                    933: immediately after the regular expression search.  
                    934: .LI "M-^R"
                    935: Regular expression query replace.  This is just like
                    936: query replace, except that a regular expression is allowed in the
                    937: search string.  You may also use the special character sequence
                    938: \e<digit>, to specify that the characters matched by the
                    939: nth subexpression (delimited by \e( and \e)) are to be used in the
                    940: replacement string.
                    941: .LE
                    942: .H 2 "Macros, Keyboard Macros, and Input Files"
                    943: Emacs provides a number of ways for a user to construct editor
                    944: programs from sequences of commands.  The macro programming facility
                    945: is the best way to construct substantial programs, and is described
                    946: in a companion document.  The commands listed here deal with two
                    947: other ways of saving a sequence of emacs commands for later use,
                    948: Input files and Keyboard Macros, and with the commands that load
                    949: "full" macros into Emacs for your use.
                    950: .VL 10
                    951: .LI "^X^I"
                    952: Re-direct input.  This command directs EMACS to take input from a
                    953: file.  The file is assumed to contain EMACS commands, and can be
                    954: created by editing with EMACS, using ^Q to enter control and escape
                    955: characters.  You can also create an input file by using the commands to
                    956: create keyboard macros described below, and then saving the
                    957: resulting keyboard macro file.
                    958: .P
                    959: This command can be used to perform a series of
                    960: commands on the current  buffer, or to set up a standard set of
                    961: initializations.  Thus the file should contain \fIexactly\fP what
                    962: you would type from the keyboard to perform whatever task you wish
                    963: to perform.   Note that if the file contains only printable ASCII text,
                    964: tabs, and newlines, ^X^I will effectively read the file into the
                    965: buffer at the  current location.  Note, however, that this is very
                    966: slow, and much better done with ^X^R.
                    967: .P
                    968: A file suitable for executing with ^X^I is known as a keyboard
                    969: macro, because it is interpreted just as if it had been typed from
                    970: the keyboard.  The following commands provide a sensible way to
                    971: create and execute keyboard macros.
                    972: .LI "^X(
                    973: Begin Keyboard Macro.
                    974: This command starts remembering the keystrokes you enter so that
                    975: they can later be executed as a keyboard macro.
                    976: .LI "^X)
                    977: End Keyboard Macro.
                    978: This command stops remembering keystrokes for a keyboard macro.
                    979: .LI "^XE
                    980: Execute Keyboard Macro.
                    981: This command retrieves and executes the keystrokes typed between
                    982: ^X( and ^X).  Emacs executes them just like they came from your
                    983: terminal.  Keyboard macros are saved in the file .emacs_kbd in your
                    984: home directory.  These are saved between sessions, so that ^XE is
                    985: in fact the same as invoking ^X^I (Input file) and giving
                    986: $HOME/.emacs_kbd as the file name to execute.  Note again that you
                    987: can use ^X( and ^X) to create a keyboard macro, save it for
                    988: later use by moving the file $HOME/.emacs_kbd to another file, and
                    989: then invoke it by invoking ^X^I with the name of the file you saved.
                    990: .LI "^Xd"
                    991: Define macros.
                    992: This command treats the current buffer as definitions of new macro
                    993: commands.  The commands are defined and become available for use. 
                    994: For a complete description, consult the macro programming manual. 
                    995: Note that you should not use ^Xd with the file created from a
                    996: keyboard macro.  The format of "full" macros is different.  Macros
                    997: are explained in a separate manual.
                    998: .LI "^X^L"
                    999: .tr ~~
                   1000: Load macros.
                   1001: This command allows you to load "full" macro definitions from a
                   1002: file.  It is described in the macro programming manual, however even if
                   1003: you do not program your own macros, you may be interested in using
                   1004: those defined by others and will use ^X^L to load the resulting
                   1005: files.  On most systems on which emacs is installed, there is a library
                   1006: directory of macros available for general use in ~EMACS/macros, and
                   1007: the file ~EMACS/macros/CATALOG gives a catalog to the available
                   1008: macros.
                   1009: .tr ~ 
                   1010: .LI "^Z"
                   1011: Exit level.
                   1012: In an emacs editing session, you may wind up in a nested level of
                   1013: emacs.  This can happen either by typing "break", and responding "y"
                   1014: to suspend whatever you were doing and invoke a new command
                   1015: interpreter, or by invoking a macro that uses the recursive edit
                   1016: command to allow you to edit something from inside of a macro.  ^Z
                   1017: exits your current level of emacs, returning to whatever called it.
                   1018: .P
                   1019: The ^Z command performs a function similar to ^X^C, and in fact if
                   1020: you have not invoked a macro that uses the "recursive edit" command,
                   1021: and have not hit break, both will cause you to exit from emacs.
                   1022: .LE
                   1023: .H 2 "Commands that escape to Unix"
                   1024: There are several commands that interact with unix, allowing you to
                   1025: run unix commands or send mail from inside of emacs.
                   1026: .VL 10
                   1027: .LI "M-!,M-$"
                   1028: Unix escape.  These two commands implement five different ways to run
                   1029: unix commands from emacs.  In all cases, the commands prompt for the
                   1030: name of a unix command to be run and run it.  The command is run
                   1031: through your normal shell as indicated by $SHELL.  If you enter the
                   1032: special command name "sh", it runs your normal shell instead of
                   1033: "sh".  To facilitate writing programs that interact with emacs, the
                   1034: environment variable "filename" is set to the name of the current
                   1035: file in emacs when the command is run. The following summarizes the
                   1036: various flavors:
                   1037: .VL 8
                   1038: .LI "M-!"
                   1039: Run the command, suspending emacs while it runs.
                   1040: .LI "^UM-!"
                   1041: Run the command and feed it the contents of your current buffer as
                   1042: standard input.  When the buffer is exhausted, the command will see
                   1043: an end of file.
                   1044: .LI "M-$"
                   1045: Run the command with standard input from your terminal but standard
                   1046: output and standard error are captured in the buffer ".exec", which
                   1047: is created if it doesn't already exist.  (If it does exist, the
                   1048: command output replaces its current contents).  Normally, output
                   1049: from the command is also displayed on the terminal as it is
                   1050: produced, but this can be overridden via the usilent or noecho modes
                   1051: described in the section on modes. 
                   1052: This is useful for saving a copy of the error messages produced by a
                   1053: C compilation of a file being edited, for example.  The file name of
                   1054: the .exec buffer is set to the command line that produced it.  This
                   1055: can be useful if you want to re-execute the same command, as you can
                   1056: make .exec your current buffer, enter M-$, and enter ^Y followed by
                   1057: newline as the command line.  ^Y gets the old command line back, and
                   1058: newline will execute it.
                   1059: .LI "^UM-$"
                   1060: Run the command and append the output to the buffer ".exec".  This
                   1061: is just like the above except that the .exec buffer is not cleared
                   1062: and the output from the command is appended to it.  It also inserts
                   1063: the command line into the .exec buffer when the command is run.
                   1064: .LI "M-0M-$"
                   1065: Start the command as a sub-process in the current buffer.  The
                   1066: command is run with input and output connected to pipes maintained
                   1067: by emacs.  Control returns to emacs immediately while the command
                   1068: runs asynchronously.  Output produced by the command is
                   1069: asynchronously appended to the buffer as it is produced, and the
                   1070: mark is set to the end of the output produced by the command.  Input
                   1071: can be sent to the command in one of two ways:  First, whenever you
                   1072: enter a newline in this buffer and the mark is on the current line,
                   1073: emacs will send the text between the mark and your newline to the
                   1074: sub-process.  This means that if you run a shell in a buffer, you
                   1075: can interact with it by typing in the buffer just as if it were
                   1076: running independent of emacs.  When it prints its prompt, the mark
                   1077: is set to the end of the prompt, and when you hit return, the
                   1078: current line after the prompt is sent to the shell.  The second way
                   1079: to send input to the buffer is to use the ^X^T command described
                   1080: in the next section.  This sends the current region to a buffer.  If that buffer
                   1081: has a sub-process, the region is sent to the end of the buffer and
                   1082: also to the sub-process as well.  One use of this feature is to
                   1083: provide a rapid way to send new function and data declarations to an
                   1084: interpreted language like LISP.
                   1085: .P
                   1086: This feature is new as of emacs 4.9 and has some limitations you
                   1087: should be aware of.  First, you can have only one sub-process
                   1088: running at a time.  Running a second one will kill the first one. 
                   1089: Killing the buffer will also kill the sub-process.  (Note that it
                   1090: may not kill all of the descendants of the sub-process.)  On
                   1091: Berkeley unix systems (4.2BSD), this feature is reasonably
                   1092: inexpensive to use and the response from the command will be quick. 
                   1093: On System V Unix, there may be some delay between the time at which
                   1094: output is produced and the time at which it is seen.  Emacs will
                   1095: always look for output from the process before looking for
                   1096: characters typed by you at the terminal, however if you are not
                   1097: typing, it may take some time for emacs to notice command output. 
                   1098: (On some unix/370 and amdahl unix systems command output is not
                   1099: noticed until you type at emacs due to a bug in the I/O software on
                   1100: these systems).  Some commands may not run properly as
                   1101: sub-processes, depending on what version of the standard I/O
                   1102: software they were compiled with.  Most interactive programs will,
                   1103: however, function properly in this mode.  Because of the different
                   1104: nature of the implementation, this feature may also cause emacs to
                   1105: consume more CPU time while a sub-process is running.
                   1106: .LE
                   1107: .LI "^X^G"
                   1108: Interrupt sub-process.  If the current buffer has a sub-process running,
                   1109: this command sends an interrupt signal (SIGINT) to that process,
                   1110: just as if you had typed your normal interrupt character from the
                   1111: terminal.  If you give this command an argument, it sends the signal
                   1112: number corresponding to that argument.  (For example, M-9^X^G would
                   1113: send a kill signal to the sub-process.)
                   1114: .LI "M-^M"
                   1115: Mail.  This command takes the current buffer as unix mail, and sends
                   1116: it.  The buffer must contain at least one line starting To: , which
                   1117: specifies the recipients of the mail.  Each recipient is delimited by a
                   1118: space.  Any number of recipients may be listed in a single line,
                   1119: however to improve readability, additional To: or Cc: lines may be
                   1120: used in specifying lists of recipients.
                   1121: Any errors encountered by mail are printed.  If the environment
                   1122: variable $MAILER is set, then it is taken as the name of the command
                   1123: to run to send the mail.  Otherwise, emacs runs "mail".
                   1124: .LE
                   1125: .H 2 "Miscellaneous commands"
                   1126: The remaining commands handle special situations that occur once in
                   1127: a while.
                   1128: .VL 10
                   1129: .LI "^X^T"
                   1130: Send text to another buffer.
                   1131: This command sends the text between the mark and the current cursor
                   1132: position in the current buffer to another buffer.  EMACS prompts for
                   1133: the name of the other buffer, and the text is inserted into that
                   1134: buffer at the current cursor position for that buffer.  The current
                   1135: buffer remains unchanged.  If an argument is given, it selects the
                   1136: mark to use.  If the target buffer has a sub-process running under
                   1137: it, then the region is also sent to that process  and is always put
                   1138: at the end of the buffer. (See the description of M-$ for more
                   1139: information.)
                   1140: .LI "M-s"
                   1141: Statistics
                   1142: This command displays some statistics about your editing session,
                   1143: such as how may characters emacs has sent to you and how many
                   1144: characters you have typed.  The information is normally not of much
                   1145: interest.
                   1146: .LI "^X="
                   1147: Status.  Displays status information (current line, number of lines
                   1148: in buffer, current character position, number of characters in
                   1149: buffer, etc.).                                                      
                   1150: .LI M-/
                   1151: Begin comment.  This command begins a C program comment by moving to
                   1152: the appropriate column and putting a /* in the buffer.  The next
                   1153: newline will close the comment and automatically append a */
                   1154: .LI "M-_"
                   1155: Underline word.  This command underlines the following word of text.
                   1156: Useful for generating underlined text for mm.
                   1157: .LI "^C"
                   1158: Capitalize.
                   1159: This command capitalizes the letter under the cursor and moves the
                   1160: cursor forward one position.  Lower case alphabetic characters are
                   1161: converted to upper case, while other letters are unchanged.
                   1162: .LI "M-c"
                   1163: Capitalize word.  The letter under the cursor is capitalized, and
                   1164: the cursor is moved to the beginning of the next word.
                   1165: .LI "M-l (4.6)
                   1166: Lower case letter.  The letter under the cursor is capitalized and
                   1167: the cursor is moved to the right.
                   1168: .tr ~~
                   1169: .LI "M-~"
                   1170: Unmodify Buffer.  This command causes a buffer to be marked as
                   1171: unmodified even if it has been modified since the last write.  Doing
                   1172: this will avoid having EMACS ask whether or not to write the buffer
                   1173: when you exit if you know that you do not want to rewrite the
                   1174: buffer.  With an argument greater than 1 (i.e. ^UM-~) this command
                   1175: marks the buffer as modified.  With an argument of zero or a
                   1176: negative argument, it does not change the state of the buffer but
                   1177: returns the buffer modified flag as its result.
                   1178: .tr ~ 
                   1179: .LI "M-t"
                   1180: Set terminal type.  Prompts for terminal type and sets the character 
                   1181: sequences used to display text to be appropriate for that terminal.  
                   1182: Most common terminal types are supported.
                   1183: Emacs uses terminal commands for relative and absolute
                   1184: cursor position, clear screen, clear from the cursor to the end of
                   1185: line, insert and delete lines, and insert and delete characters. 
                   1186: The number of characters transmitted for re-display will depend on
                   1187: which of these functions are available.  Thus EMACS transmits fewer
                   1188: characters on an adm31, which has all of these functions, than with
                   1189: an adm3a, which has only cursor positioning and clear screen.  Most
                   1190: terminals fall between these extremes.
                   1191: .LI "M-^L"
                   1192: Redisplay top.  Redisplay the window with the current line at the top. 
                   1193: This is useful for viewing the lines that follow the current line. 
                   1194: Note that this does not re-create the entire display, as does ^L, so
                   1195: it will not correct garbling.
                   1196: .LI M-"
                   1197: Auto Fill Buffer.  This command re-adjusts the lines in the buffer
                   1198: so that each line contains 72 or fewer characters.  The adjustment
                   1199: is done like nroff (mm) by moving words from one line to another. 
                   1200: nroff or mm command lines and blank lines are preserved as is.  This
                   1201: command can be used to improve the way in which an nroff or mm
                   1202: source file displays, by getting rid of long lines, without
                   1203: affecting the output.
                   1204: .LI "M-:"
                   1205: Remap character (version 4.9). The command M-: allows you to re-map
                   1206: character commands. 
                   1207: It prompts for a character (or a meta or ^X sequence) and a command 
                   1208: (also a character sequence) to put on that character.  This allows you to
                   1209: re-configure EMACS to your liking.  You can re-map any character you
                   1210: like, including characters like ^X, escape, and ^U.  Note that the
                   1211: command string is always interpreted with the default bindings (as
                   1212: documented in this memo), and not with the bindings set up with
                   1213: earlier M-: commands.  Thus M-:^A^B followed by M-:^B^A will swap
                   1214: the ^A and ^B commands, since the command ^A in the second M-:
                   1215: command refers to the default meaning of ^A, not that established by
                   1216: the first M-: command.  M-: also changes the behavior of the
                   1217: control characters used to edit filenames and other string
                   1218: parameters, but does not change the behavior of some of the
                   1219: characters that have special meaning in response to prompts issued
                   1220: by various commands, such as the responses to query replace.
                   1221: .P
                   1222: With an argument of 2 or 4 (^UM-:), this command asks for a
                   1223: character and a macro name to assign to that character.  This allows
                   1224: you to bind macro commands to characters by their names instead of
                   1225: their current character binding.
                   1226: .P
                   1227: With an argument of 0 (M-0M-:), this command resets all of the
                   1228: keyboard character bindings to their default values.  This may be
                   1229: useful in recovering from trouble.
                   1230: .P
                   1231: In all cases, the bindings established with this command and through
                   1232: defining macros apply to both character commands typed from the
                   1233: keyboard and to characters in keyboard macros and initialization
                   1234: files.  They do not apply to the character commands executed in the
                   1235: body of "full" macros.  See the section on macros and the
                   1236: macro command manual for further information on bindings.
                   1237: .LI "^X^M"
                   1238: Set Mode.  This command can be used to set parameters to customize
                   1239: the behavior of emacs.  For more information on modes, see the next
                   1240: section.
                   1241: .LE
                   1242: .H 1 "Modes"
                   1243: EMACS has a variety of parameters that can be
                   1244: changed from commands entered in the terminal.
                   1245: These are referred to as "modes" in this document and in the
                   1246: messages printed by emacs.  
                   1247: There are two types of modes:  on/off
                   1248: modes and  integer modes.  The '^X^M' command can
                   1249: be used to display or set these parameters.  '^X^M' will prompt for
                   1250: the name of the mode to set.  If you enter a return in response to
                   1251: the prompt, the current mode settings are displayed.  Normally,
                   1252: emacs will display the value of each integer mode, and the name of
                   1253: each on/off mode that is currently on.  If you enter return in
                   1254: response to '^U^X^M', emacs will also display the names of the
                   1255: on/off that are currently off, indicating for each mode whether it
                   1256: is on or off.
                   1257: .P
                   1258: Modes are set by giving the name of the mode to set in response to '^X^M'.  
                   1259: If an on/off mode is given, it is turned on if no argument
                   1260: is given to '^X^M', and turns it off if an argument is specified. 
                   1261: (Thus '^X^M' turns on, '^U^X^M' turns off).  For an integer mode, the
                   1262: mode is set to the value of the argument.
                   1263: .P
                   1264: The modes and their types are listed in the following sections,  along
                   1265: with their default values.  For ON/OFF modes, the default is \fBhighlighted\fP.
                   1266: The modes are grouped into 4 broad categories:
                   1267: .BL
                   1268: .LI
                   1269: Display modes change the information in the buffer is displayed, but
                   1270: have no effect on it's content.
                   1271: .LI
                   1272: Interface modes change the command interface to emacs in minor ways,
                   1273: but don't really change any of the behavior of the commands.
                   1274: .LI
                   1275: Command modes change the way in which some of the commands work.
                   1276: .LI
                   1277: Terminal modes change the way that emacs uses the terminal, and
                   1278: exist mainly to get around special problems caused by certain kinds
                   1279: of terminals.
                   1280: .LE
                   1281: .H 2 "Display modes"
                   1282: .VL 15
                   1283: .LI "lnumb"
                   1284: Line Number Mode (\fBON\fP/OFF)
                   1285: .br
                   1286: This mode causes the current line number
                   1287: to display at the left of each line.
                   1288: .LI "lnowid"
                   1289: line number width (INTEGER=4)
                   1290: .br
                   1291: This parameter specifies how many character positions are reserved
                   1292: for the line number when in line number mode
                   1293: .LI "height"
                   1294: Display height (INTEGER=<screen_size-4>)
                   1295: .br
                   1296: This parameter dictates how many lines from the buffer will be
                   1297: displayed on the screen.  It is automatically set based on the
                   1298: terminal type whenever the terminal type is set, and is changed by
                   1299: the one and two window commands.  This mode and width mode can be
                   1300: set explicitly to restrict the display to a subset of the entire
                   1301: terminal screen, or can be used to allow you to use a terminal with
                   1302: a settable screen size for which emacs does not have the right size
                   1303: built in.
                   1304: .LI "width"
                   1305: Screen Width (INTEGER = <set based on terminal type>)
                   1306: .br
                   1307: This mode specifies the width of the display screen.
                   1308: .LI "tabstop"
                   1309: Tabstop (INTEGER=8)
                   1310: .br
                   1311: This mode is the number of characters per tab that are displayed. 
                   1312: Displaying a deeply indented c program may look much better if
                   1313: tabstop is set to something smaller than the eight default.
                   1314: .LI "backspace"
                   1315: Backspace Mode (ON/\fBOFF\fP).
                   1316: .br
                   1317: Turning on backspace mode causes backspace
                   1318: characters (^H) to display as moving back one column rather than as
                   1319: a ^H.  This is very useful for viewing nroff output or manual pages,
                   1320: but editing the resulting text can be a bit tricky, because it is
                   1321: impossible to tell whether the character under the cursor is the one
                   1322: being displayed, one that has been overprinted, or a backspace.
                   1323: .LI "time"
                   1324: Time mode (ON/\fBOFF\fP)
                   1325: .br
                   1326: When time mode is  on, EMACS will display the
                   1327: time of day below the mode line (the one that says EMACS and the
                   1328: buffer name).  The time is updated every time a character is read. 
                   1329: Using time mode when entering lots of text is expensive.
                   1330: .LI "display percent (4.5)"
                   1331: Display cursor as percent of buffer (ON/\fBOFF\fP)
                   1332: .br
                   1333: If set, emacs will display the percentage of the current buffer
                   1334: beyond the current cursor position on th mode line
                   1335: .LI "7bit_ascii (4.8)"
                   1336: Display only 7 bit characters (ON/\fBOFF\fP)
                   1337: This mode controls how characters with the high order bit set are
                   1338: displayed.  With this mode off, they are displayed as "M-" followed
                   1339: by the character.  With this mode ON, they are displayed as
                   1340: highlighted (underlined) characters.  This mode is most useful for
                   1341: editing files used with Personal Computer word processing systems
                   1342: which use the high order bit for formatting control.
                   1343: .LI "leftmargin" (4.9)"
                   1344: Left most displayed Column (INT=0).
                   1345: In picture mode (See Section 5.3), emacs automatically scrolls the
                   1346: window left or right to keep the cursor on the screen.  This mode
                   1347: allows you to examine or alter this behavior.  The value of
                   1348: leftmargin is the left
                   1349: most displayed column.  Setting it will cause the screen to scroll
                   1350: left or right.  In all cases, if the cursor wanders out of the
                   1351: window, emacs will pick it's own leftmargin to keep it on the
                   1352: screen.
                   1353: .LE
                   1354: .H 2 "Interface modes"
                   1355: .VL 15
                   1356: .LI "save"
                   1357: Auto Save Mode (ON/\fBOFF\fP)
                   1358: .br
                   1359: If auto save mode is on, EMACS will
                   1360: automatically write the current buffer after savetype characters
                   1361: have been entered since the last save.  This mode reduces the chance
                   1362: of disaster in the event of a crash, but can be annoying by causing
                   1363: a lot of writing.  
                   1364: .LI "savetype"
                   1365: Save type ahead (INTEGER=256)
                   1366: .br
                   1367: If auto save mode is on, this is the
                   1368: number of keystrokes between saves.
                   1369: .LI "verbose"
                   1370: Verbose mode (\fBON\fP/OFF)
                   1371: .br
                   1372: When verbose mode is on, EMACS will prompt
                   1373: for more input when ^X, ^Q, escape, or ^U are entered.  This makes
                   1374: it easier to keep track of where you are.
                   1375: .LI "keepscroll"
                   1376: scroll keep lines (INTEGER=0)
                   1377: .br
                   1378: This parameter specifies how many lines are to be preserved on the
                   1379: screen when forward page or backward page is invoked.
                   1380: .LI "caseless"
                   1381: ignore case in searches 
                   1382: .br
                   1383: This mode causes case lower case characters in the search string to
                   1384: match either case in the buffer on all searches and query replace.
                   1385: .LI "mailtype"
                   1386: check mail interval (INT=100)
                   1387: .br
                   1388: This parameter determines the number of input characters between
                   1389: checks of your mailbox ($MAIL).  When emacs discovers something in
                   1390: your mailbox, a warning is displayed at the bottom of the screen.
                   1391: .LI "end_newline"
                   1392: Behavior of ^N at end of buffer (ON/\fBOFF\fP)
                   1393: .br
                   1394: This parameter determines whether executing the ^N command in the
                   1395: last line of the buffer adds a new line to the buffer (mode ON) or
                   1396: whether it signals an error (mode OFF).
                   1397: .LI "usilent"
                   1398: Silent UNIX commands (ON/\fBOFF\fP)
                   1399: .br
                   1400: If set, this parameter causes emacs not to display the command name
                   1401: or output for M-$.  This is useful for invoking a unix command in a
                   1402: macro and capturing the output without disturbing the display.
                   1403: .LI "noecho"
                   1404: Don't echo M-$ output (ON/\fBOFF\fP)
                   1405: .br
                   1406: If set, emacs will not echo the output of commands run with M-$ to
                   1407: the terminal.  The difference between noecho and usilent is that
                   1408: usilent isolates commands run from emacs from the terminal
                   1409: completely, so that emacs does not clear the screen and does not
                   1410: have to redraw it when the command exits.  noecho has no effect at
                   1411: all on commands run via M-!, but does eliminate the display of
                   1412: output from M-$.  It is most useful when you wish to run something
                   1413: that will produce lots of output, capturing the output in .exec.
                   1414: .LI "eofnl (4.6)"
                   1415: Write newline at end of file. (\fBON\fP/OFF)
                   1416: .br
                   1417: This mode when on causes emacs to append a newline character to any
                   1418: file written by emacs from a buffer that does not end in a newline. 
                   1419: Emacs allows you to create files that do not end in newline. 
                   1420: Unfortunately, many unix tools get confused when reading such a
                   1421: file.  This mode is on by default, and prevents you from writing a
                   1422: file that will cause troubles.  For editing files which you do not
                   1423: want to end in a newline, turn this mode off.
                   1424: .LI "savelink (4.6)"
                   1425: Preserve links on write (ON/\fBOFF\fP)
                   1426: .br
                   1427: Turning this mode on will cause emacs to automatically
                   1428: write into the existing file when writing to a file with multiple
                   1429: links, instead of asking the user what to do in this situation.
                   1430: .LI "search_newline (4.6)"
                   1431: Newline ends search (ON/\fBOFF\fP)
                   1432: .br
                   1433: Turning this mode on causes incremental search to stop if a newline
                   1434: or carriage return is typed from the terminal.
                   1435: .LI "autoload (4.7)"
                   1436: Automatic macro loading (\fBON\fP/OFF)
                   1437: .br
                   1438: This mode controls the automatic loading of macro packages when an
                   1439: undefined macro is called.  If autoload mode is on and an undefined
                   1440: macro by the name of <name> is called, emacs will first
                   1441: attempt to load
                   1442: .tr ~~
                   1443: $EMACS_LIB/<name> (resolving the environment variable $EMACS_LIB),
                   1444: and then try to load ~EMACS/macros/<name>.  If either of these
                   1445: files exists and defines a macro called <name>, that macro will be
                   1446: called and execution will continue.  Otherwise, an error message is
                   1447: produced.  This allows macros to be
                   1448: loaded incrementally, only when needed.  With the mode off, any
                   1449: attempt to call an undefined macro results in an error.
                   1450: .tr ~ 
                   1451: .LE
                   1452: .H 2 "Command modes"
                   1453: .VL 15
                   1454: .LI "fill"
                   1455: Auto Fill Mode (\fBON\fP/OFF)
                   1456: .br
                   1457: If this mode is on, emacs will
                   1458: automatically move to the next line whenever the cursor moves to the
                   1459: end of the line, breaking the line at a word boundary.  This is very
                   1460: useful for entering text, as no newlines need be entered in the
                   1461: middle of the text.
                   1462: .LI "fillcol"
                   1463: Auto Fill Column (INTEGER=72)
                   1464: .br
                   1465: This is the character position beyond which auto fill mode will
                   1466: cause the line to be broken.
                   1467: .LI "c"
                   1468: C Mode (ON/\fBOFF\fP)
                   1469: .br
                   1470: This mode automatically indents for a C source
                   1471: file.  Each line is indented with the number of tabs in the last 
                   1472: non-comment line plus the net excess { characters over } characters
                   1473: in the last line.  This mode is particularly useful for entering
                   1474: c program text.
                   1475: .P
                   1476: This mode also changes the behavior of the '}' character, so that
                   1477: when you type a '}' as the first non-blank character on a line, it
                   1478: will adjust the indentation automatically to one less than it was. 
                   1479: Thus you can type the following kind of statement and get it to
                   1480: indent properly.
                   1481: .DS
                   1482: 
                   1483: if(test) {
                   1484:         statement;
                   1485: }
                   1486: 
                   1487: .DE
                   1488: .LI "comcol"
                   1489: Comment Column (INTEGER=40)
                   1490: .br
                   1491: This is the column in which comments
                   1492: entered via M-/ begin.
                   1493: .LI rigid_newline
                   1494: rigidly insert newlines (ON/\fBOFF\fP)
                   1495: .br
                   1496: This mode causes any newline to insert a newline into the file. 
                   1497: With this mode off (the default).  a newline will not insert
                   1498: anything if the following line is empty, but will simply move to the
                   1499: next line.
                   1500: .LI "readonly"
                   1501: Read only buffer (ON/\fBOFF\fP)
                   1502: .br
                   1503: If this mode is turned on, saving the current buffer is disabled. 
                   1504: ^X^S will complain with an error message, autosaving will not take
                   1505: place, and emacs will not complain if you try to exit without
                   1506: writing buffers.
                   1507: .LI "picture (4.5)"
                   1508: Tailor editing for two dimensional displays (ON/\fBOFF\fP)
                   1509: .br
                   1510: If set, emacs treats the buffer as an "electronic blackboard",
                   1511: rather than the exact contents of a unix file.  The display shows a
                   1512: rectangular region of the blackboard through a window.  Characters
                   1513: beyond the right margin are not displayed, but are indicated by
                   1514: a '!' in the right margin.  The window is moved left or right to
                   1515: keep the cursor in the window.  "leftmargin" mode gives you some
                   1516: explicit control over the window, but in general it is self
                   1517: adjusting.  If the window is not at the left
                   1518: edge of the blackboard, then the character offset of the left edge
                   1519: of the display is given on the mode line, in front of the editor
                   1520: name.
                   1521: .P
                   1522: Picture mode changes the behavior of several basic commands to be
                   1523: more suitable for two dimensional editing.
                   1524: .VL 10
                   1525: .LI "^N/^P"
                   1526: These move to the same column in the target line, extending the
                   1527: target line with spaces if necessary.
                   1528: .LI "^F/^B"
                   1529: These will not move off the current line.  ^B will stick at the left
                   1530: margin, while ^F will continue to extend the line to move to the
                   1531: request column.
                   1532: .LI "^W/^Y"
                   1533: These treat the region to be deleted as a rectangle, bounded by the
                   1534: mark and the cursor position at the corners.  All text in the
                   1535: rectangle defined by these positions is killed by ^W.  ^Y brings
                   1536: text back in the same way.  All text deleting commands behave like
                   1537: ^W, in that the start and end positions of the text region to be
                   1538: deleted are taken as corners of a rectangle.  When the text region
                   1539: being deleted is all on one line, behavior is identical to normal
                   1540: emacs, however deletion across line boundaries via commands like
                   1541: M-d may not do anything sensible.
                   1542: .LE
                   1543: .P
                   1544: Picture mode is probably most useful with nodelete mode, notabs
                   1545: mode, and overwrite mode all set.  You can use picture mode without
                   1546: the others set, but the presence of tabs or control characters in
                   1547: the buffer may give unexpected results when you navigate in the
                   1548: file.  This mode is particularly useful for editing fixed format
                   1549: tables, picture images of "typewriter art" for use with the "gc"
                   1550: graphics output package, and other two dimensional information.
                   1551: .LI "overwrite"
                   1552: Overwrite mode (ON/\fBOFF\fP)
                   1553: .br
                   1554: In overwrite mode, text entered will
                   1555: overwrite text already there.  Text entered when the cursor is at
                   1556: the end of a line will be inserted as before.  Overwrite mode may be
                   1557: more natural for some people when making corrections.
                   1558: .LI "nodelete"
                   1559: No deletion (ON/\fBOFF\fP)
                   1560: .br
                   1561: With this mode set, text deleted in the file is not closed up but
                   1562: instead is overwritten with spaces.  After any deletion, the cursor
                   1563: reverts to the first character of the region deleted.  "nodelete"
                   1564: mode should probably be part of overwrite mode, however overwrite
                   1565: mode considerably pre-dated it and was left alone for upward
                   1566: compatibility.
                   1567: .LI "notabs"
                   1568: Eliminate tabs (ON/\fBOFF\fP)
                   1569: .br
                   1570: With this mode set, emacs does not display tab characters in the
                   1571: buffer as whitespace, but instead shows them as ^I (control-i),
                   1572: which is the ASCII code for a tab.  When you enter a tab by typing
                   1573: ^I or tab, emacs converts it to the proper number of spaces to come
                   1574: up to the next tabstop column.  Emacs does not convert tabs already
                   1575: in the file, though there are macros that do this.
                   1576: .P
                   1577: The main use of this mode is in creating and editing fixed format
                   1578: information in picture mode, though it can also be useful in
                   1579: showing you where tabs are in your buffer.
                   1580: .LE
                   1581: .H 2 "Terminal modes"
                   1582: .VL 15
                   1583: .LI "nobell"
                   1584: No Bell (ON/\fBOFF\fP)
                   1585: .br
                   1586: Ordinarily, unexpected conditions, such as errors or quitting out
                   1587: of commands, cause the terminal bell to ring.  On some adm3a
                   1588: terminals, This causes some kind of disaster to occur.  Turning on
                   1589: nobell mode prevents EMACS from ringing the terminal bell.
                   1590: .LI "tspeed"
                   1591: Terminal Speed (INT=<terminal dependent>)
                   1592: .br
                   1593: This parameter is the speed of your terminal in milliseconds per
                   1594: character.  This parameter is set whenever you enter emacs and is
                   1595: used in determining how to update the display most efficiently. 
                   1596: .LI "controlify"
                   1597: Controlify mode (ON/\fBOFF\fP)
                   1598: .br
                   1599: When on, this mode causes a particular character (normally ^^, but
                   1600: settable to another character with the ctl_char described below), to
                   1601: act as a prefix specifying that the next character is to be
                   1602: interpreted as a control character.  This mapping takes place at any
                   1603: time, not just when entering commands.  Thus the sequence ^X^^s will
                   1604: be mapped into ^X^S, and cause the save command to be invoked.  The
                   1605: sequence ^^q^^m typed in response to a request for a file name will
                   1606: be mapped into ^Q^M, which will be interpreted as asking for a file
                   1607: name of ^M.  Controlify mode is primarily intended to allow you to
                   1608: enter characters which cannot be sent transparently from your
                   1609: terminal to emacs.  The most frequent examples are ^S and ^Q, which
                   1610: cannot be sent by some terminals and some local area networks. 
                   1611: By setting controlify mode, you can send these characters with ^^s
                   1612: and ^^q.
                   1613: .LI "ctl_char (4.6)"
                   1614: Controlify Character (INT=30)
                   1615: .br
                   1616: This parameter sets the value of the character used when in controlify
                   1617: mode to indicate that the next keystroke should be interpreted as a
                   1618: control character.  It is the ascii value of the character to be
                   1619: used.
                   1620: .LI "flow_lim (4.6)"
                   1621: Flow Control Limit (INT=0)
                   1622: .br
                   1623: This parameter enables the use of xon/xoff flow control during
                   1624: output to control the rate of output to the terminal.  Emacs
                   1625: normally turns xon/xoff flow control off to allow ^S and ^Q to be
                   1626: passed to emacs to be used in specifying commands.  If flow_lim is
                   1627: non-zero, then whenever more than flow_lim characters are sent to
                   1628: the terminal at once, xon/xoff flow control will be temporarily
                   1629: enabled to allow the terminal to send ^S to request that unix stop
                   1630: output.  xon/xoff flow control is disabled when output is complete. 
                   1631: The only effect you will see is that you cannot type ^S or ^Q ahead
                   1632: while emacs is updating the screen.  Normally, emacs supplies
                   1633: sufficient padding to allow it to run without xon/xoff flow control,
                   1634: however for some terminals at high speeds xon/xoff flow control is
                   1635: required.  In this case only, set flow_lim to a number somewhat
                   1636: larger than the terminal's character buffer (typically 32, 64, or
                   1637: 128).  In some cases it may be desirable to set up the terminal to
                   1638: always use ^S/^Q for flow control.  This can be done by setting
                   1639: flow_lim to  -1  (escape - ^X^M flowlim).  If you do this, you will
                   1640: not be able to type ^S or ^Q from the keyboard and must use
                   1641: controlify mode to do so.
                   1642: .LE
                   1643: .H 2 "Specifying Default modes for a File"
                   1644: You can specify the modes to be used while editing a particular file
                   1645: by putting the string "EMACS_MODES: " somewhere in the first 10
                   1646: lines of the file.  The text on the same line following EMACS_MODES:
                   1647: will be taken as names of modes to set on or off.  A mode name
                   1648: preceded by '!' will be set off, while mode names just listed will
                   1649: be set on.  If '=' immediately follows a mode name, then the
                   1650: characters immediately following the '=' will be taken as the value
                   1651: for the mode name.  Any text on the line that does not correspond to a mode
                   1652: name will be ignored.  Thus the line:
                   1653: .SP
                   1654: /* EMACS_MODES: !fill c, comcol=43 */
                   1655: .SP
                   1656: in a c source file will set c mode on, fill mode off, and set the
                   1657: column for starting comments to 43.  These modes are
                   1658: set whenever the file is read, and
                   1659: whenever you switch buffers.
                   1660: .H 1 "Getting started"
                   1661: When EMACS is invoked, it does a number of things to set up for
                   1662: your editing session,  These include finding out the type of your
                   1663: terminal, processing an initialization file that allows you to
                   1664: customize EMACS for your needs, and processing command line
                   1665: arguments.
                   1666: .H 2 "Setting your Terminal Type"
                   1667: Emacs must know what type of terminal
                   1668: terminal that you are using in order to know the appropriate
                   1669: control commands to display text on your screen.
                   1670: The terminal type is taken from the shell variable $TERM.  To make it
                   1671: work, you must set the value of TERM in your .profile, and export it.
                   1672: .P
                   1673: On some systems, there is a utility program called "ttype" which
                   1674: figures out your terminal type for you.  It works by sending an
                   1675: escape sequence to your terminal and testing for a response.
                   1676: Thus the lines:
                   1677: .SP
                   1678: export HOME PATH MAIL LOGNAME LOGTTY TERM
                   1679: .br
                   1680: TERM=`ttype`
                   1681: .SP
                   1682: will set the terminal type correctly if ttype is available, and if
                   1683: your terminal responds correctly.  If TERM is not set or
                   1684: is set to an unrecognizable type, EMACS will prompt for terminal
                   1685: type, however the prompting message may be formated oddly, since
                   1686: at this point emacs will not know how to control your terminal.
                   1687: You can also set your terminal type by putting a M-t (Set terminal
                   1688: type) command in your initialization file, as described in the
                   1689: following section.
                   1690: .P
                   1691: Most terminals commonly used at Bell Labs are acceptable for use
                   1692: with emacs.  Support for other terminals could easily be added if needed.
                   1693: If you need support for an unsupported terminal, either consult the
                   1694: document ~EMACS/term_support for a description of how to do it
                   1695: yourself, or contact ihnss!warren for details.
                   1696: .P
                   1697: There are some special problems with certain terminals or
                   1698: particular access arrangements connecting your terminal to emacs
                   1699: that you may run into:
                   1700: .VL 25 
                   1701: .LI "adm3a:"
                   1702: There are two "features" of the adm3a terminals that sometimes cause
                   1703: trouble in EMACS.  One of the internal switches on that terminal is
                   1704: labeled space/advance.  That switch must be in the space position for
                   1705: EMACS to work properly.  A second problem is that many of these
                   1706: terminals are set up to use one of the "undefined" pins of the
                   1707: rs-232 interface for some internal diagnostic.  This causes the
                   1708: terminal to go wild every time it receives a bell character when
                   1709: connected to a 1200 baud modem (which uses the same pin for
                   1710: something else).  If this happens to you in EMACS, set nobell mode,
                   1711: which will prevent EMACS from sending bell characters to your
                   1712: terminal.  A better and more permanent solution is to modify the
                   1713: terminal to disconnect
                   1714: this lead, use a cable that does not carry the undefined signals
                   1715: between the modem and the terminal.
                   1716: .LI "TTY5620 or Blit:"
                   1717: The Blit or Teletype 5620 terminals can be used in a number of
                   1718: different ways.  The terminal types "blit" and "5620" will work well
                   1719: on a stand-alone blit or 5620.  The only difficulty is that the
                   1720: terminal will not transmit ^S and ^Q, requiring you to use
                   1721: controlify mode to send these characters (as described below). 
                   1722: Emacs will also run in a layer defined on the terminal.  
                   1723: Emacs should discover the size of the window automatically, but
                   1724: will not discover it if you reshape the window while emacs is
                   1725: running.  The terminal type "layer" will work with the layer terminal
                   1726: driver on the blit, but is very crude and buggy.  The terminal type
                   1727: 5620 will work from a layer inside of the TTY 5620, with the above
                   1728: limitation.  The hp and vitty emulators will work with emacs on both
                   1729: the blit and 5620.  
                   1730: .P
                   1731: There are several improved terminal emulators that work better with
                   1732: emacs than the standard hp emulator or the straight 5620 layers
                   1733: terminal.  There is an improved hp emulator that will transmit ^S
                   1734: and ^Q.  The "netty" terminal emulator is widely available for both
                   1735: the blit and the 5620.  It works well with emacs, and works with a
                   1736: macro package that can be loaded into emacs to allow you to
                   1737: position the cursor with the mouse and to do a certain amount of
                   1738: cut and paste style editing.  The "emacsterm" emulator is available
                   1739: for the 5620 in experimental tools, and also works with an emacs
                   1740: macro package to provide mouse oriented editing.
                   1741: .LI "VT100 or hp2621B:"
                   1742: Both of these terminals work fine with emacs when run at low
                   1743: speeds, but at 9600 baud, these terminals do not keep up with the
                   1744: flow of characters.  To use either of these terminals at 9600 baud,
                   1745: you should set  "flow_lim" mode to 32 in emacs, and avoid typing while the
                   1746: display is being recreated.  In addition, some of the VT100
                   1747: compatible terminals will not send ^S or ^Q to emacs and must be
                   1748: used with controlify mode.
                   1749: .LI "Local Area Networks:"
                   1750: Some local area networks use ^S and ^Q for flow control, and thus
                   1751: you will not be able to send these characters directly to emacs. 
                   1752: You can get around this by using controlify mode as described in
                   1753: the previous sections.  You can make this less awkward on terminals
                   1754: with user programmable function keys by setting some of the
                   1755: function keys to send the character sequences necessary to get ^S
                   1756: and ^Q.
                   1757: .LE
                   1758: .H 2 "Initialization file.
                   1759: When you start emacs, it consults
                   1760: initialization file that allows you to initialize the various modes
                   1761: the way that you want them.  This file is called ".emacs_init" and
                   1762: should be put in your home directory.  The file is read as a
                   1763: keyboard macro, and thus should contain \fIexactly\fP what you
                   1764: would type from the terminal in order to set it up.  Thus the file:
                   1765: .tr ~~
                   1766: .SP
                   1767: .DS
                   1768: ^U^X^Mfill
                   1769: ^X^Mc
                   1770: ^X^L~EMACS/macros/loader
                   1771: .DE
                   1772: .SP
                   1773: sets 'c' mode, unsets fill mode, and loads the loader macro
                   1774: package.  If you do not have a .emacs_init file, emacs will run the
                   1775: standard initialization file for your system, which you can examine
                   1776: by looking at the file ~EMACS/.emacs_init.  It will not run both by
                   1777: default, but you can call for the default initialization file to be
                   1778: run from your private file by placing ^X^I~EMACS/.emacs_init in
                   1779: your initialization file at the point at which you want the system
                   1780: initialization to be done.
                   1781: You can also cause initializations to take place by command line
                   1782: arguments (see below).
                   1783: .tr ~ 
                   1784: .H 3 "Command line arguments"
                   1785: Emacs accepts a number of arguments on the command line that effect
                   1786: processing.  These are:
                   1787: .VL 10
                   1788: .LI "-i"
                   1789: Emacs interprets the next argument as the name of an initialization file to
                   1790: run in addition to the standard initialization file (Yours or the system's). 
                   1791: The specified file is run \fIafter\fP .emacs_init.
                   1792: .LI ".i"
                   1793: Emacs interprets the next argument as the name of an initialization file to
                   1794: run \fIinstead\fP of the standard file.
                   1795: .LI "+n"
                   1796: Emacs moves to line n of the specified file after it is read in.
                   1797: .LI "<filename>
                   1798: The last argument on the command line should be the name of the
                   1799: file to be edited.  This file (if present) is read into the buffer
                   1800: Main.  If no filename is specified, emacs puts you in the buffer Main
                   1801: with no associated file.
                   1802: .H 2 "Helpful hints"
                   1803: This editor is very easy to use, once you know a few of the basic 
                   1804: commands.  Here are some tips for making the best use of emacs.
                   1805: .AL
                   1806: .LI
                   1807: Learn a few of the basic commands at a time.  You can accomplish a
                   1808: lot with just the basic commands.
                   1809: .LI
                   1810: EMACS tries to be reasonably efficient about the refreshing of the
                   1811: screen.  Some  sequences, however, will cause lots of text to be 
                   1812: redisplayed.  While you can insert anything into the middle of a buffer by 
                   1813: typing it, it is much better to open up some lines by using ^O
                   1814: where you want to  insert, insert, and then kill unneeded lines.
                   1815: .LI
                   1816: Use M-? when in doubt about a command.  The explanations are brief, but 
                   1817: should be sufficient to tell you what you want to know.
                   1818: .LI
                   1819: Like most editors, EMACS maintains a local buffer, so that changes made do
                   1820: not go into the file until the next write.  Type ^X^S reasonably frequently
                   1821: so as to avoid being wiped out by machine crashes, editor bugs, or other 
                   1822: unpredictable events.
                   1823: .LI
                   1824: Because EMACS tries to avoid unnecessary refreshing of the screen,
                   1825: it will get confused if characters are sent to your terminal from
                   1826: some other program while running EMACS, such as a "background"
                   1827: program, or by a write command from another user.  If you suspect
                   1828: that the display does not correspond to the buffer that you are
                   1829: editing, type ^L to refresh the screen.  After typing ^L, the screen
                   1830: will match the buffer being edited.
                   1831: .LE
                   1832: .H 2 "Limitations of the editor"
                   1833: There are some limits that you may encounter:
                   1834: .BL
                   1835: .LI
                   1836: Each line can hold at most 512 characters.
                   1837: .LI
                   1838: Each buffer can hold a maximum of approximately 15,000 lines.
                   1839: .LI
                   1840: You can have at most 12 buffers.
                   1841: .LI
                   1842: The kill stack contains 
                   1843: the 8 most recent deletions, or a total of 256K characters.
                   1844: .LI
                   1845: Filenames are limited to 128 characters.
                   1846: .LE
                   1847: .H 2 "Recovering from various problems."
                   1848: Because EMACS puts your terminal in "raw" mode, it does not respond
                   1849: to interrupt and quit characters the way that most unix programs
                   1850: do.  If somethings goes wrong with emacs, you can usually stop it
                   1851: with BREAK (typing ^Z to exit from emacs in response to the
                   1852: message).  You may have to kill it from another terminal or log
                   1853: out.
                   1854: .P
                   1855: If emacs runs into internal trouble, or if you kill emacs or log
                   1856: out while running emacs, it will try to save your buffers before
                   1857: terminating.  The buffers are saved in the files emacs0-emacs11 in
                   1858: your home directory. You will get mail describing what files are
                   1859: there from emacs after this happens, though if you do not clean up
                   1860: these files, they will continue to appear in the message each time
                   1861: you hang up on or kill an emacs process.
                   1862: .H 1 "DIRED"
                   1863: The program DIRED (DIRectory EDitor) is a version of emacs for
                   1864: editing directories.
                   1865: DIRED takes an argument which is the name of a directory, and
                   1866: displays the result of ls -al executed on that directory.  Dired
                   1867: allows you to edit the resulting buffer using most of the normal
                   1868: commands.   You may edit it by overwriting the protection mode,
                   1869: owner, or group fields, or by deleting entries, as discussed below. In
                   1870: order to facilitate your editing of the fixed format data in the
                   1871: directory listing, Dired puts you in "overwrite" mode by default, so
                   1872: that characters that you type overwrite what is there rather than
                   1873: inserting into it.  
                   1874: .P
                   1875: The changes that you indicate this way are not made immediately, but
                   1876: are indicated by the letters 'D' (file deleted) 'M' (modes modified)
                   1877: or 'O' (owner or group changed) at the left end of the file entries
                   1878: modified.  When you try to save the buffer or exit, Dired asks you
                   1879: if you want to make your changes permanent and then does them.
                   1880: .P
                   1881: Most of the usual emacs commands work in Dired just like in Emacs
                   1882: with a few exceptions:
                   1883: .VL 15
                   1884: .LI "^D, ^?, and ^K"
                   1885: These commands do not delete any text, but simply mark the file
                   1886: designated on the current line for deletion.
                   1887: .LI "d or D"
                   1888: These characters mark the current file for deletion when typed at
                   1889: the beginning of a line, and otherwise just overwrite what is there.
                   1890: .LI "u or U"
                   1891: These characters remove the Deleted mark from files when typed at
                   1892: the beginning of a line, and otherwise just overwrite what is there.
                   1893: .LI "e"
                   1894: When typed at the beginning of a line, this causes dired to examine
                   1895: the directory entry corresponding to that line.  If the entry is a
                   1896: file, dired creates a new buffer and reads it in, allowing you to
                   1897: examine it just like in emacs.  When you enter ^Z, Dired returns you
                   1898: to the directory.  If the entry is a directory, Dired creates a
                   1899: buffer and puts a directory listing of that directory in it,
                   1900: allowing you to edit this just directory.  This feature provides a
                   1901: very convenient way to scan through a directory structure.
                   1902: .LE
                   1903: .P
                   1904: Ordinarily, the buffer listing for dired is created with a "ls -al"
                   1905: command.  You can specify additional options for the display by
                   1906: giving dired an argument beginning with a "-" to specify options. 
                   1907: Thus "dired~-t~/usr/bin" will invoke dired on /usr/bin with a
                   1908: listing sorted in time order.
                   1909: .P
                   1910: Dired provides a very convenient way to scan through and make
                   1911: changes to directories.  It is particularly useful for cleaning up
                   1912: directories that may have files that you have not used for some time
                   1913: in them.
                   1914: .P
                   1915: Dired can be confused if you edit the filename of the entries, or
                   1916: succeed in inserting or deleting characters in the entries.  It is
                   1917: not very robust to such failures, and you are advised not to modify
                   1918: the format of entries.  If you have somehow garbled a buffer with a
                   1919: directory listing in it, you should probably kill the buffer so that
                   1920: Dired will not try to update that directory from the garbled listing
                   1921: when you try to exit.
                   1922: .H 1 EXPERIENCE
                   1923: The author originally wrote EMACS in 1979 as an aide to his own work of
                   1924: programming and memorandum composition.  EMACS has been widely
                   1925: available inside of Bell Laboratories through the Experimental Tools
                   1926: facility, and through the author's own distribution efforts.  EMACS
                   1927: now part of the AT&T Toolchest package and is available commercially
                   1928: to anyone paying the nominal fee for it.  The following section
                   1929: describes observations of the author and others on 6 years of
                   1930: experience with Emacs.
                   1931: .H 2 "Feature Use"
                   1932: The most commonly used "feature" of EMACS is simply the ability to
                   1933: enter text and see the result.  The simple cursor movement commands
                   1934: appear to be much more frequently used than the more complicated
                   1935: commands, such as those moving forward or backward by sentences.
                   1936: .P
                   1937: The following is a summary of the user reaction to some of the
                   1938: unique features of EMACS.
                   1939: .AL
                   1940: .LI "Multiple Buffers"
                   1941: .br
                   1942: The ability to maintain several editing buffers at the same time
                   1943: is widely used for many purposes.  These include examining several
                   1944: source files while making modifications, holding source, compiler
                   1945: output, and program output while debugging, and holding the output
                   1946: of the spell utility while scanning a document for misspelled words.
                   1947: The availability of multiple buffers allows the user to manage
                   1948: several different tasks, such as writing a program, editing a
                   1949: memorandum, and helping a friend locate a system problem, concurrently.
                   1950: .LI "Two Window Mode"
                   1951: .br
                   1952: Two window mode is less heavily used than some of the other
                   1953: features, but appears to be quite useful for a variety of tasks. 
                   1954: These include viewing a buffer containing declarations at the same
                   1955: time that a program is being entered in the second window, and
                   1956: viewing the output of the spell program at the same time that the
                   1957: document is being edited.  The fact that only one of the two
                   1958: displays is actively maintained does not seem to be a problem, nor
                   1959: does the limitation of only two display windows.  Few users have
                   1960: objected to these limitations, though this may only indicate that
                   1961: users are grateful enough for what Emacs does provide that they have
                   1962: not run into them.
                   1963: .LI "Incremental Search"
                   1964: .br
                   1965: With a high speed terminal, incremental search seems to be very
                   1966: effective.  The ability to quickly move from one occurrence of a
                   1967: string to the next seems to meet most user's needs.  With
                   1968: significantly less than 9600 baud communication, the amount of
                   1969: re-display created by incremental search becomes bothersome, and
                   1970: the regular expression search is preferred.  The fact that
                   1971: incremental search does not "wrap around", seems to be a significant
                   1972: problem to many users.
                   1973: .LI "C mode and Fill mode"
                   1974: .br
                   1975: These two modes provide customized facilities for editing certain
                   1976: kinds of files.  The user reaction to these is mixed.  Some users
                   1977: make extensive use of these, while others have their own styles for
                   1978: entering memorandum or program source and do not use these modes. 
                   1979: They are a very small part of EMACS, and as such are worthwhile even
                   1980: if they are not extensively used.
                   1981: .LI "Line Numbers"
                   1982: .br
                   1983: The display of the line number (lnumb mode) is one aspect of EMACS
                   1984: that was not taken from the M.I.T. version.  This appears to be
                   1985: extremely useful for use with UNIX, primarily because of the
                   1986: widespread use of line numbers to indicate position within a file. 
                   1987: Line numbers also serve to provide the user with some feedback as to
                   1988: what part of the buffer is currently being displayed.
                   1989: .LI "Macros"
                   1990: The macro facility was built up over time, and only recently has
                   1991: become a programming environment capable of being used by a wide
                   1992: variety of users.  The initial macro language was powerful but
                   1993: extremely cryptic.  Nevertheless, hundreds of macros were built, ranging from
                   1994: simple commands that merely combine several basic commands to
                   1995: self-contained editing systems making use of complex control flow
                   1996: features.  Some of the more significant ones include a package for
                   1997: correcting spelling errors, Several packages that compile C code and
                   1998: step through the error messages, Several mail handling packages, and
                   1999: Several packages implementing interfaces to mouse-equipped
                   2000: terminals.
                   2001: .P
                   2002: In retrospect, our experience supports the conclusions of Richard
                   2003: Stallman (The author of the original Emacs), that the "right" way to
                   2004: build a powerful editor is to build a powerful programming
                   2005: environment and build the user interface of the editor on top of it.
                   2006: .LI "Picture Mode"
                   2007: Picture mode is another feature that was originally unique to this
                   2008: implementation.  It was inspired by the Two-Dimensional editor
                   2009: 2ded, and by an electronic debate on whether screen editors should
                   2010: present the file as a sequence of characters or as a two dimensional
                   2011: blackboard.  Both are useful abstractions, and it was not difficult
                   2012: to provide both views given the structure of Emacs.  Picture mode
                   2013: has been widely used for editing tables and other fixed format
                   2014: information.  It is also sometimes convenient for mouse based
                   2015: interfaces.
                   2016: .LE
                   2017: .H 2 "Human Interface Observations"
                   2018: There are several controversial aspects of the interface that emacs
                   2019: presents to users.
                   2020: .VL 15
                   2021: .LI "Modeless Editing:"
                   2022: The characteristics which most clearly distinguishes emacs style
                   2023: editors from others is that lack of distinct modes for text
                   2024: insertion and entering of commands.  This is also the most
                   2025: controversial feature.  There have been many studies on moded and
                   2026: modeless editors in the 10 years since the first Emacs editors
                   2027: got significant use.  Most conclude that in spite of strong
                   2028: preferences among users for one style or the other, neither is
                   2029: clearly superior.  Also, in spite of feelings of users of both
                   2030: modeless and moded editors that doing something in the wrong mode
                   2031: would be a significant source of errors, the data do not show this as
                   2032: a large problem.
                   2033: .P
                   2034: Our feeling on this issue is that there are different editing styles
                   2035: for modeless or moded editing.  With a moded editor, you think of
                   2036: editing as a series of commands, each of which changes the file in
                   2037: some way.  With modeless editing, you tend to work more in the mode
                   2038: of marking up a document with a red pencil, by moving to each
                   2039: problem and re-typing whatever is wrong.  Modeless editing seems
                   2040: natural in conjunction with a pointing device and menu interface,
                   2041: and has been used effectively on many personal computer and word
                   2042: processor editors this way.
                   2043: .LI "Control Characters"
                   2044: The use of control characters for editing commands in emacs is an
                   2045: unavoidable consequence of modeless editing.  A conscious decision
                   2046: was made in emacs to avoid the use of special keys on the keyboard,
                   2047: such as function and arrow keys.  The rational for this was to avoid
                   2048: requiring users to locate such keys, which appear in different
                   2049: places on every terminal.  The result is that touch typists can use
                   2050: emacs without ever having to look at the keyboard, which is
                   2051: difficult if you must locate the special keys.
                   2052: .P
                   2053: The interface seems to work quite well for frequent users, however
                   2054: casual users have trouble remembering which characters do what. 
                   2055: Many users with programmable function keys on their terminals have
                   2056: programmed and labeled them to send useful emacs commands.  The
                   2057: conclusion that can be drawn is that it is nice to be able to touch
                   2058: type all of the commands, and for many users it is desirable to be
                   2059: able to use the special function keys on many terminals for editing.
                   2060: .LE
                   2061: .H 2 "Performance"
                   2062: While computer resources are not as expensive as they once were,
                   2063: they are far from free.  An interactive screen editor such as EMACS
                   2064: consumes more in computer resources than a conventional editor. 
                   2065: EMACS was designed to be as efficient as possible, some price must
                   2066: be paid for the benefits gained.
                   2067: .P
                   2068: The Processor time consumption of EMACS is comparable to the UNIX
                   2069: editor for most "commands", including reading and writing files,
                   2070: searching, and substitution.  The major discrepancy in performance
                   2071: comes in entering text.  In entering text, EMACS consumes
                   2072: about 3 times as much processor time as the UNIX editor. 
                   2073: .P
                   2074: If we examine how each editor uses its time, we see that almost all
                   2075: of the time spent by the UNIX editor is spent in the UNIX operating
                   2076: system reading characters.  About two thirds of the time spent in
                   2077: EMACS is spent reading and writing, while the remaining third is
                   2078: spent re-creating the display.  EMACS uses almost twice as much UNIX
                   2079: operating system processor time, because it is re-writing the
                   2080: display after each character is typed, in addition to reading the
                   2081: characters.  In addition, EMACS spends a significant amount of user
                   2082: process time figuring out how to most efficiently re-display the
                   2083: screen.
                   2084: .P
                   2085: While EMACS does consume more time editing than does the UNIX
                   2086: editor, the processor time spent editing does not appear to be a
                   2087: significant problem.  Measurements of CPU consumption of emacs made
                   2088: on VAX 11/780, 3B20S, and PDP 11/70 systems each indicate that an
                   2089: emacs user consumes on average about .01 second of cpu time per
                   2090: character typed, and about 1% of the processor over the period of an
                   2091: editing session.  These rates suggest that a substantial number of
                   2092: users can be accommodated on most systems.
                   2093: .H 1 CONCLUSIONS
                   2094: The EMACS editor provides an effective means of using a high-speed
                   2095: display terminal for text editing.  EMACS provides a variety of
                   2096: unique features that seem to be very useful in editing.  User
                   2097: reaction indicates that using EMACS has improved their productivity,
                   2098: however there are no quantitative measurements of this effect.
                   2099: .P
                   2100: EMACS uses more computing resources than the standard UNIX editor,
                   2101: however the resources utilized do not appear to be a serious
                   2102: problem.  Emacs has been used effectively on many different machines
                   2103: without serious difficulties in performance.
                   2104: .P
                   2105: EMACS was written by the author as a tool for his own work, but is
                   2106: available to anyone desiring a copy.  There are no currently known
                   2107: bugs, however there may be undiscovered problems.  The author is
                   2108: interested in user reaction to EMACS and in reports of problems,
                   2109: however, the author's job
                   2110: does not include supporting EMACS, and thus the author does not
                   2111: promise any prompt response to suggestions or trouble reports.
                   2112: .SG UNIX
                   2113: .SK
                   2114: .tr ~~
                   2115: .nr Hu 1
                   2116: .nr Hc 1
                   2117: .HU "APPENDIX -- EMACS Command Summary"
                   2118: .SP 2
                   2119: .nf
                   2120: EMACS version 4.9 Date: Thu Mar 28 14:17:56 CST 1985
                   2121: 
                   2122: ^@:    sets the mark at the cursor position
                   2123: ^A:    moves to the beginning of the line
                   2124: ^B:    moves back one character
                   2125: ^C:    capitalizes the current character
                   2126: ^D:    deletes forward one character
                   2127: ^E:    moves to the end of the line
                   2128: ^F:    moves forward one character
                   2129: ^G:    quits from any command in progress
                   2130: ^H:    deletes backward one character
                   2131: ^I:    inserts a tab
                   2132: ^J:    opens a new line and moves to the beginning of it if the
                   2133:        next line is non-empty, otherwise down one line
                   2134: ^K:    kills to end of line (with argument, kills multiple lines)
                   2135: ^L:    refreshes the screen
                   2136: ^M:    opens a new line and moves to the beginning of it if the
                   2137:        next line is non-empty, otherwise down one line
                   2138: ^N:    moves down one line
                   2139: ^O:    opens up a new line
                   2140: ^P:    moves up one line
                   2141: ^Q:    quotes the next character
                   2142: ^R:    starts a reverse search
                   2143: ^S:    starts a search
                   2144: ^T:    transposes the next two characters
                   2145: ^U:    multiplies the argument by 4
                   2146: ^V:    moves to the next page
                   2147: ^W:    kills the current region (between cursor and mark)
                   2148: ^X:    is a prefix for more single character commands,
                   2149:        type character or '*' for all
                   2150: ^Y:    restores last killed text
                   2151:        (leaves cursor and mark around it)
                   2152: ^Z:    exits one level
                   2153: ^[:    makes the next character a meta character
                   2154: ^]:    makes a local variable of a macro invocation the argument to the
                   2155:        next command
                   2156: ^^:    causes the last returned result to become the argument
                   2157:  :     is self inserting and check for automatic word wrapping
                   2158: -:     is self inserting unless part of a numeric argument
                   2159: .:     is self inserting and check for automatic word wrapping
                   2160: 0:     is self inserting unless part of a numeric argument
                   2161: 1:     is self inserting unless part of a numeric argument
                   2162: 2:     is self inserting unless part of a numeric argument
                   2163: 3:     is self inserting unless part of a numeric argument
                   2164: 4:     is self inserting unless part of a numeric argument
                   2165: 5:     is self inserting unless part of a numeric argument
                   2166: 6:     is self inserting unless part of a numeric argument
                   2167: 7:     is self inserting unless part of a numeric argument
                   2168: 8:     is self inserting unless part of a numeric argument
                   2169: 9:     is self inserting unless part of a numeric argument
                   2170: }:     is self inserting, and re-adjusts indentation in C mode
                   2171: ^?:    deletes backward one character
                   2172: M-^H:  deletes the last word
                   2173: M-^L:  re-displays with current line at top of page
                   2174: M-^M:  mails the current buffer
                   2175: M-^Q:  returns the next input character (in a macro)
                   2176: M-^R:  regular expression query replace
                   2177: M-^S:  regular expression search
                   2178: M-^X:  executes argument 0 as a character command.
                   2179: M-^Z:  suspends emacs
                   2180: M-^]:  assigns the result of the next command to a macro local variable
                   2181: M- :   sets the mark at the cursor position
                   2182: M-!:   gets and executes a shell command
                   2183: M-":   auto Fills the whole buffer
                   2184: M-$:   executes a command, saving the output in buffer .exec
                   2185: M--:   is self inserting unless part of a numeric argument
                   2186: M-/:   starts a comment
                   2187: M-0:   is self inserting unless part of a numeric argument
                   2188: M-1:   is self inserting unless part of a numeric argument
                   2189: M-2:   is self inserting unless part of a numeric argument
                   2190: M-3:   is self inserting unless part of a numeric argument
                   2191: M-4:   is self inserting unless part of a numeric argument
                   2192: M-5:   is self inserting unless part of a numeric argument
                   2193: M-6:   is self inserting unless part of a numeric argument
                   2194: M-7:   is self inserting unless part of a numeric argument
                   2195: M-8:   is self inserting unless part of a numeric argument
                   2196: M-9:   is self inserting unless part of a numeric argument
                   2197: M-::   maps a character to a command
                   2198: M-<:   moves to top of file
                   2199: M->:   moves to bottom of file
                   2200: M-?:   explains the next character
                   2201: M-E:   expands an environment variable and returns the result on the kill stack.
                   2202: M-\:   converts its argument to a character and inserts it
                   2203: M-_:   underlines the next word
                   2204: M-a:   moves to beginning of sentence
                   2205: M-b:   moves back one word
                   2206: M-c:   capitalizes the next word
                   2207: M-d:   deletes the next word
                   2208: M-e:   moves to End of Sentence
                   2209: M-f:   moves forward one word
                   2210: M-g:   moves to a specific line (its argument)
                   2211: M-l:   converts the next letter to lower case
                   2212: M-m:   displays active modes
                   2213: M-p:   puts the current region in the kill buffer without killing it
                   2214: M-q:   quotes the next character and adds the 0200 bit
                   2215: M-r:   starts query replace
                   2216: M-s:   gives EMACS statistics
                   2217: M-t:   prompts for terminal type
                   2218: M-u:   undoes the last significant text modification
                   2219: M-v:   moves back one page
                   2220: M-w:   puts a wall chart of explanations in the buffer
                   2221: M-x:   calls a macro by name
                   2222: M-y:   replaces the last restore() with the next text in
                   2223:        the kill stack.
                   2224: M-z:   kills emacs with a core dump (for debugging)
                   2225: M-{:   enters a command sequence (in a macro)
                   2226: M-}:   exits one level
                   2227: M-~:   marks a buffer as being unmodified (up to date)
                   2228: M-^?:  deletes the last word
                   2229: 
                   2230: Control-X commands:
                   2231: 
                   2232: ^X^A:  accesses the argument list to emacs
                   2233: ^X^B:  changes Buffers (Change to * lists active buffers)
                   2234: ^X^C:  exits gracefully
                   2235:        (after asking whether or not to save the buffer)
                   2236: ^X^D:  changes the working directory
                   2237: ^X^E:  calls emacs recursively taking input from the terminal
                   2238: ^X^F:  edits a file in its own buffer
                   2239:        (if file has been read into a buffer, moves to it)
                   2240: ^X^G:  sends an interrupt signal to a sub-process in the current buffer
                   2241: ^X^I:  re-directs input from a file
                   2242: ^X^K:  kills a buffer
                   2243: ^X^L:  loads a file full of macro definitions
                   2244: ^X^M:  sets mode from argument (prompts for mode name)
                   2245:        and string if necessary
                   2246: ^X^N:  changes the buffer or file name
                   2247: ^X^O:  switches between windows
                   2248: ^X^Q:  returns the character under the cursor (in a macro)
                   2249: ^X^R:  reads a new file
                   2250: ^X^S:  saves the buffer in the current file (if modified)
                   2251: ^X^T:  prompts for a buffer name and inserts the text between the
                   2252:        cursor and the mark into the named buffer.
                   2253: ^X^U:  updates the display and delays for a specified time
                   2254: ^X^V:  puts the current version on the kill stack.
                   2255: ^X^W:  writes a new or old file
                   2256: ^X^X:  exchanges the mark and the cursor
                   2257: ^X^^:  causes the current window to grow one by line
                   2258: ^X!:   begins a case statement (in a macro)
                   2259: ^X#:   reads or writes global variables
                   2260: ^X%:   exchanges the top of the kill stack with another item
                   2261: ^X&:   compares two strings
                   2262: ^X(:   starts a keyboard macro
                   2263: ^X):   ends a keyboard macro
                   2264: ^X+:   causes the next entry to the kill stack to append to the previous entry
                   2265: ^X-:   pops the kill stack
                   2266: ^X1:   exits two window mode
                   2267: ^X2:   enters two window mode
                   2268: ^X<:   pushes a string from the tty or macro text into the kill stack
                   2269: ^X=:   gives statistics about the buffer
                   2270: ^X>:   duplicates an item on the kill stack
                   2271: ^X@:   prompts the user with a string from the kill stack and returns the result.
                   2272: ^XB:   puts the buffer name into the kill stack
                   2273: ^XE:   executes the keyboard macro
                   2274: ^XF:   puts the file name into the stack
                   2275: ^XL:   makes the next character a meta character
                   2276: ^XT:   traces the next command.
                   2277: ^X^:   enters a "while" loop (in a macro)
                   2278: ^Xd:   defines macros from the current buffer
                   2279: ^Xg:   moves to a screen position (arg=128*y+x);
                   2280: ^Xk:   sets the encryption key for file reading and writing
                   2281: ^Xm:   sets mode from argument (prompts for mode name)
                   2282:        and string if necessary
                   2283: ^X|:   begins a conditional execution sequence (in a macro)
                   2284: ^X~:   performs arithmetic or logical operations (in a macro)
                   2285: .fi
                   2286: .SK
                   2287: .NS ""
                   2288: All Supervision Lab 5523
                   2289: .NE
                   2290: .TC

unix.superglobalmegacorp.com

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