home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-08 | 49.7 KB | 1,141 lines |
- Info file ../info/emacs, produced by Makeinfo, -*- Text -*- from input
- file lemacs.tex.
-
- This file documents the GNU Emacs editor.
-
- Copyright (C) 1985, 1986, 1988 Richard M. Stallman. Copyright (C)
- 1991, 1992 Lucid, Inc.
-
- Permission is granted to make and distribute verbatim copies of
- this manual provided the copyright notice and this permission notice
- are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided also
- that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
- General Public License" are included exactly as in the original, and
- provided that the entire resulting derived work is distributed under
- the terms of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that the sections entitled "The GNU Manifesto",
- "Distribution" and "GNU General Public License" may be included in a
- translation approved by the author instead of in the original English.
-
- File: emacs, Node: Visiting, Next: Saving, Prev: File Names, Up: Files
-
- Visiting Files
- ==============
-
- `C-x C-f'
- Visit a file (`find-file').
-
- `C-x C-v'
- Visit a different file instead of the one visited last
- (`find-alternate-file').
-
- `C-x 4 C-f'
- Visit a file, in another window (`find-file-other-window'). Don't
- change this window.
-
- "Visiting" a file means copying its contents into an Emacs buffer
- so you can edit it. Emacs creates a new buffer for each file you
- visit. We say that the buffer is visiting the file that it was created
- to hold. Emacs constructs the buffer name from the file name by
- throwing away the directory, keeping just the file name. For example,
- a file named `/usr/rms/emacs.tex' is displayed in a buffer named
- `emacs.tex'. If a buffer with that name exists, a unique name is
- constructed by appending `<2>', `<3>',and so on, using the lowest
- number that makes a name that is not already in use.
-
- Each window's mode line shows the name of the buffer that is being
- displayed in that window, so you can always tell what buffer you are
- editing.
-
- The changes you make with Emacs are made in the Emacs buffer. They
- do not take effect in the file that you visit, or any other permanent
- place, until you "save" the buffer. Saving the buffer means that
- Emacs writes the current contents of the buffer into its visited file.
- *Note Saving::.
-
- If a buffer contains changes that have not been saved, the buffer
- is said to be "modified". This is important because it implies that
- some changes will be lost if the buffer is not saved. The mode line
- displays two stars near the left margin if the buffer is modified.
-
- To visit a file, use the command `C-x C-f' (`find-file'). Follow
- the command with the name of the file you wish to visit, terminated by
- a RET. If you are using Lucid GNU Emacs under X, you can also use the
- Open File... command from the File menu bar item.
-
- The file name is read using the minibuffer (*note Minibuffer::.),
- with defaulting and completion in the standard manner (*note File
- Names::.). While in the minibuffer, you can abort `C-x C-f' by typing
- `C-g'.
-
- `C-x C-f' has completed successfully when text appears on the
- screen and a new buffer name appears in the mode line. If the
- specified file does not exist and could not be created or cannot be
- read, an error results. The error message is printed in the echo
- area, and includes the name of the file that Emacs was trying to visit.
-
- If you visit a file that is already in Emacs, `C-x C-f' does not
- make another copy. It selects the existing buffer containing that
- file. However, before doing so, it checks that the file itself has
- not changed since you visited or saved it last. If the file has
- changed, Emacs prints a warning message. *Note Simultaneous Editing:
- Interlocking.
-
- You can switch to a specific file called out in the current buffer
- by calling the function `find-this-file'. By providing a prefix
- argument, this function calls `filename-at-point' and switches to a
- buffer visiting the file FILENAME. It creates one if none already
- exists. You can use this function to edit the file mentioned in the
- buffer you are working in or to test if the file exists. You can do
- that by using the minibuffer completion after snatching the all or
- part of the filename.
-
- You can display a file in a new screen by using the function
- `find-file-new-screen'. This function is similar to `find-file' except
- that it creates a new screen in which the file is displayed.
-
- If the variable `find-file-use-truenames''s value is non-`nil', a
- buffer's visited filename will always be traced back to the real file.
- The filename will never be a symbolic link, and there will never be a
- symbolic link anywhere in its directory path. In other words, the
- `buffer-file-name' and `buffer-file-truename' will be equal.
-
- If the variable `find-file-compare-truenames' value is non-`nil',
- the `find-file' command will check the `buffer-file-truename' of all
- visited files when deciding whether a given file is already in a
- buffer, instead of just `buffer-file-name'. If you attempt to visit
- another file which is a hard-link or symbolic-link to a file that is
- already in a buffer, the existing buffer will be found instead of a
- newly created one.
-
- If you want to create a file, just visit it. Emacs prints `(New
- File)' in the echo area, but in other respects behaves as if you had
- visited an existing empty file. If you make any changes and save them,
- the file is created.
-
- If you visit a nonexistent file unintentionally (because you typed
- the wrong file name), use the `C-x C-v' (`find-alternate-file')
- command to visit the file you wanted. `C-x C-v' is similar to `C-x
- C-f', but it kills the current buffer (after first offering to save it
- if it is modified). `C-x C-v' is allowed even if the current buffer
- is not visiting a file.
-
- If the file you specify is actually a directory, Dired is called on
- that directory (*note Dired::.). To inhibit this, set the variable
- `find-file-run-dired' to `nil'; then it is an error to try to visit a
- directory.
-
- `C-x 4 f' (`find-file-other-window') is like `C-x C-f' except that
- the buffer containing the specified file is selected in another
- window. The window that was selected before `C-x 4 f' continues to
- show the same buffer it was already showing. If you use this command
- when only one window is being displayed, that window is split in two,
- with one window showing the same buffer as before, and the other one
- showing the newly requested file. *Note Windows::.
-
- Use the function `find-this-file-other-window' to edit a file
- mentioned in the buffer yuou are editing or to test if that file
- exists. To do do this, use the minibuffer completion after snatching
- the part or all of the filename. By providing a prefix argument, the
- function calls `filename-at-point' abd switches you to a buffer
- visiting the file FILENAME in another window. The function creates a
- buffer if none already exists. This function is similar to
- `find-file-other-window'.
-
- There are two hook variables that allow extensions to modify the
- operation of visiting files. Visiting a file that does not exist runs
- the functions in the list `find-file-not-found-hooks'; the value of
- this variable is expected to be a list of functions which are called
- one by one until one of them returns non-`nil'. Any visiting of a
- file, whether extant or not, expects `find-file-hooks' to contain list
- of functions and calls them all, one by one. In both cases the
- functions receive no arguments. Visiting a nonexistent file runs the
- `find-file-not-found-hooks' first.
-
- File: emacs, Node: Saving, Next: Reverting, Prev: Visiting, Up: Files
-
- Saving Files
- ============
-
- "Saving" a buffer in Emacs means writing its contents back into the
- file that was visited in the buffer.
-
- `C-x C-s'
- Save the current buffer in its visited file (`save-buffer').
-
- `C-x s'
- Save any or all buffers in their visited files
- (`save-some-buffers').
-
- `M-~'
- Forget that the current buffer has been changed (`not-modified').
-
- `C-x C-w'
- Save the current buffer in a specified file, and record that file
- as the one visited in the buffer (`write-file').
-
- `M-x set-visited-file-name'
- Change file the name under which the current buffer will be saved.
-
- To save a file and make your changes permanent, type `C-x C-s'
- (`save-buffer'). After saving is finished, `C-x C-s' prints a message
- like
-
- Wrote /u/rms/gnu/gnu.tasks
-
- If the selected buffer is not modified (no changes have been made in it
- since the buffer was created or last saved), Emacs does not save it
- because it would have no effect. Instead, `C-x C-s' prints a message
- in the echo area saying
-
- (No changes need to be written)
-
- The command `C-x s' (`save-some-buffers') can save any or all
- modified buffers. First it asks, for each modified buffer, whether to
- save it. The questions should be answered with `y' or `n'. `C-x
- C-c', the key that kills Emacs, invokes `save-some-buffers' and
- therefore asks the same questions.
-
- If you have changed a buffer and do not want the changes to be
- saved, you should take some action to prevent it. Otherwise, you are
- liable to save it by mistake each time you use `save-some-buffers' or a
- related command. One thing you can do is type `M-~' (`not-modified'),
- which removes the indication that the buffer is modified. If you do
- this, none of the save commands will believe that the buffer needs to
- be saved. (`~' is often used as a mathematical symbol for `not'; thus
- `Meta-~' is `not', metafied.) You could also use
- `set-visited-file-name' (see below) to mark the buffer as visiting a
- different file name, not in use for anything important.
-
- You can also undo all the changes made since the file was visited or
- saved, by reading the text from the file again. This is called
- "reverting". *Note Reverting::. Alternatively, you can undo all the
- changes by repeating the undo command `C-x u'; but this only works if
- you have not made more changes than the undo mechanism can remember.
-
- `M-x set-visited-file-name' alters the name of the file that the
- current buffer is visiting. It prompts you for the new file name in
- the minibuffer. You can also use `set-visited-file-name' on a buffer
- that is not visiting a file. The buffer's name is changed to
- correspond to the file it is now visiting unless the new name is
- already used by a different buffer; in that case, the buffer name is
- not changed. `set-visited-file-name' does not save the buffer in the
- newly visited file; it just alters the records inside Emacs so that it
- will save the buffer in that file. It also marks the buffer as
- "modified" so that `C-x C-s' will save.
-
- If you wish to mark a buffer as visiting a different file and save
- it right away, use `C-x C-w' (`write-file'). It is precisely
- equivalent to `set-visited-file-name' followed by `C-x C-s'. `C-x
- C-s' used on a buffer that is not visiting a file has the same effect
- as `C-x C-w'; that is, it reads a file name, marks the buffer as
- visiting that file, and saves it there. The default file name in a
- buffer that is not visiting a file is made by combining the buffer name
- with the buffer's default directory.
-
- If Emacs is about to save a file and sees that the date of the
- latest version on disk does not match what Emacs last read or wrote,
- Emacs notifies you of this fact, because it probably indicates a
- problem caused by simultaneous editing and requires your immediate
- attention. *Note Simultaneous Editing: Interlocking.
-
- If the variable `require-final-newline' is non-`nil', Emacs puts a
- newline at the end of any file that doesn't already end in one, every
- time a file is saved or written.
-
- Use the hook variable `write-file-hooks' to implement other ways to
- write files, and specify things to be done before files are written.
- The value of this variable should be a list of Lisp functions. When a
- file is to be written, the functions in the list are called, one by
- one, with no arguments. If one of them returns a non-`nil' value,
- Emacs takes this to mean that the file has been written in some
- suitable fashion; the rest of the functions are not called, and normal
- writing is not done. Use the hook variable `after-write-file-hooks' to
- list all the functions to be called after writing out a buffer to a
- file.
-
- * Menu:
-
- * Backup:: How Emacs saves the old version of your file.
- * Interlocking:: How Emacs protects against simultaneous editing
- of one file by two users.
-
- File: emacs, Node: Backup, Next: Interlocking, Prev: Saving, Up: Saving
-
- Backup Files
- ------------
-
- Because Unix does not provide version numbers in file names,
- rewriting a file in Unix automatically destroys all record of what the
- file used to contain. Thus, saving a file from Emacs throws away the
- old contents of the file--or it would, except that Emacs carefully
- copies the old contents to another file, called the "backup" file,
- before actually saving. (Provided the variable `make-backup-files' is
- non-`nil'. Backup files are not written if this variable is `nil').
-
- At your option, Emacs can keep either a single backup file or a
- series of numbered backup files for each file you edit.
-
- Emacs makes a backup for a file only the first time a file is saved
- from one buffer. No matter how many times you save a file, its backup
- file continues to contain the contents from before the file was
- visited. Normally this means that the backup file contains the
- contents from before the current editing session; however, if you kill
- the buffer and then visit the file again, a new backup file is made by
- the next save.
-
- * Menu:
-
- * Names: Backup Names. How backup files are named;
- Choosing single or numbered backup files.
- * Deletion: Backup Deletion. Emacs deletes excess numbered backups.
- * Copying: Backup Copying. Backups can be made by copying or renaming.
-
- File: emacs, Node: Backup Names, Next: Backup Deletion, Prev: Backup, Up: Backup
-
- Single or Numbered Backups
- ..........................
-
- If you choose to have a single backup file (the default), the
- backup file's name is constructed by appending `~' to the file name
- being edited; thus, the backup file for `eval.c' is `eval.c~'.
-
- If you choose to have a series of numbered backup files, backup file
- names are made by appending `.~', the number, and another `~' to the
- original file name. Thus, the backup files of `eval.c' would be
- called `eval.c.~1~', `eval.c.~2~', and so on, through names like
- `eval.c.~259~' and beyond.
-
- If protection stops you from writing backup files under the usual
- names, the backup file is written as `%backup%~' in your home
- directory. Only one such file can exist, so only the most recently
- made backup is available.
-
- The choice of single backup or numbered backups is controlled by the
- variable `version-control'. Its possible values are
-
- `t'
- Make numbered backups.
-
- `nil'
- Make numbered backups for files that have numbered backups
- already. Otherwise, make single backups.
-
- `never'
- Never make numbered backups; always make single backups.
-
- `version-control' may be set locally in an individual buffer to
- control the making of backups for that buffer's file. For example,
- Rmail mode locally sets `version-control' to `never' to make sure that
- there is only one backup for an Rmail file. *Note Locals::.
-
- File: emacs, Node: Backup Deletion, Next: Backup Copying, Prev: Backup Names, Up: Backup
-
- Automatic Deletion of Backups
- .............................
-
- To prevent unlimited consumption of disk space, Emacs can delete
- numbered backup versions automatically. Generally Emacs keeps the
- first few backups and the latest few backups, deleting any in between.
- This happens every time a new backup is made. The two variables that
- control the deletion are `kept-old-versions' and `kept-new-versions'.
- Their values are, respectively the number of oldest (lowest-numbered)
- backups to keep and the number of newest (highest-numbered) ones to
- keep, each time a new backup is made. The values are used just after
- a new backup version is made; that newly made backup is included in
- the count in `kept-new-versions'. By default, both variables are 2.
-
- If `trim-versions-without-asking' is non-`nil', excess middle
- versions are deleted without notification. If it is `nil', the
- default, you are asked whether the excess middle versions should
- really be deleted.
-
- You can also use Dired's `.' (Period) command to delete old
- versions. *Note Dired::.
-
- File: emacs, Node: Backup Copying, Prev: Backup Deletion, Up: Backup
-
- Copying vs. Renaming
- ....................
-
- You can make backup files by copying the old file or by renaming it.
- This makes a difference when the old file has multiple names. If you
- rename the old file into the backup file, the alternate names become
- names for the backup file. If you copy the old file instead, the
- alternate names remain names for the file that you are editing, and
- the contents accessed by those names will be the new contents.
-
- How you make a backup file may also affect the file's owner and
- group. If you use copying, they do not change. If renaming is used,
- you become the file's owner, and the file's group becomes the default
- (different operating systems have different defaults for the group).
-
- Having the owner change is usually a good idea, because then the
- owner always shows who last edited the file. The owners of the
- backups show who produced them. Occasionally there is a file whose
- owner should not change. Since most files` owner should change, it is
- a good idea to use local variable lists to set
- `backup-by-copying-when-mismatch' for the special cases where the
- owner should change.(*note File Variables::.).
-
- Three variables control the choice of renaming or copying.
- Normally, renaming is done. If the variable `backup-by-copying' is
- non-`nil', copying is used. Otherwise, if the variable
- `backup-by-copying-when-linked' is non-`nil', copying is done for
- files that have multiple names, but renaming may still be done when
- the file being edited has only one name. If the variable
- `backup-by-copying-when-mismatch' is non-`nil', copying is done if
- renaming would cause the file's owner or group to change.
-
- File: emacs, Node: Interlocking, Prev: Backup, Up: Saving
-
- Protection against Simultaneous Editing
- ---------------------------------------
-
- Simultaneous editing occurs when two users visit the same file, both
- make changes, and both save their changes. If no one was informed that
- this was happening, and you saved first, you would later find that your
- changes were lost. On some systems, Emacs notices immediately when the
- second user starts to change a file already being edited, and issues a
- warning. When this is not possible, or if the second user has started
- to change the file despite the warning, Emacs checks when the file is
- saved, and issues a second warning when a user is about to overwrite a
- file containing another user's changes. If you are the user editing
- the file, you can take corrective action at this point and prevent
- actual loss of work.
-
- When you make the first modification in an Emacs buffer that is
- visiting a file, Emacs records that you have locked the file. (It
- does this by writing another file in a directory reserved for this
- purpose.) The lock is removed when you save the changes. The idea is
- that the file is locked whenever the buffer is modified. If you begin
- to modify the buffer while the visited file is locked by someone else,
- this constitutes a collision, and Emacs asks you what to do. It does
- this by calling the Lisp function `ask-user-about-lock', which you can
- redefine to customize what it does. The standard definition of this
- function asks you a question and accepts three possible answers:
-
- `s'
- Steal the lock. Whoever was already changing the file loses the
- lock, and you get the lock.
-
- `p'
- Proceed. Go ahead and edit the file despite its being locked by
- someone else.
-
- `q'
- Quit. This causes an error (`file-locked') and the modification
- you were trying to make in the buffer does not actually take
- place.
-
- Note that locking works on the basis of a file name; if a file has
- multiple names, Emacs does not realize that the two names are the same
- file and cannot prevent two users from editing it simultaneously under
- different names. However, basing locking on names means that Emacs
- can interlock the editing of new files that do not really exist until
- they are saved.
-
- Some systems are not configured to allow Emacs to make locks. On
- these systems, Emacs cannot detect trouble in advance, but it can still
- detect it in time to prevent you from overwriting someone else's
- changes.
-
- Every time Emacs saves a buffer, it first checks the
- last-modification date of the existing file on disk to see that it has
- not changed since the file was last visited or saved. If the date
- does not match, it implies that changes were made in the file in some
- other way, and these changes are about to be lost if Emacs actually
- does save. To prevent this, Emacs prints a warning message and asks
- for confirmation before saving. Occasionally you will know why the
- file was changed and know that it does not matter; then you can answer
- `yes' and proceed. Otherwise, you should cancel the save with `C-g'
- and investigate the situation.
-
- The first thing you should do when notified that simultaneous
- editing has already taken place is to list the directory with `C-u C-x
- C-d' (*note Directory Listing: ListDir.). This will show the file's
- current author. You should attempt to contact that person and ask her
- not to continue editing. Often the next step is to save the contents
- of your Emacs buffer under a different name, and use `diff' to compare
- the two files.
-
- Simultaneous editing checks are also made when you visit a file that
- is already visited with `C-x C-f' and when you start to modify a file.
- This is not strictly necessary, but it is useful to find out about
- such a problem as early as possible, when corrective action takes less
- work.
-
- Another way to protect your file is to set the read, write, and
- executable permissions for the file. Use the function
- `set-default-file-mode' to set the UNIX `umask' value to the NMASK
- argument. The `umask' value is the default protection mode for new
- files.
-
- File: emacs, Node: Reverting, Next: Auto Save, Prev: Saving, Up: Files
-
- Reverting a Buffer
- ==================
-
- If you have made extensive changes to a file and then change your
- mind about them, you can get rid of all changes by reading in the
- previous version of the file. To do this, use `M-x revert-buffer',
- which operates on the current buffer. Since reverting a buffer can
- result in very extensive changes, you must confirm it with `yes'.
-
- If the current buffer has been auto-saved more recently than it has
- been saved explicitly, `revert-buffer' offers to read the auto save
- file instead of the visited file (*note Auto Save::.). Emacs asks you
- about the auto save file before the request for confirmation of the
- `revert-buffer' operation, and demands `y' or `n' as an answer. If
- you have started to type `yes' for confirmation without realizing that
- the auto-save question was going to be asked, the `y' will answer that
- question, but the `es' will not be valid confirmation. This gives you
- a chance to cancel the operation with `C-g' and try again with the
- answers you really intend.
-
- `revert-buffer' keeps point at the same distance (measured in
- characters) from the beginning of the file. If the file was edited
- only slightly, you will be at approximately the same piece of text
- after reverting as before. If you have made more extensive changes,
- the value of point in the old file may bring you to a totally
- different piece of text than your last editing point.
-
- A buffer reverted from its visited file is marked "not modified"
- until you make a change.
-
- Some kinds of buffers whose contents reflect data bases other than
- files, such as Dired buffers, can also be reverted. For them,
- reverting means recalculating their contents from the appropriate
- data. Buffers created randomly with `C-x b' cannot be reverted;
- `revert-buffer' reports an error when asked to do so.
-
- File: emacs, Node: Auto Save, Next: ListDir, Prev: Reverting, Up: Files
-
- Auto-Saving: Protection Against Disasters
- =========================================
-
- Emacs saves all the visited files from time to time (based on
- counting your keystrokes) without being asked. This is called
- "auto-saving". It prevents you from losing more than a limited amount
- of work if the system crashes.
-
- When Emacs determines it is time for auto-saving, each buffer is
- considered, and is auto-saved if auto-saving is turned on for it and
- it has changed since the last time it was auto-saved. If any
- auto-saving is done, the message `Auto-saving...' is displayed in the
- echo area until auto-saving is finished. Errors occurring during
- auto-saving are caught so that they do not interfere with the
- execution of commands you have been typing.
-
- * Menu:
-
- * Files: Auto Save Files.
- * Control: Auto Save Control.
- * Recover:: Recovering text from auto-save files.
-
- File: emacs, Node: Auto Save Files, Next: Auto Save Control, Prev: Auto Save, Up: Auto Save
-
- Auto-Save Files
- ---------------
-
- Auto-saving does not normally write to the files you visited,
- because it can be undesirable to save a program that is in an
- inconsistent state when you have made only half of a planned change.
- Instead, auto-saving is done in a different file called the "auto-save
- file", and the visited file is changed only when you save explicitly,
- for example, with `C-x C-s'.
-
- Normally, the name of the auto-save file is generated by appending
- `#' to the front and back of the visited file name. Thus, a buffer
- visiting file `foo.c' would be auto-saved in a file `#foo.c#'. Most
- buffers that are not visiting files are auto-saved only if you request
- it explicitly; when they are auto-saved, the auto-save file name is
- generated by appending `#%' to the front and `#' to the back of buffer
- name. For example, the `*mail*' buffer in which you compose messages
- to be sent is auto-saved in a file named `#%*mail*#'. Names of
- auto-save files are generated this way unless you customize the
- functions `make-auto-save-file-name' and `auto-save-file-name-p' to do
- something different. The file name to be used for auto-saving a
- buffer is calculated at the time auto-saving is turned on in that
- buffer.
-
- If you want auto-saving to be done in the visited file, set the
- variable `auto-save-visited-file-name' to be non-`nil'. In this mode,
- there is really no difference between auto-saving and explicit saving.
-
- Emacs deletes a buffer's auto-save file when you explicitly save the
- buffer. To inhibit the deletion, set the variable
- `delete-auto-save-files' to `nil'. Changing the visited file name
- with `C-x C-w' or `set-visited-file-name' renames any auto-save file
- to correspond to the new visited name.
-
- File: emacs, Node: Auto Save Control, Next: Recover, Prev: Auto Save Files, Up: Auto Save
-
- Controlling Auto-Saving
- -----------------------
-
- Each time you visit a file, auto-saving is turned on for that file's
- buffer if the variable `auto-save-default' is non-`nil' (but not in
- batch mode; *note Entering Emacs::.). The default for this variable
- is `t', so Emacs auto-saves buffers that visit files by default. You
- can use the command `M-x auto-save-mode' to turn auto-saving for a
- buffer on or off. Like other minor mode commands, `M-x
- auto-save-mode' turns auto-saving on with a positive argument, off
- with a zero or negative argument; with no argument, it toggles.
-
- Emacs performs auto-saving periodically based on counting how many
- characters you have typed since the last time auto-saving happened.
- The variable `auto-save-interval' specifies the number of characters
- between auto-saves. By default, it is 300. Emacs also auto-saves
- whenever you call the function `do-auto-save'.
-
- Emacs also does auto-saving whenever it gets a fatal error. This
- includes killing the Emacs job with a shell command such as `kill
- -emacs', or disconnecting a phone line or network connection.
-
- You can set the number of seconds of idle time before an auto-save
- is done. A value of zero or `nil' means disable auto-saving due to
- idleness.
-
- The actual amount of idle time between auto-saves is logarithmically
- related to the size of the current buffer. This variable is the number
- of seconds after which an auto-save will happen when the current buffer
- is 50k or less; the timeout will be 2 1/4 times this in a 200k buffer,
- 3 3/4 times this in a 1000k buffer, and 4 1/2 times this in a 2000k
- buffer.
-
- For this variable to have any effect, you must do `(require
- 'timer)'.
-
- File: emacs, Node: Recover, Prev: Auto Save Control, Up: Auto Save
-
- Recovering Data from Auto-Saves
- -------------------------------
-
- If you want to use the contents of an auto-save file to recover
- from a loss of data, use the command `M-x recover-file RET FILE RET'.
- Emacs visits FILE and then (after your confirmation) restores the
- contents from the auto-save file `#FILE#'. You can then save the file
- with `C-x C-s' to put the recovered text into FILE itself. For
- example, to recover file `foo.c' from its auto-save file `#foo.c#', do:
-
- M-x recover-file RET foo.c RET
- C-x C-s
-
- Before asking for confirmation, `M-x recover-file' displays a
- directory listing describing the specified file and the auto-save file,
- so you can compare their sizes and dates. If the auto-save file is
- older, `M-x recover-file' does not offer to read it.
-
- Auto-saving is disabled by `M-x recover-file' because using this
- command implies that the auto-save file contains valuable data from a
- past session. If you save the data in the visited file and then go on
- to make new changes, turn auto-saving back on with `M-x
- auto-save-mode'.
-
- File: emacs, Node: ListDir, Next: Dired, Prev: Auto Save, Up: Files
-
- Listing a File Directory
- ========================
-
- Files are classified by Unix into "directories". A "directory
- listing" is a list of all the files in a directory. Emacs provides
- directory listings in brief format (file names only) and verbose format
- (sizes, dates, and authors included).
-
- `C-x C-d DIR-OR-PATTERN'
- Print a brief directory listing (`list-directory').
-
- `C-u C-x C-d DIR-OR-PATTERN'
- Print a verbose directory listing.
-
- To print a directory listing, use `C-x C-d' (`list-directory').
- This command prompts in the minibuffer for a file name which is either
- a directory to be listed or pattern containing wildcards for the
- files to be listed. For example,
-
- C-x C-d /u2/emacs/etc RET
-
- lists all the files in directory `/u2/emacs/etc'. An example of
- specifying a file name pattern is
-
- C-x C-d /u2/emacs/src/*.c RET
-
- Normally, `C-x C-d' prints a brief directory listing containing just
- file names. A numeric argument (regardless of value) tells it to
- print a verbose listing (like `ls -l').
-
- Emacs obtains the text of a directory listing by running `ls' in an
- inferior process. Two Emacs variables control the switches passed to
- `ls': `list-directory-brief-switches' is a string giving the switches
- to use in brief listings (`"-CF"' by default).
- `list-directory-verbose-switches' is a string giving the switches to
- use in a verbose listing (`"-l"' by default).
-
- The variable `diretory-abbrev-alist' is an alist of abbreviations
- for file directories. The list consists of elements of the form
- `(FROM . TO)', each meaning to replace `FROM' with `TO' when it
- appears in a directory name. This replacement is done when setting up
- the default directory of a newly visited file. Every `FROM' string
- should start with ``^''.
-
- Use this feature when you have directories which you normally refer
- to via absolute symbolic links. Make `TO' the name of the link, and
- `FROM' the name it is linked to.
-
- File: emacs, Node: Dired, Next: Misc File Ops, Prev: ListDir, Up: Files
-
- Dired, the Directory Editor
- ===========================
-
- Dired makes it easy to delete or visit many of the files in a single
- directory at once. It makes an Emacs buffer containing a listing of
- the directory. You can use the normal Emacs commands to move around
- in this buffer, and special Dired commands to operate on the files.
-
- * Menu:
-
- * Enter: Dired Enter. How to invoke Dired.
- * Edit: Dired Edit. Editing the Dired buffer.
- * Deletion: Dired Deletion. Deleting files with Dired.
- * Immed: Dired Immed. Other file operations through Dired.
-
- File: emacs, Node: Dired Enter, Next: Dired Edit, Prev: Dired, Up: Dired
-
- Entering Dired
- --------------
-
- To invoke dired, type `C-x d' or `M-x dired'. The command reads a
- directory name or wildcard file name pattern as a minibuffer argument
- just like the `list-directory' command, `C-x C-d'. Where `dired'
- differs from `list-directory' is in naming the buffer after the
- directory name or the wildcard pattern used for the listing, and
- putting the buffer into Dired mode so that the special commands of
- Dired are available in it. The variable `dired-listing-switches' is a
- string used as an argument to `ls' in making the directory; this string
- must contain `-l'.
-
- To display the Dired buffer in another window rather than in the
- selected window, use `C-x 4 d' (`dired-other-window)' instead of `C-x
- d'.
-
- File: emacs, Node: Dired Edit, Next: Dired Deletion, Prev: Dired Enter, Up: Dired
-
- Editing in Dired
- ----------------
-
- Once the Dired buffer exists, you can switch freely between it and
- other Emacs buffers. Whenever the Dired buffer is selected, certain
- special commands are provided that operate on files that are listed.
- The Dired buffer is "read-only", and inserting text in it is not
- useful, so ordinary printing characters such as `d' and `x' are used
- for Dired commands. Most Dired commands operate on the file described
- by the line that point is on. Some commands perform operations
- immediately; others "flag" the file to be operated on later.
-
- Most Dired commands that operate on the current line's file also
- treat a numeric argument as a repeat count, meaning to act on the
- files of the next few lines. A negative argument means to operate on
- the files of the preceding lines, and leave point on the first of
- those lines.
-
- All the usual Emacs cursor motion commands are available in Dired
- buffers. Some special purpose commands are also provided. The keys
- `C-n' and `C-p' are redefined so that they try to position the cursor
- at the beginning of the filename on the line, rather than at the
- beginning of the line.
-
- For extra convenience, SPC and `n' in Dired are equivalent to
- `C-n'. `p' is equivalent to `C-p'. Moving by lines is done so often
- in Dired that it deserves to be easy to type. DEL (move up and
- unflag) is often useful simply for moving up.
-
- The `g' command in Dired runs `revert-buffer' to reinitialize the
- buffer from the actual disk directory and show any changes made in the
- directory by programs other than Dired. All deletion flags in the
- Dired buffer are lost when this is done.
-
- File: emacs, Node: Dired Deletion, Next: Dired Immed, Prev: Dired Edit, Up: Dired
-
- Deleting Files with Dired
- -------------------------
-
- The primary use of Dired is to flag files for deletion and then
- delete them.
-
- `d'
- Flag this file for deletion.
-
- `u'
- Remove deletion-flag on this line.
-
- `DEL'
- Remove deletion-flag on previous line, moving point to that line.
-
- `x'
- Delete the files that are flagged for deletion.
-
- `#'
- Flag all auto-save files (files whose names start and end with
- `#') for deletion (*note Auto Save::.).
-
- `~'
- Flag all backup files (files whose names end with `~') for
- deletion (*note Backup::.).
-
- `. (Period)'
- Flag excess numeric backup files for deletion. The oldest and
- newest few backup files of any one file are exempt; the middle
- ones are flagged.
-
- You can flag a file for deletion by moving to the line describing
- the file and typing `d' or `C-d'. The deletion flag is visible as a
- `D' at the beginning of the line. Point is moved to the beginning of
- the next line, so that repeated `d' commands flag successive files.
-
- The files are flagged for deletion rather than deleted immediately
- to avoid the danger of deleting a file accidentally. Until you direct
- Dired to delete the flagged files, you can remove deletion flags using
- the commands `u' and DEL. `u' works just like `d', but removes flags
- rather than making flags. DEL moves upward, removing flags; it is
- like `u' with numeric argument automatically negated.
-
- To delete the flagged files, type `x'. This command first displays
- a list of all the file names flagged for deletion, and requests
- confirmation with `yes'. Once you confirm, all the flagged files are
- deleted, and their lines are deleted from the text of the Dired
- buffer. The shortened Dired buffer remains selected. If you answer
- `no' or quit with `C-g', you return immediately to Dired, with the
- deletion flags still present and no files actually deleted.
-
- The `#', `~' and `.' commands flag many files for deletion, based
- on their names. These commands are useful precisely because they do
- not actually delete any files; you can remove the deletion flags from
- any flagged files that you really wish to keep.
-
- `#' flags for deletion all files that appear to have been made by
- auto-saving (that is, files whose names begin and end with `#'). `~'
- flags for deletion all files that appear to have been made as backups
- for files that were edited (that is, files whose names end with `~').
-
- `.' (Period) flags just some of the backup files for deletion: only
- numeric backups that are not among the oldest few nor the newest few
- backups of any one file. Normally `dired-kept-versions' (not
- `kept-new-versions'; that applies only when saving) specifies the
- number of newest versions of each file to keep, and
- `kept-old-versions' specifies the number of oldest versions to keep.
- Period with a positive numeric argument, as in `C-u 3 .', specifies the
- number of newest versions to keep, overriding `dired-kept-versions'.
- A negative numeric argument overrides `kept-old-versions', using minus
- the value of the argument to specify the number of oldest versions of
- each file to keep.
-
- File: emacs, Node: Dired Immed, Prev: Dired Deletion, Up: Dired
-
- Immediate File Operations in Dired
- ----------------------------------
-
- Some file operations in Dired take place immediately when they are
- requested.
-
- `c'
- Copies the file described on the current line. You must supply a
- file name to copy to, using the minibuffer.
-
- `f'
- Visits the file described on the current line. It is just like
- typing `C-x C-f' and supplying that file name. If the file on
- this line is a subdirectory, `f' actually causes Dired to be
- invoked on that subdirectory. *Note Visiting::.
-
- `o'
- Like `f', but uses another window to display the file's buffer.
- The Dired buffer remains visible in the first window. This is
- like using `C-x 4 C-f' to visit the file. *Note Windows::.
-
- `r'
- Renames the file described on the current line. You must supply
- a file name to rename to, using the minibuffer.
-
- `v'
- Views the file described on this line using `M-x view-file'.
- Viewing a file is like visiting it, but is slanted toward moving
- around in the file conveniently and does not allow changing the
- file. *Note View File: Misc File Ops. Viewing a file that is a
- directory runs Dired on that directory.
-
- File: emacs, Node: Misc File Ops, Prev: Dired, Up: Files
-
- Miscellaneous File Operations
- =============================
-
- Emacs has commands for performing many other operations on files.
- All operate on one file; they do not accept wildcard file names.
-
- You can use the command `M-x add-name-to-file' to add a name to an
- existing file without removing the old name. The new name must belong
- on the file system that the file is on.
-
- `M-x append-to-file' adds the text of the region to the end of the
- specified file.
-
- `M-x copy-file' reads the file OLD and writes a new file named NEW
- with the same contents. Confirmation is required if a file named NEW
- already exists, because copying overwrites the old contents of the
- file NEW.
-
- `M-x delete-file' deletes a specified file, like the `rm' command
- in the shell. If you are deleting many files in one directory, it may
- be more convenient to use Dired (*note Dired::.).
-
- `M-x insert-file' inserts a copy of the contents of a specified
- file into the current buffer at point, leaving point unchanged before
- the contents and the mark after them. *Note Mark::.
-
- `M-x make-symbolic-link' reads two file names OLD and LINKNAME, and
- then creates a symbolic link named LINKNAME and pointing at OLD. The
- future attempts to open file LINKNAME will then refer to the file
- named OLD at the time the opening is done, or will result in an error
- if the name OLD is not in use at that time. Confirmation is required
- if you create the link while LINKNAME is in use. Note that not all
- systems support symbolic links.
-
- `M-x rename-file' reads two file names OLD and NEW using the
- minibuffer, then renames file OLD as NEW. If a file named NEW already
- exists, you must confirm with `yes' or renaming is not done; this is
- because renaming causes the old meaning of the name NEW to be lost.
- If OLD and NEW are on different file systems, the file OLD is copied
- and deleted.
-
- `M-x view-file' allows you to scan or read a file by sequential
- screenfuls. It reads a file name argument using the minibuffer. After
- reading the file into an Emacs buffer, `view-file' reads and displays
- one windowful. You can then type SPC to scroll forward one window, or
- DEL to scroll backward. Various other commands are provided for
- moving around in the file, but none for changing it; type `C-h' while
- viewing a file for a list of them. Most commands are the default Emacs
- cursor motion commands. To exit from viewing, type `C-c'.
-
- File: emacs, Node: Buffers, Next: Windows, Prev: Files, Up: Top
-
- Using Multiple Buffers
- **********************
-
- Text you are editing in Emacs resides in an object called a
- "buffer". Each time you visit a file, Emacs creates a buffer to hold
- the file's text. Each time you invoke Dired, Emacs creates a buffer
- to hold the directory listing. If you send a message with `C-x m', a
- buffer named `*mail*' is used to hold the text of the message. When
- you ask for a command's documentation, it appears in a buffer called
- `*Help*'.
-
- At any time, one and only one buffer is "selected". It is also
- called the "current buffer". Saying a command operates on "the
- buffer" really means that the command operates on the selected buffer,
- as most commands do.
-
- When Emacs creates multiple windows, each window has a chosen
- buffer which is displayed there, but at any time only one of the
- windows is selected and its chosen buffer is the selected buffer.
- Each window's mode line displays the name of the buffer the window is
- displaying (*note Windows::.).
-
- Each buffer has a name which can be of any length but is
- case-sensitive. You can select a buffer using its name. Most buffers
- are created when you visit files; their names are derived from the
- files' names. You can also create an empty buffer with any name you
- want. A newly started Emacs has a buffer named `*scratch*' which you
- can use for evaluating Lisp expressions in Emacs.
-
- Each buffer records what file it is visiting, whether it is
- modified, and what major mode and minor modes are in effect in it
- (*note Major Modes::.). Any Emacs variable can be made "local to" a
- particular buffer, meaning its value in that buffer can be different
- from the value in other buffers. *Note Locals::.
-
- * Menu:
-
- * Select Buffer:: Creating a new buffer or reselecting an old one.
- * List Buffers:: Getting a list of buffers that exist.
- * Misc Buffer:: Renaming; changing read-onliness; copying text.
- * Kill Buffer:: Killing buffers you no longer need.
- * Several Buffers:: How to go through the list of all buffers
- and operate variously on several of them.
-
- File: emacs, Node: Select Buffer, Next: List Buffers, Prev: Buffers, Up: Buffers
-
- Creating and Selecting Buffers
- ==============================
-
- `C-x b BUFFER RET'
- Select or create a buffer named BUFFER (`switch-to-buffer').
-
- `C-x 4 b BUFFER RET'
- Similar but select a buffer named BUFFER in another window
- (`switch-to-buffer-other-window').
-
- `M-x switch-to-other-buffer N'
- Switch to the previous buffer.
-
- To select a buffer named BUFNAME, type `C-x b BUFNAME RET'. This
- is the command `switch-to-buffer' with argument BUFNAME. You can use
- completion on an abbreviation for the buffer name you want (*note
- Completion::.). An empty argument to `C-x b' specifies the most
- recently selected buffer that is not displayed in any window.
-
- Most buffers are created when you visit files, or use Emacs commands
- that display text. You can also create a buffer explicitly by typing
- `C-x b BUFNAME RET', which creates a new, empty buffer that is not
- visiting any file, and selects it for editing. The new buffer's major
- mode is determined by the value of `default-major-mode' (*note Major
- Modes::.). Buffers not visiting files are usually used for making
- notes to yourself. If you try to save one, you are asked for the file
- name to use.
-
- The function `switch-to-bufer-new-screen' is similar to
- `switch-to-buffer' except that it creates a new screen in which to
- display the selected buffer.
-
- Use `M-x switch-to-other-buffer' to visit the previous buffer. If
- you supply a positive integer N, the Nth most recent buffer is
- displayed. If you supply an argument of 0, the current buffer is moved
- to the bottom of the buffer stack.
-
- Note that you can also use `C-x C-f' and any other command for
- visiting a file to switch buffers. *Note Visiting::.
-
- File: emacs, Node: List Buffers, Next: Misc Buffer, Prev: Select Buffer, Up: Buffers
-
- Listing Existing Buffers
- ========================
-
- `C-x C-b'
- List the existing buffers (`list-buffers').
-
- To print a list of all existing buffers, type `C-x C-b'. Each line
- in the list shows one buffer's name, major mode and visited file. `*'
- at the beginning of a line indicates the buffer has been "modified".
- If several buffers are modified, it may be time to save some with `C-x
- s' (*note Saving::.). `%' indicates a read-only buffer. `.' marks
- the selected buffer. Here is an example of a buffer list:
-
- MR Buffer Size Mode File
- -- ------ ---- ---- ----
- .* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex
- *Help* 1287 Fundamental
- files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el
- % RMAIL 64042 RMAIL /u/rms/RMAIL
- *% man 747 Dired /u2/emacs/man/
- net.emacs 343885 Fundamental /u/rms/net.emacs
- fileio.c 27691 C /u2/emacs/src/fileio.c
- NEWS 67340 Text /u2/emacs/etc/NEWS
- *scratch* 0 Lisp Interaction
-
- Note that the buffer `*Help*' was made by a help request; it is not
- visiting any file. The buffer `man' was made by Dired on the
- directory `/u2/emacs/man/'.
-
- As you move the mouse over the `*Buffer List*' buffer, the lines
- are highlighted. This visual cue indicates that clicking the right
- mouse button (`button3') will pop up a menu of commands on the buffer
- represented by this line. This menu duplicates most of those commands
- which are bound to keys in the `*Buffer List*' buffer.
-
- File: emacs, Node: Misc Buffer, Next: Kill Buffer, Prev: List Buffers, Up: Buffers
-
- Miscellaneous Buffer Operations
- ===============================
-
- `C-x C-q'
- Toggle read-only status of buffer (`toggle-read-only').
-
- `M-x rename-buffer'
- Change the name of the current buffer.
-
- `M-x view-buffer'
- Scroll through a buffer.
-
- A buffer can be "read-only", which means that commands to change
- its text are not allowed. Normally, read-only buffers are created by
- subsystems such as Dired and Rmail that have special commands to
- operate on the text. Emacs also creates a read-only buffer if you
- visit a file that is protected. To make changes in a read-only buffer,
- use the command `C-x C-q' (`toggle-read-only'). It makes a read-only
- buffer writable, and makes a writable buffer read-only. This works by
- setting the variable `buffer-read-only', which has a local value in
- each buffer and makes a buffer read-only if its value is non-`nil'.
-
- `M-x rename-buffer' changes the name of the current buffer,
- prompting for the new name in the minibuffer. There is no default.
- If you specify a name that is used by a different buffer, an error is
- signalled and renaming is not done.
-
- `M-x view-buffer' is similar to `M-x view-file' (*note Misc File
- Ops::.) but examines an already existing Emacs buffer. View mode
- provides commands for scrolling through the buffer conveniently but not
- for changing it. When you exit View mode, the resulting value of point
- remains in effect.
-
- To copy text from one buffer to another, use the commands `C-x a'
- (`append-to-buffer') and `M-x insert-buffer'. *Note Accumulating
- Text::.
-
- File: emacs, Node: Kill Buffer, Next: Several Buffers, Prev: Misc Buffer, Up: Buffers
-
- Killing Buffers
- ===============
-
- After using Emacs for a while, you may accumulate a large number of
- buffers, and may want to eliminate the ones you no longer need. There
- are several commands for doing this.
-
- `C-x k'
- Kill a buffer, specified by name (`kill-buffer').
-
- `M-x kill-some-buffers'
- Offer to kill each buffer, one by one.
-
- `C-x k' (`kill-buffer') kills one buffer, whose name you specify in
- the minibuffer. If you type just RET in the minibuffer, the default,
- killing the current buffer, is used. If the current buffer is killed,
- the buffer that has been selected recently but does not appear in any
- window now is selected. If the buffer being killed contains unsaved
- changes you are asked to confirm with `yes' before the buffer is
- killed.
-
- The command `M-x kill-some-buffers' asks about each buffer, one by
- one. An answer of `y' means to kill the buffer. Killing the current
- buffer or a buffer containing unsaved changes selects a new buffer or
- asks for confirmation just like `kill-buffer'.
-