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