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