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