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