Avoid aborts in cm.c due to too small TTY frame
[emacs.git] / doc / emacs / files.texi
blob45db6d88b4c214e7b8d5cdbec138b79c2f69c97d
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software
3 @c Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Files
6 @chapter File Handling
7 @cindex files
9   The operating system stores data permanently in named @dfn{files}, so
10 most of the text you edit with Emacs comes from a file and is ultimately
11 stored in a file.
13   To edit a file, you must tell Emacs to read the file and prepare a
14 buffer containing a copy of the file's text.  This is called
15 @dfn{visiting} the file.  Editing commands apply directly to text in the
16 buffer; that is, to the copy inside Emacs.  Your changes appear in the
17 file itself only when you @dfn{save} the buffer back into the file.
19   In addition to visiting and saving files, Emacs can delete, copy,
20 rename, and append to files, keep multiple versions of them, and operate
21 on file directories.
23 @menu
24 * File Names::          How to type and edit file-name arguments.
25 * Visiting::            Visiting a file prepares Emacs to edit the file.
26 * Saving::              Saving makes your changes permanent.
27 * Reverting::           Reverting cancels all the changes not saved.
28 @ifnottex
29 * Autorevert::          Auto Reverting non-file buffers.
30 @end ifnottex
31 * Auto Save::           Auto Save periodically protects against loss of data.
32 * File Aliases::        Handling multiple names for one file.
33 * Directories::         Creating, deleting, and listing file directories.
34 * Comparing Files::     Finding where two files differ.
35 * Diff Mode::           Mode for editing file differences.
36 * Copying and Naming::  Copying, naming and renaming files.
37 * Misc File Ops::       Other things you can do on files.
38 * Compressed Files::    Accessing compressed files.
39 * File Archives::       Operating on tar, zip, jar etc. archive files.
40 * Remote Files::        Accessing files on other machines.
41 * Quoted File Names::   Quoting special characters in file names.
42 * File Name Cache::     Completion against a list of files you often use.
43 * File Conveniences::   Convenience Features for Finding Files.
44 * Filesets::            Handling sets of files.
45 @end menu
47 @node File Names
48 @section File Names
49 @cindex file names
51 @cindex default file name
52   Many Emacs commands that operate on a file require you to specify
53 the file name, using the minibuffer (@pxref{Minibuffer File}).
55   While in the minibuffer, you can use the usual completion and
56 history commands (@pxref{Minibuffer}).  Note that file name completion
57 ignores file names whose extensions appear in the variable
58 @code{completion-ignored-extensions} (@pxref{Completion Options}).
59 Note also that most commands use permissive completion with
60 confirmation for reading file names: you are allowed to submit a
61 nonexistent file name, but if you type @key{RET} immediately after
62 completing up to a nonexistent file name, Emacs prints
63 @samp{[Confirm]} and you must type a second @key{RET} to confirm.
64 @xref{Completion Exit}, for details.
66 Minibuffer history commands offer some special features for reading
67 file names, see @ref{Minibuffer History}.
69 @cindex default directory, of a buffer
70 @vindex default-directory
71   Each buffer has a @dfn{default directory}, stored in the
72 buffer-local variable @code{default-directory}.  Whenever Emacs reads
73 a file name using the minibuffer, it usually inserts the default
74 directory into the minibuffer as the initial contents.  You can
75 inhibit this insertion by changing the variable
76 @code{insert-default-directory} to @code{nil} (@pxref{Minibuffer
77 File}).  Regardless, Emacs always assumes that any relative file name
78 is relative to the default directory, e.g., entering a file name
79 without a directory specifies a file in the default directory.
81 @findex cd
82 @findex pwd
83   When you visit a file, Emacs sets @code{default-directory} in the
84 visiting buffer to the directory of its file.  When you create a new
85 buffer that is not visiting a file, via a command like @kbd{C-x b},
86 its default directory is usually copied from the buffer that was
87 current at the time (@pxref{Select Buffer}).  You can use the command
88 @kbd{M-x pwd} to see the value of @code{default-directory} in the
89 current buffer.  The command @kbd{M-x cd} prompts for a directory's
90 name, and sets the buffer's @code{default-directory} to that directory
91 (doing this does not change the buffer's file name, if any).
93   As an example, when you visit the file @file{/u/rms/gnu/gnu.tasks},
94 the default directory is set to @file{/u/rms/gnu/}.  If you invoke a
95 command that reads a file name, entering just @samp{foo} in the
96 minibuffer, with a directory omitted, specifies the file
97 @file{/u/rms/gnu/foo}; entering @samp{../.login} specifies
98 @file{/u/rms/.login}; and entering @samp{new/foo} specifies
99 @file{/u/rms/gnu/new/foo}.
101   When typing a file name into the minibuffer, you can make use of a
102 couple of shortcuts: a double slash ignores everything before the
103 second slash in the pair, and @samp{~/} is your home directory.
104 @xref{Minibuffer File}.
106 @cindex environment variables in file names
107 @cindex expansion of environment variables
108 @cindex @code{$} in file names
109   @anchor{File Names with $}The character @samp{$} is used to
110 substitute an environment variable into a file name.  The name of the
111 environment variable consists of all the alphanumeric characters after
112 the @samp{$}; alternatively, it can be enclosed in braces after the
113 @samp{$}.  For example, if you have used the shell command
114 @command{export FOO=rms/hacks} to set up an environment variable named
115 @env{FOO}, then both @file{/u/$FOO/test.c} and
116 @file{/u/$@{FOO@}/test.c} are abbreviations for
117 @file{/u/rms/hacks/test.c}.  If the environment variable is not
118 defined, no substitution occurs, so that the character @samp{$} stands
119 for itself.  Note that environment variables set outside Emacs affect
120 Emacs only if they are applied before Emacs is started.
122   To access a file with @samp{$} in its name, if the @samp{$} causes
123 expansion, type @samp{$$}.  This pair is converted to a single
124 @samp{$} at the same time that variable substitution is performed for
125 a single @samp{$}.  Alternatively, quote the whole file name with
126 @samp{/:} (@pxref{Quoted File Names}).  File names which begin with a
127 literal @samp{~} should also be quoted with @samp{/:}.
129   You can include non-@acronym{ASCII} characters in file names.
130 @xref{File Name Coding}.
132 @node Visiting
133 @section Visiting Files
134 @cindex visiting files
135 @cindex open file
137 @table @kbd
138 @item C-x C-f
139 Visit a file (@code{find-file}).
140 @item C-x C-r
141 Visit a file for viewing, without allowing changes to it
142 (@code{find-file-read-only}).
143 @item C-x C-v
144 Visit a different file instead of the one visited last
145 (@code{find-alternate-file}).
146 @item C-x 4 f
147 Visit a file, in another window (@code{find-file-other-window}).  Don't
148 alter what is displayed in the selected window.
149 @item C-x 5 f
150 Visit a file, in a new frame (@code{find-file-other-frame}).  Don't
151 alter what is displayed in the selected frame.
152 @item M-x find-file-literally
153 Visit a file with no conversion of the contents.
154 @end table
156 @cindex files, visiting and saving
157 @cindex saving files
158   @dfn{Visiting} a file means reading its contents into an Emacs
159 buffer so you can edit them.  Emacs makes a new buffer for each file
160 that you visit.
162 @kindex C-x C-f
163 @findex find-file
164   To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the
165 minibuffer to enter the name of the desired file.  While in the
166 minibuffer, you can abort the command by typing @kbd{C-g}.  @xref{File
167 Names}, for details about entering file names into minibuffers.
169   If the specified file exists but the system does not allow you to
170 read it, an error message is displayed in the echo area (on GNU and
171 Unix systems you might be able to visit such a file using the
172 @samp{su} or @samp{sudo} methods; @pxref{Remote Files}).  Otherwise,
173 you can tell that @kbd{C-x C-f} has completed successfully by the
174 appearance of new text on the screen, and by the buffer name shown in
175 the mode line (@pxref{Mode Line}).  Emacs normally constructs the
176 buffer name from the file name, omitting the directory name.  For
177 example, a file named @file{/usr/rms/emacs.tex} is visited in a buffer
178 named @samp{emacs.tex}.  If there is already a buffer with that name,
179 Emacs constructs a unique name; the normal method is to add a suffix
180 based on the directory name (e.g., @samp{<rms>}, @samp{<tmp>},
181 and so on), but you can select other methods.  @xref{Uniquify}.
183 @cindex creating files
184   To create a new file, just visit it using the same command, @kbd{C-x
185 C-f}.  Emacs displays @samp{(New file)} in the echo area, but in other
186 respects behaves as if you had visited an existing empty file.
188 @cindex modified (buffer)
189   After visiting a file, the changes you make with editing commands are
190 made in the Emacs buffer.  They do not take effect in the visited
191 file, until you @dfn{save} the buffer (@pxref{Saving}).  If a buffer
192 contains changes that have not been saved, we say the buffer is
193 @dfn{modified}.  This implies that some changes will be lost if the
194 buffer is not saved.  The mode line displays two stars near the left
195 margin to indicate that the buffer is modified.
197   If you visit a file that is already in Emacs, @kbd{C-x C-f} switches
198 to the existing buffer instead of making another copy.  Before doing
199 so, it checks whether the file has changed since you last visited or
200 saved it.  If the file has changed, Emacs offers to reread it.
202 @vindex large-file-warning-threshold
203 @cindex file, warning when size is large
204 @cindex size of file, warning when visiting
205 @cindex maximum buffer size exceeded, error message
206   If you try to visit a file larger than
207 @code{large-file-warning-threshold} (the default is 10000000, which is
208 about 10 megabytes), Emacs asks you for confirmation first.  You can
209 answer @kbd{y} to proceed with visiting the file.  Note, however, that
210 Emacs cannot visit files that are larger than the maximum Emacs buffer
211 size, which is limited by the amount of memory Emacs can allocate and
212 by the integers that Emacs can represent (@pxref{Buffers}).  If you
213 try, Emacs displays an error message saying that the maximum buffer
214 size has been exceeded.
216 @cindex wildcard characters in file names
217 @vindex find-file-wildcards
218   If the file name you specify contains shell-style wildcard
219 characters, Emacs visits all the files that match it.  (On
220 case-insensitive filesystems, Emacs matches the wildcards disregarding
221 the letter case.)  Wildcards include @samp{?}, @samp{*}, and
222 @samp{[@dots{}]} sequences.  To enter the wild card @samp{?} in a file
223 name in the minibuffer, you need to type @kbd{C-q ?}.  @xref{Quoted
224 File Names}, for information on how to visit a file whose name
225 actually contains wildcard characters.  You can disable the wildcard
226 feature by customizing @code{find-file-wildcards}.
228 @kindex C-x C-v
229 @findex find-alternate-file
230   If you visit the wrong file unintentionally by typing its name
231 incorrectly, type @kbd{C-x C-v} (@code{find-alternate-file}) to visit
232 the file you really wanted.  @kbd{C-x C-v} is similar to @kbd{C-x
233 C-f}, but it kills the current buffer (after first offering to save it
234 if it is modified).  When @kbd{C-x C-v} reads the file name to visit,
235 it inserts the entire default file name in the buffer, with point just
236 after the directory part; this is convenient if you made a slight
237 error in typing the name.
239 @vindex find-file-run-dired
240   If you visit a file that is actually a directory, Emacs invokes
241 Dired, the Emacs directory browser.  @xref{Dired}.  You can disable
242 this behavior by setting the variable @code{find-file-run-dired} to
243 @code{nil}; in that case, it is an error to try to visit a directory.
245   Files which are actually collections of other files, or @dfn{file
246 archives}, are visited in special modes which invoke a Dired-like
247 environment to allow operations on archive members.  @xref{File
248 Archives}, for more about these features.
250   If you visit a file that the operating system won't let you modify,
251 or that is marked read-only, Emacs makes the buffer read-only too, so
252 that you won't go ahead and make changes that you'll have trouble
253 saving afterward.  You can make the buffer writable with @kbd{C-x C-q}
254 (@code{read-only-mode}).  @xref{Misc Buffer}.
256 @kindex C-x C-r
257 @findex find-file-read-only
258   If you want to visit a file as read-only in order to protect
259 yourself from entering changes accidentally, visit it with the command
260 @kbd{C-x C-r} (@code{find-file-read-only}) instead of @kbd{C-x C-f}.
262 @kindex C-x 4 f
263 @findex find-file-other-window
264   @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
265 except that the buffer containing the specified file is selected in another
266 window.  The window that was selected before @kbd{C-x 4 f} continues to
267 show the same buffer it was already showing.  If this command is used when
268 only one window is being displayed, that window is split in two, with one
269 window showing the same buffer as before, and the other one showing the
270 newly requested file.  @xref{Windows}.
272 @kindex C-x 5 f
273 @findex find-file-other-frame
274   @kbd{C-x 5 f} (@code{find-file-other-frame}) is similar, but opens a
275 new frame, or selects any existing frame showing the specified file.
276 @xref{Frames}.
278 @cindex file selection dialog
279   On graphical displays, there are two additional methods for visiting
280 files.  Firstly, when Emacs is built with a suitable GUI toolkit,
281 commands invoked with the mouse (by clicking on the menu bar or tool
282 bar) use the toolkit's standard file selection dialog instead of
283 prompting for the file name in the minibuffer.  On GNU/Linux and Unix
284 platforms, Emacs does this when built with GTK, LessTif, and Motif
285 toolkits; on MS-Windows and Mac, the GUI version does that by default.
286 For information on how to customize this, see @ref{Dialog Boxes}.
288   Secondly, Emacs supports drag and drop: dropping a file into an
289 ordinary Emacs window visits the file using that window.  As an
290 exception, dropping a file into a window displaying a Dired buffer
291 moves or copies the file into the displayed directory.  For details,
292 see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
294   On text-mode terminals and on graphical displays when Emacs was
295 built without a GUI toolkit, you can visit files via the menu-bar
296 @samp{File} menu, which has the @samp{Visit New File} and the
297 @samp{Open File} items.
299   Each time you visit a file, Emacs automatically scans its contents
300 to detect what character encoding and end-of-line convention it uses,
301 and converts these to Emacs's internal encoding and end-of-line
302 convention within the buffer.  When you save the buffer, Emacs
303 performs the inverse conversion, writing the file to disk with its
304 original encoding and end-of-line convention.  @xref{Coding Systems}.
306 @findex find-file-literally
307   If you wish to edit a file as a sequence of @acronym{ASCII}
308 characters with no special encoding or conversion, use the @kbd{M-x
309 find-file-literally} command.  This visits a file, like @kbd{C-x C-f},
310 but does not do format conversion (@pxref{Format Conversion,, Format
311 Conversion, elisp, the Emacs Lisp Reference Manual}), character code
312 conversion (@pxref{Coding Systems}), or automatic uncompression
313 (@pxref{Compressed Files}), and does not add a final newline because
314 of @code{require-final-newline} (@pxref{Customize Save}).  If you have
315 already visited the same file in the usual (non-literal) manner, this
316 command asks you whether to visit it literally instead.
318 @vindex find-file-hook
319 @vindex find-file-not-found-functions
320   Two special hook variables allow extensions to modify the operation
321 of visiting files.  Visiting a file that does not exist runs the
322 functions in @code{find-file-not-found-functions}; this variable holds
323 a list of functions, which are called one by one (with no arguments)
324 until one of them returns non-@code{nil}.  This is not a normal hook,
325 and the name ends in @samp{-functions} rather than @samp{-hook} to
326 indicate that fact.
328   Successful visiting of any file, whether existing or not, calls the
329 functions in @code{find-file-hook}, with no arguments.  This variable
330 is a normal hook.  In the case of a nonexistent file, the
331 @code{find-file-not-found-functions} are run first.  @xref{Hooks}.
333   There are several ways to specify automatically the major mode for
334 editing the file (@pxref{Choosing Modes}), and to specify local
335 variables defined for that file (@pxref{File Variables}).
337 @node Saving
338 @section Saving Files
340   @dfn{Saving} a buffer in Emacs means writing its contents back into the file
341 that was visited in the buffer.
343 @menu
344 * Save Commands::       Commands for saving files.
345 * Backup::              How Emacs saves the old version of your file.
346 * Customize Save::      Customizing the saving of files.
347 * Interlocking::        How Emacs protects against simultaneous editing
348                           of one file by two users.
349 * Shadowing: File Shadowing.  Copying files to ``shadows'' automatically.
350 * Time Stamps::         Emacs can update time stamps on saved files.
351 @end menu
353 @node Save Commands
354 @subsection Commands for Saving Files
356   These are the commands that relate to saving and writing files.
358 @table @kbd
359 @item C-x C-s
360 Save the current buffer to its file (@code{save-buffer}).
361 @item C-x s
362 Save any or all buffers to their files (@code{save-some-buffers}).
363 @item M-~
364 Forget that the current buffer has been changed (@code{not-modified}).
365 With prefix argument (@kbd{C-u}), mark the current buffer as changed.
366 @item C-x C-w
367 Save the current buffer with a specified file name (@code{write-file}).
368 @item M-x set-visited-file-name
369 Change the file name under which the current buffer will be saved.
370 @end table
372 @kindex C-x C-s
373 @findex save-buffer
374   When you wish to save the file and make your changes permanent, type
375 @kbd{C-x C-s} (@code{save-buffer}).  After saving is finished, @kbd{C-x C-s}
376 displays a message like this:
378 @example
379 Wrote /u/rms/gnu/gnu.tasks
380 @end example
382 @noindent
383 If the current buffer is not modified (no changes have been made in it
384 since the buffer was created or last saved), saving is not really
385 done, because it would have no effect.  Instead, @kbd{C-x C-s}
386 displays a message like this in the echo area:
388 @example
389 (No changes need to be saved)
390 @end example
392 With a prefix argument, @kbd{C-u C-x C-s}, Emacs also marks the buffer
393 to be backed up when the next save is done.  @xref{Backup}.
395 @kindex C-x s
396 @findex save-some-buffers
397   The command @kbd{C-x s} (@code{save-some-buffers}) offers to save any
398 or all modified buffers.  It asks you what to do with each buffer.  The
399 possible responses are analogous to those of @code{query-replace}:
401 @table @kbd
402 @item y
403 Save this buffer and ask about the rest of the buffers.
404 @item n
405 Don't save this buffer, but ask about the rest of the buffers.
406 @item !
407 Save this buffer and all the rest with no more questions.
408 @c following generates acceptable underfull hbox
409 @item @key{RET}
410 Terminate @code{save-some-buffers} without any more saving.
411 @item .
412 Save this buffer, then exit @code{save-some-buffers} without even asking
413 about other buffers.
414 @item C-r
415 View the buffer that you are currently being asked about.  When you exit
416 View mode, you get back to @code{save-some-buffers}, which asks the
417 question again.
418 @item d
419 Diff the buffer against its corresponding file, so you can see what
420 changes you would be saving.  This calls the command
421 @code{diff-buffer-with-file} (@pxref{Comparing Files}).
422 @item C-h
423 Display a help message about these options.
424 @end table
426 @noindent
427 @vindex save-some-buffers-default-predicate
428 You can customize the value of
429 @code{save-some-buffers-default-predicate} to control which buffers
430 Emacs will ask about.
432   @kbd{C-x C-c}, the key sequence to exit Emacs, invokes
433 @code{save-some-buffers} and therefore asks the same questions.
435 @kindex M-~
436 @findex not-modified
437   If you have changed a buffer but do not wish to save the changes,
438 you should take some action to prevent it.  Otherwise, each time you
439 use @kbd{C-x s} or @kbd{C-x C-c}, you are liable to save this buffer
440 by mistake.  One thing you can do is type @kbd{M-~}
441 (@code{not-modified}), which clears out the indication that the buffer
442 is modified.  If you do this, none of the save commands will believe
443 that the buffer needs to be saved.  (@samp{~} is often used as a
444 mathematical symbol for ``not''; thus @kbd{M-~} is ``not'', metafied.)
445 Alternatively, you can cancel all the changes made since the file was
446 visited or saved, by reading the text from the file again.  This is
447 called @dfn{reverting}.  @xref{Reverting}.  (You could also undo all
448 the changes by repeating the undo command @kbd{C-x u} until you have
449 undone all the changes; but reverting is easier.)
451 @findex set-visited-file-name
452   @kbd{M-x set-visited-file-name} alters the name of the file that the
453 current buffer is visiting.  It reads the new file name using the
454 minibuffer.  Then it marks the buffer as visiting that file name, and
455 changes the buffer name correspondingly.  @code{set-visited-file-name}
456 does not save the buffer in the newly visited file; it just alters the
457 records inside Emacs in case you do save later.  It also marks the
458 buffer as modified so that @kbd{C-x C-s} in that buffer
459 @emph{will} save.
461 @kindex C-x C-w
462 @findex write-file
463   If you wish to mark the buffer as visiting a different file and save
464 it right away, use @kbd{C-x C-w} (@code{write-file}).  This is
465 equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s},
466 except that @kbd{C-x C-w} asks for confirmation if the file exists.
467 @kbd{C-x C-s} used on a buffer that is not visiting a file has the
468 same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
469 buffer as visiting that file, and saves it there.  The default file
470 name in a buffer that is not visiting a file is made by combining the
471 buffer name with the buffer's default directory (@pxref{File Names}).
473   If the new file name implies a major mode, then @kbd{C-x C-w} switches
474 to that major mode, in most cases.  The command
475 @code{set-visited-file-name} also does this.  @xref{Choosing Modes}.
477   If Emacs is about to save a file and sees that the date of the latest
478 version on disk does not match what Emacs last read or wrote, Emacs
479 notifies you of this fact, because it probably indicates a problem caused
480 by simultaneous editing and requires your immediate attention.
481 @xref{Interlocking,, Simultaneous Editing}.
483 @node Backup
484 @subsection Backup Files
485 @cindex backup file
486 @vindex make-backup-files
488   On most operating systems, rewriting a file automatically destroys all
489 record of what the file used to contain.  Thus, saving a file from Emacs
490 throws away the old contents of the file---or it would, except that
491 Emacs carefully copies the old contents to another file, called the
492 @dfn{backup} file, before actually saving.
494   Emacs makes a backup for a file only the first time the file is
495 saved from a buffer.  No matter how many times you subsequently save
496 the file, its backup remains unchanged.  However, if you kill the
497 buffer and then visit the file again, a new backup file will be made.
499   For most files, the variable @code{make-backup-files} determines
500 whether to make backup files.  On most operating systems, its default
501 value is @code{t}, so that Emacs does write backup files.
503   For files managed by a version control system (@pxref{Version
504 Control}), the variable @code{vc-make-backup-files} determines whether
505 to make backup files.  By default it is @code{nil}, since backup files
506 are redundant when you store all the previous versions in a version
507 control system.
508 @iftex
509 @xref{General VC Options,,,emacs-xtra, Specialized Emacs Features}.
510 @end iftex
511 @ifnottex
512 @xref{General VC Options}.
513 @end ifnottex
515   At your option, Emacs can keep either a single backup for each file,
516 or make a series of numbered backup files for each file that you edit.
517 @xref{Backup Names}.
519 @vindex backup-enable-predicate
520 @vindex temporary-file-directory
521 @vindex small-temporary-file-directory
522   The default value of the @code{backup-enable-predicate} variable
523 prevents backup files being written for files in the directories used
524 for temporary files, specified by @code{temporary-file-directory} or
525 @code{small-temporary-file-directory}.
527   You can explicitly tell Emacs to make another backup file from a
528 buffer, even though that buffer has been saved before.  If you save
529 the buffer with @kbd{C-u C-x C-s}, the version thus saved will be made
530 into a backup file if you save the buffer again.  @kbd{C-u C-u C-x
531 C-s} saves the buffer, but first makes the previous file contents into
532 a new backup file.  @kbd{C-u C-u C-u C-x C-s} does both things: it
533 makes a backup from the previous contents, and arranges to make
534 another from the newly saved contents if you save again.
536 @vindex backup-directory-alist
537   You can customize the variable @code{backup-directory-alist} to
538 specify that files matching certain patterns should be backed up in
539 specific directories.  A typical use is to add an element @code{("."
540 . @var{dir})} to make all backups in the directory with absolute name
541 @var{dir}.  Emacs modifies the backup file names to avoid clashes
542 between files with the same names originating in different
543 directories.  Alternatively, adding, @code{("." . ".~")} would make
544 backups in the invisible subdirectory @file{.~} of the original file's
545 directory.  Emacs creates the directory, if necessary, to make the
546 backup.
548 @menu
549 * Names: Backup Names.          How backup files are named.
550 * Deletion: Backup Deletion.    Emacs deletes excess numbered backups.
551 * Copying: Backup Copying.      Backups can be made by copying or renaming.
552 @end menu
554 @node Backup Names
555 @subsubsection Single or Numbered Backups
556 @cindex backup file names
557 @cindex names of backup files
559 @cindex @file{~}, in names of backup files
560 @cindex tilde (@file{~}) at end of backup file name
561   When Emacs makes a backup file, its name is normally constructed by
562 appending @samp{~} to the file name being edited; thus, the backup
563 file for @file{eval.c} would be @file{eval.c~}.
565 @cindex @file{~/.emacs.d/%backup%~}
566   If access control stops Emacs from writing backup files under the
567 usual names, it writes the backup file as @file{~/.emacs.d/%backup%~}.
568 Only one such file can exist, so only the most recently made such
569 backup is available.
571   Emacs can also make @dfn{numbered backup files}.  Numbered backup
572 file names contain @samp{.~}, the number, and another @samp{~} after
573 the original file name.  Thus, the backup files of @file{eval.c} would
574 be called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, all the way
575 through names like @file{eval.c.~259~} and beyond.
577 @vindex version-control
578   The variable @code{version-control} determines whether to make
579 single backup files or multiple numbered backup files.  Its possible
580 values are:
582 @table @code
583 @item nil
584 Make numbered backups for files that have numbered backups already.
585 Otherwise, make single backups.  This is the default.
586 @item t
587 Make numbered backups.
588 @item never
589 Never make numbered backups; always make single backups.
590 @end table
592 @noindent
593 The usual way to set this variable is globally, through your init file
594 or the customization buffer.  However, you can set
595 @code{version-control} locally in an individual buffer to control the
596 making of backups for that buffer's file (@pxref{Locals}).  You can
597 have Emacs set @code{version-control} locally whenever you visit a
598 given file (@pxref{File Variables}).  Some modes, such as Rmail mode,
599 set this variable.
601 @cindex @env{VERSION_CONTROL} environment variable
602   If you set the environment variable @env{VERSION_CONTROL}, to tell
603 various GNU utilities what to do with backup files, Emacs also obeys the
604 environment variable by setting the Lisp variable @code{version-control}
605 accordingly at startup.  If the environment variable's value is @samp{t}
606 or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
607 value is @samp{nil} or @samp{existing}, then @code{version-control}
608 becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
609 @code{version-control} becomes @code{never}.
611 @vindex make-backup-file-name-function
612   If you set the variable @code{make-backup-file-name-function} to
613 a suitable Lisp function, you can override the usual way Emacs
614 constructs backup file names.
616 @node Backup Deletion
617 @subsubsection Automatic Deletion of Backups
619   To prevent excessive consumption of disk space, Emacs can delete numbered
620 backup versions automatically.  Generally Emacs keeps the first few backups
621 and the latest few backups, deleting any in between.  This happens every
622 time a new backup is made.
624 @vindex kept-old-versions
625 @vindex kept-new-versions
626   The two variables @code{kept-old-versions} and
627 @code{kept-new-versions} control this deletion.  Their values are,
628 respectively, the number of oldest (lowest-numbered) backups to keep
629 and the number of newest (highest-numbered) ones to keep, each time a
630 new backup is made.  The backups in the middle (excluding those oldest
631 and newest) are the excess middle versions---those backups are
632 deleted.  These variables' values are used when it is time to delete
633 excess versions, just after a new backup version is made; the newly
634 made backup is included in the count in @code{kept-new-versions}.  By
635 default, both variables are 2.
637 @vindex delete-old-versions
638   If @code{delete-old-versions} is @code{t}, Emacs deletes the excess
639 backup files silently.  If it is @code{nil}, the default, Emacs asks
640 you whether it should delete the excess backup versions.  If it has
641 any other value, then Emacs never automatically deletes backups.
643   Dired's @kbd{.} (Period) command can also be used to delete old versions.
644 @xref{Flagging Many Files}.
646 @node Backup Copying
647 @subsubsection Copying vs.@: Renaming
649   Backup files can be made by copying the old file or by renaming it.
650 This makes a difference when the old file has multiple names (hard
651 links).  If the old file is renamed into the backup file, then the
652 alternate names become names for the backup file.  If the old file is
653 copied instead, then the alternate names remain names for the file
654 that you are editing, and the contents accessed by those names will be
655 the new contents.
657   The method of making a backup file may also affect the file's owner
658 and group.  If copying is used, these do not change.  If renaming is used,
659 you become the file's owner, and the file's group becomes the default
660 (different operating systems have different defaults for the group).
662 @vindex backup-by-copying
663 @vindex backup-by-copying-when-linked
664 @vindex backup-by-copying-when-mismatch
665 @vindex backup-by-copying-when-privileged-mismatch
666 @cindex file ownership, and backup
667 @cindex backup, and user-id
668   The choice of renaming or copying is made as follows:
670 @itemize
671 @item
672 If the variable @code{backup-by-copying} is non-@code{nil} (the
673 default is @code{nil}), use copying.
675 @item
676 Otherwise, if the variable @code{backup-by-copying-when-linked} is
677 non-@code{nil} (the default is @code{nil}), and the file has multiple
678 names, use copying.
680 @item
681 Otherwise, if the variable @code{backup-by-copying-when-mismatch} is
682 non-@code{nil} (the default is @code{t}), and renaming would change
683 the file's owner or group, use copying.
685 If you change @code{backup-by-copying-when-mismatch} to @code{nil},
686 Emacs checks the numeric user-id of the file's owner.  If this is
687 higher than @code{backup-by-copying-when-privileged-mismatch}, then it
688 behaves as though @code{backup-by-copying-when-mismatch} is
689 non-@code{nil} anyway.
691 @item
692 Otherwise, renaming is the default choice.
693 @end itemize
695   When a file is managed with a version control system (@pxref{Version
696 Control}), Emacs does not normally make backups in the usual way for
697 that file.  But check-in and check-out are similar in some ways to
698 making backups.  One unfortunate similarity is that these operations
699 typically break hard links, disconnecting the file name you visited from
700 any alternate names for the same file.  This has nothing to do with
701 Emacs---the version control system does it.
703 @node Customize Save
704 @subsection Customizing Saving of Files
706 @vindex require-final-newline
707   If the value of the variable @code{require-final-newline} is
708 @code{t}, saving or writing a file silently puts a newline at the end
709 if there isn't already one there.  If the value is @code{visit}, Emacs
710 adds a newline at the end of any file that doesn't have one, just
711 after it visits the file.  (This marks the buffer as modified, and you
712 can undo it.)  If the value is @code{visit-save}, Emacs adds such
713 newlines both on visiting and on saving.  If the value is @code{nil},
714 Emacs leaves the end of the file unchanged; any other non-@code{nil}
715 value means Emacs asks you whether to add a newline.  The default is
716 @code{nil}.
718 @vindex mode-require-final-newline
719   Some major modes are designed for specific kinds of files that are
720 always supposed to end in newlines.  Such major modes set the variable
721 @code{require-final-newline} to the value of
722 @code{mode-require-final-newline}, which defaults to @code{t}.  By
723 setting the latter variable, you can control how these modes handle
724 final newlines.
726 @vindex write-region-inhibit-fsync
727   Normally, when a program writes a file, the operating system briefly
728 caches the file's data in main memory before committing the data to
729 disk.  This can greatly improve performance; for example, when running
730 on laptops, it can avoid a disk spin-up each time a file is written.
731 However, it risks data loss if the operating system crashes before
732 committing the cache to disk.
734   To lessen this risk, Emacs can invoke the @code{fsync} system call
735 after saving a file.  Using @code{fsync} does not eliminate the risk
736 of data loss, partly because many systems do not implement
737 @code{fsync} properly, and partly because Emacs's file-saving
738 procedure typically relies also on directory updates that might not
739 survive a crash even if @code{fsync} works properly.
741   The @code{write-region-inhibit-fsync} variable controls whether
742 Emacs invokes @code{fsync} after saving a file.  The variable's
743 default value is @code{nil} when Emacs is interactive, and @code{t}
744 when Emacs runs in batch mode (@pxref{Initial Options, Batch Mode}).
746   Emacs never uses @code{fsync} when writing auto-save files, as these
747 files might lose data anyway.
749 @node Interlocking
750 @subsection Protection against Simultaneous Editing
752 @cindex file dates
753 @cindex simultaneous editing
754   Simultaneous editing occurs when two users visit the same file, both
755 make changes, and then both save them.  If nobody is informed that
756 this is happening, whichever user saves first would later find that
757 their changes were lost.
759   On some systems, Emacs notices immediately when the second user starts
760 to change the file, and issues an immediate warning.  On all systems,
761 Emacs checks when you save the file, and warns if you are about to
762 overwrite another user's changes.  You can prevent loss of the other
763 user's work by taking the proper corrective action instead of saving the
764 file.
766 @findex ask-user-about-lock
767 @cindex locking files
768   When you make the first modification in an Emacs buffer that is
769 visiting a file, Emacs records that the file is @dfn{locked} by you.
770 (It does this by creating a specially-named symbolic link@footnote{If
771 your file system does not support symbolic links, a regular file is
772 used.} with special contents in the same directory.)  Emacs removes the lock
773 when you save the changes.  The idea is that the file is locked
774 whenever an Emacs buffer visiting it has unsaved changes.
776 @vindex create-lockfiles
777   You can prevent the creation of lock files by setting the variable
778 @code{create-lockfiles} to @code{nil}.  @strong{Caution:} by
779 doing so you will lose the benefits that this feature provides.
781 @cindex collision
782   If you begin to modify the buffer while the visited file is locked by
783 someone else, this constitutes a @dfn{collision}.  When Emacs detects a
784 collision, it asks you what to do, by calling the Lisp function
785 @code{ask-user-about-lock}.  You can redefine this function for the sake
786 of customization.  The standard definition of this function asks you a
787 question and accepts three possible answers:
789 @table @kbd
790 @item s
791 Steal the lock.  Whoever was already changing the file loses the lock,
792 and you gain the lock.
793 @item p
794 Proceed.  Go ahead and edit the file despite its being locked by someone else.
795 @item q
796 Quit.  This causes an error (@code{file-locked}), and the buffer
797 contents remain unchanged---the modification you were trying to make
798 does not actually take place.
799 @end table
801   If Emacs or the operating system crashes, this may leave behind lock
802 files which are stale, so you may occasionally get warnings about
803 spurious collisions.  When you determine that the collision is
804 spurious, just use @kbd{p} to tell Emacs to go ahead anyway.
806   Note that locking works on the basis of a file name; if a file has
807 multiple names, Emacs does not prevent two users from editing it
808 simultaneously under different names.
810   A lock file cannot be written in some circumstances, e.g., if Emacs
811 lacks the system permissions or cannot create lock files for some
812 other reason.  In these cases, Emacs can still detect the collision
813 when you try to save a file, by checking the file's last-modification
814 date.  If the file has changed since the last time Emacs visited or
815 saved it, that implies that changes have been made in some other way,
816 and will be lost if Emacs proceeds with saving.  Emacs then displays a
817 warning message and asks for confirmation before saving; answer
818 @kbd{yes} to save, and @kbd{no} or @kbd{C-g} cancel the save.
820   If you are notified that simultaneous editing has already taken
821 place, one way to compare the buffer to its file is the @kbd{M-x
822 diff-buffer-with-file} command.  @xref{Comparing Files}.
824 @node File Shadowing
825 @subsection Shadowing Files
826 @cindex shadow files
827 @cindex file shadows
828 @findex shadow-initialize
830   You can arrange to keep identical @dfn{shadow} copies of certain
831 files in more than one place---possibly on different machines.  To do
832 this, first you must set up a @dfn{shadow file group}, which is a set
833 of identically-named files shared between a list of sites.  The file
834 group is permanent and applies to further Emacs sessions as well as
835 the current one.  Once the group is set up, every time you exit Emacs,
836 it will copy the file you edited to the other files in its group.  You
837 can also do the copying without exiting Emacs, by typing @w{@kbd{M-x
838 shadow-copy-files}}.
840 @cindex shadow cluster
841 A @dfn{shadow cluster} is a group of hosts that share directories, so
842 that copying to or from one of them is sufficient to update the file
843 on all of them.  Each shadow cluster has a name, and specifies the
844 network address of a primary host (the one we copy files to), and a
845 regular expression that matches the host names of all the other hosts
846 in the cluster.  You can define a shadow cluster with @w{@kbd{M-x
847 shadow-define-cluster}}.
849 @table @kbd
850 @item M-x shadow-initialize
851 Set up file shadowing.
852 @item M-x shadow-define-literal-group
853 Declare a single file to be shared between sites.
854 @item M-x shadow-define-regexp-group
855 Make all files that match each of a group of files be shared between hosts.
856 @item M-x shadow-define-cluster @key{RET} @var{name} @key{RET}
857 Define a shadow file cluster @var{name}.
858 @item M-x shadow-copy-files
859 Copy all pending shadow files.
860 @item M-x shadow-cancel
861 Cancel the instruction to shadow some files.
862 @end table
864 To set up a shadow file group, use @w{@kbd{M-x
865 shadow-define-literal-group}} or @w{@kbd{M-x
866 shadow-define-regexp-group}}.  See their documentation strings for
867 further information.
869 Before copying a file to its shadows, Emacs asks for confirmation.
870 You can answer ``no'' to bypass copying of this file, this time.  If
871 you want to cancel the shadowing permanently for a certain file, use
872 @w{@kbd{M-x shadow-cancel}} to eliminate or change the shadow file group.
874 @node Time Stamps
875 @subsection Updating Time Stamps Automatically
876 @cindex time stamps
877 @cindex modification dates
878 @cindex locale, date format
880 You can arrange to put a time stamp in a file, so that it is updated
881 automatically each time you edit and save the file.  The time stamp
882 must be in the first eight lines of the file, and you should insert it
883 like this:
885 @example
886 Time-stamp: <>
887 @end example
889 @noindent
890 or like this:
892 @example
893 Time-stamp: " "
894 @end example
896 @findex time-stamp
897   Then add the function @code{time-stamp} to the hook
898 @code{before-save-hook} (@pxref{Hooks}).  When you save the file, this
899 function then automatically updates the time stamp with the current
900 date and time.  You can also use the command @kbd{M-x time-stamp} to
901 update the time stamp manually.  By default the time stamp is
902 formatted according to your locale setting (@pxref{Environment}) and
903 time zone (@pxref{Time of Day,,, elisp, The Emacs Lisp Reference
904 Manual}).  For customizations, see the Custom group @code{time-stamp}.
906 @node Reverting
907 @section Reverting a Buffer
908 @findex revert-buffer
909 @cindex drastic changes
910 @cindex reread a file
912   If you have made extensive changes to a file-visiting buffer and
913 then change your mind, you can @dfn{revert} the changes and go back to
914 the saved version of the file.  To do this, type @kbd{M-x
915 revert-buffer}.  Since reverting unintentionally could lose a lot of
916 work, Emacs asks for confirmation first.
918   The @code{revert-buffer} command tries to position point in such a
919 way that, if the file was edited only slightly, you will be at
920 approximately the same part of the text as before.  But if you have
921 made major changes, point may end up in a totally different location.
923   Reverting marks the buffer as not modified.  It also clears the
924 buffer's undo history (@pxref{Undo}).  Thus, the reversion cannot be
925 undone---if you change your mind yet again, you can't use the undo
926 commands to bring the reverted changes back.
928   Some kinds of buffers that are not associated with files, such as
929 Dired buffers, can also be reverted.  For them, reverting means
930 recalculating their contents.  Buffers created explicitly with
931 @kbd{C-x b} cannot be reverted; @code{revert-buffer} reports an error
932 if you try.
934 @vindex revert-without-query
935   When you edit a file that changes automatically and frequently---for
936 example, a log of output from a process that continues to run---it may
937 be useful for Emacs to revert the file without querying you.  To
938 request this behavior, set the variable @code{revert-without-query} to
939 a list of regular expressions.  When a file name matches one of these
940 regular expressions, @code{find-file} and @code{revert-buffer} will
941 revert it automatically if it has changed---provided the buffer itself
942 is not modified.  (If you have edited the text, it would be wrong to
943 discard your changes.)
945 @cindex Global Auto Revert mode
946 @cindex mode, Global Auto Revert
947 @cindex Auto Revert mode
948 @cindex mode, Auto Revert
949 @findex global-auto-revert-mode
950 @findex auto-revert-mode
951 @findex auto-revert-tail-mode
952 @vindex auto-revert-interval
953 @vindex auto-revert-remote-files
954 @vindex auto-revert-verbose
955   You can also tell Emacs to revert buffers periodically.  To do this
956 for a specific buffer, enable the minor mode Auto-Revert mode by
957 typing @kbd{M-x auto-revert-mode}.  This automatically reverts the
958 current buffer when its visited file changes on disk.  To do the same
959 for all file buffers, type @kbd{M-x global-auto-revert-mode} to enable
960 Global Auto-Revert mode.  These minor modes do not check or revert
961 remote files, because that is usually too slow.  This behavior can be
962 changed by setting the variable @code{auto-revert-remote-files} to
963 non-@code{nil}.
965 @cindex file notifications
966 @vindex auto-revert-use-notify
967   By default, Auto-Revert mode works using @dfn{file notifications},
968 whereby changes in the filesystem are reported to Emacs by the OS.
969 You can disable use of file notifications by customizing the variable
970 @code{auto-revert-use-notify} to a @code{nil} value, then Emacs will
971 check for file changes by polling every five seconds.  You can change
972 the polling interval through the variable @code{auto-revert-interval}.
974   Not all systems support file notifications; where they are not
975 supported, @code{auto-revert-use-notify} will be @code{nil} by
976 default.
978   One use of Auto-Revert mode is to ``tail'' a file such as a system
979 log, so that changes made to that file by other programs are
980 continuously displayed.  To do this, just move the point to the end of
981 the buffer, and it will stay there as the file contents change.
982 However, if you are sure that the file will only change by growing at
983 the end, use Auto-Revert Tail mode instead
984 (@code{auto-revert-tail-mode}).  It is more efficient for this.
985 Auto-Revert Tail mode works also for remote files.
987   When a buffer is auto-reverted, a message is generated.  This can be
988 suppressed by setting @code{auto-revert-verbose} to @code{nil}.
990   @xref{VC Undo}, for commands to revert to earlier versions of files
991 under version control.  @xref{VC Mode Line}, for Auto Revert
992 peculiarities when visiting files under version control.
994 @ifnottex
995 @include arevert-xtra.texi
996 @end ifnottex
998 @node Auto Save
999 @section Auto-Saving: Protection Against Disasters
1000 @cindex Auto Save mode
1001 @cindex mode, Auto Save
1002 @cindex crashes
1004   From time to time, Emacs automatically saves each visited file in a
1005 separate file, without altering the file you actually use.  This is
1006 called @dfn{auto-saving}.  It prevents you from losing more than a
1007 limited amount of work if the system crashes.
1009   When Emacs determines that it is time for auto-saving, it considers
1010 each buffer, and each is auto-saved if auto-saving is enabled for it
1011 and it has been changed since the last time it was auto-saved.  The
1012 message @samp{Auto-saving...} is displayed in the echo area during
1013 auto-saving, if any files are actually auto-saved.  Errors occurring
1014 during auto-saving are caught so that they do not interfere with the
1015 execution of commands you have been typing.
1017 @menu
1018 * Files: Auto Save Files.       The file where auto-saved changes are
1019                                   actually made until you save the file.
1020 * Control: Auto Save Control.   Controlling when and how often to auto-save.
1021 * Recover::                     Recovering text from auto-save files.
1022 @end menu
1024 @node Auto Save Files
1025 @subsection Auto-Save Files
1027   Auto-saving does not normally save in the files that you visited,
1028 because it can be very undesirable to save a change that you did not
1029 want to make permanent.  Instead, auto-saving is done in a different
1030 file called the @dfn{auto-save file}, and the visited file is changed
1031 only when you request saving explicitly (such as with @kbd{C-x C-s}).
1033   Normally, the auto-save file name is made by appending @samp{#} to the
1034 front and rear of the visited file name.  Thus, a buffer visiting file
1035 @file{foo.c} is auto-saved in a file @file{#foo.c#}.  Most buffers that
1036 are not visiting files are auto-saved only if you request it explicitly;
1037 when they are auto-saved, the auto-save file name is made by appending
1038 @samp{#} to the front and rear of buffer name, then
1039 adding digits and letters at the end for uniqueness.  For
1040 example, the @file{*mail*} buffer in which you compose messages to be
1041 sent might be auto-saved in a file named @file{#*mail*#704juu}.  Auto-save file
1042 names are made this way unless you reprogram parts of Emacs to do
1043 something different (the functions @code{make-auto-save-file-name} and
1044 @code{auto-save-file-name-p}).  The file name to be used for auto-saving
1045 in a buffer is calculated when auto-saving is turned on in that buffer.
1047 @cindex auto-save for remote files
1048 @vindex auto-save-file-name-transforms
1049   The variable @code{auto-save-file-name-transforms} allows a degree
1050 of control over the auto-save file name.  It lets you specify a series
1051 of regular expressions and replacements to transform the auto save
1052 file name.  The default value puts the auto-save files for remote
1053 files (@pxref{Remote Files}) into the temporary file directory on the
1054 local machine.
1056   When you delete a substantial part of the text in a large buffer, auto
1057 save turns off temporarily in that buffer.  This is because if you
1058 deleted the text unintentionally, you might find the auto-save file more
1059 useful if it contains the deleted text.  To reenable auto-saving after
1060 this happens, save the buffer with @kbd{C-x C-s}, or use @kbd{C-u 1 M-x
1061 auto-save-mode}.
1063 @vindex auto-save-visited-mode
1064   If you want auto-saving to be done in the visited file rather than
1065 in a separate auto-save file, enable the global minor mode
1066 @code{auto-save-visited-mode}.  In this mode, auto-saving is identical
1067 to explicit saving.  Note that this mode is orthogonal to the
1068 @code{auto-save} mode described above; you can enable both at the same
1069 time.  However, if @code{auto-save} mode is active in some buffer and
1070 the obsolete @code{auto-save-visited-file-name} variable is set to a
1071 non-@code{nil} value, that buffer won't be affected by
1072 @code{auto-save-visited-mode}.
1074   You can use the variable @code{auto-save-visited-interval} to
1075 customize the interval between auto-save operations in
1076 @code{auto-save-visited-mode}; by default it's five seconds.
1077 @code{auto-save-interval} and @code{auto-save-timeout} have no effect
1078 on @code{auto-save-visited-mode}.  @xref{Auto Save Control}, for
1079 details on these variables.
1081 @vindex delete-auto-save-files
1082   A buffer's auto-save file is deleted when you save the buffer in its
1083 visited file.  (You can inhibit this by setting the variable
1084 @code{delete-auto-save-files} to @code{nil}.)  Changing the visited
1085 file name with @kbd{C-x C-w} or @code{set-visited-file-name} renames
1086 any auto-save file to go with the new visited name.
1088 @node Auto Save Control
1089 @subsection Controlling Auto-Saving
1091 @vindex auto-save-default
1092 @findex auto-save-mode
1093   Each time you visit a file, auto-saving is turned on for that file's
1094 buffer if the variable @code{auto-save-default} is non-@code{nil} (but
1095 not in batch mode; @pxref{Initial Options}).  The default for this
1096 variable is @code{t}, so auto-saving is the usual practice for
1097 file-visiting buffers.  To toggle auto-saving in the current buffer,
1098 type @kbd{M-x auto-save-mode}.  Auto Save mode acts as a buffer-local
1099 minor mode (@pxref{Minor Modes}).
1101 @vindex auto-save-interval
1102   Emacs auto-saves periodically based on how many characters you have
1103 typed since the last auto-save.  The variable
1104 @code{auto-save-interval} specifies how many characters there are
1105 between auto-saves.  By default, it is 300.  Emacs doesn't accept
1106 values that are too small: if you customize @code{auto-save-interval}
1107 to a value less than 20, Emacs will behave as if the value is 20.
1109 @vindex auto-save-timeout
1110   Auto-saving also takes place when you stop typing for a while.  By
1111 default, it does this after 30 seconds of idleness (at this time,
1112 Emacs may also perform garbage collection; @pxref{Garbage
1113 Collection,,, elisp, The Emacs Lisp Reference Manual}).  To change
1114 this interval, customize the variable @code{auto-save-timeout}.  The
1115 actual time period is longer if the current buffer is long; this is a
1116 heuristic which aims to keep out of your way when you are editing long
1117 buffers, in which auto-save takes an appreciable amount of time.
1118 Auto-saving during idle periods accomplishes two things: first, it
1119 makes sure all your work is saved if you go away from the terminal for
1120 a while; second, it may avoid some auto-saving while you are actually
1121 typing.
1123 @vindex auto-save-visited-interval
1124   When @code{auto-save-visited-mode} is enabled, Emacs will auto-save
1125 file-visiting buffers after five seconds of idle time.  You can
1126 customize the variable @code{auto-save-visited-interval} to change the
1127 idle time interval.
1129   Emacs also does auto-saving whenever it gets a fatal error.  This
1130 includes killing the Emacs job with a shell command such as @samp{kill
1131 %emacs}, or disconnecting a phone line or network connection.
1133 @findex do-auto-save
1134   You can perform an auto-save explicitly with the command @kbd{M-x
1135 do-auto-save}.
1137 @node Recover
1138 @subsection Recovering Data from Auto-Saves
1140 @findex recover-file
1141   You can use the contents of an auto-save file to recover from a loss
1142 of data with the command @kbd{M-x recover-file @key{RET} @var{file}
1143 @key{RET}}.  This visits @var{file} and then (after your confirmation)
1144 restores the contents from its auto-save file @file{#@var{file}#}.
1145 You can then save with @kbd{C-x C-s} to put the recovered text into
1146 @var{file} itself.  For example, to recover file @file{foo.c} from its
1147 auto-save file @file{#foo.c#}, do:
1149 @example
1150 M-x recover-file @key{RET} foo.c @key{RET}
1151 yes @key{RET}
1152 C-x C-s
1153 @end example
1155   Before asking for confirmation, @kbd{M-x recover-file} displays a
1156 directory listing describing the specified file and the auto-save file,
1157 so you can compare their sizes and dates.  If the auto-save file
1158 is older, @kbd{M-x recover-file} does not offer to read it.
1160 @findex recover-session
1161   If Emacs or the computer crashes, you can recover all the files you
1162 were editing from their auto save files with the command @kbd{M-x
1163 recover-session}.  This first shows you a list of recorded interrupted
1164 sessions.  Move point to the one you choose, and type @kbd{C-c C-c}.
1166   Then @code{recover-session} asks about each of the files that were
1167 being edited during that session, asking whether to recover that file.
1168 If you answer @kbd{y}, it calls @code{recover-file}, which works in its
1169 normal fashion.  It shows the dates of the original file and its
1170 auto-save file, and asks once again whether to recover that file.
1172   When @code{recover-session} is done, the files you've chosen to
1173 recover are present in Emacs buffers.  You should then save them.  Only
1174 this---saving them---updates the files themselves.
1176 @vindex auto-save-list-file-prefix
1177   Emacs records information about interrupted sessions in files named
1178 @file{.saves-@var{pid}-@var{hostname}~} in the directory
1179 @file{~/.emacs.d/auto-save-list/}.  This directory is determined by
1180 the variable @code{auto-save-list-file-prefix}.  If you set
1181 @code{auto-save-list-file-prefix} to @code{nil}, sessions are not
1182 recorded for recovery.
1184 @node File Aliases
1185 @section File Name Aliases
1186 @cindex symbolic links (visiting)
1187 @cindex hard links (visiting)
1189   Symbolic links and hard links both make it possible for several file
1190 names to refer to the same file.  Hard links are alternate names that
1191 refer directly to the file; all the names are equally valid, and no one
1192 of them is preferred.  By contrast, a symbolic link is a kind of defined
1193 alias: when @file{foo} is a symbolic link to @file{bar}, you can use
1194 either name to refer to the file, but @file{bar} is the real name, while
1195 @file{foo} is just an alias.  More complex cases occur when symbolic
1196 links point to directories.
1198 @vindex find-file-existing-other-name
1199 @vindex find-file-suppress-same-file-warnings
1200   Normally, if you visit a file which Emacs is already visiting under
1201 a different name, Emacs displays a message in the echo area and uses
1202 the existing buffer visiting that file.  This can happen on systems
1203 that support hard or symbolic links, or if you use a long file name on
1204 a system that truncates long file names, or on a case-insensitive file
1205 system.  You can suppress the message by setting the variable
1206 @code{find-file-suppress-same-file-warnings} to a non-@code{nil}
1207 value.  You can disable this feature entirely by setting the variable
1208 @code{find-file-existing-other-name} to @code{nil}: then if you visit
1209 the same file under two different names, you get a separate buffer for
1210 each file name.
1212 @vindex find-file-visit-truename
1213 @cindex truenames of files
1214 @cindex file truenames
1215   If the variable @code{find-file-visit-truename} is non-@code{nil},
1216 then the file name recorded for a buffer is the file's @dfn{truename}
1217 (made by replacing all symbolic links with their target names), rather
1218 than the name you specify.  Setting @code{find-file-visit-truename} also
1219 implies the effect of @code{find-file-existing-other-name}.
1221 @cindex directory name abbreviation
1222 @vindex directory-abbrev-alist
1223   Sometimes, a directory is ordinarily accessed through a symbolic
1224 link, and you may want Emacs to preferentially show its linked
1225 name.  To do this, customize @code{directory-abbrev-alist}.  Each
1226 element in this list should have the form @code{(@var{from}
1227 . @var{to})}, which means to replace @var{from} with @var{to} whenever
1228 @var{from} appears in a directory name.  The @var{from} string is a
1229 regular expression (@pxref{Regexps}).  It is matched against directory
1230 names anchored at the first character, and should start with @samp{\`}
1231 (to support directory names with embedded newlines, which would defeat
1232 @samp{^}).  The @var{to} string should be an ordinary absolute
1233 directory name pointing to the same directory.  Do not use @samp{~} to
1234 stand for a home directory in the @var{to} string; Emacs performs
1235 these substitutions separately.  Here's an example, from a system on
1236 which @file{/home/fsf} is normally accessed through a symbolic link
1237 named @file{/fsf}:
1239 @example
1240 (("\\`/home/fsf" . "/fsf"))
1241 @end example
1243 @node Directories
1244 @section File Directories
1246 @cindex file directory
1247 @cindex directory listing
1248   The file system groups files into @dfn{directories}.  A @dfn{directory
1249 listing} is a list of all the files in a directory.  Emacs provides
1250 commands to create and delete directories, and to make directory
1251 listings in brief format (file names only) and verbose format (sizes,
1252 dates, and other attributes included).  Emacs also includes a
1253 directory browser feature called Dired, which you can invoke with
1254 @kbd{C-x d}; see @ref{Dired}.
1256 @table @kbd
1257 @item C-x C-d @var{dir-or-pattern} @key{RET}
1258 Display a brief directory listing (@code{list-directory}).
1259 @item C-u C-x C-d @var{dir-or-pattern} @key{RET}
1260 Display a verbose directory listing.
1261 @item M-x make-directory @key{RET} @var{dirname} @key{RET}
1262 Create a new directory named @var{dirname}.
1263 @item M-x delete-directory @key{RET} @var{dirname} @key{RET}
1264 Delete the directory named @var{dirname}.  If it isn't empty,
1265 you will be asked whether you want to delete it recursively.
1266 @end table
1268 @findex list-directory
1269 @kindex C-x C-d
1270   The command to display a directory listing is @kbd{C-x C-d}
1271 (@code{list-directory}).  It reads using the minibuffer a file name
1272 which is either a directory to be listed or a wildcard-containing
1273 pattern for the files to be listed.  For example,
1275 @example
1276 C-x C-d /u2/emacs/etc @key{RET}
1277 @end example
1279 @noindent
1280 lists all the files in directory @file{/u2/emacs/etc}.  Here is an
1281 example of specifying a file name pattern:
1283 @example
1284 C-x C-d /u2/emacs/src/*.c @key{RET}
1285 @end example
1287   Normally, @kbd{C-x C-d} displays a brief directory listing containing
1288 just file names.  A numeric argument (regardless of value) tells it to
1289 make a verbose listing including sizes, dates, and owners (like
1290 @samp{ls -l}).
1292 @vindex list-directory-brief-switches
1293 @vindex list-directory-verbose-switches
1294   The text of a directory listing is mostly obtained by running
1295 @code{ls} in an inferior process.  Two Emacs variables control the
1296 switches passed to @code{ls}: @code{list-directory-brief-switches} is
1297 a string giving the switches to use in brief listings (@code{"-CF"} by
1298 default), and @code{list-directory-verbose-switches} is a string
1299 giving the switches to use in a verbose listing (@code{"-l"} by
1300 default).
1302 @vindex directory-free-space-program
1303 @vindex directory-free-space-args
1304   In verbose directory listings, Emacs adds information about the
1305 amount of free space on the disk that contains the directory.  You can
1306 customize how this is done for local filesystems via the variables
1307 @code{directory-free-space-program} and
1308 @code{directory-free-space-args}: the former specifies what program to
1309 run (default: @command{df}), the latter which arguments to pass to
1310 that program (default is system-dependent).  (On MS-Windows and
1311 MS-DOS, these two variables are ignored, and an internal Emacs
1312 implementation of the same functionality is used instead.)
1314   The command @kbd{M-x delete-directory} prompts for a directory's name
1315 using the minibuffer, and deletes the directory if it is empty.  If
1316 the directory is not empty, you will be asked whether you want to
1317 delete it recursively.  On systems that have a ``Trash'' (or ``Recycle
1318 Bin'') feature, you can make this command move the specified directory
1319 to the Trash instead of deleting it outright, by changing the variable
1320 @code{delete-by-moving-to-trash} to @code{t}.  @xref{Misc File Ops},
1321 for more information about using the Trash.
1323 @node Comparing Files
1324 @section Comparing Files
1325 @cindex comparing files
1327 @findex diff
1328 @vindex diff-switches
1329   The command @kbd{M-x diff} prompts for two file names, using the
1330 minibuffer, and displays the differences between the two files in a
1331 buffer named @file{*diff*}.  This works by running the @command{diff}
1332 program, using options taken from the variable @code{diff-switches}.
1333 The value of @code{diff-switches} should be a string; the default is
1334 @code{"-u"} to specify a unified context diff.
1335 @c Note that the actual name of the info file is diffutils.info,
1336 @c but it adds a dir entry for diff too.
1337 @c On older systems, only "info diff" works, not "info diffutils".
1338 @xref{Top,, Diff, diffutils, Comparing and Merging Files}, for more
1339 information about the @command{diff} program.
1341   The output of the @code{diff} command is shown using a major mode
1342 called Diff mode.  @xref{Diff Mode}.
1344   A (much more sophisticated) alternative is @kbd{M-x ediff}
1345 (@pxref{Top, Ediff, Ediff, ediff, The Ediff Manual}).
1347 @findex diff-backup
1348   The command @kbd{M-x diff-backup} compares a specified file with its
1349 most recent backup.  If you specify the name of a backup file,
1350 @code{diff-backup} compares it with the source file that it is a
1351 backup of.  In all other respects, this behaves like @kbd{M-x diff}.
1353 @findex diff-buffer-with-file
1354   The command @kbd{M-x diff-buffer-with-file} compares a specified
1355 buffer with its corresponding file.  This shows you what changes you
1356 would make to the file if you save the buffer.
1358 @findex compare-windows
1359   The command @kbd{M-x compare-windows} compares the text in the
1360 current window with that in the window that was the selected window
1361 before you selected the current one.  (For more information about
1362 windows in Emacs, @ref{Windows}.)  Comparison starts at point in each
1363 window, after pushing each initial point value on the mark ring
1364 (@pxref{Mark Ring}) in its respective buffer.  Then it moves point
1365 forward in each window, one character at a time, until it reaches
1366 characters that don't match.  Then the command exits.
1368   If point in the two windows is followed by non-matching text when
1369 the command starts, @kbd{M-x compare-windows} tries heuristically to
1370 advance up to matching text in the two windows, and then exits.  So if
1371 you use @kbd{M-x compare-windows} repeatedly, each time it either
1372 skips one matching range or finds the start of another.
1374 @vindex compare-ignore-case
1375 @vindex compare-ignore-whitespace
1376   With a numeric argument, @code{compare-windows} ignores changes in
1377 whitespace.  If the variable @code{compare-ignore-case} is
1378 non-@code{nil}, the comparison ignores differences in case as well.
1379 If the variable @code{compare-ignore-whitespace} is non-@code{nil},
1380 @code{compare-windows} by default ignores changes in whitespace, but a
1381 prefix argument turns that off for that single invocation of the
1382 command.
1384 @cindex Smerge mode
1385 @findex smerge-mode
1386 @cindex failed merges
1387 @cindex merges, failed
1388 @cindex comparing 3 files (@code{diff3})
1389   You can use @kbd{M-x smerge-mode} to turn on Smerge mode, a minor
1390 mode for editing output from the @command{diff3} program.  This is
1391 typically the result of a failed merge from a version control system
1392 update outside VC, due to conflicting changes to a file.  Smerge
1393 mode provides commands to resolve conflicts by selecting specific
1394 changes.
1396 @iftex
1397 @xref{Emerge,,, emacs-xtra, Specialized Emacs Features},
1398 @end iftex
1399 @ifnottex
1400 @xref{Emerge},
1401 @end ifnottex
1402 for the Emerge facility, which provides a powerful interface for
1403 merging files.
1405 @node Diff Mode
1406 @section Diff Mode
1407 @cindex Diff mode
1408 @findex diff-mode
1409 @cindex patches, editing
1411   Diff mode is a major mode used for the output of @kbd{M-x diff} and
1412 other similar commands.  This kind of output is called a @dfn{patch},
1413 because it can be passed to the @command{patch} command to
1414 automatically apply the specified changes.  To select Diff mode
1415 manually, type @kbd{M-x diff-mode}.
1417 @cindex hunk, diff
1418   The changes specified in a patch are grouped into @dfn{hunks}, which
1419 are contiguous chunks of text that contain one or more changed lines.
1420 Hunks can also include unchanged lines to provide context for the
1421 changes.  Each hunk is preceded by a @dfn{hunk header}, which
1422 specifies the old and new line numbers at which the hunk occurs.  Diff
1423 mode highlights each hunk header, to distinguish it from the actual
1424 contents of the hunk.
1426 @vindex diff-update-on-the-fly
1427   You can edit a Diff mode buffer like any other buffer.  (If it is
1428 read-only, you need to make it writable first.  @xref{Misc Buffer}.)
1429 Whenever you change a hunk, Diff mode attempts to automatically
1430 correct the line numbers in the hunk headers, to ensure that the patch
1431 remains correct.  To disable automatic line number correction,
1432 change the variable @code{diff-update-on-the-fly} to @code{nil}.
1434   Diff mode treats each hunk as an error message, similar to
1435 Compilation mode.  Thus, you can use commands such as @kbd{C-x `} to
1436 visit the corresponding source locations.  @xref{Compilation Mode}.
1438   In addition, Diff mode provides the following commands to navigate,
1439 manipulate and apply parts of patches:
1441 @table @kbd
1442 @item M-n
1443 @findex diff-hunk-next
1444 Move to the next hunk-start (@code{diff-hunk-next}).
1446 @findex diff-auto-refine-mode
1447 @cindex mode, Diff Auto-Refine
1448 @cindex Diff Auto-Refine mode
1449 This command has a side effect: it @dfn{refines} the hunk you move to,
1450 highlighting its changes with better granularity.  To disable this
1451 feature, type @kbd{M-x diff-auto-refine-mode} to toggle off the minor
1452 mode Diff Auto-Refine mode.  To disable Diff Auto-Refine mode by
1453 default, add this to your init file (@pxref{Hooks}):
1455 @example
1456 (add-hook 'diff-mode-hook
1457           (lambda () (diff-auto-refine-mode -1)))
1458 @end example
1460 @item M-p
1461 @findex diff-hunk-prev
1462 Move to the previous hunk-start (@code{diff-hunk-prev}).  Like
1463 @kbd{M-n}, this has the side-effect of refining the hunk you move to,
1464 unless you disable Diff Auto-Refine mode.
1466 @item M-@}
1467 @findex diff-file-next
1468 Move to the next file-start, in a multi-file patch
1469 (@code{diff-file-next}).
1471 @item M-@{
1472 @findex diff-file-prev
1473 Move to the previous file-start, in a multi-file patch
1474 (@code{diff-file-prev}).
1476 @item M-k
1477 @findex diff-hunk-kill
1478 Kill the hunk at point (@code{diff-hunk-kill}).
1480 @item M-K
1481 @findex diff-file-kill
1482 In a multi-file patch, kill the current file part.
1483 (@code{diff-file-kill}).
1485 @item C-c C-a
1486 @findex diff-apply-hunk
1487 @cindex patches, applying
1488 Apply this hunk to its target file (@code{diff-apply-hunk}).  With a
1489 prefix argument of @kbd{C-u}, revert this hunk.
1491 @item C-c C-b
1492 @findex diff-refine-hunk
1493 Highlight the changes of the hunk at point with a finer granularity
1494 (@code{diff-refine-hunk}).  This allows you to see exactly which parts
1495 of each changed line were actually changed.
1497 @item C-c C-c
1498 @findex diff-goto-source
1499 Go to the source file and line corresponding to this hunk
1500 (@code{diff-goto-source}).
1502 @item C-c C-e
1503 @findex diff-ediff-patch
1504 Start an Ediff session with the patch (@code{diff-ediff-patch}).
1505 @xref{Top, Ediff, Ediff, ediff, The Ediff Manual}.
1507 @item C-c C-n
1508 @findex diff-restrict-view
1509 Restrict the view to the current hunk (@code{diff-restrict-view}).
1510 @xref{Narrowing}.  With a prefix argument of @kbd{C-u}, restrict the
1511 view to the current file of a multiple-file patch.  To widen again,
1512 use @kbd{C-x n w} (@code{widen}).
1514 @item C-c C-r
1515 @findex diff-reverse-direction
1516 Reverse the direction of comparison for the entire buffer
1517 (@code{diff-reverse-direction}).
1519 @item C-c C-s
1520 @findex diff-split-hunk
1521 Split the hunk at point (@code{diff-split-hunk}).  This is for
1522 manually editing patches, and only works with the @dfn{unified diff
1523 format} produced by the @option{-u} or @option{--unified} options to
1524 the @command{diff} program.  If you need to split a hunk in the
1525 @dfn{context diff format} produced by the @option{-c} or
1526 @option{--context} options to @command{diff}, first convert the buffer
1527 to the unified diff format with @kbd{C-c C-u}.
1529 @item C-c C-d
1530 @findex diff-unified->context
1531 Convert the entire buffer to the @dfn{context diff format}
1532 (@code{diff-unified->context}).  With a prefix argument, convert only
1533 the text within the region.
1535 @item C-c C-u
1536 @findex diff-context->unified
1537 Convert the entire buffer to unified diff format
1538 (@code{diff-context->unified}).  With a prefix argument, convert
1539 unified format to context format.  When the mark is active, convert
1540 only the text within the region.
1542 @item C-c C-w
1543 @findex diff-ignore-whitespace-hunk
1544 Re-diff the current hunk, disregarding changes in whitespace
1545 (@code{diff-ignore-whitespace-hunk}).
1547 @item C-x 4 A
1548 @findex diff-add-change-log-entries-other-window
1549 @findex add-change-log-entry-other-window@r{, in Diff mode}
1550 Generate a ChangeLog entry, like @kbd{C-x 4 a} does (@pxref{Change
1551 Log}), for each one of the hunks
1552 (@code{diff-add-change-log-entries-other-window}).  This creates a
1553 skeleton of the log of changes that you can later fill with the actual
1554 descriptions of the changes.  @kbd{C-x 4 a} itself in Diff mode
1555 operates on behalf of the current hunk's file, but gets the function
1556 name from the patch itself.  This is useful for making log entries for
1557 functions that are deleted by the patch.
1558 @end table
1560 @c Trailing whitespace is NOT shown by default.
1561 @c Emacs's dir-locals file enables this (for some reason).
1562 @cindex trailing whitespace, in patches
1563 @findex diff-delete-trailing-whitespace
1564   Patches sometimes include trailing whitespace on modified lines, as
1565 an unintentional and undesired change.  There are two ways to deal
1566 with this problem.  Firstly, if you enable Whitespace mode in a Diff
1567 buffer (@pxref{Useless Whitespace}), it automatically highlights
1568 trailing whitespace in modified lines.  Secondly, you can use the
1569 command @kbd{M-x diff-delete-trailing-whitespace}, which searches for
1570 trailing whitespace in the lines modified by the patch, and removes
1571 that whitespace in both the patch and the patched source file(s).
1572 This command does not save the modifications that it makes, so you can
1573 decide whether to save the changes (the list of modified files is
1574 displayed in the echo area).  With a prefix argument, it tries to
1575 modify the original source files rather than the patched source files.
1577 @node Copying and Naming
1578 @section Copying, Naming and Renaming Files
1580   Emacs has several commands for copying, naming, and renaming files.
1581 All of them read two file names, @var{old} (or @var{target}) and
1582 @var{new}, using the minibuffer, and then copy or adjust a file's name
1583 accordingly; they do not accept wildcard file names.
1585 In all these commands, if the argument @var{new} is just a directory
1586 name (@pxref{Directory Names,,, elisp, the Emacs Lisp Reference
1587 Manual}), the real new name is in that directory, with the same
1588 non-directory component as @var{old}.  For example, the command
1589 @w{@kbd{M-x rename-file @key{RET} ~/foo @key{RET} /tmp/ @key{RET}}}
1590 renames @file{~/foo} to @file{/tmp/foo}.  On GNU and other POSIX-like
1591 systems, directory names end in @samp{/}.
1593 All these commands ask for confirmation when the new file name already
1594 exists.
1596 @findex copy-file
1597 @cindex copying files
1598   @kbd{M-x copy-file} copies the contents of the file @var{old} to the
1599 file @var{new}.
1601 @findex copy-directory
1602   @kbd{M-x copy-directory} copies directories, similar to the
1603 @command{cp -r} shell command.  If @var{new} is a directory name, it
1604 creates a copy of the @var{old} directory and puts it in @var{new}.
1605 Otherwise it copies all the contents of @var{old} into a new directory
1606 named @var{new}.
1608 @cindex renaming files
1609 @findex rename-file
1610   @kbd{M-x rename-file} renames file @var{old} as @var{new}.  If the
1611 file name @var{new} already exists, you must confirm with @kbd{yes} or
1612 renaming is not done; this is because renaming causes the old meaning
1613 of the name @var{new} to be lost.  If @var{old} and @var{new} are on
1614 different file systems, the file @var{old} is copied and deleted.
1616 @ifnottex
1617   If a file is under version control (@pxref{Version Control}), you
1618 should rename it using @w{@kbd{M-x vc-rename-file}} instead of
1619 @w{@kbd{M-x rename-file}}.  @xref{VC Delete/Rename}.
1620 @end ifnottex
1622 @findex add-name-to-file
1623 @cindex hard links (creation)
1624   @kbd{M-x add-name-to-file} adds an additional name to an existing
1625 file without removing the old name.  The new name is created as a hard
1626 link to the existing file.  The new name must belong on the same file
1627 system that the file is on.  On MS-Windows, this command works only if
1628 the file resides in an NTFS file system.  On MS-DOS, and some remote
1629 system types, it works by copying the file.
1631 @findex make-symbolic-link
1632 @cindex symbolic links (creation)
1633   @kbd{M-x make-symbolic-link} creates a symbolic link named
1634 @var{new}, which points at @var{target}.  The effect is that future
1635 attempts to open file @var{new} will refer to whatever file is named
1636 @var{target} at the time the opening is done, or will get an error if
1637 the name @var{target} is nonexistent at that time.  This command does
1638 not expand the argument @var{target}, so that it allows you to specify
1639 a relative name as the target of the link.  However, this command
1640 does expand leading @samp{~} in @var{target} so that you can easily
1641 specify home directories, and strips leading @samp{/:} so that you can
1642 specify relative names beginning with literal @samp{~} or @samp{/:}.
1643 @xref{Quoted File Names}.  On MS-Windows, this command works only on
1644 MS Windows Vista and later.  When @var{new} is remote,
1645 it works depending on the system type.
1647 @node Misc File Ops
1648 @section Miscellaneous File Operations
1650   Emacs has commands for performing many other operations on files.
1651 All operate on one file; they do not accept wildcard file names.
1653 @findex delete-file
1654 @cindex deletion (of files)
1655   @kbd{M-x delete-file} prompts for a file and deletes it.  If you are
1656 deleting many files in one directory, it may be more convenient to use
1657 Dired rather than @code{delete-file}.  @xref{Dired Deletion}.
1659 @cindex trash
1660 @cindex recycle bin
1661   @kbd{M-x move-file-to-trash} moves a file into the system
1662 @dfn{Trash} (or @dfn{Recycle Bin}).  This is a facility available on
1663 most operating systems; files that are moved into the Trash can be
1664 brought back later if you change your mind.
1666 @vindex delete-by-moving-to-trash
1667   By default, Emacs deletion commands do @emph{not} use the Trash.  To
1668 use the Trash (when it is available) for common deletion commands,
1669 change the variable @code{delete-by-moving-to-trash} to @code{t}.
1670 This affects the commands @kbd{M-x delete-file} and @kbd{M-x
1671 delete-directory} (@pxref{Directories}), as well as the deletion
1672 commands in Dired (@pxref{Dired Deletion}).  Supplying a prefix
1673 argument to @kbd{M-x delete-file} or @kbd{M-x delete-directory} makes
1674 them delete outright, instead of using the Trash, regardless of
1675 @code{delete-by-moving-to-trash}.
1677 @ifnottex
1678   If a file is under version control (@pxref{Version Control}), you
1679 should delete it using @kbd{M-x vc-delete-file} instead of @kbd{M-x
1680 delete-file}.  @xref{VC Delete/Rename}.
1681 @end ifnottex
1683 @kindex C-x i
1684 @findex insert-file
1685   @kbd{M-x insert-file} (also @kbd{C-x i}) inserts a copy of the
1686 contents of the specified file into the current buffer at point,
1687 leaving point unchanged before the contents.  The position after the
1688 inserted contents is added to the mark ring, without activating the
1689 mark (@pxref{Mark Ring}).
1691 @findex insert-file-literally
1692   @kbd{M-x insert-file-literally} is like @kbd{M-x insert-file},
1693 except the file is inserted literally: it is treated as a sequence
1694 of @acronym{ASCII} characters with no special encoding or conversion,
1695 similar to the @kbd{M-x find-file-literally} command
1696 (@pxref{Visiting}).
1698 @findex write-region
1699   @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
1700 copies the contents of the region into the specified file.  @kbd{M-x
1701 append-to-file} adds the text of the region to the end of the
1702 specified file.  @xref{Accumulating Text}.  The variable
1703 @code{write-region-inhibit-fsync} applies to these commands, as well
1704 as saving files; see @ref{Customize Save}.
1706 @findex set-file-modes
1707 @cindex file modes
1708 @cindex file permissions
1709   @kbd{M-x set-file-modes} reads a file name followed by a @dfn{file
1710 mode}, and applies that file mode to the specified file.  File modes,
1711 also called @dfn{file permissions}, determine whether a file can be
1712 read, written to, or executed, and by whom.  This command reads file
1713 modes using the same symbolic or octal format accepted by the
1714 @command{chmod} command; for instance, @samp{u+x} means to add
1715 execution permission for the user who owns the file.  It has no effect
1716 on operating systems that do not support file modes.  @code{chmod} is a
1717 convenience alias for this function.
1719 @node Compressed Files
1720 @section Accessing Compressed Files
1721 @cindex compression
1722 @cindex uncompression
1723 @cindex Auto Compression mode
1724 @cindex mode, Auto Compression
1725 @pindex gzip
1727   Emacs automatically uncompresses compressed files when you visit
1728 them, and automatically recompresses them if you alter them and save
1729 them.  Emacs recognizes compressed files by their file names.  File
1730 names ending in @samp{.gz} indicate a file compressed with
1731 @code{gzip}.  Other endings indicate other compression programs.
1733   Automatic uncompression and compression apply to all the operations in
1734 which Emacs uses the contents of a file.  This includes visiting it,
1735 saving it, inserting its contents into a buffer, loading it, and byte
1736 compiling it.
1738 @findex auto-compression-mode
1739 @vindex auto-compression-mode
1740   To disable this feature, type the command @kbd{M-x
1741 auto-compression-mode}.  You can disable it permanently by
1742 customizing the variable @code{auto-compression-mode}.
1744 @node File Archives
1745 @section File Archives
1746 @cindex mode, tar
1747 @cindex Tar mode
1748 @cindex file archives
1750   A file whose name ends in @samp{.tar} is normally an @dfn{archive}
1751 made by the @code{tar} program.  Emacs views these files in a special
1752 mode called Tar mode which provides a Dired-like list of the contents
1753 (@pxref{Dired}).  You can move around through the list just as you
1754 would in Dired, and visit the subfiles contained in the archive.
1755 However, not all Dired commands are available in Tar mode.
1757   If Auto Compression mode is enabled (@pxref{Compressed Files}), then
1758 Tar mode is used also for compressed archives---files with extensions
1759 @samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}.
1761   The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
1762 into its own buffer.  You can edit it there, and if you save the
1763 buffer, the edited version will replace the version in the Tar buffer.
1764 Clicking with the mouse on the file name in the Tar buffer does
1765 likewise.  @kbd{v} extracts a file into a buffer in View mode
1766 (@pxref{View Mode}).  @kbd{o} extracts the file and displays it in
1767 another window, so you could edit the file and operate on the archive
1768 simultaneously.
1770   The @kbd{I} key adds a new (regular) file to the archive.  The file
1771 is initially empty, but can readily be edited using the commands
1772 above.  The command inserts the new file before the current one, so
1773 that using it on the topmost line of the Tar buffer makes the new file
1774 the first one in the archive, and using it at the end of the buffer
1775 makes it the last one.
1777   @kbd{d} marks a file for deletion when you later use @kbd{x}, and
1778 @kbd{u} unmarks a file, as in Dired.  @kbd{C} copies a file from the
1779 archive to disk and @kbd{R} renames a file within the archive.
1780 @kbd{g} reverts the buffer from the archive on disk.  The keys
1781 @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission bits,
1782 group, and owner, respectively.
1784   Saving the Tar buffer writes a new version of the archive to disk with
1785 the changes you made to the components.
1787   You don't need the @code{tar} program to use Tar mode---Emacs reads
1788 the archives directly.  However, accessing compressed archives
1789 requires the appropriate uncompression program.
1791 @cindex Archive mode
1792 @cindex mode, archive
1793 @pindex arc
1794 @pindex jar
1795 @pindex zip
1796 @pindex rar
1797 @pindex lzh
1798 @pindex zoo
1799 @pindex 7z
1800 @cindex Java class archives
1801 @cindex unzip archives
1802   A separate but similar Archive mode is used for @code{arc},
1803 @code{jar}, @code{lzh}, @code{zip}, @code{rar}, @code{7z}, and
1804 @code{zoo} archives, as well as @code{exe} files that are
1805 self-extracting executables.
1807   The key bindings of Archive mode are similar to those in Tar mode,
1808 with the addition of the @kbd{m} key which marks a file for subsequent
1809 operations, and @kbd{M-@key{DEL}} which unmarks all the marked files.
1810 Also, the @kbd{a} key toggles the display of detailed file
1811 information, for those archive types where it won't fit in a single
1812 line.  Operations such as renaming a subfile, or changing its mode or
1813 owner, are supported only for some of the archive formats.
1815   Unlike Tar mode, Archive mode runs the archiving programs to unpack
1816 and repack archives.  However, you don't need these programs to look
1817 at the archive table of contents, only to extract or manipulate the
1818 subfiles in the archive.  Details of the program names and their
1819 options can be set in the @samp{Archive} Customize group
1820 (@pxref{Customization Groups}).
1822 @node Remote Files
1823 @section Remote Files
1825 @cindex Tramp
1826 @cindex FTP
1827 @cindex remote file access
1828   You can refer to files on other machines using a special file name
1829 syntax:
1831 @example
1832 @group
1833 /@var{method}:@var{host}:@var{filename}
1834 /@var{method}:@var{user}@@@var{host}:@var{filename}
1835 /@var{method}:@var{user}@@@var{host}#@var{port}:@var{filename}
1836 @end group
1837 @end example
1839 @noindent
1840 To carry out this request, Emacs uses a remote-login program such as
1841 @command{ssh}.
1842 You must always specify in the file name which method to use---for
1843 example, @file{/ssh:@var{user}@@@var{host}:@var{filename}} uses
1844 @command{ssh}.  When you specify the pseudo method @samp{-} in the
1845 file name, Emacs chooses the method as follows:
1847 @enumerate
1848 @item
1849 If the host name starts with @samp{ftp.} (with dot), Emacs uses FTP.
1850 @item
1851 If the user name is @samp{ftp} or @samp{anonymous}, Emacs uses FTP.
1852 @item
1853 If the variable @code{tramp-default-method} is set to @samp{ftp},
1854 Emacs uses FTP.
1855 @item
1856 If @command{ssh-agent} is running, Emacs uses @command{scp}.
1857 @item
1858 Otherwise, Emacs uses @command{ssh}.
1859 @end enumerate
1861 @cindex disabling remote files
1862 @noindent
1863 You can entirely turn off the remote file name feature by setting the
1864 variable @code{tramp-mode} to @code{nil}.  You can turn off the
1865 feature in individual cases by quoting the file name with @samp{/:}
1866 (@pxref{Quoted File Names}).
1868 @cindex ange-ftp
1869   Remote file access through FTP is handled by the Ange-FTP package, which
1870 is documented in the following.  Remote file access through the other
1871 methods is handled by the Tramp package, which has its own manual.
1872 @xref{Top, The Tramp Manual,, tramp, The Tramp Manual}.
1874 @vindex ange-ftp-default-user
1875 @cindex user name for remote file access
1876   When the Ange-FTP package is used, Emacs logs in through FTP using
1877 the name @var{user}, if that is specified in the remote file name.  If
1878 @var{user} is unspecified, Emacs logs in using your user name on the
1879 local system; but if you set the variable @code{ange-ftp-default-user}
1880 to a string, that string is used instead.  When logging in, Emacs may
1881 also ask for a password.
1883 @cindex backups for remote files
1884 @vindex ange-ftp-make-backup-files
1885   For performance reasons, Emacs does not make backup files for files
1886 accessed via FTP by default.  To make it do so, change the variable
1887 @code{ange-ftp-make-backup-files} to a non-@code{nil} value.
1889   By default, auto-save files for remote files are made in the
1890 temporary file directory on the local machine, as specified by the
1891 variable @code{auto-save-file-name-transforms}.  @xref{Auto Save
1892 Files}.
1894 @cindex anonymous FTP
1895 @vindex ange-ftp-generate-anonymous-password
1896   To visit files accessible by anonymous FTP, you use special user
1897 names @samp{anonymous} or @samp{ftp}.  Passwords for these user names
1898 are handled specially.  The variable
1899 @code{ange-ftp-generate-anonymous-password} controls what happens: if
1900 the value of this variable is a string, then that string is used as
1901 the password; if non-@code{nil} (the default), then the value of
1902 @code{user-mail-address} is used; if @code{nil}, then Emacs prompts
1903 you for a password as usual (@pxref{Passwords}).
1905 @cindex firewall, and accessing remote files
1906 @cindex gateway, and remote file access with @code{ange-ftp}
1907 @vindex ange-ftp-smart-gateway
1908 @vindex ange-ftp-gateway-host
1909   Sometimes you may be unable to access files on a remote machine
1910 because a @dfn{firewall} in between blocks the connection for security
1911 reasons.  If you can log in on a @dfn{gateway} machine from which the
1912 target files @emph{are} accessible, and whose FTP server supports
1913 gatewaying features, you can still use remote file names; all you have
1914 to do is specify the name of the gateway machine by setting the
1915 variable @code{ange-ftp-gateway-host}, and set
1916 @code{ange-ftp-smart-gateway} to @code{t}.  Otherwise you may be able
1917 to make remote file names work, but the procedure is complex.  You can
1918 read the instructions by typing @kbd{M-x finder-commentary @key{RET}
1919 ange-ftp @key{RET}}.
1921 @node Quoted File Names
1922 @section Quoted File Names
1924 @cindex quoting file names
1925 @cindex file names, quote special characters
1926   You can @dfn{quote} an absolute file name to prevent special
1927 characters and syntax in it from having their special effects.
1928 The way to do this is to add @samp{/:} at the beginning.
1930   For example, you can quote a local file name which appears remote, to
1931 prevent it from being treated as a remote file name.  Thus, if you have
1932 a directory named @file{/foo:} and a file named @file{bar} in it, you
1933 can refer to that file in Emacs as @samp{/:/foo:/bar}.
1935   If you want to quote only special characters in the local part of a
1936 remote file name, you can quote just the local part.
1937 @samp{/ssh:baz:/:/foo:/bar} refers to the file @file{bar} of directory
1938 @file{/foo:} on the host @file{baz}.
1940   @samp{/:} can also prevent @samp{~} from being treated as a special
1941 character for a user's home directory.  For example, @file{/:/tmp/~hack}
1942 refers to a file whose name is @file{~hack} in directory @file{/tmp}.
1944   Quoting with @samp{/:} is also a way to enter in the minibuffer a
1945 file name that contains @samp{$}.  In order for this to work, the
1946 @samp{/:} must be at the beginning of the minibuffer contents.  (You
1947 can also double each @samp{$}; see @ref{File Names with $}.)
1949   You can also quote wildcard characters with @samp{/:}, for visiting.
1950 For example, @file{/:/tmp/foo*bar} visits the file
1951 @file{/tmp/foo*bar}.
1953   Another method of getting the same result is to enter
1954 @file{/tmp/foo[*]bar}, which is a wildcard specification that matches
1955 only @file{/tmp/foo*bar}.  However, in many cases there is no need to
1956 quote the wildcard characters because even unquoted they give the
1957 right result.  For example, if the only file name in @file{/tmp} that
1958 starts with @samp{foo} and ends with @samp{bar} is @file{foo*bar},
1959 then specifying @file{/tmp/foo*bar} will visit only
1960 @file{/tmp/foo*bar}.
1962 @node File Name Cache
1963 @section File Name Cache
1965 @cindex file name caching
1966 @cindex cache of file names
1967 @pindex find
1968 @kindex C-TAB
1969 @findex file-cache-minibuffer-complete
1970   You can use the @dfn{file name cache} to make it easy to locate a
1971 file by name, without having to remember exactly where it is located.
1972 When typing a file name in the minibuffer, @kbd{C-@key{TAB}}
1973 (@code{file-cache-minibuffer-complete}) completes it using the file
1974 name cache.  If you repeat @kbd{C-@key{TAB}}, that cycles through the
1975 possible completions of what you had originally typed.  (However, note
1976 that the @kbd{C-@key{TAB}} character cannot be typed on most text
1977 terminals.)
1979   The file name cache does not fill up automatically.  Instead, you
1980 load file names into the cache using these commands:
1982 @findex file-cache-add-directory
1983 @table @kbd
1984 @item M-x file-cache-add-directory @key{RET} @var{directory} @key{RET}
1985 Add each file name in @var{directory} to the file name cache.
1986 @item M-x file-cache-add-directory-using-find @key{RET} @var{directory} @key{RET}
1987 Add each file name in @var{directory} and all of its nested
1988 subdirectories to the file name cache.
1989 @item M-x file-cache-add-directory-using-locate @key{RET} @var{directory} @key{RET}
1990 Add each file name in @var{directory} and all of its nested
1991 subdirectories to the file name cache, using @command{locate} to find
1992 them all.
1993 @item M-x file-cache-add-directory-list @key{RET} @var{variable} @key{RET}
1994 Add each file name in each directory listed in @var{variable} to the
1995 file name cache.  @var{variable} should be a Lisp variable whose value
1996 is a list of directories, like @code{load-path}.
1997 @item M-x file-cache-clear-cache @key{RET}
1998 Clear the cache; that is, remove all file names from it.
1999 @end table
2001   The file name cache is not persistent: it is kept and maintained
2002 only for the duration of the Emacs session.  You can view the contents
2003 of the cache with the @code{file-cache-display} command.
2005 @node File Conveniences
2006 @section Convenience Features for Finding Files
2008   In this section, we introduce some convenient facilities for finding
2009 recently-opened files, reading file names from a buffer, and viewing
2010 image files.
2012 @findex recentf-mode
2013 @vindex recentf-mode
2014 @findex recentf-save-list
2015 @findex recentf-edit-list
2016   If you enable Recentf mode, with @kbd{M-x recentf-mode}, the
2017 @samp{File} menu includes a submenu containing a list of recently
2018 opened files.  @kbd{M-x recentf-save-list} saves the current
2019 @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list}
2020 edits it.
2022 @c FIXME partial-completion-mode (complete.el) is obsolete.
2023   The @kbd{M-x ffap} command generalizes @code{find-file} with more
2024 powerful heuristic defaults (@pxref{FFAP}), often based on the text at
2025 point.  Partial Completion mode offers other features extending
2026 @code{find-file}, which can be used with @code{ffap}.
2027 @xref{Completion Options}.
2029 @findex image-mode
2030 @findex image-toggle-display
2031 @findex image-next-file
2032 @findex image-previous-file
2033 @cindex images, viewing
2034   Visiting image files automatically selects Image mode.  In this
2035 major mode, you can type @kbd{C-c C-c} (@code{image-toggle-display})
2036 to toggle between displaying the file as an image in the Emacs buffer,
2037 and displaying its underlying text (or raw byte) representation.
2038 Additionally you can type @kbd{C-c C-x} (@code{image-toggle-hex-display})
2039 to toggle between displaying the file as an image in the Emacs buffer,
2040 and displaying it in hex representation.
2041 Displaying the file as an image works only if Emacs is compiled with
2042 support for displaying such images.  If the displayed image is wider
2043 or taller than the frame, the usual point motion keys (@kbd{C-f},
2044 @kbd{C-p}, and so forth) cause different parts of the image to be
2045 displayed.  You can press @kbd{n} (@code{image-next-file}) and @kbd{p}
2046 (@code{image-previous-file}) to visit the next image file and the
2047 previous image file in the same directory, respectively.
2049 @findex image-toggle-animation
2050 @findex image-next-frame
2051 @findex image-previous-frame
2052 @findex image-goto-frame
2053 @findex image-increase-speed
2054 @findex image-decrease-speed
2055 @findex image-reset-speed
2056 @findex image-reverse-speed
2057 @vindex image-animate-loop
2058 @cindex image animation
2059 @cindex animated images
2060   If the image can be animated, the command @key{RET}
2061 (@code{image-toggle-animation}) starts or stops the animation.
2062 Animation plays once, unless the option @code{image-animate-loop} is
2063 non-@code{nil}.  With @kbd{f} (@code{image-next-frame}) and @kbd{b}
2064 (@code{image-previous-frame}) you can step through the individual
2065 frames.  Both commands accept a numeric prefix to step through several
2066 frames at once.  You can go to a specific frame with @kbd{F}
2067 (@code{image-goto-frame}).  Frames are indexed from 1.  Typing @kbd{a
2068 +} (@code{image-increase-speed}) increases the speed of the animation,
2069 @kbd{a -} (@code{image-decrease-speed}) decreases it, and @kbd{a r}
2070 (@code{image-reverse-speed}) reverses it.  The command @kbd{a 0}
2071 (@code{image-reset-speed}) resets the speed to the original value.
2073 @cindex ImageMagick support
2074 @vindex imagemagick-enabled-types
2075 @vindex imagemagick-types-inhibit
2076   If Emacs was compiled with support for the ImageMagick library, it
2077 can use ImageMagick to render a wide variety of images.  The variable
2078 @code{imagemagick-enabled-types} lists the image types that Emacs may
2079 render using ImageMagick; each element in the list should be an
2080 internal ImageMagick name for an image type, as a symbol or an
2081 equivalent string (e.g., @code{BMP} for @file{.bmp} images).  To
2082 enable ImageMagick for all possible image types, change
2083 @code{imagemagick-enabled-types} to @code{t}.  The variable
2084 @code{imagemagick-types-inhibit} lists the image types which should
2085 never be rendered using ImageMagick, regardless of the value of
2086 @code{imagemagick-enabled-types} (the default list includes types like
2087 @code{C} and @code{HTML}, which ImageMagick can render as an image
2088 but Emacs should not).  To disable ImageMagick entirely, change
2089 @code{imagemagick-types-inhibit} to @code{t}.
2091 @findex thumbs-mode
2092 @cindex mode, Thumbs
2093   The Image-Dired package can also be used to view images as
2094 thumbnails.  @xref{Image-Dired}.
2096 @node Filesets
2097 @section Filesets
2098 @cindex filesets
2099 @cindex sets of files
2101 @findex filesets-init
2102   If you regularly edit a certain group of files, you can define them
2103 as a @dfn{fileset}.  This lets you perform certain operations, such as
2104 visiting, @code{query-replace}, and shell commands on all the files at
2105 once.  To make use of filesets, you must first add the expression
2106 @code{(filesets-init)} to your init file (@pxref{Init File}).  This
2107 adds a @samp{Filesets} sub-menu to the menu bar's @samp{File} menu.
2109 @findex filesets-add-buffer
2110 @findex filesets-remove-buffer
2111   The simplest way to define a fileset is by adding files to it one at
2112 a time.  To add a file to fileset @var{name}, visit the file and type
2113 @kbd{M-x filesets-add-buffer @key{RET} @var{name} @key{RET}}.  If
2114 there is no fileset @var{name}, this creates a new one, which
2115 initially contains only the current file.  The command @kbd{M-x
2116 filesets-remove-buffer} removes the current file from a fileset.
2118   You can also edit the list of filesets directly, with @kbd{M-x
2119 filesets-edit} (or by choosing @samp{Edit Filesets} from the
2120 @samp{Filesets} menu).  The editing is performed in a Customize buffer
2121 (@pxref{Easy Customization}).  Normally, a fileset is a simple list of
2122 files, but you can also define a fileset as a regular expression
2123 matching file names.  Some examples of these more complicated filesets
2124 are shown in the Customize buffer.  Remember to select @samp{Save for
2125 future sessions} if you want to use the same filesets in future Emacs
2126 sessions.
2128   You can use the command @kbd{M-x filesets-open} to visit all the
2129 files in a fileset, and @kbd{M-x filesets-close} to close them.  Use
2130 @kbd{M-x filesets-run-cmd} to run a shell command on all the files in
2131 a fileset.  These commands are also available from the @samp{Filesets}
2132 menu, where each existing fileset is represented by a submenu.
2134    @xref{Version Control}, for a different concept of filesets:
2135 groups of files bundled together for version control operations.
2136 Filesets of that type are unnamed, and do not persist across Emacs
2137 sessions.