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