Annotation of GNUtools/emacs/info/emacs-5, 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: File Names,  Next: Visiting,  Prev: Files,  Up: Files
        !            27: 
        !            28: File Names
        !            29: ==========
        !            30: 
        !            31:    Most Emacs commands that operate on a file require you to specify the
        !            32: file name.  (Saving and reverting are exceptions; the buffer knows which
        !            33: file name to use for them.)  File names are specified using the
        !            34: minibuffer (*note Minibuffer::.).  "Completion" is available, to make
        !            35: it easier to specify long file names.  *Note Completion::.
        !            36: 
        !            37:    There is always a "default file name" which will be used if you type
        !            38: just RET, entering an empty argument.  Normally the default file name
        !            39: is the name of the file visited in the current buffer; this makes it
        !            40: easy to operate on that file with any of the Emacs file commands.
        !            41: 
        !            42:    Each buffer has a default directory, normally the same as the
        !            43: directory of the file visited in that buffer.  When Emacs reads a file
        !            44: name, if you do not specify a directory, the default directory is used.
        !            45:  If you specify a directory in a relative fashion, with a name that
        !            46: does not start with a slash, it is interpreted with respect to the
        !            47: default directory.  The default directory is kept in the variable
        !            48: `default-directory', which has a separate value in every buffer.
        !            49: 
        !            50:    For example, if the default file name is `/u/rms/gnu/gnu.tasks' then
        !            51: the default directory is `/u/rms/gnu/'.  If you type just `foo', which
        !            52: does not specify a directory, it is short for `/u/rms/gnu/foo'.
        !            53: `../.login' would stand for `/u/rms/.login'.  `new/foo' would stand for
        !            54: the filename `/u/rms/gnu/new/foo'.
        !            55: 
        !            56:    The command `M-x pwd' prints the current buffer's default directory,
        !            57: and the command `M-x cd' sets it (to a value read using the
        !            58: minibuffer).  A buffer's default directory changes only when the `cd'
        !            59: command is used.  A file-visiting buffer's default directory is
        !            60: initialized to the directory of the file that is visited there.  If a
        !            61: buffer is made randomly with `C-x b', its default directory is copied
        !            62: from that of the buffer that was current at the time.
        !            63: 
        !            64:    The default directory actually appears in the minibuffer when the
        !            65: minibuffer becomes active to read a file name.  This serves two
        !            66: purposes: it shows you what the default is, so that you can type a
        !            67: relative file name and know with certainty what it will mean, and it
        !            68: allows you to edit the default to specify a different directory.  This
        !            69: insertion of the default directory is inhibited if the variable
        !            70: `insert-default-directory' is set to `nil'.
        !            71: 
        !            72:    Note that it is legitimate to type an absolute file name after you
        !            73: enter the minibuffer, ignoring the presence of the default directory
        !            74: name as part of the text.  The final minibuffer contents may look
        !            75: invalid, but that is not so.  *Note Minibuffer File::.
        !            76: 
        !            77:    `$' in a file name is used to substitute environment variables.  For
        !            78: example, if you have used the C shell command `setenv FOO rms/hacks' to
        !            79: set up an environment variable named `FOO', then you can use
        !            80: `/u/$FOO/test.c' or `/u/${FOO}/test.c' as an abbreviation for
        !            81: `/u/rms/hacks/test.c'.  (In the Bourne-Again shell, write `export
        !            82: FOO=rms/hacks' to define `FOO'.)  The environment variable name
        !            83: consists of all the alphanumeric characters after the `$';
        !            84: alternatively, it may be enclosed in braces after the `$'.  Note that
        !            85: the `setenv' command affects Emacs only if done before Emacs is started.
        !            86: 
        !            87:    To access a file with `$' in its name, type `$$'.  This pair is
        !            88: converted to a single `$' at the same time as variable substitution is
        !            89: performed for single `$'.  The Lisp function that performs the
        !            90: substitution is called `substitute-in-file-name'.  The substitution is
        !            91: performed only on filenames read as such using the minibuffer.
        !            92: 
        !            93: 
        !            94: File: emacs,  Node: Visiting,  Next: Saving,  Prev: File Names,  Up: Files
        !            95: 
        !            96: Visiting Files
        !            97: ==============
        !            98: 
        !            99: `C-x C-f'
        !           100:      Visit a file (`find-file').
        !           101: 
        !           102: `C-x C-v'
        !           103:      Visit a different file instead of the one visited last
        !           104:      (`find-alternate-file').
        !           105: 
        !           106: `C-x 4 C-f'
        !           107:      Visit a file, in another window (`find-file-other-window').  Don't
        !           108:      change this window.
        !           109: 
        !           110:    "Visiting" a file means copying its contents into Emacs where you can
        !           111: edit them.  Emacs makes a new buffer for each file that you visit.  We
        !           112: say that the buffer is visiting the file that it was created to hold. 
        !           113: Emacs constructs the buffer name from the file name by throwing away the
        !           114: directory, keeping just the name proper.  For example, a file named
        !           115: `/usr/rms/emacs.tex' would get a buffer named `emacs.tex'.  If there is
        !           116: already a buffer with that name, a unique name is constructed by
        !           117: appending `<2>', `<3>', or so on, using the lowest number that makes a
        !           118: name that is not already in use.
        !           119: 
        !           120:    Each window's mode line shows the name of the buffer that is being
        !           121: displayed in that window, so you can always tell what buffer you are
        !           122: editing.
        !           123: 
        !           124:    The changes you make with Emacs are made in the Emacs buffer.  They
        !           125: do not take effect in the file that you visited, or any place
        !           126: permanent, until you "save" the buffer.  Saving the buffer means that
        !           127: Emacs writes the current contents of the buffer into its visited file. 
        !           128: *Note Saving::.
        !           129: 
        !           130:    If a buffer contains changes that have not been saved, the buffer is
        !           131: said to be "modified".  This is important because it implies that some
        !           132: changes will be lost if the buffer is not saved.  The mode line displays
        !           133: two stars near the left margin if the buffer is modified.
        !           134: 
        !           135:    To visit a file, use the command `C-x C-f' (`find-file').  Follow
        !           136: the command with the name of the file you wish to visit, terminated by a
        !           137: RET.
        !           138: 
        !           139:    The file name is read using the minibuffer (*note Minibuffer::.),
        !           140: with defaulting and completion in the standard manner (*note File
        !           141: Names::.). While in the minibuffer, you can abort `C-x C-f' by typing
        !           142: `C-g'.
        !           143: 
        !           144:    Your confirmation that `C-x C-f' has completed successfully is the
        !           145: appearance of new text on the screen and a new buffer name in the mode
        !           146: line.  If the specified file does not exist and could not be created, or
        !           147: cannot be read, then an error results.  The error message is printed in
        !           148: the echo area, and includes the file name which Emacs was trying to
        !           149: visit.
        !           150: 
        !           151:    If you visit a file that is already in Emacs, `C-x C-f' does not make
        !           152: another copy.  It selects the existing buffer containing that file.
        !           153: However, before doing so, it checks that the file itself has not changed
        !           154: since you visited or saved it last.  If the file has changed, a warning
        !           155: message is printed.  *Note Simultaneous Editing: Interlocking.
        !           156: 
        !           157:    What if you want to create a file?  Just visit it.  Emacs prints
        !           158: `(New File)' in the echo area, but in other respects behaves as if you
        !           159: had visited an existing empty file.  If you make any changes and save
        !           160: them, the file is created.
        !           161: 
        !           162:    If you visit a nonexistent file unintentionally (because you typed
        !           163: the wrong file name), use the `C-x C-v' (`find-alternate-file') command
        !           164: to visit the file you wanted.  `C-x C-v' is similar to `C-x C-f', but
        !           165: it kills the current buffer (after first offering to save it if it is
        !           166: modified).  `C-x C-v' is allowed even if the current buffer is not
        !           167: visiting a file.
        !           168: 
        !           169:    If the file you specify is actually a directory, Dired is called on
        !           170: that directory (*note Dired::.).  This can be inhibited by setting the
        !           171: variable `find-file-run-dired' to `nil'; then it is an error to try to
        !           172: visit a directory.
        !           173: 
        !           174:    `C-x 4 f' (`find-file-other-window') is like `C-x C-f' except that
        !           175: the buffer containing the specified file is selected in another window.
        !           176:  The window that was selected before `C-x 4 f' continues to show the
        !           177: same buffer it was already showing.  If this command is used when only
        !           178: one window is being displayed, that window is split in two, with one
        !           179: window showing the same before as before, and the other one showing the
        !           180: newly requested file.  *Note Windows::.
        !           181: 
        !           182:    There are two hook variables that allow extensions to modify the
        !           183: operation of visiting files.  Visiting a file that does not exist runs
        !           184: the functions in the list `find-file-not-found-hooks'; the value of this
        !           185: variable is expected to be a list of functions, and the functions are
        !           186: called one by one until one of them returns non-`nil'.  Any visiting of
        !           187: a file, whether extant or not, expects `find-file-hooks' to contain a
        !           188: list of functions and calls them all, one by one.  In both cases the
        !           189: functions receive no arguments.  Visiting a nonexistent file runs the
        !           190: `find-file-not-found-hooks' first.
        !           191: 
        !           192:    You can put a local variable specification at the end of a file which
        !           193: specifies values for Emacs local variables whenever you visit the file.
        !           194: *Note File Variables::.
        !           195: 
        !           196: 
        !           197: File: emacs,  Node: Saving,  Next: Reverting,  Prev: Visiting,  Up: Files
        !           198: 
        !           199: Saving Files
        !           200: ============
        !           201: 
        !           202:    "Saving" a buffer in Emacs means writing its contents back into the
        !           203: file that was visited in the buffer.
        !           204: 
        !           205: `C-x C-s'
        !           206:      Save the current buffer in its visited file (`save-buffer').
        !           207: 
        !           208: `C-x s'
        !           209:      Save any or all buffers in their visited files
        !           210:      (`save-some-buffers').
        !           211: 
        !           212: `M-~'
        !           213:      Forget that the current buffer has been changed
        !           214:      (`not-modified').
        !           215: 
        !           216: `C-x C-w'
        !           217:      Save the current buffer in a specified file, and record that file
        !           218:      as the one visited in the buffer (`write-file').
        !           219: 
        !           220: `M-x set-visited-file-name'
        !           221:      Change file the name under which the current buffer will be saved.
        !           222: 
        !           223:    When you wish to save the file and make your changes permanent, type
        !           224: `C-x C-s' (`save-buffer').  After saving is finished, `C-x C-s' prints
        !           225: a message such as
        !           226: 
        !           227:      Wrote /u/rms/gnu/gnu.tasks
        !           228: 
        !           229: If the selected buffer is not modified (no changes have been made in it
        !           230: since the buffer was created or last saved), saving is not really done,
        !           231: because it would have no effect.  Instead, `C-x C-s' prints a message
        !           232: in the echo area saying
        !           233: 
        !           234:      (No changes need to be written)
        !           235: 
        !           236:    The command `C-x s' (`save-some-buffers') can save any or all
        !           237: modified buffers.  First it asks, for each modified buffer, whether to
        !           238: save it. These questions should be answered with `y' or `n'.  `C-x C-c',
        !           239: the key that kills Emacs, invokes `save-some-buffers' and therefore
        !           240: asks the same questions.
        !           241: 
        !           242:    If you have changed a buffer and do not want the changes to be
        !           243: saved, you should take some action to prevent it.  Otherwise, each time
        !           244: you use `save-some-buffers' you are liable to save it by mistake.  One
        !           245: thing you can do is type `M-~' (`not-modified'), which clears out the
        !           246: indication that the buffer is modified.  If you do this, none of the
        !           247: save commands will believe that the buffer needs to be saved.  (`~' is
        !           248: often used as a mathematical symbol for `not'; thus `Meta-~' is `not',
        !           249: metafied.) You could also use `set-visited-file-name' (see below) to
        !           250: mark the buffer as visiting a different file name, one which is not in
        !           251: use for anything important.  Alternatively, you can undo all the
        !           252: changes made since the file was visited or saved, by reading the text
        !           253: from the file again. This is called "reverting".  *Note Reverting::. 
        !           254: You could also undo all the changes by repeating the undo command `C-x
        !           255: u' until you have undone all the changes; but this only works if you
        !           256: have not made more changes than the undo mechanism can remember.
        !           257: 
        !           258:    `M-x set-visited-file-name' alters the name of the file that the
        !           259: current buffer is visiting.  It reads the new file name using the
        !           260: minibuffer.  It can be used on a buffer that is not visiting a file,
        !           261: too. The buffer's name is changed to correspond to the file it is now
        !           262: visiting in the usual fashion (unless the new name is in use already
        !           263: for some other buffer; in that case, the buffer name is not changed).
        !           264: `set-visited-file-name' does not save the buffer in the newly visited
        !           265: file; it just alters the records inside Emacs so that, if you save the
        !           266: buffer, it will be saved in that file.  It also marks the buffer as
        !           267: "modified" so that `C-x C-s' will save.
        !           268: 
        !           269:    If you wish to mark the buffer as visiting a different file and save
        !           270: it right away, use `C-x C-w' (`write-file').  It is precisely
        !           271: equivalent to `set-visited-file-name' followed by `C-x C-s'. `C-x C-s'
        !           272: used on a buffer that is not visiting with a file has the same effect
        !           273: as `C-x C-w'; that is, it reads a file name, marks the buffer as
        !           274: visiting that file, and saves it there.  The default file name in a
        !           275: buffer that is not visiting a file is made by combining the buffer name
        !           276: with the buffer's default directory.
        !           277: 
        !           278:    If Emacs is about to save a file and sees that the date of the latest
        !           279: version on disk does not match what Emacs last read or wrote, Emacs
        !           280: notifies you of this fact, because it probably indicates a problem
        !           281: caused by simultaneous editing and requires your immediate attention.
        !           282: *Note Simultaneous Editing: Interlocking.
        !           283: 
        !           284:    If the variable `require-final-newline' is non-`nil', Emacs puts a
        !           285: newline at the end of any file that doesn't already end in one, every
        !           286: time a file is saved or written.
        !           287: 
        !           288:    You can implement other ways to write files, and other things to be
        !           289: done before writing them, using the hook variable `write-file-hooks'. 
        !           290: The value of this variable should be a list of Lisp functions.  When a
        !           291: file is to be written, the functions in the list are called, one by
        !           292: one, with no arguments.  If one of them returns a non-`nil' value,
        !           293: Emacs takes this to mean that the file has been written in some
        !           294: suitable fashion; the rest of the functions are not called, and normal
        !           295: writing is not done.
        !           296: 
        !           297: * Menu:
        !           298: 
        !           299: * Backup::       How Emacs saves the old version of your file.
        !           300: * Interlocking:: How Emacs protects against simultaneous editing
        !           301:                   of one file by two users.
        !           302: 
        !           303: 
        !           304: File: emacs,  Node: Backup,  Next: Interlocking,  Prev: Saving,  Up: Saving
        !           305: 
        !           306: Backup Files
        !           307: ------------
        !           308: 
        !           309:    Because Unix does not provide version numbers in file names,
        !           310: rewriting a file in Unix automatically destroys all record of what the
        !           311: file used to contain.  Thus, saving a file from Emacs throws away the
        !           312: old contents of the file--or it would, except that Emacs carefully
        !           313: copies the old contents to another file, called the "backup" file,
        !           314: before actually saving (provided the variable `make-backup-files' is
        !           315: non-`nil'; backup files are not written if this variable is `nil').
        !           316: 
        !           317:    At your option, Emacs can keep either a single backup file or a
        !           318: series of numbered backup files for each file that you edit.
        !           319: 
        !           320:    Emacs makes a backup for a file only the first time the file is saved
        !           321: from one buffer.  No matter how many times you save a file, its backup
        !           322: file continues to contain the contents from before the file was visited.
        !           323: Normally this means that the backup file contains the contents from
        !           324: before the current editing session; however, if you kill the buffer and
        !           325: then visit the file again, a new backup file will be made by the next
        !           326: save.
        !           327: 
        !           328: * Menu:
        !           329: 
        !           330: * Names: Backup Names.         How backup files are named;
        !           331:                                Choosing single or numbered backup files.
        !           332: * Deletion: Backup Deletion.   Emacs deletes excess numbered backups.
        !           333: * Copying: Backup Copying.     Backups can be made by copying or renaming.
        !           334: 
        !           335: 
        !           336: File: emacs,  Node: Backup Names,  Next: Backup Deletion,  Prev: Backup,  Up: Backup
        !           337: 
        !           338: Single or Numbered Backups
        !           339: ..........................
        !           340: 
        !           341:    If you choose to have a single backup file (this is the default),
        !           342: the backup file's name is constructed by appending `~' to the file name
        !           343: being edited; thus, the backup file for `eval.c' would be `eval.c~'.
        !           344: 
        !           345:    If you choose to have a series of numbered backup files, backup file
        !           346: names are made by appending `.~', the number, and another `~' to the
        !           347: original file name.  Thus, the backup files of `eval.c' would be called
        !           348: `eval.c.~1~', `eval.c.~2~', and so on, through names like
        !           349: `eval.c.~259~' and beyond.
        !           350: 
        !           351:    If protection stops you from writing backup files under the usual
        !           352: names, the backup file is written as `%backup%~' in your home directory.
        !           353: Only one such file can exist, so only the most recently made such
        !           354: backup is available.
        !           355: 
        !           356:    The choice of single backup or numbered backups is controlled by the
        !           357: variable `version-control'.  Its possible values are
        !           358: 
        !           359: `t'
        !           360:      Make numbered backups.
        !           361: 
        !           362: `nil'
        !           363:      Make numbered backups for files that have numbered backups already.
        !           364:      Otherwise, make single backups.
        !           365: 
        !           366: `never'
        !           367:      Do not in any case make numbered backups; always make single
        !           368:      backups.
        !           369: 
        !           370: `version-control' may be set locally in an individual buffer to control
        !           371: the making of backups for that buffer's file.  For example, Rmail mode
        !           372: locally sets `version-control' to `never' to make sure that there is
        !           373: only one backup for an Rmail file.  *Note Locals::.
        !           374: 
        !           375: 
        !           376: File: emacs,  Node: Backup Deletion,  Next: Backup Copying,  Prev: Backup Names,  Up: Backup
        !           377: 
        !           378: Automatic Deletion of Backups
        !           379: .............................
        !           380: 
        !           381:    To prevent unlimited consumption of disk space, Emacs can delete
        !           382: numbered backup versions automatically.  Generally Emacs keeps the
        !           383: first few backups and the latest few backups, deleting any in between. 
        !           384: This happens every time a new backup is made.  The two variables that
        !           385: control the deletion are `kept-old-versions' and `kept-new-versions'. 
        !           386: Their values are, respectively the number of oldest (lowest-numbered)
        !           387: backups to keep and the number of newest (highest-numbered) ones to
        !           388: keep, each time a new backup is made. Recall that these values are used
        !           389: just after a new backup version is made; that newly made backup is
        !           390: included in the count in `kept-new-versions'. By default, both
        !           391: variables are 2.
        !           392: 
        !           393:    If `trim-versions-without-asking' is non-`nil', the excess middle
        !           394: versions are deleted without a murmur.  If it is `nil', the default,
        !           395: then you are asked whether the excess middle versions should really be
        !           396: deleted.
        !           397: 
        !           398:    Dired's `.' (Period) command can also be used to delete old versions.
        !           399: *Note Dired::.
        !           400: 
        !           401: 
        !           402: File: emacs,  Node: Backup Copying,  Prev: Backup Deletion,  Up: Backup
        !           403: 
        !           404: Copying vs. Renaming
        !           405: ....................
        !           406: 
        !           407:    Backup files can be made by copying the old file or by renaming it. 
        !           408: This makes a difference when the old file has multiple names.  If the
        !           409: old file is renamed into the backup file, then the alternate names
        !           410: become names for the backup file.  If the old file is copied instead,
        !           411: then the alternate names remain names for the file that you are
        !           412: editing, and the contents accessed by those names will be the new
        !           413: contents.
        !           414: 
        !           415:    The method of making a backup file may also affect the file's owner
        !           416: and group.  If copying is used, these do not change.  If renaming is
        !           417: used, you become the file's owner, and the file's group becomes the
        !           418: default (different operating systems have different defaults for the
        !           419: group).
        !           420: 
        !           421:    Having the owner change is usually a good idea, because then the
        !           422: owner always shows who last edited the file.  Also, the owners of the
        !           423: backups show who produced those versions.  Occasionally there is a file
        !           424: whose owner should not change; it is a good idea for such files to
        !           425: contain local variable lists to set `backup-by-copying-when-mismatch'
        !           426: for them alone (*note File Variables::.).
        !           427: 
        !           428:    The choice of renaming or copying is controlled by three variables.
        !           429: Normally, renaming is done.  If the variable `backup-by-copying' is
        !           430: non-`nil', copying is used.  Otherwise, if the variable
        !           431: `backup-by-copying-when-linked' is non-`nil', then copying is done for
        !           432: files that have multiple names, but renaming may still done when the
        !           433: file being edited has only one name.  If the variable
        !           434: `backup-by-copying-when-mismatch' is non-`nil', then copying is done if
        !           435: renaming would cause the file's owner or group to change.
        !           436: 
        !           437: 
        !           438: File: emacs,  Node: Interlocking,  Prev: Backup,  Up: Saving
        !           439: 
        !           440: Protection against Simultaneous Editing
        !           441: ---------------------------------------
        !           442: 
        !           443:    Simultaneous editing occurs when two users visit the same file, both
        !           444: make changes, and then both save them.  If nobody were informed that
        !           445: this was happening, whichever user saved first would later find that
        !           446: his changes were lost.  On some systems, Emacs notices immediately when
        !           447: the second user starts to change the file, and issues an immediate
        !           448: warning.  When this is not possible, or if the second user has gone on
        !           449: to change the file despite the warning, Emacs checks later when the
        !           450: file is saved, and issues a second warning when a user is about to
        !           451: overwrite a file containing another user's changes.  If the editing
        !           452: user takes the proper corrective action at this point, he can prevent
        !           453: actual loss of work.
        !           454: 
        !           455:    When you make the first modification in an Emacs buffer that is
        !           456: visiting a file, Emacs records that you have locked the file.  (It does
        !           457: this by writing another file in a directory reserved for this purpose.)
        !           458:  The lock is removed when you save the changes.  The idea is that the
        !           459: file is locked whenever the buffer is modified.  If you begin to modify
        !           460: the buffer while the visited file is locked by someone else, this
        !           461: constitutes a collision, and Emacs asks you what to do.  It does this
        !           462: by calling the Lisp function `ask-user-about-lock', which you can
        !           463: redefine for the sake of customization.  The standard definition of
        !           464: this function asks you a question and accepts three possible answers:
        !           465: 
        !           466: `s'
        !           467:      Steal the lock.  Whoever was already changing the file loses the
        !           468:      lock, and you gain the lock.
        !           469: 
        !           470: `p'
        !           471:      Proceed.  Go ahead and edit the file despite its being locked by
        !           472:      someone else.
        !           473: 
        !           474: `q'
        !           475:      Quit.  This causes an error (`file-locked') and the modification
        !           476:      you were trying to make in the buffer does not actually take place.
        !           477: 
        !           478:    Note that locking works on the basis of a file name; if a file has
        !           479: multiple names, Emacs does not realize that the two names are the same
        !           480: file and cannot prevent two user from editing it simultaneously under
        !           481: different names.  However, basing locking on names means that Emacs can
        !           482: interlock the editing of new files that will not really exist until
        !           483: they are saved.
        !           484: 
        !           485:    Some systems are not configured to allow Emacs to make locks.  On
        !           486: these systems, Emacs cannot detect trouble in advance, but it still can
        !           487: detect it in time to prevent you from overwriting someone else's
        !           488: changes.
        !           489: 
        !           490:    Every time Emacs saves a buffer, it first checks the
        !           491: last-modification date of the existing file on disk to see that it has
        !           492: not changed since the file was last visited or saved.  If the date does
        !           493: not match, it implies that changes were made in the file in some other
        !           494: way, and these changes are about to be lost if Emacs actually does
        !           495: save.  To prevent this, Emacs prints a warning message and asks for
        !           496: confirmation before saving. Occasionally you will know why the file was
        !           497: changed and know that it does not matter; then you can answer `yes' and
        !           498: proceed.  Otherwise, you should cancel the save with `C-g' and
        !           499: investigate the situation.
        !           500: 
        !           501:    The first thing you should do when notified that simultaneous
        !           502: editing has already taken place is to list the directory with `C-u C-x
        !           503: C-d' (*note Directory Listing: ListDir.).  This will show the file's
        !           504: current author.  You should attempt to contact that person to warn him
        !           505: or her not to continue editing.  Often the next step is to save the
        !           506: contents of your Emacs buffer under a different name, and use `diff' to
        !           507: compare the two files.
        !           508: 
        !           509:    Simultaneous editing checks are also made when you visit with `C-x
        !           510: C-f' a file that is already visited and when you start to modify a file.
        !           511: This is not strictly necessary, but it can cause you to find out about
        !           512: the problem earlier, when perhaps correction takes less work.
        !           513: 
        !           514: 
        !           515: File: emacs,  Node: Reverting,  Next: Auto Save,  Prev: Saving,  Up: Files
        !           516: 
        !           517: Reverting a Buffer
        !           518: ==================
        !           519: 
        !           520:    If you have made extensive changes to a file and then change your
        !           521: mind about them, you can get rid of them by reading in the previous
        !           522: version of the file.  To do this, use `M-x revert-buffer', which
        !           523: operates on the current buffer.  Since this is a very dangerous thing
        !           524: to do, you must confirm it with `yes'.
        !           525: 
        !           526:    If the current buffer has been auto-saved more recently than it has
        !           527: been saved for real, `revert-buffer' offers to read the auto save file
        !           528: instead of the visited file (*note Auto Save::.).  This question comes
        !           529: before the usual request for confirmation, and demands `y' or `n' as an
        !           530: answer.  If you have started to type `yes' for confirmation without
        !           531: realizing that the other question was going to be asked, the `y' will
        !           532: answer that question, but the `es' will not be valid confirmation.  So
        !           533: you will have a chance to cancel the operation with `C-g' and try it
        !           534: again with the answers that you really intend.
        !           535: 
        !           536:    `revert-buffer' keeps point at the same distance (measured in
        !           537: characters) from the beginning of the file.  If the file was edited only
        !           538: slightly, you will be at approximately the same piece of text after
        !           539: reverting as before.  If you have made drastic changes, the same value
        !           540: of point in the old file may address a totally different piece of text.
        !           541: 
        !           542:    A buffer reverted from its visited file is marked "not modified"
        !           543: until another change is made.
        !           544: 
        !           545:    Some kinds of buffers whose contents reflect data bases other than
        !           546: files, such as Dired buffers, can also be reverted.  For them,
        !           547: reverting means recalculating their contents from the appropriate data
        !           548: base.  Buffers created randomly with `C-x b' cannot be reverted;
        !           549: `revert-buffer' reports an error when asked to do so.
        !           550: 
        !           551: 
        !           552: File: emacs,  Node: Auto Save,  Next: ListDir,  Prev: Reverting,  Up: Files
        !           553: 
        !           554: Auto-Saving: Protection Against Disasters
        !           555: =========================================
        !           556: 
        !           557:    Emacs saves all the visited files from time to time (based on
        !           558: counting your keystrokes) without being asked.  This is called
        !           559: "auto-saving". It prevents you from losing more than a limited amount
        !           560: of work if the system crashes.
        !           561: 
        !           562:    When Emacs determines that it is time for auto-saving, each buffer is
        !           563: considered, and is auto-saved if auto-saving is turned on for it and it
        !           564: has been changed since the last time it was auto-saved.  If any
        !           565: auto-saving is done, the message `Auto-saving...' is displayed in the
        !           566: echo area until auto-saving is finished.  Errors occurring during
        !           567: auto-saving are caught so that they do not interfere with the execution
        !           568: of commands you have been typing.
        !           569: 
        !           570: * Menu:
        !           571: 
        !           572: * Files: Auto Save Files.
        !           573: * Control: Auto Save Control.
        !           574: * Recover::            Recovering text from auto-save files.
        !           575: 
        !           576: 
        !           577: File: emacs,  Node: Auto Save Files,  Next: Auto Save Control,  Prev: Auto Save,  Up: Auto Save
        !           578: 
        !           579: Auto-Save Files
        !           580: ---------------
        !           581: 
        !           582:    Auto-saving does not normally save in the files that you visited,
        !           583: because it can be very undesirable to save a program that is in an
        !           584: inconsistent state when you have made half of a planned change. 
        !           585: Instead, auto-saving is done in a different file called the "auto-save
        !           586: file", and the visited file is changed only when you request saving
        !           587: explicitly (such as with `C-x C-s').
        !           588: 
        !           589:    Normally, the auto-save file name is made by appending `#' to the
        !           590: front and rear of the visited file name.  Thus, a buffer visiting file
        !           591: `foo.c' would be auto-saved in a file `#foo.c#'.  Most buffers that are
        !           592: not visiting files are auto-saved only if you request it explicitly;
        !           593: when they are auto-saved, the auto-save file name is made by appending
        !           594: `#%' to the front and `#' to the rear of buffer name. For example, the
        !           595: `*mail*' buffer in which you compose messages to be sent is auto-saved
        !           596: in a file named `#%*mail*#'.  Auto-save file names are made this way
        !           597: unless you reprogram parts of Emacs to do something different (the
        !           598: functions `make-auto-save-file-name' and `auto-save-file-name-p').  The
        !           599: file name to be used for auto-saving in a buffer is calculated when
        !           600: auto-saving is turned on in that buffer.
        !           601: 
        !           602:    If you want auto-saving to be done in the visited file, set the
        !           603: variable `auto-save-visited-file-name' to be non-`nil'.  In this mode,
        !           604: there is really no difference between auto-saving and explicit saving.
        !           605: 
        !           606:    A buffer's auto-save file is deleted when you save the buffer in its
        !           607: visited file.  To inhibit this, set the variable
        !           608: `delete-auto-save-files' to `nil'.  Changing the visited file name with
        !           609: `C-x C-w' or `set-visited-file-name' renames any auto-save file to go
        !           610: with the new visited name.
        !           611: 
        !           612: 
        !           613: File: emacs,  Node: Auto Save Control,  Next: Recover,  Prev: Auto Save Files,  Up: Auto Save
        !           614: 
        !           615: Controlling Auto-Saving
        !           616: -----------------------
        !           617: 
        !           618:    Each time you visit a file, auto-saving is turned on for that file's
        !           619: buffer if the variable `auto-save-default' is non-`nil' (but not in
        !           620: batch mode; *note Entering Emacs::.).  The default for this variable is
        !           621: `t', so auto-saving is the usual practice for file-visiting buffers.
        !           622: Auto-saving can be turned on or off for any existing buffer with the
        !           623: command `M-x auto-save-mode'.  Like other minor mode commands, `M-x
        !           624: auto-save-mode' turns auto-saving on with a positive argument, off with
        !           625: a zero or negative argument; with no argument, it toggles.
        !           626: 
        !           627:    Emacs does auto-saving periodically based on counting how many
        !           628: characters you have typed since the last time auto-saving was done. 
        !           629: The variable `auto-save-interval' specifies how many characters there
        !           630: are between auto-saves.  By default, it is 300.  Emacs also auto-saves
        !           631: whenever you call the function `do-auto-save'.
        !           632: 
        !           633:    Emacs also does auto-saving whenever it gets a fatal error.  This
        !           634: includes killing the Emacs job with a shell command such as `kill
        !           635: %emacs', or disconnecting a phone line or network connection.
        !           636: 
        !           637: 
        !           638: File: emacs,  Node: Recover,  Prev: Auto Save Control,  Up: Auto Save
        !           639: 
        !           640: Recovering Data from Auto-Saves
        !           641: -------------------------------
        !           642: 
        !           643:    The way to use the contents of an auto-save file to recover from a
        !           644: loss of data is with the command `M-x recover-file RET FILE RET'.  This
        !           645: visits FILE and then (after your confirmation) restores the contents
        !           646: from its auto-save file `#FILE#'.  You can then save with `C-x C-s' to
        !           647: put the recovered text into FILE itself.  For example, to recover file
        !           648: `foo.c' from its auto-save file `#foo.c#', do:
        !           649: 
        !           650:      M-x recover-file RET foo.c RET
        !           651:      C-x C-s
        !           652: 
        !           653:    Before asking for confirmation, `M-x recover-file' displays a
        !           654: directory listing describing the specified file and the auto-save file,
        !           655: so you can compare their sizes and dates.  If the auto-save file is
        !           656: older, `M-x recover-file' does not offer to read it.
        !           657: 
        !           658:    Auto-saving is disabled by `M-x recover-file' because using this
        !           659: command implies that the auto-save file contains valuable data from a
        !           660: past session.  If you save the data in the visited file and then go on
        !           661: to make new changes, you should turn auto-saving back on with `M-x
        !           662: auto-save-mode'.
        !           663: 
        !           664: 
        !           665: File: emacs,  Node: ListDir,  Next: Dired,  Prev: Auto Save,  Up: Files
        !           666: 
        !           667: Listing a File Directory
        !           668: ========================
        !           669: 
        !           670:    Files are classified by Unix into "directories".  A "directory
        !           671: listing" is a list of all the files in a directory.  Emacs provides
        !           672: directory listings in brief format (file names only) and verbose format
        !           673: (sizes, dates, and authors included).
        !           674: 
        !           675: `C-x C-d DIR-OR-PATTERN'
        !           676:      Print a brief directory listing (`list-directory').
        !           677: 
        !           678: `C-u C-x C-d DIR-OR-PATTERN'
        !           679:      Print a verbose directory listing.
        !           680: 
        !           681:    The command to print a directory listing is `C-x C-d'
        !           682: (`list-directory'). It reads using the minibuffer a file name which is
        !           683: either a directory to be listed or a wildcard-containing pattern for
        !           684: the files to be listed.  For example,
        !           685: 
        !           686:      C-x C-d /u2/emacs/etc RET
        !           687: 
        !           688: lists all the files in directory `/u2/emacs/etc'.  An example of
        !           689: specifying a file name pattern is
        !           690: 
        !           691:      C-x C-d /u2/emacs/src/*.c RET
        !           692: 
        !           693:    Normally, `C-x C-d' prints a brief directory listing containing just
        !           694: file names.  A numeric argument (regardless of value) tells it to print
        !           695: a verbose listing (like `ls -l').
        !           696: 
        !           697:    The text of a directory listing is obtained by running `ls' in an
        !           698: inferior process.  Two Emacs variables control the switches passed to
        !           699: `ls': `list-directory-brief-switches' is a string giving the switches
        !           700: to use in brief listings (`"-CF"' by default), and
        !           701: `list-directory-verbose-switches' is a string giving the switches to
        !           702: use in a verbose listing (`"-l"' by default).
        !           703: 
        !           704: 
        !           705: File: emacs,  Node: Dired,  Next: Misc File Ops,  Prev: ListDir,  Up: Files
        !           706: 
        !           707: Dired, the Directory Editor
        !           708: ===========================
        !           709: 
        !           710:    Dired makes it easy to delete or visit many of the files in a single
        !           711: directory at once.  It makes an Emacs buffer containing a listing of the
        !           712: directory.  You can use the normal Emacs commands to move around in this
        !           713: buffer, and special Dired commands to operate on the files.
        !           714: 
        !           715: * Menu:
        !           716: 
        !           717: * Enter: Dired Enter.         How to invoke Dired.
        !           718: * Edit: Dired Edit.           Editing the Dired buffer.
        !           719: * Deletion: Dired Deletion.   Deleting files with Dired.
        !           720: * Immed: Dired Immed.         Other file operations through Dired.
        !           721: 
        !           722: 
        !           723: File: emacs,  Node: Dired Enter,  Next: Dired Edit,  Prev: Dired,  Up: Dired
        !           724: 
        !           725: Entering Dired
        !           726: --------------
        !           727: 
        !           728:    To invoke dired, do `C-x d' or `M-x dired'.  The command reads a
        !           729: directory name or wildcard file name pattern as a minibuffer argument
        !           730: just like the `list-directory' command, `C-x C-d'.  Where `dired'
        !           731: differs from `list-directory' is in naming the buffer after the
        !           732: directory name or the wildcard pattern used for the listing, and putting
        !           733: the buffer into Dired mode so that the special commands of Dired are
        !           734: available in it.  The variable `dired-listing-switches' is a string
        !           735: used as an argument to `ls' in making the directory; this string must
        !           736: contain `-l'.
        !           737: 
        !           738:    To display the Dired buffer in another window rather than in the
        !           739: selected window, use `C-x 4 d' (`dired-other-window)' instead of `C-x
        !           740: d'.
        !           741: 
        !           742: 
        !           743: File: emacs,  Node: Dired Edit,  Next: Dired Deletion,  Prev: Dired Enter,  Up: Dired
        !           744: 
        !           745: Editing in Dired
        !           746: ----------------
        !           747: 
        !           748:    Once the Dired buffer exists, you can switch freely between it and
        !           749: other Emacs buffers.  Whenever the Dired buffer is selected, certain
        !           750: special commands are provided that operate on files that are listed. 
        !           751: The Dired buffer is "read-only", and inserting text in it is not
        !           752: useful, so ordinary printing characters such as `d' and `x' are used
        !           753: for Dired commands.  Most Dired commands operate on the file described
        !           754: by the line that point is on.  Some commands perform operations
        !           755: immediately; others "flag" the file to be operated on later.
        !           756: 
        !           757:    Most Dired commands that operate on the current line's file also
        !           758: treat a numeric argument as a repeat count, meaning to act on the files
        !           759: of the next few lines.  A negative argument means to operate on the
        !           760: files of the preceding lines, and leave point on the first of those
        !           761: lines.
        !           762: 
        !           763:    All the usual Emacs cursor motion commands are available in Dired
        !           764: buffers.  Some special purpose commands are also provided.  The keys
        !           765: `C-n' and `C-p' are redefined so that they try to position the cursor
        !           766: at the beginning of the filename on the line, rather than at the
        !           767: beginning of the line.
        !           768: 
        !           769:    For extra convenience, SPC and `n' in Dired are equivalent to `C-n'.
        !           770:  `p' is equivalent to `C-p'.  Moving by lines is done so often in Dired
        !           771: that it deserves to be easy to type.  DEL (move up and unflag) is often
        !           772: useful simply for moving up.
        !           773: 
        !           774:    The `g' command in Dired runs `revert-buffer' to reinitialize the
        !           775: buffer from the actual disk directory and show any changes made in the
        !           776: directory by programs other than Dired.  All deletion flags in the Dired
        !           777: buffer are lost when this is done.
        !           778: 
        !           779: 
        !           780: File: emacs,  Node: Dired Deletion,  Next: Dired Immed,  Prev: Dired Edit,  Up: Dired
        !           781: 
        !           782: Deleting Files with Dired
        !           783: -------------------------
        !           784: 
        !           785:    The primary use of Dired is to flag files for deletion and then
        !           786: delete them.
        !           787: 
        !           788: `d'
        !           789:      Flag this file for deletion.
        !           790: 
        !           791: `u'
        !           792:      Remove deletion-flag on this line.
        !           793: 
        !           794: `DEL'
        !           795:      Remove deletion-flag on previous line, moving point to that line.
        !           796: 
        !           797: `x'
        !           798:      Delete the files that are flagged for deletion.
        !           799: 
        !           800: `#'
        !           801:      Flag all auto-save files (files whose names start and end with `#')
        !           802:      for deletion (*note Auto Save::.).
        !           803: 
        !           804: `~'
        !           805:      Flag all backup files (files whose names end with `~') for deletion
        !           806:      (*note Backup::.).
        !           807: 
        !           808: `. (Period)'
        !           809:      Flag excess numeric backup files for deletion.  The oldest and
        !           810:      newest few backup files of any one file are exempt; the middle
        !           811:      ones are flagged.
        !           812: 
        !           813:    You can flag a file for deletion by moving to the line describing the
        !           814: file and typing `d' or `C-d'.  The deletion flag is visible as a `D' at
        !           815: the beginning of the line.  Point is moved to the beginning of the next
        !           816: line, so that repeated `d' commands flag successive files.
        !           817: 
        !           818:    The files are flagged for deletion rather than deleted immediately to
        !           819: avoid the danger of deleting a file accidentally.  Until you direct
        !           820: Dired to delete the flagged files, you can remove deletion flags using
        !           821: the commands `u' and DEL.  `u' works just like `d', but removes flags
        !           822: rather than making flags.  DEL moves upward, removing flags; it is like
        !           823: `u' with numeric argument automatically negated.
        !           824: 
        !           825:    To delete the flagged files, type `x'.  This command first displays a
        !           826: list of all the file names flagged for deletion, and requests
        !           827: confirmation with `yes'.  Once you confirm, all the flagged files are
        !           828: deleted, and their lines are deleted from the text of the Dired buffer.
        !           829:  The shortened Dired buffer remains selected.  If you answer `no' or
        !           830: quit with `C-g', you return immediately to Dired, with the deletion
        !           831: flags still present and no files actually deleted.
        !           832: 
        !           833:    The `#', `~' and `.' commands flag many files for deletion, based on
        !           834: their names.  These commands are useful precisely because they do not
        !           835: actually delete any files; you can remove the deletion flags from any
        !           836: flagged files that you really wish to keep.
        !           837: 
        !           838:    `#' flags for deletion all files that appear to have been made by
        !           839: auto-saving (that is, files whose names begin and end with `#'). `~'
        !           840: flags for deletion all files that appear to have been made as backups
        !           841: for files that were edited (that is, files whose names end with `~').
        !           842: 
        !           843:    `.' (Period) flags just some of the backup files for deletion: only
        !           844: numeric backups that are not among the oldest few nor the newest few
        !           845: backups of any one file.  Normally `dired-kept-versions' (not
        !           846: `kept-new-versions'; that applies only when saving) specifies the
        !           847: number of newest versions of each file to keep, and `kept-old-versions'
        !           848: specifies the number of oldest versions to keep. Period with a positive
        !           849: numeric argument, as in `C-u 3 .', specifies the number of newest
        !           850: versions to keep, overriding `dired-kept-versions'. A negative numeric
        !           851: argument overrides `kept-old-versions', using minus the value of the
        !           852: argument to specify the number of oldest versions of each file to keep.
        !           853: 
        !           854: 
        !           855: File: emacs,  Node: Dired Immed,  Prev: Dired Deletion,  Up: Dired
        !           856: 
        !           857: Immediate File Operations in Dired
        !           858: ----------------------------------
        !           859: 
        !           860:    Some file operations in Dired take place immediately when they are
        !           861: requested.
        !           862: 
        !           863: `c'
        !           864:      Copies the file described on the current line.  You must supply a
        !           865:      file name to copy to, using the minibuffer.
        !           866: 
        !           867: `f'
        !           868:      Visits the file described on the current line.  It is just like
        !           869:      typing `C-x C-f' and supplying that file name.  If the file on
        !           870:      this line is a subdirectory, `f' actually causes Dired to be
        !           871:      invoked on that subdirectory.  *Note Visiting::.
        !           872: 
        !           873: `o'
        !           874:      Like `f', but uses another window to display the file's buffer. 
        !           875:      The Dired buffer remains visible in the first window.  This is
        !           876:      like using `C-x 4 C-f' to visit the file.  *Note Windows::.
        !           877: 
        !           878: `r'
        !           879:      Renames the file described on the current line.  You must supply a
        !           880:      file name to rename to, using the minibuffer.
        !           881: 
        !           882: `v'
        !           883:      Views the file described on this line using `M-x view-file'. 
        !           884:      Viewing a file is like visiting it, but is slanted toward moving
        !           885:      around in the file conveniently and does not allow changing the
        !           886:      file.  *Note View File: Misc File Ops.  Viewing a file that is a
        !           887:      directory runs Dired on that directory.
        !           888: 
        !           889: 
        !           890: File: emacs,  Node: Misc File Ops,  Prev: Dired,  Up: Files
        !           891: 
        !           892: Miscellaneous File Operations
        !           893: =============================
        !           894: 
        !           895:    Emacs has commands for performing many other operations on files.
        !           896: All operate on one file; they do not accept wild card file names.
        !           897: 
        !           898:    `M-x view-file' allows you to scan or read a file by sequential
        !           899: screenfuls.  It reads a file name argument using the minibuffer.  After
        !           900: reading the file into an Emacs buffer, `view-file' reads and displays
        !           901: one windowful.  You can then type SPC to scroll forward one windowful,
        !           902: or DEL to scroll backward.  Various other commands are provided for
        !           903: moving around in the file, but none for changing it; type `C-h' while
        !           904: viewing for a list of them.  They are mostly the same as normal Emacs
        !           905: cursor motion commands.  To exit from viewing, type `C-c'.
        !           906: 
        !           907:    `M-x insert-file' inserts a copy of the contents of the specified
        !           908: file into the current buffer at point, leaving point unchanged before
        !           909: the contents and the mark after them.  *Note Mark::.
        !           910: 
        !           911:    `M-x write-region' is the inverse of `M-x insert-file'; it copies
        !           912: the contents of the region into the specified file.  `M-x
        !           913: append-to-file' adds the text of the region to the end of the specified
        !           914: file.
        !           915: 
        !           916:    `M-x delete-file' deletes the specified file, like the `rm' command
        !           917: in the shell.  If you are deleting many files in one directory, it may
        !           918: be more convenient to use Dired (*note Dired::.).
        !           919: 
        !           920:    `M-x rename-file' reads two file names OLD and NEW using the
        !           921: minibuffer, then renames file OLD as NEW.  If a file named NEW already
        !           922: exists, you must confirm with `yes' or renaming is not done; this is
        !           923: because renaming causes the old meaning of the name NEW to be lost.  If
        !           924: OLD and NEW are on different file systems, the file OLD is copied and
        !           925: deleted.
        !           926: 
        !           927:    The similar command `M-x add-name-to-file' is used to add an
        !           928: additional name to an existing file without removing its old name. The
        !           929: new name must belong on the same file system that the file is on.
        !           930: 
        !           931:    `M-x copy-file' reads the file OLD and writes a new file named NEW
        !           932: with the same contents.  Confirmation is required if a file named NEW
        !           933: already exists, because copying has the consequence of overwriting the
        !           934: old contents of the file NEW.
        !           935: 
        !           936:    `M-x make-symbolic-link' reads two file names OLD and LINKNAME, and
        !           937: then creates a symbolic link named LINKNAME and pointing at OLD. The
        !           938: effect is that future attempts to open file LINKNAME will refer to
        !           939: whatever file is named OLD at the time the opening is done, or will get
        !           940: an error if the name OLD is not in use at that time. Confirmation is
        !           941: required when creating the link if LINKNAME is in use.  Note that not
        !           942: all systems support symbolic links.
        !           943: 
        !           944: 
        !           945: File: emacs,  Node: Buffers,  Next: Windows,  Prev: Files,  Up: Top
        !           946: 
        !           947: Using Multiple Buffers
        !           948: **********************
        !           949: 
        !           950:    The text you are editing in Emacs resides in an object called a
        !           951: "buffer".  Each time you visit a file, a buffer is created to hold the
        !           952: file's text.  Each time you invoke Dired, a buffer is created to hold
        !           953: the directory listing.  If you send a message with `C-x m', a buffer
        !           954: named `*mail*' is used to hold the text of the message.  When you ask
        !           955: for a command's documentation, that appears in a buffer called `*Help*'.
        !           956: 
        !           957:    At any time, one and only one buffer is "selected".  It is also
        !           958: called the "current buffer".  Often we say that a command operates on
        !           959: "the buffer" as if there were only one; but really this means that the
        !           960: command operates on the selected buffer (most commands do).
        !           961: 
        !           962:    When Emacs makes multiple windows, each window has a chosen buffer
        !           963: which is displayed there, but at any time only one of the windows is
        !           964: selected and its chosen buffer is the selected buffer.  Each window's
        !           965: mode line displays the name of the buffer that the window is displaying
        !           966: (*note Windows::.).
        !           967: 
        !           968:    Each buffer has a name, which can be of any length, and you can
        !           969: select any buffer by giving its name.  Most buffers are made by
        !           970: visiting files, and their names are derived from the files' names.  But
        !           971: you can also create an empty buffer with any name you want.  A newly
        !           972: started Emacs has a buffer named `*scratch*' which can be used for
        !           973: evaluating Lisp expressions in Emacs.  The distinction between upper
        !           974: and lower case matters in buffer names.
        !           975: 
        !           976:    Each buffer records individually what file it is visiting, whether
        !           977: it is modified, and what major mode and minor modes are in effect in it
        !           978: (*note Major Modes::.).  Any Emacs variable can be made "local to" a
        !           979: particular buffer, meaning its value in that buffer can be different
        !           980: from the value in other buffers.  *Note Locals::.
        !           981: 
        !           982: * Menu:
        !           983: 
        !           984: * Select Buffer::   Creating a new buffer or reselecting an old one.
        !           985: * List Buffers::    Getting a list of buffers that exist.
        !           986: * Misc Buffer::     Renaming; changing read-onliness; copying text.
        !           987: * Kill Buffer::     Killing buffers you no longer need.
        !           988: * Several Buffers:: How to go through the list of all buffers
        !           989:                      and operate variously on several of them.
        !           990: 
        !           991: 
        !           992: File: emacs,  Node: Select Buffer,  Next: List Buffers,  Prev: Buffers,  Up: Buffers
        !           993: 
        !           994: Creating and Selecting Buffers
        !           995: ==============================
        !           996: 
        !           997: `C-x b BUFFER RET'
        !           998:      Select or create a buffer named BUFFER (`switch-to-buffer').
        !           999: 
        !          1000: `C-x 4 b BUFFER RET'
        !          1001:      Similar, but select a buffer named BUFFER in another window
        !          1002:      (`switch-to-buffer-other-window').
        !          1003: 
        !          1004:    To select the buffer named BUFNAME, type `C-x b BUFNAME RET'.  This
        !          1005: is the command `switch-to-buffer' with argument BUFNAME.  You can use
        !          1006: completion on an abbreviation for the buffer name you want (*note
        !          1007: Completion::.).  An empty argument to `C-x b' specifies the most
        !          1008: recently selected buffer that is not displayed in any window.
        !          1009: 
        !          1010:    Most buffers are created by visiting files, or by Emacs commands that
        !          1011: want to display some text, but you can also create a buffer explicitly
        !          1012: by typing `C-x b BUFNAME RET'.  This makes a new, empty buffer which is
        !          1013: not visiting any file, and selects it for editing.  Such buffers are
        !          1014: used for making notes to yourself.  If you try to save one, you are
        !          1015: asked for the file name to use.  The new buffer's major mode is
        !          1016: determined by the value of `default-major-mode' (*note Major Modes::.).
        !          1017: 
        !          1018:    Note that `C-x C-f', and any other command for visiting a file, can
        !          1019: also be used to switch buffers.  *Note Visiting::.
        !          1020: 
        !          1021: 
        !          1022: File: emacs,  Node: List Buffers,  Next: Misc Buffer,  Prev: Select Buffer,  Up: Buffers
        !          1023: 
        !          1024: Listing Existing Buffers
        !          1025: ========================
        !          1026: 
        !          1027: `C-x C-b'
        !          1028:      List the existing buffers (`list-buffers').
        !          1029: 
        !          1030:    To print a list of all the buffers that exist, type `C-x C-b'. Each
        !          1031: line in the list shows one buffer's name, major mode and visited file.
        !          1032: `*' at the beginning of a line indicates the buffer is "modified". If
        !          1033: several buffers are modified, it may be time to save some with `C-x s'
        !          1034: (*note Saving::.).  `%' indicates a read-only buffer.  `.' marks the
        !          1035: selected buffer.  Here is an example of a buffer list:
        !          1036: 
        !          1037:       MR Buffer         Size  Mode           File
        !          1038:       -- ------         ----  ----           ----
        !          1039:      .*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
        !          1040:          *Help*         1287  Fundamental
        !          1041:          files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
        !          1042:        % RMAIL          64042 RMAIL          /u/rms/RMAIL
        !          1043:       *% man            747   Dired
        !          1044:          net.emacs      343885 Fundamental   /u/rms/net.emacs
        !          1045:          fileio.c       27691 C              /u2/emacs/src/fileio.c
        !          1046:          NEWS           67340 Text           /u2/emacs/etc/NEWS
        !          1047:          *scratch*        0     Lisp Interaction
        !          1048: 
        !          1049: Note that the buffer `*Help*' was made by a help request; it is not
        !          1050: visiting any file.  The buffer `man' was made by Dired on the directory
        !          1051: `/u2/emacs/man/'.
        !          1052: 
        !          1053: 
        !          1054: File: emacs,  Node: Misc Buffer,  Next: Kill Buffer,  Prev: List Buffers,  Up: Buffers
        !          1055: 
        !          1056: Miscellaneous Buffer Operations
        !          1057: ===============================
        !          1058: 
        !          1059: `C-x C-q'
        !          1060:      Toggle read-only status of buffer (`toggle-read-only').
        !          1061: 
        !          1062: `M-x rename-buffer'
        !          1063:      Change the name of the current buffer.
        !          1064: 
        !          1065: `M-x view-buffer'
        !          1066:      Scroll through a buffer.
        !          1067: 
        !          1068:    A buffer can be "read-only", which means that commands to change its
        !          1069: text are not allowed.  Normally, read-only buffers are made by
        !          1070: subsystems such as Dired and Rmail that have special commands to
        !          1071: operate on the text; a read-only buffer is also made if you visit a
        !          1072: file that is protected so you cannot write it.  If you wish to make
        !          1073: changes in a read-only buffer, use the command `C-x C-q'
        !          1074: (`toggle-read-only').  It makes a read-only buffer writable, and makes
        !          1075: a writable buffer read-only.  This works by setting the variable
        !          1076: `buffer-read-only', which has a local value in each buffer and makes
        !          1077: the buffer read-only if its value is non-`nil'.
        !          1078: 
        !          1079:    `M-x rename-buffer' changes the name of the current buffer.  Specify
        !          1080: the new name as a minibuffer argument.  There is no default.  If you
        !          1081: specify a name that is in use for some other buffer, an error happens
        !          1082: and no renaming is done.
        !          1083: 
        !          1084:    `M-x view-buffer' is much like `M-x view-file' (*note Misc File
        !          1085: Ops::.) except that it examines an already existing Emacs buffer.  View
        !          1086: mode provides commands for scrolling through the buffer conveniently
        !          1087: but not for changing it. When you exit View mode, the value of point
        !          1088: that resulted from your perusal remains in effect.
        !          1089: 
        !          1090:    The commands `C-x a' (`append-to-buffer') and `M-x insert-buffer'
        !          1091: can be used to copy text from one buffer to another. *Note Accumulating
        !          1092: Text::.
        !          1093: 
        !          1094: 
        !          1095: File: emacs,  Node: Kill Buffer,  Next: Several Buffers,  Prev: Misc Buffer,  Up: Buffers
        !          1096: 
        !          1097: Killing Buffers
        !          1098: ===============
        !          1099: 
        !          1100:    After you use Emacs for a while, you may accumulate a large number of
        !          1101: buffers.  You may then find it convenient to eliminate the ones you no
        !          1102: longer need.  There are several commands provided for doing this.
        !          1103: 
        !          1104: `C-x k'
        !          1105:      Kill a buffer, specified by name (`kill-buffer').
        !          1106: 
        !          1107: `M-x kill-some-buffers'
        !          1108:      Offer to kill each buffer, one by one.
        !          1109: 
        !          1110:    `C-x k' (`kill-buffer') kills one buffer, whose name you specify in
        !          1111: the minibuffer.  The default, used if you type just RET in the
        !          1112: minibuffer, is to kill the current buffer.  If the current buffer is
        !          1113: killed, another buffer is selected; a buffer that has been selected
        !          1114: recently but does not appear in any window now is chosen to be selected.
        !          1115: If the buffer being killed is modified (has unsaved editing) then you
        !          1116: are asked to confirm with `yes' before the buffer is killed.
        !          1117: 
        !          1118:    The command `M-x kill-some-buffers' asks about each buffer, one by
        !          1119: one.  An answer of `y' means to kill the buffer.  Killing the current
        !          1120: buffer or a buffer containing unsaved changes selects a new buffer or
        !          1121: asks for confirmation just like `kill-buffer'.
        !          1122: 
        !          1123: 

unix.superglobalmegacorp.com

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