Annotation of GNUtools/emacs/info/emacs-2, revision 1.1

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

unix.superglobalmegacorp.com

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