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