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