Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-2, revision 1.1

1.1     ! root        1: Info file emacs, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file emacs.tex
        !             3: 
        !             4: This file documents the GNU Emacs editor.
        !             5: 
        !             6: Copyright (C) 1985, 1986 Richard M. Stallman.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "The GNU Manifesto", "Distribution"
        !            22: and "GNU Emacs General Public License" may be included in a translation
        !            23: approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs  Node: Basic, Prev: Command Switches, Up: Top, Next: Undo
        !            27: 
        !            28: Basic Editing Commands
        !            29: **********************
        !            30: 
        !            31:   We now give the basics of how to enter text, make corrections, and
        !            32: save the text in a file.  If this material is new to you, you might
        !            33: learn it more easily by running the Emacs learn-by-doing tutorial.  To
        !            34: do this, type `Control-h t' (`help-with-tutorial').
        !            35: 
        !            36: 
        !            37: Inserting Text
        !            38: ==============
        !            39: 
        !            40:   To insert printing characters into the text you are editing, just type
        !            41: them.  This inserts the character into the buffer at the cursor (that is,
        !            42: at "point"; *Note Point::).  The cursor moves forward.  Any characters
        !            43: after the cursor move forward too.  If the text in the buffer is
        !            44: `FOOBAR', with the cursor before the `B', then if you type
        !            45: `XX', you get `FOOXXBAR', with the cursor still before the
        !            46: `B'.
        !            47: 
        !            48:    To "delete" text you have just inserted, use DEL.  DEL
        !            49: deletes the character BEFORE the cursor (not the one that the cursor
        !            50: is on top of or under; that is the character AFTER the cursor).  The
        !            51: cursor and all characters after it move backwards.  Therefore, if you type
        !            52: a printing character and then type DEL, they cancel out.
        !            53: 
        !            54:    To end a line and start typing a new one, type RET.  This inserts
        !            55: a newline character in the buffer.  If point is in the middle of a line,
        !            56: RET splits the line.  Typing DEL when the cursor is at the
        !            57: beginning of a line rubs out the newline before the line, thus joining the
        !            58: line with the preceding line.  
        !            59: 
        !            60:   Emacs will split lines automatically when they become too long, if you
        !            61: turn on a special mode called "Auto Fill" mode.  *Note Filling::, for
        !            62: how to use Auto Fill mode.
        !            63: 
        !            64:   Customization information: DEL in most modes runs the command named
        !            65: `delete-backward-char'; RET runs the command `newline', and
        !            66: self-inserting printing characters run the command `self-insert',
        !            67: which inserts whatever character was typed to invoke it.  Some major modes
        !            68: rebind DEL to other commands.
        !            69: 
        !            70:   Direct insertion works for printing characters and SPC, but other
        !            71: characters act as editing commands and do not insert themselves.  If you
        !            72: need to insert a control character or a character whose code is above 200
        !            73: octal, you must "quote" it by typing the character `control-q'
        !            74: (`quoted-insert') first.  There are two ways to use `C-q':
        !            75: 
        !            76:    * `Control-q' followed by any non-graphic character (even `C-g')
        !            77:      inserts that character.
        !            78:    * `Control-q' followed by three octal digits inserts the character
        !            79:      with the specified character code.
        !            80: 
        !            81: A numeric argument to `C-q' specifies how many copies of the
        !            82: quoted character should be inserted (*Note Arguments::).
        !            83: 
        !            84:   If you prefer to have text characters replace (overwrite) existing
        !            85: text rather than shove it to the right, you can enable Overwrite mode,
        !            86: a minor mode.  *Note Minor Modes::.
        !            87: 
        !            88: 
        !            89: Changing the Location of Point
        !            90: ==============================
        !            91: 
        !            92:   To do more than insert characters, you have to know how to move
        !            93: point (*Note Point::).  Here are a few of the commands for doing that.
        !            94: 
        !            95: `C-a'     
        !            96:      Move to the beginning of the line (`beginning-of-line').
        !            97: `C-e'     
        !            98:      Move to the end of the line (`end-of-line').
        !            99: `C-f'     
        !           100:      Move forward one character (`forward-char').
        !           101: `C-b'     
        !           102:      Move backward one character (`backward-char').
        !           103: `M-f'     
        !           104:      Move forward one word (`forward-word').
        !           105: `M-b'     
        !           106:      Move backward one word (`backward-word').
        !           107: `C-n'     
        !           108:      Move down one line, vertically (`next-line').  This command
        !           109:      attempts to keep the horizontal position unchanged, so if you start in
        !           110:      the middle of one line, you end in the middle of the next.  When on
        !           111:      the last line of text, `C-n' creates a new line and moves onto it.
        !           112: `C-p'     
        !           113:      Move up one line, vertically (`previous-line').
        !           114: `C-l'     
        !           115:      Clear the screen and reprint everything (`recenter').  Text moves
        !           116:      on the screen to bring point to the center of the window.
        !           117: `M-r'     
        !           118:      Move point to left margin on the line halfway down the screen or
        !           119:      window (`move-to-window-line').  Text does not move on the
        !           120:      screen.  A numeric argument says how many screen lines down from the
        !           121:      top of the window (zero for the top).  A negative argument counts from
        !           122:      the bottom (-1 for the bottom).
        !           123: `C-t'     
        !           124:      Transpose two characters, the ones before and after the cursor
        !           125:      (`transpose-chars').
        !           126: `M-<'     
        !           127:      Move to the top of the buffer (`beginning-of-buffer').  With numeric
        !           128:      argument N, move to N/10 of the way from the top.  *Note Arguments::,
        !           129:      for more information on numeric arguments.
        !           130: `M->'     
        !           131:      Move to the end of the buffer (`end-of-buffer').
        !           132: `M-x goto-char'     
        !           133:      Read a number N and move cursor to character number N.
        !           134:      Position 1 is the beginning of the buffer.
        !           135: `M-x goto-line'     
        !           136:      Read a number N and move cursor to line number N.  Line 1
        !           137:      is the beginning of the buffer.
        !           138: `C-x C-n'     
        !           139:      Use the current column of point as the "semipermanent goal column" for
        !           140:      `C-n' and `C-p' (`set-goal-column').  Henceforth, those
        !           141:      commands always move to this column in each line moved into, or as
        !           142:      close as possible given the contents of the line.  This goal column remains
        !           143:      in effect until canceled.
        !           144: `C-u C-x C-n'     
        !           145:      Cancel the goal column.  Henceforth, `C-n' and `C-p' once
        !           146:      again try to avoid changing the horizontal position, as usual.
        !           147: 
        !           148:   If you set the variable `track-eol' to a non-`nil' value, then
        !           149: `C-n' and `C-p' when at the end of the starting line move to the
        !           150: end of the line.  Normally, `track-eol' is `nil'.
        !           151: 
        !           152: 
        !           153: Erasing Text
        !           154: ============
        !           155: 
        !           156: `DEL'     
        !           157:      Delete the character before the cursor (`delete-backward-char').
        !           158: `C-d'     
        !           159:      Delete the character after the cursor (`delete-char').
        !           160: `C-k'     
        !           161:      Kill to the end of the line (`kill-line').
        !           162: `M-d'     
        !           163:      Kill forward to the end of the next word (`kill-word').
        !           164: `M-DEL'     
        !           165:      Kill back to the beginning of the previous word
        !           166:      (`backward-kill-word').
        !           167: 
        !           168:   You already know about the DEL key which deletes the character
        !           169: before the cursor.  Another key, `Control-d', deletes the character
        !           170: after the cursor, causing the rest of the text on the line to shift left.
        !           171: If `Control-d' is typed at the end of a line, that line and the next
        !           172: line are joined together.
        !           173: 
        !           174:   To erase a larger amount of text, use the `Control-k' key, which
        !           175: kills a line at a time.  If `C-k' is done at the beginning or middle of
        !           176: a line, it kills all the text up to the end of the line.  If `C-k' is
        !           177: done at the end of a line, it joins that line and the next line.
        !           178: 
        !           179:   *Note Killing::, for more flexible ways of killing text.
        !           180: 
        !           181: 
        !           182: Files
        !           183: =====
        !           184: 
        !           185:   The commands above are sufficient for creating and altering text in an
        !           186: Emacs buffer; the more advanced Emacs commands just make things easier.
        !           187: But to keep any text permanently you must put it in a "file".  Files
        !           188: are named units of text which are stored by the operating system for you to
        !           189: retrieve later by name.  To look at or use the contents of a file in any
        !           190: way, including editing the file with Emacs, you must specify the file name.
        !           191: 
        !           192:   Consider a file named `/usr/rms/foo.c'.  In Emacs, to begin editing
        !           193: this file, type
        !           194: 
        !           195:      C-x C-f /usr/rms/foo.c RET
        !           196: 
        !           197: Here the file name is given as an "argument" to the command `C-x C-f'
        !           198: (`find-file').  That command uses the "minibuffer" to read the argument,
        !           199: and you type RET to terminate the argument (*Note Minibuffer::).
        !           200: 
        !           201:   Emacs obeys the command by "visiting" the file: creating a buffer,
        !           202: copying the contents of the file into the buffer, and then displaying the
        !           203: buffer for you to edit.  You can make changes in it, and then "save" the
        !           204: file by typing `C-x C-s' (`save-buffer').  This makes the changes permanent
        !           205: by copying the altered contents of the buffer back into the file
        !           206: `/usr/rms/foo.c'.  Until then, the changes are only inside your Emacs, and
        !           207: the file `foo.c' is not changed.
        !           208: 
        !           209:   To create a file, just visit the file with `C-x C-f' as if it already
        !           210: existed.  Emacs will make an empty buffer in which you can insert the text
        !           211: you want to put in the file.  When you save your text with `C-x C-s',
        !           212: the file will be created.
        !           213: 
        !           214:   Of course, there is a lot more to learn about using files.  *Note Files::.
        !           215: 
        !           216: 
        !           217: Help
        !           218: ====
        !           219: 
        !           220:   If you forget what a key does, you can find out with the Help character,
        !           221: which is `C-h'.  Type `C-h k' followed by the key you want to know about;
        !           222: for example, `C-h k C-n' tells you all about what `C-n' does.  `C-h' is a
        !           223: prefix key; `C-h k' is just one of its subcommands (the command
        !           224: `describe-key').  The other subcommands of `C-h' provide different kinds of
        !           225: help.  Type `C-h' three times to get a description of all the help
        !           226: facilities.  *Note Help::.
        !           227: 
        !           228: * Menu:
        !           229: 
        !           230: * Blank Lines::        Commands to make or delete blank lines.
        !           231: * Continuation Lines:: Lines too wide for the screen.
        !           232: * Position Info::      What page, line, row, or column is point on?
        !           233: * Arguments::         Numeric arguments for repeating a command.
        !           234: 
        !           235: 
        !           236: File: emacs  Node: Blank Lines, Prev: Basic, Up: Basic, Next: Continuation Lines
        !           237: 
        !           238: Blank Lines
        !           239: ===========
        !           240: 
        !           241:   Here are special commands and techniques for putting in and taking out
        !           242: blank lines.
        !           243: 
        !           244: `C-o'     
        !           245:      Insert one or more blank lines after the cursor (`open-line').
        !           246: `C-x C-o'     
        !           247:      Delete all but one of many consecutive blank lines
        !           248:      (`delete-blank-lines').
        !           249: 
        !           250:   When you want to insert a new line of text before an existing line, you
        !           251: can do it by typing the new line of text, followed by RET.  However,
        !           252: it may be easier to see what you are doing if you first make a blank line
        !           253: and then insert the desired text into it.  This is easy to do using the key
        !           254: `C-o' (`open-line'), which inserts a newline after point but leaves
        !           255: point in front of the newline.  After `C-o', type the text for the new
        !           256: line.  `C-o F O O' has the same effect as `F O O RET', except for
        !           257: the final location of point.
        !           258: 
        !           259:   You can make several blank lines by typing `C-o' several times, or by
        !           260: giving it an argument to tell it how many blank lines to make.
        !           261: *Note Arguments::, for how.
        !           262: 
        !           263:   If you have many blank lines in a row and want to get rid of them, use
        !           264: `C-x C-o' (`delete-blank-lines').  When point is on a blank line which
        !           265: is adjacent to at least one other blank line, `C-x C-o' deletes all but
        !           266: one of the consecutive blank lines, leaving exactly one.  With point on a
        !           267: blank line with no other blank line adjacent to it, the sole blank line is
        !           268: deleted, leaving none.  When point is on a nonblank line, `C-x C-o'
        !           269: deletes any blank lines following that nonblank line.
        !           270: 
        !           271: 
        !           272: File: emacs  Node: Continuation Lines, Prev: Blank Lines, Up: Basic, Next: Position Info
        !           273: 
        !           274: Continuation Lines
        !           275: ==================
        !           276: 
        !           277:   If you add too many characters to one line, without breaking it with a
        !           278: RET, the line will grow to occupy two (or more) lines on the screen,
        !           279: with a `\' at the extreme right margin of all but the last of them.
        !           280: The `\' says that the following screen line is not really a distinct
        !           281: line in the text, but just the "continuation" of a line too long to fit
        !           282: the screen.  Sometimes it is nice to have Emacs insert newlines
        !           283: automatically when a line gets too long; for this, use Auto Fill mode
        !           284: (*Note Filling::).
        !           285: 
        !           286:   Instead of continuation, long lines can be displayed by "truncation".
        !           287: This means that all the characters that do not fit in the width of the
        !           288: screen or window do not appear at all.  They remain in the buffer,
        !           289: temporarily invisible.  `$' is used in the last column instead of
        !           290: `\' to inform you that truncation is in effect.
        !           291: 
        !           292:   Continuation can be turned off for a particular buffer by setting the
        !           293: variable `truncate-lines' to non-`nil' in that buffer.  Truncation instead
        !           294: of continuation also happens whenever horizontal scrolling is in use, and
        !           295: optionally whenever side-by-side windows are in use (*Note Windows::).
        !           296: Altering the value of `truncate-lines' makes it local to the current
        !           297: buffer; until that time, the default value is in effect.  The default is
        !           298: initially `nil'.  *Note Locals::.
        !           299: 
        !           300: 
        !           301: File: emacs  Node: Position Info, Prev: Continuation Lines, Up: Basic, Next: Arguments
        !           302: 
        !           303: Cursor Position Information
        !           304: ===========================
        !           305: 
        !           306:   If you are accustomed to other display editors, you may be surprised that
        !           307: Emacs does not always display the page number or line number of point in
        !           308: the mode line.  This is because the text is stored in a way that makes it
        !           309: difficult to compute this information.  Displaying them all the time would
        !           310: be intolerably slow.  They are not needed very often in Emacs anyway,
        !           311: but there are commands to compute them and print them.
        !           312: 
        !           313: `M-x what-page'     
        !           314:      Print page number of point, and line number within page.
        !           315: `M-x what-line'     
        !           316:      Print line number of point in the buffer.
        !           317: `M-='     
        !           318:      Print number of lines in the current region (`count-lines-region').
        !           319: `C-x ='     
        !           320:      Print character code of character after point, character position of
        !           321:      point, and column of point (`what-cursor-position').
        !           322: 
        !           323:   There are two commands for printing line numbers.  `M-x what-line'
        !           324: counts lines from the beginning of the file and prints the line number
        !           325: point is on.  The first line of the file is line number 1.  These numbers
        !           326: can be used as arguments to `M-x goto-line'.  By contrast, `M-x
        !           327: what-page' counts pages from the beginning of the file, and counts lines
        !           328: within the page, printing both of them.  *Note Pages::.
        !           329: 
        !           330:   While on this subject, we might as well mention `M-=' (`count-lines-region'),
        !           331: which prints the number of lines in the region (*Note Mark::).
        !           332: *Note Pages::, for the command `C-x l' which counts the lines in the
        !           333: current page.
        !           334: 
        !           335:   The command `C-x =' (`what-cursor-position') can be used to find out
        !           336: the column that the cursor is in, and other miscellaneous information about
        !           337: point.  It prints a line in the echo area that looks like this:
        !           338: 
        !           339:      Char: x (0170)  point=65986 of 563027(12%)  x=44
        !           340: 
        !           341: (In fact, this is the output produced when point is before the `x=44'
        !           342: in the example.)
        !           343: 
        !           344:   The two values after `Char:' describe the character following point,
        !           345: first by showing it and second by giving its octal character code.
        !           346: 
        !           347:   `point=' is followed by the position of point expressed as a character
        !           348: count.  The front of the buffer counts as position 1, one character later
        !           349: as 2, and so on.  The next, larger number is the total number of characters
        !           350: in the buffer.  Afterward in parentheses comes the position expressed as a
        !           351: percentage of the total size.
        !           352: 
        !           353:   `x=' is followed by the horizontal position of point, in columns from the
        !           354: left edge of the window.
        !           355: 
        !           356:   If the buffer has been narrowed, making some of the text at the beginning and
        !           357: the end temporarily invisible, `C-x =' prints additional text describing the
        !           358: current visible range.  For example, it might say
        !           359: 
        !           360:      Char: x (0170)  point=65986 of 563025(12%) <65102 - 68533>  x=44
        !           361: 
        !           362: where the two extra numbers give the smallest and largest character position
        !           363: that point is allowed to assume.  The characters between those two positions
        !           364: are the visible ones.  *Note Narrowing::.
        !           365: 
        !           366:   If point is at the end of the buffer (or the end of the visible part),
        !           367: `C-x =' omits any description of the character after point.
        !           368: The output looks like
        !           369: 
        !           370:      point=563026 of 563025(100%)  x=0
        !           371: 
        !           372: 
        !           373: File: emacs  Node: Arguments, Prev: Position Info, Up: Basic
        !           374: 
        !           375: Numeric Arguments
        !           376: =================
        !           377: 
        !           378:   Any Emacs command can be given a "numeric argument".  Some commands
        !           379: interpret the argument as a repetition count.  For example, giving an
        !           380: argument of ten to the key `C-f' (the command `forward-char', move
        !           381: forward one character) moves forward ten characters.  With these commands,
        !           382: no argument is equivalent to an argument of one.  Negative arguments are
        !           383: allowed.  Often they tell a command to move or act backwards.
        !           384: 
        !           385:   If your terminal keyboard has a META key, the easiest way to
        !           386: specify a numeric argument is to type digits and/or a minus sign while
        !           387: holding down the the META key.  For example,
        !           388:      M-5 C-n
        !           389: would move down five lines.  The characters `Meta-1', `Meta-2', and
        !           390: so on, as well as `Meta--', do this because they are keys bound to
        !           391: commands (`digit-argument' and `negative-argument') that are
        !           392: defined to contribute to an argument for the next command.
        !           393: 
        !           394:   Another way of specifying an argument is to use the `C-u'
        !           395: (`universal-argument') command followed by the digits of the argument.
        !           396: With `C-u', you can type the argument digits without holding
        !           397: down shift keys.  To type a negative argument, start with a minus sign.
        !           398: Just a minus sign normally means -1.  `C-u' works on all terminals.
        !           399: 
        !           400:   `C-u' followed by a character which is neither a digit nor a minus sign
        !           401: has the special meaning of "multiply by four".  It multiplies the argument
        !           402: for the next command by four.  `C-u' twice multiplies it by sixteen.  Thus,
        !           403: `C-u C-u C-f' moves forward sixteen characters.  This is a good way to move
        !           404: forward "fast", since it moves about 1/5 of a line in the usual size
        !           405: screen.  Other useful combinations are `C-u C-n', `C-u C-u C-n' (move down
        !           406: a good fraction of a screen), `C-u C-u C-o' (make "a lot" of blank lines),
        !           407: and `C-u C-k' (kill four lines).
        !           408: 
        !           409:   Some commands care only about whether there is an argument, and not about
        !           410: its value.  For example, the command `M-q' (`fill-paragraph') with
        !           411: no argument fills text; with an argument, it justifies the text as well.
        !           412: (*Note Filling::, for more information on `M-q'.)  Just `C-u' is a
        !           413: handy way of providing an argument for such commands.
        !           414: 
        !           415:   Some commands use the value of the argument as a repeat count, but do
        !           416: something peculiar when there is no argument.  For example, the command
        !           417: `C-k' (`kill-line') with argument N kills N lines, including their
        !           418: terminating newlines.  But `C-k' with no argument is special: it kills the
        !           419: text up to the next newline, or, if point is right at the end of the line,
        !           420: it kills the newline itself.  Thus, two `C-k' commands with no arguments
        !           421: can kill a nonblank line, just like `C-k' with an argument of one.  (*Note
        !           422: Killing::, for more information on `C-k'.)
        !           423: 
        !           424:   A few commands treat a plain `C-u' differently from an ordinary
        !           425: argument.  A few others may treat an argument of just a minus sign
        !           426: differently from an argument of -1.  These unusual cases will be described
        !           427: when they come up; they are always for reasons of convenience of use of the
        !           428: individual command.
        !           429: 
        !           430: 
        !           431: 
        !           432: File: emacs  Node: Undo, Prev: Basic, Up: Top, Next: Minibuffer
        !           433: 
        !           434: Undoing Changes
        !           435: ***************
        !           436: 
        !           437:   Emacs allows all changes made in the text of a buffer to be undone,
        !           438: up to a certain amount of change (8000 characters).  Each buffer records
        !           439: changes individually, and the undo command always applies to the
        !           440: current buffer.  Usually each editing command makes a separate entry
        !           441: in the undo records, but some commands such as `query-replace'
        !           442: make many entries, and very simple commands such as self-inserting
        !           443: characters are often grouped to make undoing less tedious.
        !           444: 
        !           445: `C-x u'     
        !           446:      Undo one batch of changes (usually, one command worth) (`undo').
        !           447: `C-_'     
        !           448:      The same.
        !           449: 
        !           450:   The command `C-x u' or `C-_' is how you undo.  The first time you give
        !           451: this command, it undoes the last change.  Point moves to the text
        !           452: affected by the undo, so you can see what was undone.
        !           453: 
        !           454:   Consecutive repetitions of the `C-_' or `C-x u' commands undo earlier
        !           455: and earlier changes, back to the limit of what has been recorded.  If all
        !           456: recorded changes have already been undone, the undo command prints an error
        !           457: message and does nothing.
        !           458: 
        !           459:   Any command other than an undo command breaks the sequence of undo
        !           460: commands.  Starting at this moment, the previous undo commands are
        !           461: considered ordinary changes that can themselves be undone.  Thus, you can
        !           462: redo changes you have undone by typing `C-f' or any other command that
        !           463: will have no important effect, and then using more undo commands.
        !           464: 
        !           465:   If you notice that a buffer has been modified accidentally, the easiest
        !           466: way to recover is to type `C-_' repeatedly until the stars disappear
        !           467: from the front of the mode line.  At this time, all the modifications you
        !           468: made have been cancelled.  If you do not remember whether you changed the
        !           469: buffer deliberately, type `C-_' once, and when you see the last change
        !           470: you made undone, you will remember why you made it.  If it was an accident,
        !           471: leave it undone.  If it was deliberate, redo the change as described in the
        !           472: preceding paragraph.
        !           473: 
        !           474:   Whenever an undo command makes the stars disappear from the mode line,
        !           475: it means that the buffer contents are the same as they were when the
        !           476: file was last read in or saved.
        !           477: 
        !           478:   Not all buffers record undo information.  Buffers whose names start with
        !           479: spaces don't; these buffers are used internally by Emacs and its extensions
        !           480: to hold text that users don't normally look at or edit.  Also, minibuffers,
        !           481: help buffers and documentation buffers don't record undo information.
        !           482: 
        !           483:   At most 8000 or so characters of deleted or modified text can be
        !           484: remembered in any one buffer for reinsertion by the undo command.  Also,
        !           485: there is a limit on the number of individual insert, delete or change
        !           486: actions that can be remembered.
        !           487: 
        !           488:   The reason the `undo' command has two keys, `C-x u' and `C-_', set
        !           489: up to run it is that it is worthy of a single-character key, but the way to
        !           490: type `C-_' on some keyboards is not obvious.  `C-x u' is an alternative
        !           491: you can type in the same fashion on any terminal.
        !           492: 
        !           493: 
        !           494: File: emacs  Node: Minibuffer, Prev: Undo, Up: Top, Next: M-x
        !           495: 
        !           496: The Minibuffer
        !           497: **************
        !           498: 
        !           499:   The "minibuffer" is the facility used by Emacs commands to read
        !           500: arguments more complicated than a single number.  Minibuffer arguments can
        !           501: be file names, buffer names, Lisp function names, Emacs command names, Lisp
        !           502: expressions, and many other things, depending on the command reading the
        !           503: argument.  The usual Emacs editing commands can be used in the minibuffer
        !           504: to edit the argument.
        !           505: 
        !           506:   When the minibuffer is in use, it appears in the echo area, and the
        !           507: terminal's cursor moves there.  The beginning of the minibuffer line
        !           508: displays a "prompt" which says what kind of input you should supply and
        !           509: how it will be used.  Often this prompt is derived from the name of the
        !           510: command that the argument is for.  The prompt normally ends with a colon.
        !           511: 
        !           512:   Sometimes a "default argument" appears in parentheses after the
        !           513: colon; it too is part of the prompt.  The default will be used as the
        !           514: argument value if you enter an empty argument (e.g., just type RET).
        !           515: For example, commands that read buffer names always show a default, which
        !           516: is the name of the buffer that will be used if you type just RET.
        !           517: 
        !           518:   The simplest way to give a minibuffer argument is to type the text you
        !           519: want, terminated by RET which exits the minibuffer.  You can get out
        !           520: of the minibuffer, canceling the command that it was for, by typing
        !           521: `C-g'.
        !           522: 
        !           523:   Since the minibuffer uses the screen space of the echo area, it can
        !           524: conflict with other ways Emacs customarily uses the echo area.  Here is how
        !           525: Emacs handles such conflicts:
        !           526: 
        !           527:    * If a command gets an error while you are in the minibuffer, this does
        !           528:      not cancel the minibuffer.  However, the echo area is needed for the
        !           529:      error message and therefore the minibuffer itself is hidden for a
        !           530:      while.  It comes back after a few seconds, or as soon as you type
        !           531:      anything.
        !           532:      
        !           533:    * If in the minibuffer you use a command whose purpose is to print a
        !           534:      message in the echo area, such as `C-x =', the message is printed
        !           535:      normally, and the minibuffer is hidden for a while.  It comes back
        !           536:      after a few seconds, or as soon as you type anything.
        !           537:      
        !           538:    * Echoing of keystrokes does not take place while the minibuffer is in
        !           539:      use.
        !           540: 
        !           541: * Menu:
        !           542: 
        !           543: * File: Minibuffer File.  Entering file names with the minibuffer.
        !           544: * Edit: Minibuffer Edit.  How to edit in the minibuffer.
        !           545: * Completion::           An abbreviation facility for minibuffer input.
        !           546: * Repetition::           Re-executing commands that used the minibuffer.
        !           547: 
        !           548: 
        !           549: File: emacs  Node: Minibuffer File, Prev: Minibuffer, Up: Minibuffer, Next: Minibuffer Edit
        !           550: 
        !           551: Minibuffers for File Names
        !           552: ==========================
        !           553: 
        !           554:   Sometimes the minibuffer starts out with text in it.  For example, when
        !           555: you are supposed to give a file name, the minibuffer starts out containing
        !           556: the "default directory", which ends with a slash.  This is to inform
        !           557: you which directory the file will be found in if you do not specify a
        !           558: directory.  For example, the minibuffer might start out with
        !           559: 
        !           560:      Find File: /u2/emacs/src/
        !           561: 
        !           562: where `Find File: ' is the prompt.  Typing `buffer.c' specifies the file
        !           563: `/u2/emacs/src/buffer.c'.  To find files in nearby directories, use `..';
        !           564: thus, if you type `../lisp/simple.el', the file that you visit will be the
        !           565: one named `/u2/emacs/lisp/simple.el'.  Alternatively, you can kill with
        !           566: `M-DEL' the directory names you don't want (*Note Words::).
        !           567: 
        !           568:   You can also type an absolute file name, one starting with a slash or a
        !           569: tilde, ignoring the default directory.  For example, to find the file
        !           570: `/etc/termcap', just type the name, giving
        !           571: 
        !           572:      Find File: /u2/emacs/src//etc/termcap
        !           573: 
        !           574: Two slashes in a row are not normally meaningful in Unix file names, but
        !           575: they are allowed in GNU Emacs.  They mean, "ignore everything before the
        !           576: second slash in the pair."  Thus, `/u2/emacs/src/' is ignored, and
        !           577: you get the file `/etc/termcap'.
        !           578: 
        !           579:   If you set `insert-default-directory' to `nil', the default directory
        !           580: is not inserted in the minibuffer.  This way, the minibuffer starts out
        !           581: empty.  But the name you type, if relative, is still interpreted with
        !           582: respect to the same default directory.
        !           583: 
        !           584: 
        !           585: File: emacs  Node: Minibuffer Edit, Prev: Minibuffer File, Up: Minibuffer, Next: Completion
        !           586: 
        !           587: Editing in the Minibuffer
        !           588: =========================
        !           589: 
        !           590:   The minibuffer is an Emacs buffer (albeit a peculiar one), and the usual
        !           591: Emacs commands are available for editing the text of an argument you are
        !           592: entering.
        !           593: 
        !           594:   Since RET in the minibuffer is defined to exit the minibuffer,
        !           595: inserting a newline into the minibuffer must be done with `C-o' or with
        !           596: `C-q LFD'.  (Recall that a newline is really the LFD
        !           597: character.)
        !           598: 
        !           599:   The minibuffer has its own window which always has space on the screen
        !           600: but acts as if it were not there when the minibuffer is not in use.  When
        !           601: the minibuffer is in use, its window is just like the others; you can
        !           602: switch to another window with `C-x o', edit text in other windows and
        !           603: perhaps even visit more files, before returning to the minibuffer to submit
        !           604: the argument.  You can kill text in another window, return to the
        !           605: minibuffer window, and then yank the text to use it in the argument.
        !           606: *Note Windows::.
        !           607: 
        !           608:   There are some restrictions on the use of the minibuffer window, however.
        !           609: You cannot switch buffers in it---the minibuffer and its window are
        !           610: permanently attached.  Also, you cannot split or kill the minibuffer
        !           611: window.  But you can make it taller in the normal fashion with `C-x ^'.
        !           612: 
        !           613:   If while in the minibuffer you issue a command that displays help text
        !           614: of any sort in another window, then that window is identified as the
        !           615: one to scroll if you type `C-M-v' while in the minibuffer.  This
        !           616: lasts until you exit the minibuffer.  This feature comes into play
        !           617: if a completing minibuffer gives you a list of possible completions.
        !           618: 
        !           619:   Recursive use of the minibuffer is supported by Emacs.  However, it is
        !           620: easy to do this by accident (because of autorepeating keyboards, for
        !           621: example) and get confused.  Therefore, most Emacs commands that use the
        !           622: minibuffer refuse to operate if the minibuffer window is selected.  If the
        !           623: minibuffer is active but you have switched to a different window, recursive
        !           624: use of the minibuffer is allowed---if you know enough to try to do this,
        !           625: you probably will not get confused.
        !           626: 
        !           627:   If you set the variable `enable-recursive-minibuffers' to be
        !           628: non-`nil', recursive use of the minibuffer is always allowed.
        !           629: 
        !           630: 
        !           631: File: emacs  Node: Completion, Prev: Minibuffer Edit, Up: Minibuffer, Next: Repetition
        !           632: 
        !           633: Completion
        !           634: ==========
        !           635: 
        !           636:   When appropriate, the minibuffer provides a "completion" facility.
        !           637: This means that you type enough of the argument to determine the rest,
        !           638: based on Emacs's knowledge of which arguments make sense, and Emacs visibly
        !           639: fills in the rest, or as much as can be determined from the part you have
        !           640: typed.
        !           641: 
        !           642:   When completion is available, certain keys---TAB, RET, and SPC---are
        !           643: redefined to complete an abbreviation present in the minibuffer into a
        !           644: longer string that it stands for, by matching it against a set of
        !           645: "completion alternatives" provided by the command reading the argument.
        !           646: `?' is defined to display a list of possible completions of what you
        !           647: have inserted.
        !           648: 
        !           649:   For example, when the minibuffer is being used by `Meta-x' to read
        !           650: the name of a command, it is given a list of all available Emacs command
        !           651: names to complete against.  The completion keys match the text in the
        !           652: minibuffer against all the command names, find any additional characters of
        !           653: the name that are implied by the ones already present in the minibuffer,
        !           654: and add those characters to the ones you have given.
        !           655: 
        !           656:   Case is normally significant in completion, because it is significant in
        !           657: most of the names that you can complete (buffer names, file names and
        !           658: command names).  Thus, `fo' will not complete to `Foo'.  When you
        !           659: are completing a name in which case does not matter, case may be ignored
        !           660: for completion's sake if the program said to do so.
        !           661: 
        !           662: 
        !           663: Completion Example
        !           664: ------------------
        !           665: 
        !           666:   A concrete example may help here.  If you type `Meta-x au TAB', the TAB
        !           667: looks for alternatives (in this case, command names) that start with `au'.
        !           668: There are only two: `auto-fill-mode' and `auto-save-mode'.  These are the
        !           669: same as far as `auto-', so the `au' in the minibuffer changes to `auto-'.
        !           670: 
        !           671:   If you type TAB again immediately, there are multiple possibilities
        !           672: for the very next character---it could be `s' or `f'---so no more
        !           673: characters are added; but a list of all possible completions is displayed
        !           674: in another window.
        !           675: 
        !           676:   If you go on to type `f TAB', this TAB sees `auto-f'.  The only command
        !           677: name starting this way is `auto-fill-mode', so completion inserts the rest
        !           678: of that.  You now have `auto-fill-mode' in the minibuffer after typing just
        !           679: `au TAB f TAB'.  Note that TAB has this effect because in the minibuffer it
        !           680: is bound to the function `minibuffer-complete' when completion is supposed
        !           681: to be done.
        !           682: 
        !           683: 
        !           684: Completion Commands
        !           685: -------------------
        !           686: 
        !           687:   Here is a list of all the completion commands, defined in the minibuffer
        !           688: when completion is available.
        !           689: 
        !           690: `TAB'     
        !           691:      Complete the text in the minibuffer as much as possible 
        !           692:      (`minibuffer-complete').
        !           693: `SPC'     
        !           694:      Complete the text in the minibuffer but don't add or fill out more
        !           695:      than one word (`minibuffer-complete-word').
        !           696: `RET'     
        !           697:      Submit the text in the minibuffer as the argument, possibly completing
        !           698:      first as described below (`minibuffer-complete-and-exit').
        !           699: `?'     
        !           700:      Print a list of all possible completions of the text in the minibuffer
        !           701:      (`minibuffer-list-completions').
        !           702: 
        !           703:   SPC completes much like TAB, but never goes beyond the next hyphen or
        !           704: space.  If you have `auto-f' in the minibuffer and type SPC, it finds that
        !           705: the completion is `auto-fill-mode', but it stops completing after `fill-'.
        !           706: This gives `auto-fill-'.  Another SPC at this point completes all the way
        !           707: to `auto-fill-mode'.  SPC in the minibuffer runs the function
        !           708: `minibuffer-complete-word' when completion is available.
        !           709: 
        !           710:   There are three different ways that RET can work in completing
        !           711: minibuffers, depending on how the argument will be used.
        !           712: 
        !           713:    * "Strict" completion is used when it is meaningless to give any
        !           714:      argument except one of the known alternatives.  For example, when
        !           715:      `C-x k' reads the name of a buffer to kill, it is meaningless to
        !           716:      give anything but the name of an existing buffer.  In strict
        !           717:      completion, RET refuses to exit if the text in the minibuffer
        !           718:      does not complete to an exact match.
        !           719:      
        !           720:    * "Cautious" completion is similar to strict completion, except that
        !           721:      RET exits only if the text was an exact match already, not
        !           722:      needing completion.  If the text is not an exact match, RET does
        !           723:      not exit, but it does complete the text.  If it completes to an exact
        !           724:      match, a second RET will exit.
        !           725:      
        !           726:      Cautious completion is used for reading file names for files that must
        !           727:      already exist.
        !           728:      
        !           729:    * "Permissive" completion is used when any string whatever is
        !           730:      meaningful, and the list of completion alternatives is just a guide.
        !           731:      For example, when `C-x C-f' reads the name of a file to visit, any
        !           732:      file name is allowed, in case you want to create a file.  In
        !           733:      permissive completion, RET takes the text in the minibuffer
        !           734:      exactly as given, without completing it.
        !           735: 
        !           736:   The completion commands display a list of all possible completions in a
        !           737: window whenever there is more than one possibility for the very next
        !           738: character.  Also, typing `?' explicitly requests such a list.  The
        !           739: list of completions counts as help text, so `C-M-v' typed in the
        !           740: minibuffer scrolls the list.
        !           741: 
        !           742:   When completion is done on file names, certain file names are usually
        !           743: ignored.  The variable `completion-ignored-extensions' contains a list of
        !           744: strings; a file whose name ends in any of those strings is ignored as a
        !           745: possible completion.  The standard value of this variable has several
        !           746: elements including `".o"', `".elc"', `".dvi"' and `"~"'.  The effect is
        !           747: that, for example, `foo' can complete to `foo.c' even though `foo.o' exists
        !           748: as well.  If the only possible completions are files that end in "ignored"
        !           749: strings, then they are not ignored.
        !           750: 
        !           751:   Normally, a completion command that finds the next character is undetermined
        !           752: automatically displays a list of all possible completions.  If the variable
        !           753: `completion-auto-help' is set to `nil', this does not happen,
        !           754: and you must type `?' to display the possible completions.
        !           755: 
        !           756: 
        !           757: File: emacs  Node: Repetition, Prev: Completion, Up: Minibuffer
        !           758: 
        !           759: Repeating Minibuffer Commands
        !           760: =============================
        !           761: 
        !           762:   Every command that uses the minibuffer at least once is recorded on a
        !           763: special history list, together with the values of the minibuffer arguments,
        !           764: so that you can repeat the command easily.  In particular, every
        !           765: use of `Meta-x' is recorded, since `M-x' uses the minibuffer to
        !           766: read the command name.
        !           767: 
        !           768: `C-x ESC'     
        !           769:      Re-execute a recent minibuffer command (`repeat-complex-command').
        !           770: `M-p'     
        !           771:      Within `C-x ESC', move to previous recorded command
        !           772:      (`previous-complex-command').
        !           773: `M-n'     
        !           774:      Within `C-x ESC', move to the next (more recent) recorded
        !           775:      command (`next-complex-command').
        !           776: `M-x list-command-history'     
        !           777:      Display the entire command history, showing all the commands
        !           778:      `C-x ESC' can repeat, most recent first.
        !           779: 
        !           780:   `C-x ESC' is used to re-execute a recent minibuffer-using
        !           781: command.  With no argument, it repeats the last such command.  A numeric
        !           782: argument specifies which command to repeat; one means the last one, and
        !           783: larger numbers specify earlier ones.
        !           784: 
        !           785:   `C-x ESC' works by turning the previous command into a Lisp
        !           786: expression and then entering a minibuffer initialized with the text for
        !           787: that expression.  If you type just RET, the command is repeated as
        !           788: before.  You can also change the command by editing the Lisp expression.
        !           789: Whatever expression you finally submit is what will be executed.  The
        !           790: repeated command is added to the front of the command history unless it is
        !           791: identical to the most recently executed command already there.
        !           792: 
        !           793:   Even if you don't understand Lisp syntax, it will probably be obvious
        !           794: which command is displayed for repetition.  If you do not change the text,
        !           795: you can be sure it will repeat exactly as before.
        !           796: 
        !           797:   Once inside the minibuffer for `C-x ESC', if the command shown
        !           798: to you is not the one you want to repeat, you can move around the list of
        !           799: previous commands using `M-n' and `M-p'.  `M-p' replaces the
        !           800: contents of the minibuffer with the next earlier recorded command, and
        !           801: `M-n' replaces them with the next later command.  After finding the
        !           802: desired previous command, you can edit its expression as usual and then
        !           803: resubmit it by typing RET as usual.  Any editing you have done on the
        !           804: command to be repeated is lost if you use `M-n' or `M-p'.
        !           805: 
        !           806:   `M-p' is more useful than `M-n', since more often you will
        !           807: initially request to repeat the most recent command and then decide to
        !           808: repeat an older one instead.  These keys are specially defined within
        !           809: `C-x ESC' to run the commands `previous-complex-command' and
        !           810: `next-complex-command'.
        !           811: 
        !           812:   The list of previous minibuffer-using commands is stored as a Lisp list
        !           813: in the variable `command-history'.  Each element is a Lisp expression
        !           814: which describes one command and its arguments.  Lisp programs can reexecute
        !           815: a command by feeding the corresponding `command-history' element to
        !           816: `eval'.
        !           817: 
        !           818: 
        !           819: File: emacs  Node: M-x, Prev: Minibuffer, Up: Top, Next: Help
        !           820: 
        !           821: Running Commands by Name
        !           822: ************************
        !           823: 
        !           824:   The Emacs commands that are used often or that must be quick to type are
        !           825: bound to keys---short sequences of characters---for convenient use.  Other
        !           826: Emacs commands that do not need to be brief are not bound to keys; to run
        !           827: them, you must refer to them by name.
        !           828: 
        !           829:   A command name is, by convention, made up of one or more words, separated
        !           830: by hyphens; for example, `auto-fill-mode' or `manual-entry'.  The
        !           831: use of English words makes the command name easier to remember than a key
        !           832: made up of obscure characters, even though it is more characters to type.
        !           833: Any command can be run by name, even if it is also runnable by keys.
        !           834: 
        !           835:   The way to run a command by name is to start with `M-x', type the
        !           836: command name, and finish it with RET.  `M-x' uses the minibuffer
        !           837: to read the command name.  RET exits the minibuffer and runs the
        !           838: command.
        !           839: 
        !           840:   Emacs uses the minibuffer for reading input for many different purposes;
        !           841: on this occasion, the string `M-x' is displayed at the beginning of
        !           842: the minibuffer as a "prompt" to remind you that your input should be
        !           843: the name of a command to be run.  *Note Minibuffer::, for full information
        !           844: on the features of the minibuffer.
        !           845: 
        !           846:   You can use completion to enter the command name.  For example, the
        !           847: command `forward-char' can be invoked by name by typing
        !           848: 
        !           849:      M-x forward-char RET
        !           850:      
        !           851: or     
        !           852:      
        !           853:      M-x fo TAB c RET
        !           854: 
        !           855: Note that `forward-char' is the same command that you invoke with
        !           856: the key `C-f'.  Any command (interactively callable function) defined
        !           857: in Emacs can be called by its name using `M-x' whether or not any
        !           858: keys are bound to it.
        !           859: 
        !           860:   If you type `C-g' while the command name is being read, you cancel
        !           861: the `M-x' command and get out of the minibuffer, ending up at top level.
        !           862: 
        !           863:   To pass a numeric argument to the command you are invoking with
        !           864: `M-x', specify the numeric argument before the `M-x'.  `M-x'
        !           865: passes the argument along to the function which it calls.  The argument
        !           866: value appears in the prompt while the command name is being read.
        !           867: 
        !           868:   Normally, when describing a command that is run by name, we omit the
        !           869: RET that is needed to terminate the name.  Thus we might speak of
        !           870: `M-x auto-fill-mode' rather than `M-x auto-fill-mode RET'.
        !           871: We mention the RET only when there is a need to emphasize its
        !           872: presence, such as when describing a sequence of input that contains a
        !           873: command name and arguments that follow it.
        !           874: 
        !           875:   `M-x' is defined to run the command `execute-extended-command',
        !           876: which is responsible for reading the name of another command and invoking
        !           877: it.
        !           878: 
        !           879: 
        !           880: File: emacs  Node: Help, Prev: M-x, Up: Top, Next: Mark
        !           881: 
        !           882: Help
        !           883: ****
        !           884: 
        !           885:   Emacs provides extensive help features which revolve around a single
        !           886: character, `C-h'.  `C-h' is a prefix key that is used only for
        !           887: documentation-printing commands.  The characters that you can type after
        !           888: `C-h' are called "help options".  One help option is `C-h';
        !           889: that is how you ask for help about using `C-h'.
        !           890: 
        !           891:   `C-h C-h' prints a list of the possible help options, and then asks
        !           892: you to go ahead and type the option.  It prompts with a string
        !           893: 
        !           894:      A, B, C, F, I, K, L, M, N, S, T, V, W, C-c, C-d, C-n, C-w or C-h for more help: 
        !           895: 
        !           896: and you should type one of those characters.
        !           897: 
        !           898:   Typing a third `C-h' displays a description of what the options mean;
        !           899: it still waits for you to type an option.  To cancel, type `C-g'.
        !           900: 
        !           901:   Here is a summary of the defined help commands.
        !           902: 
        !           903: `C-h a STRING RET'     
        !           904:      Display list of commands whose names contain STRING
        !           905:      (`command-apropos').
        !           906: `C-h b'     
        !           907:      Display a table of all key bindings in effect now; local bindings of
        !           908:      the current major mode first, followed by all global bindings
        !           909:      (`describe-bindings').
        !           910: `C-h c KEY'     
        !           911:      Print the name of the command that KEY runs (`describe-key-briefly').
        !           912:      `c' is for `character'.  For more extensive information on KEY,
        !           913:      use `C-h k'.
        !           914: `C-h f FUNCTION RET'     
        !           915:      Display documentation on the Lisp function named FUNCTION
        !           916:      (`describe-function').  Note that commands are Lisp functions, so
        !           917:      a command name may be used.
        !           918: `C-h i'     
        !           919:      Run Info, the program for browsing documentation files (`info').
        !           920:      The complete Emacs manual is available on-line in Info.
        !           921: `C-h k KEY'     
        !           922:      Display name and documentation of the command KEY runs (`describe-key').
        !           923: `C-h l'     
        !           924:      Display a description of the last 100 characters you typed
        !           925:      (`view-lossage').
        !           926: `C-h m'     
        !           927:      Display documentation of the current major mode (`describe-mode').
        !           928: `C-h n'     
        !           929:      Display documentation of Emacs changes, most recent first
        !           930:      (`view-emacs-news').
        !           931: `C-h s'     
        !           932:      Display current contents of the syntax table, plus an explanation of
        !           933:      what they mean (`describe-syntax').
        !           934: `C-h t'     
        !           935:      Display the Emacs tutorial (`help-with-tutorial').
        !           936: `C-h v VAR RET'     
        !           937:      Display the documentation of the Lisp variable VAR
        !           938:      (`describe-variable').
        !           939: `C-h w COMMAND RET'     
        !           940:      Print which keys run the command named COMMAND (`where-is').
        !           941: 
        !           942: 
        !           943: Documentation for a Key
        !           944: =======================
        !           945: 
        !           946:   The most basic `C-h' options are `C-h c' (`describe-key-briefly') and
        !           947: `C-h k' (`describe-key').  `C-h c KEY' prints in the echo area the name of
        !           948: the command that KEY is bound to.  For example, `C-h c C-f' prints
        !           949: `forward-char'.  Since command names are chosen to describe what the
        !           950: command does, this is a good way to get a very brief description of what
        !           951: KEY does.
        !           952: 
        !           953:   `C-h k KEY' is similar but gives more information.  It displays
        !           954: the documentation string of the command KEY is bound to as well as
        !           955: its name.  This is too big for the echo area, so a window is used for the
        !           956: display.
        !           957: 
        !           958: 
        !           959: Help by Command or Variable Name
        !           960: ================================
        !           961: 
        !           962:   `C-h f' (`describe-function') reads the name of a Lisp function
        !           963: using the minibuffer, then displays that function's documentation string
        !           964: in a window.  Since commands are Lisp functions, you can use this to get
        !           965: the documentation of a command that is known by name.  For example,
        !           966: 
        !           967:      C-h f auto-fill-mode RET
        !           968: 
        !           969: displays the documentation of `auto-fill-mode'.  This is the only
        !           970: way to see the documentation of a command that is not bound to any key
        !           971: (one which you would normally call using `M-x').
        !           972: 
        !           973:   `C-h f' is also useful for Lisp functions that you are planning to
        !           974: use in a Lisp program.  For example, if you have just written the code
        !           975: `(make-vector len)' and want to be sure that you are using
        !           976: `make-vector' properly, type `C-h f make-vector RET'.  Because
        !           977: `C-h f' allows all function names, not just command names, you may find
        !           978: that some of your favorite abbreviations that work in `M-x' don't work
        !           979: in `C-h f'.  An abbreviation may be unique among command names yet fail
        !           980: to be unique when other function names are allowed.
        !           981: 
        !           982:   The function name for `C-h f' to describe has a default which is
        !           983: used if you type RET leaving the minibuffer empty.  The default is
        !           984: the function called by the innermost Lisp expression in the buffer around
        !           985: point, provided that is a valid, defined Lisp function name.  For
        !           986: example, if point is located following the text `(make-vector (car
        !           987: x)', the innermost list containing point is the one that starts with
        !           988: `(make-vector', so the default is to describe the function
        !           989: `make-vector'.
        !           990: 
        !           991:   `C-h f' is often useful just to verify that you have the right
        !           992: spelling for the function name.  If `C-h f' mentions a default in the
        !           993: prompt, you have typed the name of a defined Lisp function.  If that tells
        !           994: you what you want to know, just type `C-g' to cancel the `C-h f'
        !           995: command and go on editing.
        !           996: 
        !           997:   `C-h w COMMAND RET' tells you what keys are bound to COMMAND.  It prints
        !           998: a list of the keys in the echo area.  Alternatively, it says that the
        !           999: command is not on any keys, which implies that you must use `M-x' to call
        !          1000: it.
        !          1001: 
        !          1002:   `C-h v' (`describe-variable') is like `C-h f' but describes Lisp
        !          1003: variables instead of Lisp functions.  Its default is the Lisp symbol around
        !          1004: or before point, but only if that is the name of a known Lisp variable.
        !          1005: *Note Variables::.
        !          1006: 
        !          1007: 
        !          1008: Apropos
        !          1009: =======
        !          1010: 
        !          1011:   A more sophisticated sort of question to ask is, "What are the commands
        !          1012: for working with files?"  For this, type `C-h a file RET', which displays a
        !          1013: list of all command names that contain `file', such as `copy-file',
        !          1014: `find-file', and so on.  With each command name appears a brief description
        !          1015: of how to use the command, and what keys you can currently invoke it with.
        !          1016: For example, it would say that you can invoke `find-file' by typing `C-x
        !          1017: C-f'.  The `a' in `C-h a' stands for `Apropos'; `C-h a' runs the Lisp
        !          1018: function `command-apropos'.
        !          1019: 
        !          1020:   Because `C-h a' looks only for functions whose names contain the
        !          1021: string which you specify, you must use ingenuity in choosing the string.
        !          1022: If you are looking for commands for killing backwards and `C-h a
        !          1023: kill-backwards RET' doesn't reveal any, don't give up.  Try just
        !          1024: `kill', or just `backwards', or just `back'.  Be persistent.
        !          1025: Pretend you are playing Adventure.  Also note that you can use a
        !          1026: regular expression as the argument (*Note Regexps::).
        !          1027: 
        !          1028:   Here is a set of arguments to give to `C-h a' that covers many
        !          1029: classes of Emacs commands, since there are strong conventions for naming
        !          1030: the standard Emacs commands.  By giving you a feel for the naming
        !          1031: conventions, this set should also serve to aid you in developing a
        !          1032: technique for picking `apropos' strings.
        !          1033: 
        !          1034:      char, line, word, sentence, paragraph, region, page, sexp, list, defun,
        !          1035:      buffer, screen, window, file, dir, register, mode,
        !          1036:      beginning, end, forward, backward, next, previous, up, down, search, goto,
        !          1037:      kill, delete, mark, insert, yank, fill, indent, case,
        !          1038:      change, set, what, list, find, view, describe.
        !          1039: 
        !          1040:   To list all Lisp symbols that contain a match for a regexp, not just
        !          1041: the ones that are defined as commands, use the command `M-x apropos'
        !          1042: instead of `C-h a'.
        !          1043: 
        !          1044: 
        !          1045: Other Help Commands
        !          1046: ===================
        !          1047: 
        !          1048:   `C-h i' (`info') runs the Info program, which is used for
        !          1049: browsing through structured documentation files.  The entire Emacs manual
        !          1050: is available within Info.  Eventually all the documentation of the GNU
        !          1051: system will be available.  Type `h' after entering Info to run
        !          1052: a tutorial on using Info.
        !          1053: 
        !          1054:   If something surprising happens, and you are not sure what commands you
        !          1055: typed, use `C-h l' (`view-lossage').  `C-h l' prints the last
        !          1056: 100 command characters you typed in.  If you see commands that you don't
        !          1057: know, you can use `C-h c' to find out what they do.
        !          1058: 
        !          1059:   Emacs has several major modes, each of which redefines a few keys and
        !          1060: makes a few other changes in how editing works.  `C-h m' (`describe-mode')
        !          1061: prints documentation on the current major mode, which normally describes
        !          1062: all the commands that are changed in this mode.
        !          1063: 
        !          1064:   `C-h b' (`describe-bindings') and `C-h s' (`describe-syntax') present
        !          1065: other information about the current Emacs mode.  `C-h b' displays a list of
        !          1066: all the key bindings now in effect; the local bindings of the current major
        !          1067: mode first, followed by the global bindings (*Note Key Bindings::).  `C-h
        !          1068: s' displays the contents of the syntax table, with explanations of each
        !          1069: character's syntax (*Note Syntax::).
        !          1070: 
        !          1071:   The other `C-h' options display various files of useful information.
        !          1072: `C-h C-w' displays the full details on the complete absence of warranty for
        !          1073: GNU Emacs.  `C-h n' (`view-emacs-news') displays the file `emacs/etc/NEWS',
        !          1074: which contains documentation on Emacs changes arranged chronologically.
        !          1075: `C-h t' (`help-with-tutorial') displays the learn-by-doing Emacs tutorial.
        !          1076: `C-h C-c' (`describe-copying') displays the file `emacs/etc/COPYING', which
        !          1077: tells you the conditions you must obey in distributing copies of Emacs.
        !          1078: `C-h C-d' (`describe-distribution') displays the file `emacs/etc/DISTRIB',
        !          1079: which tells you how you can order a copy of the latest version of Emacs.
        !          1080: 
        !          1081: 
        !          1082: File: emacs  Node: Mark, Prev: Help, Up: Top, Next: Killing
        !          1083: 
        !          1084: The Mark and the Region
        !          1085: ***********************
        !          1086: 
        !          1087:   There are many Emacs commands which operate on an arbitrary contiguous
        !          1088: part of the current buffer.  To specify the text for such a command to
        !          1089: operate on, you set "the mark" at one end of it, and move point to the
        !          1090: other end.  The text between point and the mark is called "the region".
        !          1091: You can move point or the mark to adjust the boundaries of the region.  It
        !          1092: doesn't matter which one is set first chronologically, or which one comes
        !          1093: earlier in the text.
        !          1094: 
        !          1095:   Once the mark has been set, it remains until it is set again at another
        !          1096: place.  The mark remains fixed with respect to the preceding character if
        !          1097: text is inserted or deleted in the buffer.  Each Emacs buffer has its own
        !          1098: mark, so that when you return to a buffer that had been selected
        !          1099: previously, it has the same mark it had before.
        !          1100: 
        !          1101:   Many commands that insert text, such as `C-y' (`yank') and
        !          1102: `M-x insert-buffer', position the mark at one end of the inserted
        !          1103: text---the opposite end from where point is positioned, so that the region
        !          1104: contains the text just inserted.
        !          1105: 
        !          1106:   Aside from delimiting the region, the mark is also useful for remembering
        !          1107: a spot that you may want to go back to.  To make this feature more useful,
        !          1108: Emacs remembers 16 previous locations of the mark, in the `mark ring'.
        !          1109: 
        !          1110: * Menu:
        !          1111: 
        !          1112: * Setting Mark::       Commands to set the mark.
        !          1113: * Using Region::       Summary of ways to operate on contents of the region.
        !          1114: * Marking Objects::    Commands to put region around textual units.
        !          1115: * Mark Ring::   Previous mark positions saved so you can go back there.
        !          1116: 
        !          1117: 
        !          1118: File: emacs  Node: Setting Mark, Prev: Mark, Up: Mark, Next: Using Region
        !          1119: 
        !          1120: Setting the Mark
        !          1121: ================
        !          1122: 
        !          1123:   Here are some commands for setting the mark:
        !          1124: 
        !          1125: `C-SPC'     
        !          1126:      Set the mark where point is (`set-mark-command').
        !          1127: `C-@'     
        !          1128:      The same.
        !          1129: `C-x C-x'     
        !          1130:      Interchange mark and point (`exchange-point-and-mark').
        !          1131: 
        !          1132:   For example, if you wish to convert part of the buffer to all upper-case,
        !          1133: you can use the `C-x C-u' (`upcase-region') command, which operates
        !          1134: on the text in the region.  You can first go to the beginning of the text
        !          1135: to be capitalized, type `C-SPC' to put the mark there, move to
        !          1136: the end, and then type `C-x C-u'.  Or, you can set the mark at the end
        !          1137: of the text, move to the beginning, and then type `C-x C-u'.  Most
        !          1138: commands that operate on the text in the region have the word `region'
        !          1139: in their names.
        !          1140: 
        !          1141:   The most common way to set the mark is with the `C-SPC' command
        !          1142: (`set-mark-command').  This sets the mark where point is.  Then you
        !          1143: can move point away, leaving the mark behind.  It is actually incorrect to
        !          1144: speak of the character `C-SPC'; there is no such character.  When
        !          1145: you type SPC while holding down CTRL, what you get on most
        !          1146: terminals is the character `C-@'.  This is the key actually bound to
        !          1147: `set-mark-command'.  But unless you are unlucky enough to have a
        !          1148: terminal where typing `C-SPC' does not produce `C-@', you
        !          1149: might as well think of this character as `C-SPC'.
        !          1150: 
        !          1151:   Since terminals have only one cursor, there is no way for Emacs to show
        !          1152: you where the mark is located.  You have to remember.  The usual solution
        !          1153: to this problem is to set the mark and then use it soon, before you forget
        !          1154: where it is.  But you can see where the mark is with the command `C-x
        !          1155: C-x' (`exchange-point-and-mark') which puts the mark where point was and
        !          1156: point where the mark was.  The extent of the region is unchanged, but the
        !          1157: cursor and point are now at the previous location of the mark.
        !          1158: 
        !          1159:   `C-x C-x' is also useful when you are satisfied with the location of
        !          1160: point but want to move the mark; do `C-x C-x' to put point there and
        !          1161: then you can move it.  A second use of `C-x C-x', if necessary, puts
        !          1162: the mark at the new location with point back at its original location.
        !          1163: 
        !          1164: 

unix.superglobalmegacorp.com

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