]> code.delx.au - gnu-emacs/blob - man/files.texi
Add arch tagline
[gnu-emacs] / man / files.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
3 @c 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Files, Buffers, Keyboard Macros, Top
6 @chapter File Handling
7 @cindex files
8
9 The operating system stores data permanently in named @dfn{files}, so
10 most of the text you edit with Emacs comes from a file and is ultimately
11 stored in a file.
12
13 To edit a file, you must tell Emacs to read the file and prepare a
14 buffer containing a copy of the file's text. This is called
15 @dfn{visiting} the file. Editing commands apply directly to text in the
16 buffer; that is, to the copy inside Emacs. Your changes appear in the
17 file 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,
20 rename, and append to files, keep multiple versions of them, and operate
21 on 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 * Auto Save:: Auto Save periodically protects against loss of data.
29 * File Aliases:: Handling multiple names for one file.
30 * Version Control:: Version control systems (RCS, CVS and SCCS).
31 * Directories:: Creating, deleting, and listing file directories.
32 * Comparing Files:: Finding where two files differ.
33 * Misc File Ops:: Other things you can do on files.
34 * Compressed Files:: Accessing compressed files.
35 * File Archives:: Operating on tar, zip, jar etc. archive files.
36 * Remote Files:: Accessing files on other sites.
37 * Quoted File Names:: Quoting special characters in file names.
38 * File Name Cache:: Completion against a list of files you often use.
39 * File Conveniences:: Convenience Features for Finding Files.
40 * Filesets:: Handling sets of files.
41 @end menu
42
43 @node File Names
44 @section File Names
45 @cindex file names
46
47 Most Emacs commands that operate on a file require you to specify the
48 file name. (Saving and reverting are exceptions; the buffer knows which
49 file name to use for them.) You enter the file name using the
50 minibuffer (@pxref{Minibuffer}). @dfn{Completion} is available
51 (@pxref{Completion}) to make it easier to specify long file names. When
52 completing file names, Emacs ignores those whose file-name extensions
53 appear in the variable @code{completion-ignored-extensions}; see
54 @ref{Completion Options}.
55
56 For most operations, there is a @dfn{default file name} which is used
57 if you type just @key{RET} to enter an empty argument. Normally the
58 default file name is the name of the file visited in the current buffer;
59 this makes it easy to operate on that file with any of the Emacs file
60 commands.
61
62 @vindex default-directory
63 Each buffer has a default directory which is normally the same as the
64 directory of the file visited in that buffer. When you enter a file
65 name without a directory, the default directory is used. If you specify
66 a directory in a relative fashion, with a name that does not start with
67 a slash, it is interpreted with respect to the default directory. The
68 default directory is kept in the variable @code{default-directory},
69 which has a separate value in every buffer.
70
71 @findex cd
72 @findex pwd
73 The command @kbd{M-x pwd} displays the current buffer's default
74 directory, and the command @kbd{M-x cd} sets it (to a value read using
75 the minibuffer). A buffer's default directory changes only when the
76 @code{cd} command is used. A file-visiting buffer's default directory
77 is initialized to the directory of the file it visits. If you create
78 a buffer with @kbd{C-x b}, its default directory is copied from that
79 of the buffer that was current at the time.
80
81 For example, if the default file name is @file{/u/rms/gnu/gnu.tasks}
82 then the default directory is normally @file{/u/rms/gnu/}. If you
83 type just @samp{foo}, which does not specify a directory, it is short
84 for @file{/u/rms/gnu/foo}. @samp{../.login} would stand for
85 @file{/u/rms/.login}. @samp{new/foo} would stand for the file name
86 @file{/u/rms/gnu/new/foo}.
87
88 @vindex insert-default-directory
89 The default directory actually appears in the minibuffer when the
90 minibuffer becomes active to read a file name. This serves two
91 purposes: it @emph{shows} you what the default is, so that you can type
92 a relative file name and know with certainty what it will mean, and it
93 allows you to @emph{edit} the default to specify a different directory.
94 This insertion of the default directory is inhibited if the variable
95 @code{insert-default-directory} is set to @code{nil}.
96
97 Note that it is legitimate to type an absolute file name after you
98 enter the minibuffer, ignoring the presence of the default directory
99 name as part of the text. The final minibuffer contents may look
100 invalid, but that is not so. For example, if the minibuffer starts out
101 with @samp{/usr/tmp/} and you add @samp{/x1/rms/foo}, you get
102 @samp{/usr/tmp//x1/rms/foo}; but Emacs ignores everything through the
103 first slash in the double slash; the result is @samp{/x1/rms/foo}.
104 @xref{Minibuffer File}.
105
106 @cindex home directory shorthand
107 You can use @file{~/} in a file name to mean your home directory,
108 or @file{~@var{user-id}/} to mean the home directory of a user whose
109 login name is @code{user-id}. (On DOS and Windows systems, where a user
110 doesn't have a home directory, Emacs substitutes @file{~/} with the
111 value of the environment variable @code{HOME}; see @ref{General
112 Variables}.)
113
114 @cindex environment variables in file names
115 @cindex expansion of environment variables
116 @cindex @code{$} in file names
117 @anchor{File Names with $}@samp{$} in a file name is used to
118 substitute an environment variable. The environment variable name
119 consists of all the alphanumeric characters after the @samp{$};
120 alternatively, it can be enclosed in braces after the @samp{$}. For
121 example, if you have used the shell command @command{export
122 FOO=rms/hacks} to set up an environment variable named @env{FOO}, then
123 you can use @file{/u/$FOO/test.c} or @file{/u/$@{FOO@}/test.c} as an
124 abbreviation for @file{/u/rms/hacks/test.c}. If the environment
125 variable is not defined, no substitution occurs: @file{/u/$notdefined}
126 stands for itself (assuming the environment variable @env{notdefined}
127 is not defined).
128
129 Note that shell commands to set environment variables affect Emacs
130 only when done before Emacs is started.
131
132 To access a file with @samp{$} in its name, if the @samp{$} causes
133 expansion, type @samp{$$}. This pair is converted to a single
134 @samp{$} at the same time as variable substitution is performed for a
135 single @samp{$}. Alternatively, quote the whole file name with
136 @samp{/:} (@pxref{Quoted File Names}). File names which begin with a
137 literal @samp{~} should also be quoted with @samp{/:}.
138
139 @findex substitute-in-file-name
140 The Lisp function that performs the @samp{$}-substitution is called
141 @code{substitute-in-file-name}. The substitution is performed only on
142 file names read as such using the minibuffer.
143
144 You can include non-@acronym{ASCII} characters in file names if you set the
145 variable @code{file-name-coding-system} to a non-@code{nil} value.
146 @xref{File Name Coding}.
147
148 @node Visiting
149 @section Visiting Files
150 @cindex visiting files
151
152 @table @kbd
153 @item C-x C-f
154 Visit a file (@code{find-file}).
155 @item C-x C-r
156 Visit a file for viewing, without allowing changes to it
157 (@code{find-file-read-only}).
158 @item C-x C-v
159 Visit a different file instead of the one visited last
160 (@code{find-alternate-file}).
161 @item C-x 4 f
162 Visit a file, in another window (@code{find-file-other-window}). Don't
163 alter what is displayed in the selected window.
164 @item C-x 5 f
165 Visit a file, in a new frame (@code{find-file-other-frame}). Don't
166 alter what is displayed in the selected frame.
167 @item M-x find-file-literally
168 Visit a file with no conversion of the contents.
169 @end table
170
171 @cindex files, visiting and saving
172 @cindex saving files
173 @dfn{Visiting} a file means copying its contents into an Emacs
174 buffer so you can edit them. Emacs makes a new buffer for each file
175 that you visit. We often say that this buffer ``is visiting'' that
176 file, or that the buffer's ``visited file'' is that file. Emacs
177 constructs the buffer name from the file name by throwing away the
178 directory, keeping just the name proper. For example, a file named
179 @file{/usr/rms/emacs.tex} would get a buffer named @samp{emacs.tex}.
180 If there is already a buffer with that name, Emacs constructs a unique
181 name---the normal method is to append @samp{<2>}, @samp{<3>}, and so
182 on, but you can select other methods (@pxref{Uniquify}).
183
184 Each window's mode line shows the name of the buffer that is being displayed
185 in that window, so you can always tell what buffer you are editing.
186
187 The changes you make with editing commands are made in the Emacs
188 buffer. They do not take effect in the file that you visited, or any
189 permanent place, until you @dfn{save} the buffer. Saving the buffer
190 means that Emacs writes the current contents of the buffer into its
191 visited file. @xref{Saving}.
192
193 @cindex modified (buffer)
194 If a buffer contains changes that have not been saved, we say the
195 buffer is @dfn{modified}. This is important because it implies that
196 some changes will be lost if the buffer is not saved. The mode line
197 displays two stars near the left margin to indicate that the buffer is
198 modified.
199
200 @kindex C-x C-f
201 @findex find-file
202 To visit a file, use the command @kbd{C-x C-f} (@code{find-file}). Follow
203 the command with the name of the file you wish to visit, terminated by a
204 @key{RET}.
205
206 The file name is read using the minibuffer (@pxref{Minibuffer}), with
207 defaulting and completion in the standard manner (@pxref{File Names}).
208 While in the minibuffer, you can abort @kbd{C-x C-f} by typing
209 @kbd{C-g}. File-name completion ignores certain filenames; for more
210 about this, see @ref{Completion Options}.
211
212 Your confirmation that @kbd{C-x C-f} has completed successfully is
213 the appearance of new text on the screen and a new buffer name in the
214 mode line. If the specified file does not exist and you could not
215 create it, or exists but you can't read it, then you get an error,
216 with an error message displayed in the echo area.
217
218 If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
219 another copy. It selects the existing buffer containing that file.
220 However, before doing so, it checks whether the file itself has changed
221 since you visited or saved it last. If the file has changed, Emacs offers
222 to reread it.
223
224 @vindex large-file-warning-threshold
225 @cindex maximum buffer size exceeded, error message
226 If you try to visit a file larger than
227 @code{large-file-warning-threshold} (the default is 10000000, which is
228 about 10 megabytes), Emacs will ask you for confirmation first. You
229 can answer @kbd{y} to proceed with visiting the file. Note, however,
230 that Emacs cannot visit files that are larger than the maximum Emacs
231 buffer size, which is around 256 megabytes on 32-bit machines
232 (@pxref{Buffers}). If you try, Emacs will display an error message
233 saying that the maximum buffer size has been exceeded.
234
235 @cindex file selection dialog
236 On graphical displays there are two additional methods for
237 visiting files. Firstly, when Emacs is built with a suitable GUI
238 toolkit, commands invoked with the mouse (by clicking on the menu bar
239 or tool bar) use the toolkit's standard File Selection dialog instead
240 of prompting for the file name in the minibuffer. On Unix and
241 GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and
242 Motif toolkits; on MS-Windows and Mac, the GUI version does that by default.
243 For information on how to customize this, see @ref{Dialog Boxes}.
244
245 Secondly, Emacs supports ``drag and drop''; dropping a file into an
246 ordinary Emacs window visits the file using that window. However,
247 dropping a file into a window displaying a Dired buffer moves or
248 copies the file into the displayed directory. For details, see
249 @ref{Drag and Drop}, and @ref{Misc Dired Features}.
250
251 @cindex creating files
252 What if you want to create a new file? Just visit it. Emacs displays
253 @samp{(New file)} in the echo area, but in other respects behaves as if
254 you had visited an existing empty file. If you make any changes and
255 save them, the file is created.
256
257 Emacs recognizes from the contents of a file which convention it uses
258 to separate lines---newline (used on GNU/Linux and on Unix),
259 carriage-return linefeed (used on Microsoft systems), or just
260 carriage-return (used on the Macintosh)---and automatically converts the
261 contents to the normal Emacs convention, which is that the newline
262 character separates lines. This is a part of the general feature of
263 coding system conversion (@pxref{Coding Systems}), and makes it possible
264 to edit files imported from different operating systems with
265 equal convenience. If you change the text and save the file, Emacs
266 performs the inverse conversion, changing newlines back into
267 carriage-return linefeed or just carriage-return if appropriate.
268
269 @vindex find-file-run-dired
270 If the file you specify is actually a directory, @kbd{C-x C-f} invokes
271 Dired, the Emacs directory browser, so that you can ``edit'' the contents
272 of the directory (@pxref{Dired}). Dired is a convenient way to view, delete,
273 or operate on the files in the directory. However, if the variable
274 @code{find-file-run-dired} is @code{nil}, then it is an error to try
275 to visit a directory.
276
277 Files which are actually collections of other files, or @dfn{file
278 archives}, are visited in special modes which invoke a Dired-like
279 environment to allow operations on archive members. @xref{File
280 Archives}, for more about these features.
281
282 @cindex wildcard characters in file names
283 @vindex find-file-wildcards
284 If the file name you specify contains shell-style wildcard
285 characters, Emacs visits all the files that match it. Wildcards
286 include @samp{?}, @samp{*}, and @samp{[@dots{}]} sequences. To enter
287 the wild card @samp{?} in a file name in the minibuffer, you need to
288 type @kbd{C-q ?}. @xref{Quoted File Names}, for information on how to
289 visit a file whose name actually contains wildcard characters. You
290 can disable the wildcard feature by customizing
291 @code{find-file-wildcards}.
292
293 If you visit a file that the operating system won't let you modify,
294 or that is marked read-only, Emacs makes the buffer read-only too, so
295 that you won't go ahead and make changes that you'll have trouble
296 saving afterward. You can make the buffer writable with @kbd{C-x C-q}
297 (@code{toggle-read-only}). @xref{Misc Buffer}.
298
299 @kindex C-x C-r
300 @findex find-file-read-only
301 If you want to visit a file as read-only in order to protect
302 yourself from entering changes accidentally, visit it with the command
303 @kbd{C-x C-r} (@code{find-file-read-only}) instead of @kbd{C-x C-f}.
304
305 @kindex C-x C-v
306 @findex find-alternate-file
307 If you visit a nonexistent file unintentionally (because you typed the
308 wrong file name), use the @kbd{C-x C-v} command
309 (@code{find-alternate-file}) to visit the file you really wanted.
310 @kbd{C-x C-v} is similar to @kbd{C-x C-f}, but it kills the current
311 buffer (after first offering to save it if it is modified). When
312 @kbd{C-x C-v} reads the file name to visit, it inserts the entire
313 default file name in the buffer, with point just after the directory
314 part; this is convenient if you made a slight error in typing the name.
315
316 @kindex C-x 4 f
317 @findex find-file-other-window
318 @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
319 except that the buffer containing the specified file is selected in another
320 window. The window that was selected before @kbd{C-x 4 f} continues to
321 show the same buffer it was already showing. If this command is used when
322 only one window is being displayed, that window is split in two, with one
323 window showing the same buffer as before, and the other one showing the
324 newly requested file. @xref{Windows}.
325
326 @kindex C-x 5 f
327 @findex find-file-other-frame
328 @kbd{C-x 5 f} (@code{find-file-other-frame}) is similar, but opens a
329 new frame, or makes visible any existing frame showing the file you
330 seek. This feature is available only when you are using a window
331 system. @xref{Frames}.
332
333 @findex find-file-literally
334 If you wish to edit a file as a sequence of @acronym{ASCII} characters with no special
335 encoding or conversion, use the @kbd{M-x find-file-literally} command.
336 It visits a file, like @kbd{C-x C-f}, but does not do format conversion
337 (@pxref{Formatted Text}), character code conversion (@pxref{Coding
338 Systems}), or automatic uncompression (@pxref{Compressed Files}), and
339 does not add a final newline because of @code{require-final-newline}.
340 If you already have visited the same file in the usual (non-literal)
341 manner, this command asks you whether to visit it literally instead.
342
343 @vindex find-file-hook
344 @vindex find-file-not-found-functions
345 Two special hook variables allow extensions to modify the operation of
346 visiting files. Visiting a file that does not exist runs the functions
347 in the list @code{find-file-not-found-functions}; this variable holds a list
348 of functions, and the functions are called one by one (with no
349 arguments) until one of them returns non-@code{nil}. This is not a
350 normal hook, and the name ends in @samp{-functions} rather than @samp{-hook}
351 to indicate that fact.
352
353 Successful visiting of any file, whether existing or not, calls the
354 functions in the list @code{find-file-hook}, with no arguments.
355 This variable is a normal hook. In the case of a nonexistent file, the
356 @code{find-file-not-found-functions} are run first. @xref{Hooks}.
357
358 There are several ways to specify automatically the major mode for
359 editing the file (@pxref{Choosing Modes}), and to specify local
360 variables defined for that file (@pxref{File Variables}).
361
362 @node Saving
363 @section Saving Files
364
365 @dfn{Saving} a buffer in Emacs means writing its contents back into the file
366 that was visited in the buffer.
367
368 @menu
369 * Save Commands:: Commands for saving files.
370 * Backup:: How Emacs saves the old version of your file.
371 * Customize Save:: Customizing the saving of files.
372 * Interlocking:: How Emacs protects against simultaneous editing
373 of one file by two users.
374 * Shadowing: File Shadowing. Copying files to "shadows" automatically.
375 * Time Stamps:: Emacs can update time stamps on saved files.
376 @end menu
377
378 @node Save Commands
379 @subsection Commands for Saving Files
380
381 These are the commands that relate to saving and writing files.
382
383 @table @kbd
384 @item C-x C-s
385 Save the current buffer in its visited file on disk (@code{save-buffer}).
386 @item C-x s
387 Save any or all buffers in their visited files (@code{save-some-buffers}).
388 @item M-~
389 Forget that the current buffer has been changed (@code{not-modified}).
390 With prefix argument (@kbd{C-u}), mark the current buffer as changed.
391 @item C-x C-w
392 Save the current buffer with a specified file name (@code{write-file}).
393 @item M-x set-visited-file-name
394 Change the file name under which the current buffer will be saved.
395 @end table
396
397 @kindex C-x C-s
398 @findex save-buffer
399 When you wish to save the file and make your changes permanent, type
400 @kbd{C-x C-s} (@code{save-buffer}). After saving is finished, @kbd{C-x C-s}
401 displays a message like this:
402
403 @example
404 Wrote /u/rms/gnu/gnu.tasks
405 @end example
406
407 @noindent
408 If the selected buffer is not modified (no changes have been made in it
409 since the buffer was created or last saved), saving is not really done,
410 because it would have no effect. Instead, @kbd{C-x C-s} displays a message
411 like this in the echo area:
412
413 @example
414 (No changes need to be saved)
415 @end example
416
417 @kindex C-x s
418 @findex save-some-buffers
419 The command @kbd{C-x s} (@code{save-some-buffers}) offers to save any
420 or all modified buffers. It asks you what to do with each buffer. The
421 possible responses are analogous to those of @code{query-replace}:
422
423 @table @kbd
424 @item y
425 Save this buffer and ask about the rest of the buffers.
426 @item n
427 Don't save this buffer, but ask about the rest of the buffers.
428 @item !
429 Save this buffer and all the rest with no more questions.
430 @c following generates acceptable underfull hbox
431 @item @key{RET}
432 Terminate @code{save-some-buffers} without any more saving.
433 @item .
434 Save this buffer, then exit @code{save-some-buffers} without even asking
435 about other buffers.
436 @item C-r
437 View the buffer that you are currently being asked about. When you exit
438 View mode, you get back to @code{save-some-buffers}, which asks the
439 question again.
440 @item d
441 Diff the buffer against its corresponding file, so you can see
442 what changes you would be saving.
443 @item C-h
444 Display a help message about these options.
445 @end table
446
447 @kbd{C-x C-c}, the key sequence to exit Emacs, invokes
448 @code{save-some-buffers} and therefore asks the same questions.
449
450 @kindex M-~
451 @findex not-modified
452 If you have changed a buffer but you do not want to save the changes,
453 you should take some action to prevent it. Otherwise, each time you use
454 @kbd{C-x s} or @kbd{C-x C-c}, you are liable to save this buffer by
455 mistake. One thing you can do is type @kbd{M-~} (@code{not-modified}),
456 which clears out the indication that the buffer is modified. If you do
457 this, none of the save commands will believe that the buffer needs to be
458 saved. (@samp{~} is often used as a mathematical symbol for `not'; thus
459 @kbd{M-~} is `not', metafied.) You could also use
460 @code{set-visited-file-name} (see below) to mark the buffer as visiting
461 a different file name, one which is not in use for anything important.
462 Alternatively, you can cancel all the changes made since the file was
463 visited or saved, by reading the text from the file again. This is
464 called @dfn{reverting}. @xref{Reverting}. (You could also undo all the
465 changes by repeating the undo command @kbd{C-x u} until you have undone
466 all the changes; but reverting is easier.) You can also kill the buffer.
467
468 @findex set-visited-file-name
469 @kbd{M-x set-visited-file-name} alters the name of the file that the
470 current buffer is visiting. It reads the new file name using the
471 minibuffer. Then it marks the buffer as visiting that file name, and
472 changes the buffer name correspondingly. @code{set-visited-file-name}
473 does not save the buffer in the newly visited file; it just alters the
474 records inside Emacs in case you do save later. It also marks the
475 buffer as ``modified'' so that @kbd{C-x C-s} in that buffer
476 @emph{will} save.
477
478 @kindex C-x C-w
479 @findex write-file
480 If you wish to mark the buffer as visiting a different file and save it
481 right away, use @kbd{C-x C-w} (@code{write-file}). It is
482 equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}
483 (except that @kbd{C-x C-w} asks for confirmation if the file exists).
484 @kbd{C-x C-s} used on a buffer that is not visiting a file has the
485 same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
486 buffer as visiting that file, and saves it there. The default file name in
487 a buffer that is not visiting a file is made by combining the buffer name
488 with the buffer's default directory (@pxref{File Names}).
489
490 If the new file name implies a major mode, then @kbd{C-x C-w} switches
491 to that major mode, in most cases. The command
492 @code{set-visited-file-name} also does this. @xref{Choosing Modes}.
493
494 If Emacs is about to save a file and sees that the date of the latest
495 version on disk does not match what Emacs last read or wrote, Emacs
496 notifies you of this fact, because it probably indicates a problem caused
497 by simultaneous editing and requires your immediate attention.
498 @xref{Interlocking,, Simultaneous Editing}.
499
500 @node Backup
501 @subsection Backup Files
502 @cindex backup file
503 @vindex make-backup-files
504 @vindex vc-make-backup-files
505
506 On most operating systems, rewriting a file automatically destroys all
507 record of what the file used to contain. Thus, saving a file from Emacs
508 throws away the old contents of the file---or it would, except that
509 Emacs carefully copies the old contents to another file, called the
510 @dfn{backup} file, before actually saving.
511
512 For most files, the variable @code{make-backup-files} determines
513 whether to make backup files. On most operating systems, its default
514 value is @code{t}, so that Emacs does write backup files.
515
516 For files managed by a version control system (@pxref{Version
517 Control}), the variable @code{vc-make-backup-files} determines whether
518 to make backup files. By default it is @code{nil}, since backup files
519 are redundant when you store all the previous versions in a version
520 control system. @xref{General VC Options,,,emacs-xtra, Specialized
521 Emacs Features}.
522
523 At your option, Emacs can keep either a single backup for each file,
524 or make a series of numbered backup files for each file that you edit.
525
526 @vindex backup-enable-predicate
527 @vindex temporary-file-directory
528 @vindex small-temporary-file-directory
529 The default value of the @code{backup-enable-predicate} variable
530 prevents backup files being written for files in the directories used
531 for temporary files, specified by @code{temporary-file-directory} or
532 @code{small-temporary-file-directory}.
533
534 Emacs makes a backup for a file only the first time the file is saved
535 from one buffer. No matter how many times you save a file, its backup file
536 continues to contain the contents from before the file was visited.
537 Normally this means that the backup file contains the contents from before
538 the current editing session; however, if you kill the buffer and then visit
539 the file again, a new backup file will be made by the next save.
540
541 You can also explicitly request making another backup file from a
542 buffer even though it has already been saved at least once. If you save
543 the buffer with @kbd{C-u C-x C-s}, the version thus saved will be made
544 into a backup file if you save the buffer again. @kbd{C-u C-u C-x C-s}
545 saves the buffer, but first makes the previous file contents into a new
546 backup file. @kbd{C-u C-u C-u C-x C-s} does both things: it makes a
547 backup from the previous contents, and arranges to make another from the
548 newly saved contents if you save again.
549
550 @menu
551 * One or Many: Numbered Backups. Whether to make one backup file or many.
552 * Names: Backup Names. How backup files are named.
553 * Deletion: Backup Deletion. Emacs deletes excess numbered backups.
554 * Copying: Backup Copying. Backups can be made by copying or renaming.
555 @end menu
556
557 @node Numbered Backups
558 @subsubsection Numbered Backups
559
560 @vindex version-control
561 The choice of single backup file or multiple numbered backup files
562 is controlled by the variable @code{version-control}. Its possible
563 values are:
564
565 @table @code
566 @item t
567 Make numbered backups.
568 @item nil
569 Make numbered backups for files that have numbered backups already.
570 Otherwise, make single backups.
571 @item never
572 Never make numbered backups; always make single backups.
573 @end table
574
575 @noindent
576 The usual way to set this variable is globally, through your
577 @file{.emacs} file or the customization buffer. However, you can set
578 @code{version-control} locally in an individual buffer to control the
579 making of backups for that buffer's file. For example, Rmail mode
580 locally sets @code{version-control} to @code{never} to make sure that
581 there is only one backup for an Rmail file. @xref{Locals}.
582
583 @cindex @env{VERSION_CONTROL} environment variable
584 If you set the environment variable @env{VERSION_CONTROL}, to tell
585 various GNU utilities what to do with backup files, Emacs also obeys the
586 environment variable by setting the Lisp variable @code{version-control}
587 accordingly at startup. If the environment variable's value is @samp{t}
588 or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
589 value is @samp{nil} or @samp{existing}, then @code{version-control}
590 becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
591 @code{version-control} becomes @code{never}.
592
593 @node Backup Names
594 @subsubsection Single or Numbered Backups
595
596 When Emacs makes a single backup file, its name is normally
597 constructed by appending @samp{~} to the file name being edited; thus,
598 the backup file for @file{eval.c} would be @file{eval.c~}.
599
600 @vindex make-backup-file-name-function
601 @vindex backup-directory-alist
602 You can change this behavior by defining the variable
603 @code{make-backup-file-name-function} to a suitable function.
604 Alternatively you can customize the variable
605 @code{backup-directory-alist} to specify that files matching certain
606 patterns should be backed up in specific directories.
607
608 A typical use is to add an element @code{("." . @var{dir})} to make
609 all backups in the directory with absolute name @var{dir}; Emacs
610 modifies the backup file names to avoid clashes between files with the
611 same names originating in different directories. Alternatively,
612 adding, say, @code{("." . ".~")} would make backups in the invisible
613 subdirectory @file{.~} of the original file's directory. Emacs
614 creates the directory, if necessary, to make the backup.
615
616 If access control stops Emacs from writing backup files under the usual
617 names, it writes the backup file as @file{%backup%~} in your home
618 directory. Only one such file can exist, so only the most recently
619 made such backup is available.
620
621 If you choose to have a series of numbered backup files, backup file
622 names contain @samp{.~}, the number, and another @samp{~} after the
623 original file name. Thus, the backup files of @file{eval.c} would be
624 called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, all the way
625 through names like @file{eval.c.~259~} and beyond. The variable
626 @code{backup-directory-alist} applies to numbered backups just as
627 usual.
628
629 @node Backup Deletion
630 @subsubsection Automatic Deletion of Backups
631
632 To prevent excessive consumption of disk space, Emacs can delete numbered
633 backup versions automatically. Generally Emacs keeps the first few backups
634 and the latest few backups, deleting any in between. This happens every
635 time a new backup is made.
636
637 @vindex kept-old-versions
638 @vindex kept-new-versions
639 The two variables @code{kept-old-versions} and
640 @code{kept-new-versions} control this deletion. Their values are,
641 respectively, the number of oldest (lowest-numbered) backups to keep
642 and the number of newest (highest-numbered) ones to keep, each time a
643 new backup is made. The backups in the middle (excluding those oldest
644 and newest) are the excess middle versions---those backups are
645 deleted. These variables' values are used when it is time to delete
646 excess versions, just after a new backup version is made; the newly
647 made backup is included in the count in @code{kept-new-versions}. By
648 default, both variables are 2.
649
650 @vindex delete-old-versions
651 If @code{delete-old-versions} is @code{t}, Emacs deletes the excess
652 backup files silently. If it is @code{nil}, the default, Emacs asks
653 you whether it should delete the excess backup versions. If it has
654 any other value, then Emacs never automatically deletes backups.
655
656 Dired's @kbd{.} (Period) command can also be used to delete old versions.
657 @xref{Dired Deletion}.
658
659 @node Backup Copying
660 @subsubsection Copying vs.@: Renaming
661
662 Backup files can be made by copying the old file or by renaming it.
663 This makes a difference when the old file has multiple names (hard
664 links). If the old file is renamed into the backup file, then the
665 alternate names become names for the backup file. If the old file is
666 copied instead, then the alternate names remain names for the file
667 that you are editing, and the contents accessed by those names will be
668 the new contents.
669
670 The method of making a backup file may also affect the file's owner
671 and group. If copying is used, these do not change. If renaming is used,
672 you become the file's owner, and the file's group becomes the default
673 (different operating systems have different defaults for the group).
674
675 Having the owner change is usually a good idea, because then the owner
676 always shows who last edited the file. Also, the owners of the backups
677 show who produced those versions. Occasionally there is a file whose
678 owner should not change; it is a good idea for such files to contain
679 local variable lists to set @code{backup-by-copying-when-mismatch}
680 locally (@pxref{File Variables}).
681
682 @vindex backup-by-copying
683 @vindex backup-by-copying-when-linked
684 @vindex backup-by-copying-when-mismatch
685 @vindex backup-by-copying-when-privileged-mismatch
686 @cindex file ownership, and backup
687 @cindex backup, and user-id
688 The choice of renaming or copying is controlled by four variables.
689 Renaming is the default choice. If the variable
690 @code{backup-by-copying} is non-@code{nil}, copying is used. Otherwise,
691 if the variable @code{backup-by-copying-when-linked} is non-@code{nil},
692 then copying is used for files that have multiple names, but renaming
693 may still be used when the file being edited has only one name. If the
694 variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then
695 copying is used if renaming would cause the file's owner or group to
696 change. @code{backup-by-copying-when-mismatch} is @code{t} by default
697 if you start Emacs as the superuser. The fourth variable,
698 @code{backup-by-copying-when-privileged-mismatch}, gives the highest
699 numeric user-id for which @code{backup-by-copying-when-mismatch} will be
700 forced on. This is useful when low-numbered user-ids are assigned to
701 special system users, such as @code{root}, @code{bin}, @code{daemon},
702 etc., which must maintain ownership of files.
703
704 When a file is managed with a version control system (@pxref{Version
705 Control}), Emacs does not normally make backups in the usual way for
706 that file. But check-in and check-out are similar in some ways to
707 making backups. One unfortunate similarity is that these operations
708 typically break hard links, disconnecting the file name you visited from
709 any alternate names for the same file. This has nothing to do with
710 Emacs---the version control system does it.
711
712 @node Customize Save
713 @subsection Customizing Saving of Files
714
715 @vindex require-final-newline
716 If the value of the variable @code{require-final-newline} is
717 @code{t}, saving or writing a file silently puts a newline at the end
718 if there isn't already one there. If the value is @code{visit}, Emacs
719 adds a newline at the end of any file that doesn't have one, just
720 after it visits the file. (This marks the buffer as modified, and you
721 can undo it.) If the value is @code{visit-save}, that means to add
722 newlines both on visiting and on saving. If the value is @code{nil},
723 Emacs leaves the end of the file unchanged; if it's neither @code{nil}
724 nor @code{t}, Emacs asks you whether to add a newline. The default is
725 @code{nil}.
726
727 @vindex mode-require-final-newline
728 Many major modes are designed for specific kinds of files that are
729 always supposed to end in newlines. These major modes set the
730 variable @code{require-final-newline} according to
731 @code{mode-require-final-newline}. By setting the latter variable,
732 you can control how these modes handle final newlines.
733
734 @vindex write-region-inhibit-fsync
735 When Emacs saves a file, it invokes the @code{fsync} system call to
736 force the data immediately out to disk. This is important for safety
737 if the system crashes or in case of power outage. However, it can be
738 disruptive on laptops using power saving, because it requires the disk
739 to spin up each time you save a file. Setting
740 @code{write-region-inhibit-fsync} to a non-@code{nil} value disables
741 this synchronization. Be careful---this means increased risk of data
742 loss.
743
744 @node Interlocking
745 @subsection Protection against Simultaneous Editing
746
747 @cindex file dates
748 @cindex simultaneous editing
749 Simultaneous editing occurs when two users visit the same file, both
750 make changes, and then both save them. If nobody were informed that
751 this was happening, whichever user saved first would later find that his
752 changes were lost.
753
754 On some systems, Emacs notices immediately when the second user starts
755 to change the file, and issues an immediate warning. On all systems,
756 Emacs checks when you save the file, and warns if you are about to
757 overwrite another user's changes. You can prevent loss of the other
758 user's work by taking the proper corrective action instead of saving the
759 file.
760
761 @findex ask-user-about-lock
762 @cindex locking files
763 When you make the first modification in an Emacs buffer that is
764 visiting a file, Emacs records that the file is @dfn{locked} by you.
765 (It does this by creating a symbolic link in the same directory with a
766 different name.) Emacs removes the lock when you save the changes. The
767 idea is that the file is locked whenever an Emacs buffer visiting it has
768 unsaved changes.
769
770 @cindex collision
771 If you begin to modify the buffer while the visited file is locked by
772 someone else, this constitutes a @dfn{collision}. When Emacs detects a
773 collision, it asks you what to do, by calling the Lisp function
774 @code{ask-user-about-lock}. You can redefine this function for the sake
775 of customization. The standard definition of this function asks you a
776 question and accepts three possible answers:
777
778 @table @kbd
779 @item s
780 Steal the lock. Whoever was already changing the file loses the lock,
781 and you gain the lock.
782 @item p
783 Proceed. Go ahead and edit the file despite its being locked by someone else.
784 @item q
785 Quit. This causes an error (@code{file-locked}), and the buffer
786 contents remain unchanged---the modification you were trying to make
787 does not actually take place.
788 @end table
789
790 Note that locking works on the basis of a file name; if a file has
791 multiple names, Emacs does not realize that the two names are the same file
792 and cannot prevent two users from editing it simultaneously under different
793 names. However, basing locking on names means that Emacs can interlock the
794 editing of new files that will not really exist until they are saved.
795
796 Some systems are not configured to allow Emacs to make locks, and
797 there are cases where lock files cannot be written. In these cases,
798 Emacs cannot detect trouble in advance, but it still can detect the
799 collision when you try to save a file and overwrite someone else's
800 changes.
801
802 If Emacs or the operating system crashes, this may leave behind lock
803 files which are stale, so you may occasionally get warnings about
804 spurious collisions. When you determine that the collision is spurious,
805 just use @kbd{p} to tell Emacs to go ahead anyway.
806
807 Every time Emacs saves a buffer, it first checks the last-modification
808 date of the existing file on disk to verify that it has not changed since the
809 file was last visited or saved. If the date does not match, it implies
810 that changes were made in the file in some other way, and these changes are
811 about to be lost if Emacs actually does save. To prevent this, Emacs
812 displays a warning message and asks for confirmation before saving.
813 Occasionally you will know why the file was changed and know that it does
814 not matter; then you can answer @kbd{yes} and proceed. Otherwise, you should
815 cancel the save with @kbd{C-g} and investigate the situation.
816
817 The first thing you should do when notified that simultaneous editing
818 has already taken place is to list the directory with @kbd{C-u C-x C-d}
819 (@pxref{Directories}). This shows the file's current author. You
820 should attempt to contact him to warn him not to continue editing.
821 Often the next step is to save the contents of your Emacs buffer under a
822 different name, and use @code{diff} to compare the two files.@refill
823
824 @node File Shadowing
825 @subsection Shadowing Files
826 @cindex shadow files
827 @cindex file shadows
828 @findex shadow-initialize
829
830 @table @kbd
831 @item M-x shadow-initialize
832 Set up file shadowing.
833 @item M-x shadow-define-literal-group
834 Declare a single file to be shared between sites.
835 @item M-x shadow-define-regexp-group
836 Make all files that match each of a group of files be shared between hosts.
837 @item M-x shadow-define-cluster @key{RET} @var{name} @key{RET}
838 Define a shadow file cluster @var{name}.
839 @item M-x shadow-copy-files
840 Copy all pending shadow files.
841 @item M-x shadow-cancel
842 Cancel the instruction to shadow some files.
843 @end table
844
845 You can arrange to keep identical @dfn{shadow} copies of certain files
846 in more than one place---possibly on different machines. To do this,
847 first you must set up a @dfn{shadow file group}, which is a set of
848 identically-named files shared between a list of sites. The file
849 group is permanent and applies to further Emacs sessions as well as
850 the current one. Once the group is set up, every time you exit Emacs,
851 it will copy the file you edited to the other files in its group. You
852 can also do the copying without exiting Emacs, by typing @kbd{M-x
853 shadow-copy-files}.
854
855 To set up a shadow file group, use @kbd{M-x
856 shadow-define-literal-group} or @kbd{M-x shadow-define-regexp-group}.
857 See their documentation strings for further information.
858
859 Before copying a file to its shadows, Emacs asks for confirmation.
860 You can answer ``no'' to bypass copying of this file, this time. If
861 you want to cancel the shadowing permanently for a certain file, use
862 @kbd{M-x shadow-cancel} to eliminate or change the shadow file group.
863
864 A @dfn{shadow cluster} is a group of hosts that share directories, so
865 that copying to or from one of them is sufficient to update the file
866 on all of them. Each shadow cluster has a name, and specifies the
867 network address of a primary host (the one we copy files to), and a
868 regular expression that matches the host names of all the other hosts
869 in the cluster. You can define a shadow cluster with @kbd{M-x
870 shadow-define-cluster}.
871
872 @node Time Stamps
873 @subsection Updating Time Stamps Automatically
874 @cindex time stamps
875 @cindex modification dates
876 @cindex locale, date format
877
878 You can arrange to put a time stamp in a file, so that it will be updated
879 automatically each time you edit and save the file. The time stamp
880 has to be in the first eight lines of the file, and you should
881 insert it like this:
882
883 @example
884 Time-stamp: <>
885 @end example
886
887 @noindent
888 or like this:
889
890 @example
891 Time-stamp: " "
892 @end example
893
894 @findex time-stamp
895 Then add the hook function @code{time-stamp} to the hook
896 @code{before-save-hook}; that hook function will automatically update
897 the time stamp, inserting the current date and time when you save the
898 file. You can also use the command @kbd{M-x time-stamp} to update the
899 time stamp manually. For other customizations, see the Custom group
900 @code{time-stamp}. Note that non-numeric fields in the time stamp are
901 formatted according to your locale setting (@pxref{Environment}).
902
903 @node Reverting
904 @section Reverting a Buffer
905 @findex revert-buffer
906 @cindex drastic changes
907 @cindex reread a file
908
909 If you have made extensive changes to a file and then change your mind
910 about them, you can get rid of them by reading in the previous version
911 of the file. To do this, use @kbd{M-x revert-buffer}, which operates on
912 the current buffer. Since reverting a buffer unintentionally could lose
913 a lot of work, you must confirm this command with @kbd{yes}.
914
915 @code{revert-buffer} tries to position point in such a way that, if
916 the file was edited only slightly, you will be at approximately the
917 same piece of text after reverting as before. However, if you have made
918 drastic changes, point may wind up in a totally different piece of text.
919
920 Reverting marks the buffer as ``not modified'' until another change is
921 made.
922
923 Some kinds of buffers whose contents reflect data bases other than files,
924 such as Dired buffers, can also be reverted. For them, reverting means
925 recalculating their contents from the appropriate data base. Buffers
926 created explicitly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
927 reports an error when asked to do so.
928
929 @vindex revert-without-query
930 When you edit a file that changes automatically and frequently---for
931 example, a log of output from a process that continues to run---it may be
932 useful for Emacs to revert the file without querying you, whenever you
933 visit the file again with @kbd{C-x C-f}.
934
935 To request this behavior, set the variable @code{revert-without-query}
936 to a list of regular expressions. When a file name matches one of these
937 regular expressions, @code{find-file} and @code{revert-buffer} will
938 revert it automatically if it has changed---provided the buffer itself
939 is not modified. (If you have edited the text, it would be wrong to
940 discard your changes.)
941
942 @cindex Global Auto-Revert mode
943 @cindex mode, Global Auto-Revert
944 @cindex Auto-Revert mode
945 @cindex mode, Auto-Revert
946 @findex global-auto-revert-mode
947 @findex auto-revert-mode
948 @findex auto-revert-tail-mode
949
950 You may find it useful to have Emacs revert files automatically when
951 they change. Three minor modes are available to do this.
952
953 @kbd{M-x global-auto-revert-mode} enables Global Auto-Revert mode,
954 which periodically checks all file buffers and reverts when the
955 corresponding file has changed. @kbd{M-x auto-revert-mode} enables a
956 local version, Auto-Revert mode, which applies only to the current
957 buffer.
958
959 You can use Auto-Revert mode to ``tail'' a file such as a system
960 log, so that changes made to that file by other programs are
961 continuously displayed. To do this, just move the point to the end of
962 the buffer, and it will stay there as the file contents change.
963 However, if you are sure that the file will only change by growing at
964 the end, use Auto-Revert Tail mode instead
965 (@code{auto-revert-tail-mode}). It is more efficient for this.
966
967 @vindex auto-revert-interval
968 The variable @code{auto-revert-interval} controls how often to check
969 for a changed file. Since checking a remote file is too slow, these
970 modes do not check or revert remote files.
971
972 @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
973 visit files under version control.
974
975 @node Auto Save
976 @section Auto-Saving: Protection Against Disasters
977 @cindex Auto Save mode
978 @cindex mode, Auto Save
979 @cindex crashes
980
981 Emacs saves all the visited files from time to time (based on counting
982 your keystrokes) without being asked. This is called @dfn{auto-saving}.
983 It prevents you from losing more than a limited amount of work if the
984 system crashes.
985
986 When Emacs determines that it is time for auto-saving, it considers
987 each buffer, and each is auto-saved if auto-saving is enabled for it
988 and it has been changed since the last time it was auto-saved. The
989 message @samp{Auto-saving...} is displayed in the echo area during
990 auto-saving, if any files are actually auto-saved. Errors occurring
991 during auto-saving are caught so that they do not interfere with the
992 execution of commands you have been typing.
993
994 @menu
995 * Files: Auto Save Files. The file where auto-saved changes are
996 actually made until you save the file.
997 * Control: Auto Save Control. Controlling when and how often to auto-save.
998 * Recover:: Recovering text from auto-save files.
999 @end menu
1000
1001 @node Auto Save Files
1002 @subsection Auto-Save Files
1003
1004 Auto-saving does not normally save in the files that you visited, because
1005 it can be very undesirable to save a program that is in an inconsistent
1006 state when you have made half of a planned change. Instead, auto-saving
1007 is done in a different file called the @dfn{auto-save file}, and the
1008 visited file is changed only when you request saving explicitly (such as
1009 with @kbd{C-x C-s}).
1010
1011 Normally, the auto-save file name is made by appending @samp{#} to the
1012 front and rear of the visited file name. Thus, a buffer visiting file
1013 @file{foo.c} is auto-saved in a file @file{#foo.c#}. Most buffers that
1014 are not visiting files are auto-saved only if you request it explicitly;
1015 when they are auto-saved, the auto-save file name is made by appending
1016 @samp{#} to the front and rear of buffer name, then
1017 adding digits and letters at the end for uniqueness. For
1018 example, the @samp{*mail*} buffer in which you compose messages to be
1019 sent might be auto-saved in a file named @file{#*mail*#704juu}. Auto-save file
1020 names are made this way unless you reprogram parts of Emacs to do
1021 something different (the functions @code{make-auto-save-file-name} and
1022 @code{auto-save-file-name-p}). The file name to be used for auto-saving
1023 in a buffer is calculated when auto-saving is turned on in that buffer.
1024
1025 @cindex auto-save for remote files
1026 @vindex auto-save-file-name-transforms
1027 The variable @code{auto-save-file-name-transforms} allows a degree
1028 of control over the auto-save file name. It lets you specify a series
1029 of regular expressions and replacements to transform the auto save
1030 file name. The default value puts the auto-save files for remote
1031 files (@pxref{Remote Files}) into the temporary file directory on the
1032 local machine.
1033
1034 When you delete a substantial part of the text in a large buffer, auto
1035 save turns off temporarily in that buffer. This is because if you
1036 deleted the text unintentionally, you might find the auto-save file more
1037 useful if it contains the deleted text. To reenable auto-saving after
1038 this happens, save the buffer with @kbd{C-x C-s}, or use @kbd{C-u 1 M-x
1039 auto-save-mode}.
1040
1041 @vindex auto-save-visited-file-name
1042 If you want auto-saving to be done in the visited file rather than
1043 in a separate auto-save file, set the variable
1044 @code{auto-save-visited-file-name} to a non-@code{nil} value. In this
1045 mode, there is no real difference between auto-saving and explicit
1046 saving.
1047
1048 @vindex delete-auto-save-files
1049 A buffer's auto-save file is deleted when you save the buffer in its
1050 visited file. (You can inhibit this by setting the variable
1051 @code{delete-auto-save-files} to @code{nil}.) Changing the visited
1052 file name with @kbd{C-x C-w} or @code{set-visited-file-name} renames
1053 any auto-save file to go with the new visited name.
1054
1055 @node Auto Save Control
1056 @subsection Controlling Auto-Saving
1057
1058 @vindex auto-save-default
1059 @findex auto-save-mode
1060 Each time you visit a file, auto-saving is turned on for that file's
1061 buffer if the variable @code{auto-save-default} is non-@code{nil} (but not
1062 in batch mode; @pxref{Entering Emacs}). The default for this variable is
1063 @code{t}, so auto-saving is the usual practice for file-visiting buffers.
1064 Auto-saving can be turned on or off for any existing buffer with the
1065 command @kbd{M-x auto-save-mode}. Like other minor mode commands, @kbd{M-x
1066 auto-save-mode} turns auto-saving on with a positive argument, off with a
1067 zero or negative argument; with no argument, it toggles.
1068
1069 @vindex auto-save-interval
1070 Emacs does auto-saving periodically based on counting how many characters
1071 you have typed since the last time auto-saving was done. The variable
1072 @code{auto-save-interval} specifies how many characters there are between
1073 auto-saves. By default, it is 300. Emacs doesn't accept values that are
1074 too small: if you customize @code{auto-save-interval} to a value less
1075 than 20, Emacs will behave as if the value is 20.
1076
1077 @vindex auto-save-timeout
1078 Auto-saving also takes place when you stop typing for a while. The
1079 variable @code{auto-save-timeout} says how many seconds Emacs should
1080 wait before it does an auto save (and perhaps also a garbage
1081 collection). (The actual time period is longer if the current buffer is
1082 long; this is a heuristic which aims to keep out of your way when you
1083 are editing long buffers, in which auto-save takes an appreciable amount
1084 of time.) Auto-saving during idle periods accomplishes two things:
1085 first, it makes sure all your work is saved if you go away from the
1086 terminal for a while; second, it may avoid some auto-saving while you
1087 are actually typing.
1088
1089 Emacs also does auto-saving whenever it gets a fatal error. This
1090 includes killing the Emacs job with a shell command such as @samp{kill
1091 %emacs}, or disconnecting a phone line or network connection.
1092
1093 @findex do-auto-save
1094 You can request an auto-save explicitly with the command @kbd{M-x
1095 do-auto-save}.
1096
1097 @node Recover
1098 @subsection Recovering Data from Auto-Saves
1099
1100 @findex recover-file
1101 You can use the contents of an auto-save file to recover from a loss
1102 of data with the command @kbd{M-x recover-file @key{RET} @var{file}
1103 @key{RET}}. This visits @var{file} and then (after your confirmation)
1104 restores the contents from its auto-save file @file{#@var{file}#}.
1105 You can then save with @kbd{C-x C-s} to put the recovered text into
1106 @var{file} itself. For example, to recover file @file{foo.c} from its
1107 auto-save file @file{#foo.c#}, do:@refill
1108
1109 @example
1110 M-x recover-file @key{RET} foo.c @key{RET}
1111 yes @key{RET}
1112 C-x C-s
1113 @end example
1114
1115 Before asking for confirmation, @kbd{M-x recover-file} displays a
1116 directory listing describing the specified file and the auto-save file,
1117 so you can compare their sizes and dates. If the auto-save file
1118 is older, @kbd{M-x recover-file} does not offer to read it.
1119
1120 @findex recover-session
1121 If Emacs or the computer crashes, you can recover all the files you
1122 were editing from their auto save files with the command @kbd{M-x
1123 recover-session}. This first shows you a list of recorded interrupted
1124 sessions. Move point to the one you choose, and type @kbd{C-c C-c}.
1125
1126 Then @code{recover-session} asks about each of the files that were
1127 being edited during that session, asking whether to recover that file.
1128 If you answer @kbd{y}, it calls @code{recover-file}, which works in its
1129 normal fashion. It shows the dates of the original file and its
1130 auto-save file, and asks once again whether to recover that file.
1131
1132 When @code{recover-session} is done, the files you've chosen to
1133 recover are present in Emacs buffers. You should then save them. Only
1134 this---saving them---updates the files themselves.
1135
1136 @vindex auto-save-list-file-prefix
1137 Emacs records interrupted sessions for later recovery in files named
1138 @file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. All
1139 of this name except @file{@var{pid}-@var{hostname}} comes from the
1140 value of @code{auto-save-list-file-prefix}. You can record sessions
1141 in a different place by customizing that variable. If you set
1142 @code{auto-save-list-file-prefix} to @code{nil} in your @file{.emacs}
1143 file, sessions are not recorded for recovery.
1144
1145 @node File Aliases
1146 @section File Name Aliases
1147 @cindex symbolic links (visiting)
1148 @cindex hard links (visiting)
1149
1150 Symbolic links and hard links both make it possible for several file
1151 names to refer to the same file. Hard links are alternate names that
1152 refer directly to the file; all the names are equally valid, and no one
1153 of them is preferred. By contrast, a symbolic link is a kind of defined
1154 alias: when @file{foo} is a symbolic link to @file{bar}, you can use
1155 either name to refer to the file, but @file{bar} is the real name, while
1156 @file{foo} is just an alias. More complex cases occur when symbolic
1157 links point to directories.
1158
1159 @vindex find-file-existing-other-name
1160 @vindex find-file-suppress-same-file-warnings
1161
1162 Normally, if you visit a file which Emacs is already visiting under
1163 a different name, Emacs displays a message in the echo area and uses
1164 the existing buffer visiting that file. This can happen on systems
1165 that support hard or symbolic links, or if you use a long file name on
1166 a system that truncates long file names, or on a case-insensitive file
1167 system. You can suppress the message by setting the variable
1168 @code{find-file-suppress-same-file-warnings} to a non-@code{nil}
1169 value. You can disable this feature entirely by setting the variable
1170 @code{find-file-existing-other-name} to @code{nil}: then if you visit
1171 the same file under two different names, you get a separate buffer for
1172 each file name.
1173
1174 @vindex find-file-visit-truename
1175 @cindex truenames of files
1176 @cindex file truenames
1177 If the variable @code{find-file-visit-truename} is non-@code{nil},
1178 then the file name recorded for a buffer is the file's @dfn{truename}
1179 (made by replacing all symbolic links with their target names), rather
1180 than the name you specify. Setting @code{find-file-visit-truename} also
1181 implies the effect of @code{find-file-existing-other-name}.
1182
1183 @node Version Control
1184 @section Version Control
1185 @cindex version control
1186
1187 @dfn{Version control systems} are packages that can record multiple
1188 versions of a source file, usually storing the unchanged parts of the
1189 file just once. Version control systems also record history information
1190 such as the creation time of each version, who created it, and a
1191 description of what was changed in that version.
1192
1193 The Emacs version control interface is called VC. Its commands work
1194 with different version control systems---currently, it supports CVS,
1195 GNU Arch, RCS, Meta-CVS, Subversion, and SCCS. Of these, the GNU
1196 project distributes CVS, GNU Arch, and RCS; we recommend that you use
1197 either CVS or GNU Arch for your projects, and RCS for individual
1198 files. We also have free software to replace SCCS, known as CSSC; if
1199 you are using SCCS and don't want to make the incompatible change to
1200 RCS or CVS, you can switch to CSSC.
1201
1202 VC is enabled by default in Emacs. To disable it, set the
1203 customizable variable @code{vc-handled-backends} to @code{nil}
1204 (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}).
1205
1206 @menu
1207 * Introduction to VC:: How version control works in general.
1208 * VC Mode Line:: How the mode line shows version control status.
1209 * Basic VC Editing:: How to edit a file under version control.
1210 * Old Versions:: Examining and comparing old versions.
1211 * Secondary VC Commands:: The commands used a little less frequently.
1212 * Branches:: Multiple lines of development.
1213 @end menu
1214
1215 @node Introduction to VC
1216 @subsection Introduction to Version Control
1217
1218 VC allows you to use a version control system from within Emacs,
1219 integrating the version control operations smoothly with editing. VC
1220 provides a uniform interface to version control, so that regardless of
1221 which version control system is in use, you can use it the same way.
1222
1223 This section provides a general overview of version control, and
1224 describes the version control systems that VC supports. You can skip
1225 this section if you are already familiar with the version control system
1226 you want to use.
1227
1228 @menu
1229 * Version Systems:: Supported version control back-end systems.
1230 * VC Concepts:: Words and concepts related to version control.
1231 * Types of Log File:: The per-file VC log in contrast to the ChangeLog.
1232 @end menu
1233
1234 @node Version Systems
1235 @subsubsection Supported Version Control Systems
1236
1237 @cindex back end (version control)
1238 VC currently works with six different version control systems or
1239 ``back ends'': CVS, GNU Arch, RCS, Meta-CVS, Subversion, and SCCS.
1240
1241 @cindex CVS
1242 CVS is a free version control system that is used for the majority
1243 of free software projects today. It allows concurrent multi-user
1244 development either locally or over the network. Some of its
1245 shortcomings, corrected by newer systems such as GNU Arch, are that it
1246 lacks atomic commits or support for renaming files. VC supports all
1247 basic editing operations under CVS, but for some less common tasks you
1248 still need to call CVS from the command line. Note also that before
1249 using CVS you must set up a repository, which is a subject too complex
1250 to treat here.
1251
1252 @cindex GNU Arch
1253 @cindex Arch
1254 GNU Arch is a new version control system that is designed for
1255 distributed work. It differs in many ways from old well-known
1256 systems, such as CVS and RCS. It supports different transports for
1257 interoperating between users, offline operations, and it has good
1258 branching and merging features. It also supports atomic commits, and
1259 history of file renaming and moving. VC does not support all
1260 operations provided by GNU Arch, so you must sometimes invoke it from
1261 the command line, or use a specialized module.
1262
1263 @cindex RCS
1264 RCS is the free version control system around which VC was initially
1265 built. The VC commands are therefore conceptually closest to RCS.
1266 Almost everything you can do with RCS can be done through VC. You
1267 cannot use RCS over the network though, and it only works at the level
1268 of individual files, rather than projects. You should use it if you
1269 want a simple, yet reliable tool for handling individual files.
1270
1271 @cindex SVN
1272 @cindex Subversion
1273 Subversion is a free version control system designed to be similar
1274 to CVS but without CVS's problems. Subversion supports atomic commits,
1275 and versions directories, symbolic links, meta-data, renames, copies,
1276 and deletes. It can be used via http or via its own protocol.
1277
1278 @cindex MCVS
1279 @cindex Meta-CVS
1280 Meta-CVS is another attempt to solve problems arising in CVS. It
1281 supports directory structure versioning, improved branching and
1282 merging, and use of symbolic links and meta-data in repositories.
1283
1284 @cindex SCCS
1285 SCCS is a proprietary but widely used version control system. In
1286 terms of capabilities, it is the weakest of the six that VC supports.
1287 VC compensates for certain features missing in SCCS (snapshots, for
1288 example) by implementing them itself, but some other VC features, such
1289 as multiple branches, are not available with SCCS. Since SCCS is
1290 non-free, not respecting its users freedom, you should not use it;
1291 use its free replacement CSSC instead. But you should use CSSC only
1292 if for some reason you cannot use RCS, or one of the higher-level
1293 systems such as CVS or GNU Arch.
1294
1295 In the following, we discuss mainly RCS, SCCS and CVS. Nearly
1296 everything said about CVS applies to GNU Arch, Subversion and Meta-CVS
1297 as well.
1298
1299 @node VC Concepts
1300 @subsubsection Concepts of Version Control
1301
1302 @cindex master file
1303 @cindex registered file
1304 When a file is under version control, we also say that it is
1305 @dfn{registered} in the version control system. Each registered file
1306 has a corresponding @dfn{master file} which represents the file's
1307 present state plus its change history---enough to reconstruct the
1308 current version or any earlier version. Usually the master file also
1309 records a @dfn{log entry} for each version, describing in words what was
1310 changed in that version.
1311
1312 @cindex work file
1313 @cindex checking out files
1314 The file that is maintained under version control is sometimes called
1315 the @dfn{work file} corresponding to its master file. You edit the work
1316 file and make changes in it, as you would with an ordinary file. (With
1317 SCCS and RCS, you must @dfn{lock} the file before you start to edit it.)
1318 After you are done with a set of changes, you @dfn{check the file in},
1319 which records the changes in the master file, along with a log entry for
1320 them.
1321
1322 With CVS, there are usually multiple work files corresponding to a
1323 single master file---often each user has his own copy. It is also
1324 possible to use RCS in this way, but this is not the usual way to use
1325 RCS.
1326
1327 @cindex locking and version control
1328 A version control system typically has some mechanism to coordinate
1329 between users who want to change the same file. One method is
1330 @dfn{locking} (analogous to the locking that Emacs uses to detect
1331 simultaneous editing of a file, but distinct from it). The other method
1332 is to merge your changes with other people's changes when you check them
1333 in.
1334
1335 With version control locking, work files are normally read-only so
1336 that you cannot change them. You ask the version control system to make
1337 a work file writable for you by locking it; only one user can do
1338 this at any given time. When you check in your changes, that unlocks
1339 the file, making the work file read-only again. This allows other users
1340 to lock the file to make further changes. SCCS always uses locking, and
1341 RCS normally does.
1342
1343 The other alternative for RCS is to let each user modify the work file
1344 at any time. In this mode, locking is not required, but it is
1345 permitted; check-in is still the way to record a new version.
1346
1347 CVS normally allows each user to modify his own copy of the work file
1348 at any time, but requires merging with changes from other users at
1349 check-in time. However, CVS can also be set up to require locking.
1350 (@pxref{CVS Options,,,emacs-xtra, Specialized Emacs Features}).
1351
1352 @node Types of Log File
1353 @subsubsection Types of Log File
1354 @cindex types of log file
1355 @cindex log File, types of
1356 @cindex version control log
1357
1358 Projects that use a revision control system can have @emph{two}
1359 types of log for changes. One is the per-file log maintained by the
1360 revision control system: each time you check in a change, you must
1361 fill out a @dfn{log entry} for the change (@pxref{Log Buffer}). This
1362 kind of log is called the @dfn{version control log}, also the
1363 @dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}.
1364
1365 The other kind of log is the file @file{ChangeLog} (@pxref{Change
1366 Log}). It provides a chronological record of all changes to a large
1367 portion of a program---typically one directory and its subdirectories.
1368 A small program would use one @file{ChangeLog} file; a large program
1369 may well merit a @file{ChangeLog} file in each major directory.
1370 @xref{Change Log}.
1371
1372 A project maintained with version control can use just the per-file
1373 log, or it can use both kinds of logs. It can handle some files one
1374 way and some files the other way. Each project has its policy, which
1375 you should follow.
1376
1377 When the policy is to use both, you typically want to write an entry
1378 for each change just once, then put it into both logs. You can write
1379 the entry in @file{ChangeLog}, then copy it to the log buffer when you
1380 check in the change. Or you can write the entry in the log buffer
1381 while checking in the change, and later use the @kbd{C-x v a} command
1382 to copy it to @file{ChangeLog} (@pxref{Change Logs and
1383 VC,,,emacs-xtra, Specialized Emacs Features}).
1384
1385 @node VC Mode Line
1386 @subsection Version Control and the Mode Line
1387
1388 When you visit a file that is under version control, Emacs indicates
1389 this on the mode line. For example, @samp{RCS-1.3} says that RCS is
1390 used for that file, and the current version is 1.3.
1391
1392 The character between the back-end name and the version number
1393 indicates the version control status of the file. @samp{-} means that
1394 the work file is not locked (if locking is in use), or not modified (if
1395 locking is not in use). @samp{:} indicates that the file is locked, or
1396 that it is modified. If the file is locked by some other user (for
1397 instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
1398
1399 @vindex auto-revert-check-vc-info
1400 When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is
1401 under version control, it updates the version control information in
1402 the mode line. However, Auto Revert mode may not properly update this
1403 information if the version control status changes without changes to
1404 the work file, from outside the current Emacs session. If you set
1405 @code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates
1406 the version control status information every
1407 @code{auto-revert-interval} seconds, even if the work file itself is
1408 unchanged. The resulting CPU usage depends on the version control
1409 system, but is usually not excessive.
1410
1411 @node Basic VC Editing
1412 @subsection Basic Editing under Version Control
1413
1414 The principal VC command is an all-purpose command that performs
1415 either locking or check-in, depending on the situation.
1416
1417 @table @kbd
1418 @itemx C-x v v
1419 Perform the next logical version control operation on this file.
1420 @end table
1421
1422 @findex vc-next-action
1423 @kindex C-x v v
1424 The precise action of this command depends on the state of the file,
1425 and whether the version control system uses locking or not. SCCS and
1426 RCS normally use locking; CVS normally does not use locking.
1427
1428 @findex vc-toggle-read-only
1429 @kindex C-x C-q @r{(Version Control)}
1430 As a special convenience that is particularly useful for files with
1431 locking, you can let Emacs check a file in or out whenever you change
1432 its read-only flag. This means, for example, that you cannot
1433 accidentally edit a file without properly checking it out first. To
1434 achieve this, bind the key @kbd{C-x C-q} to @kbd{vc-toggle-read-only}
1435 in your @file{~/.emacs} file. (@xref{Init Rebinding}.)
1436
1437 @menu
1438 * VC with Locking:: RCS in its default mode, SCCS, and optionally CVS.
1439 * Without Locking:: Without locking: default mode for CVS.
1440 * Advanced C-x v v:: Advanced features available with a prefix argument.
1441 * Log Buffer:: Features available in log entry buffers.
1442 @end menu
1443
1444 @node VC with Locking
1445 @subsubsection Basic Version Control with Locking
1446
1447 If locking is used for the file (as with SCCS, and RCS in its default
1448 mode), @kbd{C-x v v} can either lock a file or check it in:
1449
1450 @itemize @bullet
1451 @item
1452 If the file is not locked, @kbd{C-x v v} locks it, and
1453 makes it writable so that you can change it.
1454
1455 @item
1456 If the file is locked by you, and contains changes, @kbd{C-x v v} checks
1457 in the changes. In order to do this, it first reads the log entry
1458 for the new version. @xref{Log Buffer}.
1459
1460 @item
1461 If the file is locked by you, but you have not changed it since you
1462 locked it, @kbd{C-x v v} releases the lock and makes the file read-only
1463 again.
1464
1465 @item
1466 If the file is locked by some other user, @kbd{C-x v v} asks you whether
1467 you want to ``steal the lock'' from that user. If you say yes, the file
1468 becomes locked by you, but a message is sent to the person who had
1469 formerly locked the file, to inform him of what has happened.
1470 @end itemize
1471
1472 These rules also apply when you use CVS in locking mode, except
1473 that there is no such thing as stealing a lock.
1474
1475 @node Without Locking
1476 @subsubsection Basic Version Control without Locking
1477
1478 When there is no locking---the default for CVS---work files are always
1479 writable; you do not need to do anything before you begin to edit a
1480 file. The status indicator on the mode line is @samp{-} if the file is
1481 unmodified; it flips to @samp{:} as soon as you save any changes in the
1482 work file.
1483
1484 Here is what @kbd{C-x v v} does when using CVS:
1485
1486 @itemize @bullet
1487 @item
1488 If some other user has checked in changes into the master file, Emacs
1489 asks you whether you want to merge those changes into your own work
1490 file. You must do this before you can check in your own changes. (To
1491 pick up any recent changes from the master file @emph{without} trying
1492 to commit your own changes, type @kbd{C-x v m @key{RET}}.)
1493 @xref{Merging}.
1494
1495 @item
1496 If there are no new changes in the master file, but you have made
1497 modifications in your work file, @kbd{C-x v v} checks in your changes.
1498 In order to do this, it first reads the log entry for the new version.
1499 @xref{Log Buffer}.
1500
1501 @item
1502 If the file is not modified, the @kbd{C-x v v} does nothing.
1503 @end itemize
1504
1505 These rules also apply when you use RCS in the mode that does not
1506 require locking, except that automatic merging of changes from the
1507 master file is not implemented. Unfortunately, this means that nothing
1508 informs you if another user has checked in changes in the same file
1509 since you began editing it, and when this happens, his changes will be
1510 effectively removed when you check in your version (though they will
1511 remain in the master file, so they will not be entirely lost). You must
1512 therefore verify that the current version is unchanged, before you
1513 check in your changes. We hope to eliminate this risk and provide
1514 automatic merging with RCS in a future Emacs version.
1515
1516 In addition, locking is possible with RCS even in this mode, although
1517 it is not required; @kbd{C-x v v} with an unmodified file locks the
1518 file, just as it does with RCS in its normal (locking) mode.
1519
1520 @node Advanced C-x v v
1521 @subsubsection Advanced Control in @kbd{C-x v v}
1522
1523 @cindex version number to check in/out
1524 When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
1525 C-x v v}), it still performs the next logical version control
1526 operation, but accepts additional arguments to specify precisely how
1527 to do the operation.
1528
1529 @itemize @bullet
1530 @item
1531 If the file is modified (or locked), you can specify the version
1532 number to use for the new version that you check in. This is one way
1533 to create a new branch (@pxref{Branches}).
1534
1535 @item
1536 If the file is not modified (and unlocked), you can specify the
1537 version to select; this lets you start working from an older version,
1538 or on another branch. If you do not enter any version, that takes you
1539 to the highest version on the current branch; therefore @kbd{C-u C-x
1540 v v @key{RET}} is a convenient way to get the latest version of a file from
1541 the repository.
1542
1543 @item
1544 @cindex specific version control system
1545 Instead of the version number, you can also specify the name of a
1546 version control system. This is useful when one file is being managed
1547 with two version control systems at the same time (@pxref{Local
1548 Version Control,,,emacs-xtra, Specialized Emacs Features}).
1549 @end itemize
1550
1551 @node Log Buffer
1552 @subsubsection Features of the Log Entry Buffer
1553
1554 When you check in changes, @kbd{C-x v v} first reads a log entry. It
1555 pops up a buffer called @samp{*VC-Log*} for you to enter the log entry.
1556
1557 Sometimes the @samp{*VC-Log*} buffer contains default text when you enter it,
1558 typically the last log message entered. If it does, mark and point
1559 are set around the entire contents of the buffer so that it is easy to
1560 kill the contents of the buffer with @kbd{C-w}.
1561
1562 @findex log-edit-insert-changelog
1563 If you work by writing entries in the @file{ChangeLog}
1564 (@pxref{Change Log}) and then commit the change under revision
1565 control, you can generate the Log Edit text from the ChangeLog using
1566 @kbd{C-c C-a} (@kbd{log-edit-insert-changelog}). This looks for
1567 entries for the file(s) concerned in the top entry in the ChangeLog
1568 and uses those paragraphs as the log text. This text is only inserted
1569 if the top entry was made under your user name on the current date.
1570 @xref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features},
1571 for the opposite way of working---generating ChangeLog entries from
1572 the revision control log.
1573
1574 In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x
1575 log-edit-show-files}) shows the list of files to be committed in case
1576 you need to check that. (This can be a list of more than one file if
1577 you use VC Dired mode or PCL-CVS. @xref{VC Dired Mode,,,emacs-xtra,
1578 Specialized Emacs Features}, and @ref{Top, , About PCL-CVS, pcl-cvs,
1579 PCL-CVS --- The Emacs Front-End to CVS}.)
1580
1581 When you have finished editing the log message, type @kbd{C-c C-c} to
1582 exit the buffer and commit the change.
1583
1584 To abort check-in, just @strong{don't} type @kbd{C-c C-c} in that
1585 buffer. You can switch buffers and do other editing. As long as you
1586 don't try to check in another file, the entry you were editing remains
1587 in the @samp{*VC-Log*} buffer, and you can go back to that buffer at any
1588 time to complete the check-in.
1589
1590 If you change several source files for the same reason, it is often
1591 convenient to specify the same log entry for many of the files. To do
1592 this, use the history of previous log entries. The commands @kbd{M-n},
1593 @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for doing this work just like the
1594 minibuffer history commands (except that these versions are used outside
1595 the minibuffer).
1596
1597 @vindex vc-log-mode-hook
1598 Each time you check in a file, the log entry buffer is put into VC Log
1599 mode, which involves running two hooks: @code{text-mode-hook} and
1600 @code{vc-log-mode-hook}. @xref{Hooks}.
1601
1602 @node Old Versions
1603 @subsection Examining And Comparing Old Versions
1604
1605 One of the convenient features of version control is the ability
1606 to examine any version of a file, or compare two versions.
1607
1608 @table @kbd
1609 @item C-x v ~ @var{version} @key{RET}
1610 Examine version @var{version} of the visited file, in a buffer of its
1611 own.
1612
1613 @item C-x v =
1614 Compare the current buffer contents with the master version from which
1615 you started editing.
1616
1617 @item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
1618 Compare the specified two versions of @var{file}.
1619
1620 @item C-x v g
1621 Display the file with per-line version information and using colors.
1622 @end table
1623
1624 @findex vc-version-other-window
1625 @kindex C-x v ~
1626 To examine an old version in its entirety, visit the file and then type
1627 @kbd{C-x v ~ @var{version} @key{RET}} (@code{vc-version-other-window}).
1628 This puts the text of version @var{version} in a file named
1629 @file{@var{filename}.~@var{version}~}, and visits it in its own buffer
1630 in a separate window. (In RCS, you can also select an old version
1631 and create a branch from it. @xref{Branches}.)
1632
1633 @findex vc-diff
1634 @kindex C-x v =
1635 It is usually more convenient to compare two versions of the file,
1636 with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =}
1637 compares the current buffer contents (saving them in the file if
1638 necessary) with the master version from which you started editing the
1639 file (this is not necessarily the latest version of the file).
1640 @kbd{C-u C-x v =}, with a numeric argument, reads a file name and two
1641 version numbers, then compares those versions of the specified file.
1642 Both forms display the output in a special buffer in another window.
1643
1644 You can specify a checked-in version by its number; an empty input
1645 specifies the current contents of the work file (which may be different
1646 from all the checked-in versions). You can also specify a snapshot name
1647 (@pxref{Snapshots,,,emacs-xtra, Specialized Emacs Features}) instead of one or both version numbers.
1648
1649 If you supply a directory name instead of the name of a registered
1650 file, this command compares the two specified versions of all registered
1651 files in that directory and its subdirectories.
1652
1653 @vindex vc-diff-switches
1654 @vindex vc-rcs-diff-switches
1655 @kbd{C-x v =} works by running a variant of the @code{diff} utility
1656 designed to work with the version control system in use. When you
1657 invoke @code{diff} this way, in addition to the options specified by
1658 @code{diff-switches} (@pxref{Comparing Files}), it receives those
1659 specified by @code{vc-diff-switches}, plus those specified for the
1660 specific back end by @code{vc-@var{backend}-diff-switches}. For
1661 instance, when the version control back end is RCS, @code{diff} uses
1662 the options in @code{vc-rcs-diff-switches}. The
1663 @samp{vc@dots{}diff-switches} variables are @code{nil} by default.
1664
1665 The buffer produced by @kbd{C-x v =} supports the commands of
1666 Compilation mode (@pxref{Compilation Mode}), such as @kbd{C-x `} and
1667 @kbd{C-c C-c}, in both the ``old'' and ``new'' text, and they always
1668 find the corresponding locations in the current work file. (Older
1669 versions are not, in general, present as files on your disk.)
1670
1671 @findex vc-annotate
1672 @kindex C-x v g
1673 For some back ends, you can display the file @dfn{annotated} with
1674 per-line version information and using colors to enhance the visual
1675 appearance, with the command @kbd{M-x vc-annotate}. It creates a new
1676 buffer (the ``annotate buffer'') displaying the file's text, with each
1677 part colored to show how old it is. Text colored red is new, blue means
1678 old, and intermediate colors indicate intermediate ages. By default,
1679 the color is scaled over the full range of ages, such that the oldest
1680 changes are blue, and the newest changes are red.
1681
1682 When you give a prefix argument to this command, it uses the
1683 minibuffer to read two arguments: which version number to display and
1684 annotate (instead of the current file contents), and the time span in
1685 days the color range should cover.
1686
1687 From the annotate buffer, these and other color scaling options are
1688 available from the @samp{VC-Annotate} menu. In this buffer, you can
1689 also use the following keys to browse the annotations of past revisions,
1690 view diffs, or view log entries:
1691
1692 @table @kbd
1693 @item P
1694 Annotate the previous revision, that is to say, the revision before
1695 the one currently annotated. A numeric prefix argument is a repeat
1696 count, so @kbd{C-u 10 P} would take you back 10 revisions.
1697
1698 @item N
1699 Annotate the next revision---the one after the revision currently
1700 annotated. A numeric prefix argument is a repeat count.
1701
1702 @item J
1703 Annotate the revision indicated by the current line.
1704
1705 @item A
1706 Annotate the revision before the one indicated by the current line.
1707 This is useful to see the state the file was in before the change on
1708 the current line was made.
1709
1710 @item D
1711 Display the diff between the current line's revision and the previous
1712 revision. This is useful to see what the current line's revision
1713 actually changed in the file.
1714
1715 @item L
1716 Show the log of the current line's revision. This is useful to see
1717 the author's description of the changes in the revision on the current
1718 line.
1719
1720 @item W
1721 Annotate the workfile version--the one you are editing. If you used
1722 @kbd{P} and @kbd{N} to browse to other revisions, use this key to
1723 return to your current version.
1724 @end table
1725
1726 @node Secondary VC Commands
1727 @subsection The Secondary Commands of VC
1728
1729 This section explains the secondary commands of VC; those that you might
1730 use once a day.
1731
1732 @menu
1733 * Registering:: Putting a file under version control.
1734 * VC Status:: Viewing the VC status of files.
1735 * VC Undo:: Canceling changes before or after check-in.
1736 @end menu
1737
1738 @node Registering
1739 @subsubsection Registering a File for Version Control
1740
1741 @kindex C-x v i
1742 @findex vc-register
1743 You can put any file under version control by simply visiting it, and
1744 then typing @w{@kbd{C-x v i}} (@code{vc-register}).
1745
1746 @table @kbd
1747 @item C-x v i
1748 Register the visited file for version control.
1749 @end table
1750
1751 To register the file, Emacs must choose which version control system
1752 to use for it. If the file's directory already contains files
1753 registered in a version control system, Emacs uses that system. If
1754 there is more than one system in use for a directory, Emacs uses the
1755 one that appears first in @code{vc-handled-backends}
1756 (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}). On
1757 the other hand, if there are no files already registered, Emacs uses
1758 the first system from @code{vc-handled-backends} that could register
1759 the file (for example, you cannot register a file under CVS if its
1760 directory is not already part of a CVS tree); with the default value
1761 of @code{vc-handled-backends}, this means that Emacs uses RCS in this
1762 situation.
1763
1764 If locking is in use, @kbd{C-x v i} leaves the file unlocked and
1765 read-only. Type @kbd{C-x v v} if you wish to start editing it. After
1766 registering a file with CVS, you must subsequently commit the initial
1767 version by typing @kbd{C-x v v}. Until you do that, the version
1768 appears as @samp{@@@@} in the mode line.
1769
1770 @vindex vc-default-init-version
1771 @cindex initial version number to register
1772 The initial version number for a newly registered file is 1.1, by
1773 default. You can specify a different default by setting the variable
1774 @code{vc-default-init-version}, or you can give @kbd{C-x v i} a numeric
1775 argument; then it reads the initial version number for this particular
1776 file using the minibuffer.
1777
1778 @vindex vc-initial-comment
1779 If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
1780 initial comment to describe the purpose of this source file. Reading
1781 the initial comment works like reading a log entry (@pxref{Log Buffer}).
1782
1783 @node VC Status
1784 @subsubsection VC Status Commands
1785
1786 @table @kbd
1787 @item C-x v l
1788 Display version control state and change history.
1789 @end table
1790
1791 @kindex C-x v l
1792 @findex vc-print-log
1793 To view the detailed version control status and history of a file,
1794 type @kbd{C-x v l} (@code{vc-print-log}). It displays the history of
1795 changes to the current file, including the text of the log entries. The
1796 output appears in a separate window. The point is centered at the
1797 revision of the file that is currently being visited.
1798
1799 In the change log buffer, you can use the following keys to move
1800 between the logs of revisions and of files, to view past revisions, and
1801 to view diffs:
1802
1803 @table @kbd
1804 @item p
1805 Move to the previous revision-item in the buffer. (Revision entries in the log
1806 buffer are usually in reverse-chronological order, so the previous
1807 revision-item usually corresponds to a newer revision.) A numeric
1808 prefix argument is a repeat count.
1809
1810 @item n
1811 Move to the next revision-item (which most often corresponds to the
1812 previous revision of the file). A numeric prefix argument is a repeat
1813 count.
1814
1815 @item P
1816 Move to the log of the previous file, when the logs of multiple files
1817 are in the log buffer (@pxref{VC Dired Mode,,,emacs-xtra, Specialized
1818 Emacs Features}). Otherwise, just move to the beginning of the log. A
1819 numeric prefix argument is a repeat count, so @kbd{C-u 10 P} would
1820 move backward 10 files.
1821
1822 @item N
1823 Move to the log of the next file, when the logs of multiple files are
1824 in the log buffer (@pxref{VC Dired Mode,,,emacs-xtra, Specialized
1825 Emacs Features}). It also takes a numeric prefix argument as a repeat
1826 count.
1827
1828 @item f
1829 Visit the revision indicated at the current line, like typing @kbd{C-x
1830 v ~} and specifying this revision's number (@pxref{Old Versions}).
1831
1832 @item d
1833 Display the diff (@pxref{Comparing Files}) between the revision
1834 indicated at the current line and the next earlier revision. This is
1835 useful to see what actually changed when the revision indicated on the
1836 current line was committed.
1837 @end table
1838
1839 @node VC Undo
1840 @subsubsection Undoing Version Control Actions
1841
1842 @table @kbd
1843 @item C-x v u
1844 Revert the buffer and the file to the version from which you started
1845 editing the file.
1846
1847 @item C-x v c
1848 Remove the last-entered change from the master for the visited file.
1849 This undoes your last check-in.
1850 @end table
1851
1852 @kindex C-x v u
1853 @findex vc-revert-buffer
1854 If you want to discard your current set of changes and revert to the
1855 version from which you started editing the file, use @kbd{C-x v u}
1856 (@code{vc-revert-buffer}). This leaves the file unlocked; if locking
1857 is in use, you must first lock the file again before you change it
1858 again. @kbd{C-x v u} requires confirmation, unless it sees that you
1859 haven't made any changes with respect to the master version.
1860
1861 @kbd{C-x v u} is also the command to unlock a file if you lock it and
1862 then decide not to change it.
1863
1864 @kindex C-x v c
1865 @findex vc-cancel-version
1866 To cancel a change that you already checked in, use @kbd{C-x v c}
1867 (@code{vc-cancel-version}). This command discards all record of the
1868 most recent checked-in version, but only if your work file corresponds
1869 to that version---you cannot use @kbd{C-x v c} to cancel a version
1870 that is not the latest on its branch. @kbd{C-x v c} also offers to
1871 revert your work file and buffer to the previous version (the one that
1872 precedes the version that is deleted).
1873
1874 If you answer @kbd{no}, VC keeps your changes in the buffer, and locks
1875 the file. The no-revert option is useful when you have checked in a
1876 change and then discover a trivial error in it; you can cancel the
1877 erroneous check-in, fix the error, and check the file in again.
1878
1879 When @kbd{C-x v c} does not revert the buffer, it unexpands all
1880 version control headers in the buffer instead (@pxref{Version
1881 Headers,,,emacs-xtra, Specialized Emacs Features}). This is because
1882 the buffer no longer corresponds to any existing version. If you
1883 check it in again, the check-in process will expand the headers
1884 properly for the new version number.
1885
1886 However, it is impossible to unexpand the RCS @samp{@w{$}Log$} header
1887 automatically. If you use that header feature, you have to unexpand it
1888 by hand---by deleting the entry for the version that you just canceled.
1889
1890 Be careful when invoking @kbd{C-x v c}, as it is easy to lose a lot of
1891 work with it. To help you be careful, this command always requires
1892 confirmation with @kbd{yes}. Note also that this command is disabled
1893 under CVS, because canceling versions is very dangerous and discouraged
1894 with CVS.
1895
1896 @node Branches
1897 @subsection Multiple Branches of a File
1898 @cindex branch (version control)
1899 @cindex trunk (version control)
1900
1901 One use of version control is to maintain multiple ``current''
1902 versions of a file. For example, you might have different versions of a
1903 program in which you are gradually adding various unfinished new
1904 features. Each such independent line of development is called a
1905 @dfn{branch}. VC allows you to create branches, switch between
1906 different branches, and merge changes from one branch to another.
1907 Please note, however, that branches are not supported for SCCS.
1908
1909 A file's main line of development is usually called the @dfn{trunk}.
1910 The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc. At
1911 any such version, you can start an independent branch. A branch
1912 starting at version 1.2 would have version number 1.2.1.1, and consecutive
1913 versions on this branch would have numbers 1.2.1.2, 1.2.1.3, 1.2.1.4,
1914 and so on. If there is a second branch also starting at version 1.2, it
1915 would consist of versions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc.
1916
1917 @cindex head version
1918 If you omit the final component of a version number, that is called a
1919 @dfn{branch number}. It refers to the highest existing version on that
1920 branch---the @dfn{head version} of that branch. The branches in the
1921 example above have branch numbers 1.2.1 and 1.2.2.
1922
1923 @menu
1924 * Switching Branches:: How to get to another existing branch.
1925 * Creating Branches:: How to start a new branch.
1926 * Merging:: Transferring changes between branches.
1927 * Multi-User Branching:: Multiple users working at multiple branches
1928 in parallel.
1929 @end menu
1930
1931 @node Switching Branches
1932 @subsubsection Switching between Branches
1933
1934 To switch between branches, type @kbd{C-u C-x v v} and specify the
1935 version number you want to select. This version is then visited
1936 @emph{unlocked} (write-protected), so you can examine it before locking
1937 it. Switching branches in this way is allowed only when the file is not
1938 locked.
1939
1940 You can omit the minor version number, thus giving only the branch
1941 number; this takes you to the head version on the chosen branch. If you
1942 only type @key{RET}, Emacs goes to the highest version on the trunk.
1943
1944 After you have switched to any branch (including the main branch), you
1945 stay on it for subsequent VC commands, until you explicitly select some
1946 other branch.
1947
1948 @node Creating Branches
1949 @subsubsection Creating New Branches
1950
1951 To create a new branch from a head version (one that is the latest in
1952 the branch that contains it), first select that version if necessary,
1953 lock it with @kbd{C-x v v}, and make whatever changes you want. Then,
1954 when you check in the changes, use @kbd{C-u C-x v v}. This lets you
1955 specify the version number for the new version. You should specify a
1956 suitable branch number for a branch starting at the current version.
1957 For example, if the current version is 2.5, the branch number should be
1958 2.5.1, 2.5.2, and so on, depending on the number of existing branches at
1959 that point.
1960
1961 To create a new branch at an older version (one that is no longer the
1962 head of a branch), first select that version (@pxref{Switching
1963 Branches}), then lock it with @kbd{C-x v v}. You'll be asked to
1964 confirm, when you lock the old version, that you really mean to create a
1965 new branch---if you say no, you'll be offered a chance to lock the
1966 latest version instead.
1967
1968 Then make your changes and type @kbd{C-x v v} again to check in a new
1969 version. This automatically creates a new branch starting from the
1970 selected version. You need not specially request a new branch, because
1971 that's the only way to add a new version at a point that is not the head
1972 of a branch.
1973
1974 After the branch is created, you ``stay'' on it. That means that
1975 subsequent check-ins create new versions on that branch. To leave the
1976 branch, you must explicitly select a different version with @kbd{C-u C-x
1977 v v}. To transfer changes from one branch to another, use the merge
1978 command, described in the next section.
1979
1980 @node Merging
1981 @subsubsection Merging Branches
1982
1983 @cindex merging changes
1984 When you have finished the changes on a certain branch, you will
1985 often want to incorporate them into the file's main line of development
1986 (the trunk). This is not a trivial operation, because development might
1987 also have proceeded on the trunk, so that you must @dfn{merge} the
1988 changes into a file that has already been changed otherwise. VC allows
1989 you to do this (and other things) with the @code{vc-merge} command.
1990
1991 @table @kbd
1992 @item C-x v m (vc-merge)
1993 Merge changes into the work file.
1994 @end table
1995
1996 @kindex C-x v m
1997 @findex vc-merge
1998 @kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it
1999 into the current version of the work file. It firsts asks you in the
2000 minibuffer where the changes should come from. If you just type
2001 @key{RET}, Emacs merges any changes that were made on the same branch
2002 since you checked the file out (we call this @dfn{merging the news}).
2003 This is the common way to pick up recent changes from the repository,
2004 regardless of whether you have already changed the file yourself.
2005
2006 You can also enter a branch number or a pair of version numbers in
2007 the minibuffer. Then @kbd{C-x v m} finds the changes from that
2008 branch, or the differences between the two versions you specified, and
2009 merges them into the current version of the current file.
2010
2011 As an example, suppose that you have finished a certain feature on
2012 branch 1.3.1. In the meantime, development on the trunk has proceeded
2013 to version 1.5. To merge the changes from the branch to the trunk,
2014 first go to the head version of the trunk, by typing @kbd{C-u C-x v v
2015 @key{RET}}. Version 1.5 is now current. If locking is used for the file,
2016 type @kbd{C-x v v} to lock version 1.5 so that you can change it. Next,
2017 type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on
2018 branch 1.3.1 (relative to version 1.3, where the branch started, up to
2019 the last version on the branch) and merges it into the current version
2020 of the work file. You can now check in the changed file, thus creating
2021 version 1.6 containing the changes from the branch.
2022
2023 It is possible to do further editing after merging the branch, before
2024 the next check-in. But it is usually wiser to check in the merged
2025 version, then lock it and make the further changes. This will keep
2026 a better record of the history of changes.
2027
2028 @cindex conflicts
2029 @cindex resolving conflicts
2030 When you merge changes into a file that has itself been modified, the
2031 changes might overlap. We call this situation a @dfn{conflict}, and
2032 reconciling the conflicting changes is called @dfn{resolving a
2033 conflict}.
2034
2035 Whenever conflicts occur during merging, VC detects them, tells you
2036 about them in the echo area, and asks whether you want help in merging.
2037 If you say yes, it starts an Ediff session (@pxref{Top,
2038 Ediff, Ediff, ediff, The Ediff Manual}).
2039
2040 If you say no, the conflicting changes are both inserted into the
2041 file, surrounded by @dfn{conflict markers}. The example below shows how
2042 a conflict region looks; the file is called @samp{name} and the current
2043 master file version with user B's changes in it is 1.11.
2044
2045 @c @w here is so CVS won't think this is a conflict.
2046 @smallexample
2047 @group
2048 @w{<}<<<<<< name
2049 @var{User A's version}
2050 =======
2051 @var{User B's version}
2052 @w{>}>>>>>> 1.11
2053 @end group
2054 @end smallexample
2055
2056 @cindex vc-resolve-conflicts
2057 Then you can resolve the conflicts by editing the file manually. Or
2058 you can type @code{M-x vc-resolve-conflicts} after visiting the file.
2059 This starts an Ediff session, as described above. Don't forget to
2060 check in the merged version afterwards.
2061
2062 @node Multi-User Branching
2063 @subsubsection Multi-User Branching
2064
2065 It is often useful for multiple developers to work simultaneously on
2066 different branches of a file. CVS allows this by default; for RCS, it
2067 is possible if you create multiple source directories. Each source
2068 directory should have a link named @file{RCS} which points to a common
2069 directory of RCS master files. Then each source directory can have its
2070 own choice of selected versions, but all share the same common RCS
2071 records.
2072
2073 This technique works reliably and automatically, provided that the
2074 source files contain RCS version headers (@pxref{Version
2075 Headers,,,emacs-xtra, Specialized Emacs Features}). The headers enable
2076 Emacs to be sure, at all times, which version number is present in the
2077 work file.
2078
2079 If the files do not have version headers, you must instead tell Emacs
2080 explicitly in each session which branch you are working on. To do this,
2081 first find the file, then type @kbd{C-u C-x v v} and specify the correct
2082 branch number. This ensures that Emacs knows which branch it is using
2083 during this particular editing session.
2084
2085 @node Directories
2086 @section File Directories
2087
2088 @cindex file directory
2089 @cindex directory listing
2090 The file system groups files into @dfn{directories}. A @dfn{directory
2091 listing} is a list of all the files in a directory. Emacs provides
2092 commands to create and delete directories, and to make directory
2093 listings in brief format (file names only) and verbose format (sizes,
2094 dates, and authors included). Emacs also includes a directory browser
2095 feature called Dired; see @ref{Dired}.
2096
2097 @table @kbd
2098 @item C-x C-d @var{dir-or-pattern} @key{RET}
2099 Display a brief directory listing (@code{list-directory}).
2100 @item C-u C-x C-d @var{dir-or-pattern} @key{RET}
2101 Display a verbose directory listing.
2102 @item M-x make-directory @key{RET} @var{dirname} @key{RET}
2103 Create a new directory named @var{dirname}.
2104 @item M-x delete-directory @key{RET} @var{dirname} @key{RET}
2105 Delete the directory named @var{dirname}. It must be empty,
2106 or you get an error.
2107 @end table
2108
2109 @findex list-directory
2110 @kindex C-x C-d
2111 The command to display a directory listing is @kbd{C-x C-d}
2112 (@code{list-directory}). It reads using the minibuffer a file name
2113 which is either a directory to be listed or a wildcard-containing
2114 pattern for the files to be listed. For example,
2115
2116 @example
2117 C-x C-d /u2/emacs/etc @key{RET}
2118 @end example
2119
2120 @noindent
2121 lists all the files in directory @file{/u2/emacs/etc}. Here is an
2122 example of specifying a file name pattern:
2123
2124 @example
2125 C-x C-d /u2/emacs/src/*.c @key{RET}
2126 @end example
2127
2128 Normally, @kbd{C-x C-d} displays a brief directory listing containing
2129 just file names. A numeric argument (regardless of value) tells it to
2130 make a verbose listing including sizes, dates, and owners (like
2131 @samp{ls -l}).
2132
2133 @vindex list-directory-brief-switches
2134 @vindex list-directory-verbose-switches
2135 The text of a directory listing is mostly obtained by running
2136 @code{ls} in an inferior process. Two Emacs variables control the
2137 switches passed to @code{ls}: @code{list-directory-brief-switches} is
2138 a string giving the switches to use in brief listings (@code{"-CF"} by
2139 default), and @code{list-directory-verbose-switches} is a string
2140 giving the switches to use in a verbose listing (@code{"-l"} by
2141 default).
2142
2143 @vindex directory-free-space-program
2144 @vindex directory-free-space-args
2145 In verbose directory listings, Emacs adds information about the
2146 amount of free space on the disk that contains the directory. To do
2147 this, it runs the program specified by
2148 @code{directory-free-space-program} with arguments
2149 @code{directory-free-space-args}.
2150
2151 @node Comparing Files
2152 @section Comparing Files
2153 @cindex comparing files
2154
2155 @findex diff
2156 @vindex diff-switches
2157 The command @kbd{M-x diff} compares two files, displaying the
2158 differences in an Emacs buffer named @samp{*diff*}. It works by
2159 running the @code{diff} program, using options taken from the variable
2160 @code{diff-switches}. The value of @code{diff-switches} should be a
2161 string; the default is @code{"-c"} to specify a context diff.
2162
2163 @findex diff-backup
2164 The command @kbd{M-x diff-backup} compares a specified file with its most
2165 recent backup. If you specify the name of a backup file,
2166 @code{diff-backup} compares it with the source file that it is a backup
2167 of.
2168
2169 @findex diff-goto-source
2170 @findex diff-mode
2171 @cindex Diff mode
2172 The @samp{*diff*} buffer uses Diff mode, which enables you to use
2173 @kbd{C-x `} to visit successive changed locations in the two source
2174 files, as in Compilation mode (@pxref{Compilation Mode}.) You can
2175 also move to a particular hunk of changes and type @kbd{C-c C-c}
2176 (@code{diff-goto-source}) to visit the corresponding source location.
2177
2178 @cindex patches
2179 Differences between versions of files are often distributed as
2180 patches, which are the output from the @command{diff} program. You
2181 can use Diff mode to operate on a patch by typing @kbd{M-x diff-mode}.
2182
2183 @findex compare-windows
2184 The command @kbd{M-x compare-windows} compares the text in the
2185 current window with that in the next window. (For more information
2186 about windows in Emacs, @ref{Windows}.) Comparison starts at point in
2187 each window, after pushing each initial point value on the mark ring
2188 in its respective buffer. Then it moves point forward in each window,
2189 one character at a time, until it reaches characters that don't match.
2190 Then the command exits.
2191
2192 If point in the two windows is followed by non-matching text when
2193 the command starts, @kbd{M-x compare-windows} tries heuristically to
2194 advance up to matching text in the two windows, and then exits. So if
2195 you use @kbd{M-x compare-windows} repeatedly, each time it either
2196 skips one matching range or finds the start of another.
2197
2198 @vindex compare-ignore-case
2199 @vindex compare-ignore-whitespace
2200 With a numeric argument, @code{compare-windows} ignores changes in
2201 whitespace. If the variable @code{compare-ignore-case} is
2202 non-@code{nil}, the comparison ignores differences in case as well.
2203 If the variable @code{compare-ignore-whitespace} is non-@code{nil},
2204 @code{compare-windows} normally ignores changes in whitespace, and a
2205 prefix argument turns that off.
2206
2207 @cindex Smerge mode
2208 @findex smerge-mode
2209 @cindex failed merges
2210 @cindex merges, failed
2211 @cindex comparing 3 files (@code{diff3})
2212 You can use @kbd{M-x smerge-mode} to turn on Smerge mode, a minor
2213 mode for editing output from the @command{diff3} program. This is
2214 typically the result of a failed merge from a version control system
2215 ``update'' outside VC, due to conflicting changes to a file. Smerge
2216 mode provides commands to resolve conflicts by selecting specific
2217 changes.
2218
2219 @inforef{Emerge,, emacs-xtra} for the Emerge facility, which
2220 provides a powerful interface for merging files.
2221
2222 @node Misc File Ops
2223 @section Miscellaneous File Operations
2224
2225 Emacs has commands for performing many other operations on files.
2226 All operate on one file; they do not accept wildcard file names.
2227
2228 @findex view-file
2229 @cindex viewing
2230 @cindex View mode
2231 @cindex mode, View
2232 @kbd{M-x view-file} allows you to scan or read a file by sequential
2233 screenfuls. It reads a file name argument using the minibuffer. After
2234 reading the file into an Emacs buffer, @code{view-file} displays the
2235 beginning. You can then type @key{SPC} to scroll forward one windowful,
2236 or @key{DEL} to scroll backward. Various other commands are provided
2237 for moving around in the file, but none for changing it; type @kbd{?}
2238 while viewing for a list of them. They are mostly the same as normal
2239 Emacs cursor motion commands. To exit from viewing, type @kbd{q}.
2240 The commands for viewing are defined by a special minor mode called View
2241 mode.
2242
2243 A related command, @kbd{M-x view-buffer}, views a buffer already present
2244 in Emacs. @xref{Misc Buffer}.
2245
2246 @kindex C-x i
2247 @findex insert-file
2248 @kbd{M-x insert-file} (also @kbd{C-x i}) inserts a copy of the
2249 contents of the specified file into the current buffer at point,
2250 leaving point unchanged before the contents and the mark after them.
2251
2252 @findex write-region
2253 @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
2254 copies the contents of the region into the specified file. @kbd{M-x
2255 append-to-file} adds the text of the region to the end of the
2256 specified file. @xref{Accumulating Text}. The variable
2257 @code{write-region-inhibit-fsync} applies to these commands, as well
2258 as saving files; see @ref{Customize Save}.
2259
2260 @findex delete-file
2261 @cindex deletion (of files)
2262 @kbd{M-x delete-file} deletes the specified file, like the @code{rm}
2263 command in the shell. If you are deleting many files in one directory, it
2264 may be more convenient to use Dired (@pxref{Dired}).
2265
2266 @findex rename-file
2267 @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
2268 the minibuffer, then renames file @var{old} as @var{new}. If the file name
2269 @var{new} already exists, you must confirm with @kbd{yes} or renaming is not
2270 done; this is because renaming causes the old meaning of the name @var{new}
2271 to be lost. If @var{old} and @var{new} are on different file systems, the
2272 file @var{old} is copied and deleted.
2273
2274 If the argument @var{new} is just a directory name, the real new
2275 name is in that directory, with the same non-directory component as
2276 @var{old}. For example, @kbd{M-x rename-file RET ~/foo RET /tmp RET}
2277 renames @file{~/foo} to @file{/tmp/foo}. The same rule applies to all
2278 the remaining commands in this section. All of them ask for
2279 confirmation when the new file name already exists, too.
2280
2281 @findex add-name-to-file
2282 @cindex hard links (creation)
2283 The similar command @kbd{M-x add-name-to-file} is used to add an
2284 additional name to an existing file without removing its old name.
2285 The new name is created as a ``hard link'' to the existing file.
2286 The new name must belong on the same file system that the file is on.
2287 On MS-Windows, this command works only if the file resides in an NTFS
2288 file system. On MS-DOS, it works by copying the file.
2289
2290 @findex copy-file
2291 @cindex copying files
2292 @kbd{M-x copy-file} reads the file @var{old} and writes a new file
2293 named @var{new} with the same contents.
2294
2295 @findex make-symbolic-link
2296 @cindex symbolic links (creation)
2297 @kbd{M-x make-symbolic-link} reads two file names @var{target} and
2298 @var{linkname}, then creates a symbolic link named @var{linkname},
2299 which points at @var{target}. The effect is that future attempts to
2300 open file @var{linkname} will refer to whatever file is named
2301 @var{target} at the time the opening is done, or will get an error if
2302 the name @var{target} is nonexistent at that time. This command does
2303 not expand the argument @var{target}, so that it allows you to specify
2304 a relative name as the target of the link.
2305
2306 Not all systems support symbolic links; on systems that don't
2307 support them, this command is not defined.
2308
2309 @node Compressed Files
2310 @section Accessing Compressed Files
2311 @cindex compression
2312 @cindex uncompression
2313 @cindex Auto Compression mode
2314 @cindex mode, Auto Compression
2315 @pindex gzip
2316
2317 Emacs automatically uncompresses compressed files when you visit
2318 them, and automatically recompresses them if you alter them and save
2319 them. Emacs recognizes compressed files by their file names. File
2320 names ending in @samp{.gz} indicate a file compressed with
2321 @code{gzip}. Other endings indicate other compression programs.
2322
2323 Automatic uncompression and compression apply to all the operations in
2324 which Emacs uses the contents of a file. This includes visiting it,
2325 saving it, inserting its contents into a buffer, loading it, and byte
2326 compiling it.
2327
2328 @findex auto-compression-mode
2329 @vindex auto-compression-mode
2330 To disable this feature, type the command @kbd{M-x
2331 auto-compression-mode}. You can disenable it permanently by
2332 customizing the variable @code{auto-compression-mode}.
2333
2334 @node File Archives
2335 @section File Archives
2336 @cindex mode, tar
2337 @cindex Tar mode
2338 @cindex file archives
2339
2340 A file whose name ends in @samp{.tar} is normally an @dfn{archive}
2341 made by the @code{tar} program. Emacs views these files in a special
2342 mode called Tar mode which provides a Dired-like list of the contents
2343 (@pxref{Dired}). You can move around through the list just as you
2344 would in Dired, and visit the subfiles contained in the archive.
2345 However, not all Dired commands are available in Tar mode.
2346
2347 If Auto Compression mode is enabled (@pxref{Compressed Files}), then
2348 Tar mode is used also for compressed archives---files with extensions
2349 @samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}.
2350
2351 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
2352 into its own buffer. You can edit it there, and if you save the
2353 buffer, the edited version will replace the version in the Tar buffer.
2354 @kbd{v} extracts a file into a buffer in View mode. @kbd{o} extracts
2355 the file and displays it in another window, so you could edit the file
2356 and operate on the archive simultaneously. @kbd{d} marks a file for
2357 deletion when you later use @kbd{x}, and @kbd{u} unmarks a file, as in
2358 Dired. @kbd{C} copies a file from the archive to disk and @kbd{R}
2359 renames a file within the archive. @kbd{g} reverts the buffer from
2360 the archive on disk.
2361
2362 The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission
2363 bits, group, and owner, respectively.
2364
2365 If your display supports colors and the mouse, moving the mouse
2366 pointer across a file name highlights that file name, indicating that
2367 you can click on it. Clicking @kbd{Mouse-2} on the highlighted file
2368 name extracts the file into a buffer and displays that buffer.
2369
2370 Saving the Tar buffer writes a new version of the archive to disk with
2371 the changes you made to the components.
2372
2373 You don't need the @code{tar} program to use Tar mode---Emacs reads
2374 the archives directly. However, accessing compressed archives
2375 requires the appropriate uncompression program.
2376
2377 @cindex Archive mode
2378 @cindex mode, archive
2379 @cindex @code{arc}
2380 @cindex @code{jar}
2381 @cindex @code{zip}
2382 @cindex @code{lzh}
2383 @cindex @code{zoo}
2384 @pindex arc
2385 @pindex jar
2386 @pindex zip
2387 @pindex lzh
2388 @pindex zoo
2389 @cindex Java class archives
2390 @cindex unzip archives
2391 A separate but similar Archive mode is used for archives produced by
2392 the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, and
2393 @code{zoo}, which have extensions corresponding to the program names.
2394
2395 The key bindings of Archive mode are similar to those in Tar mode,
2396 with the addition of the @kbd{m} key which marks a file for subsequent
2397 operations, and @kbd{M-@key{DEL}} which unmarks all the marked files.
2398 Also, the @kbd{a} key toggles the display of detailed file
2399 information, for those archive types where it won't fit in a single
2400 line. Operations such as renaming a subfile, or changing its mode or
2401 owner, are supported only for some of the archive formats.
2402
2403 Unlike Tar mode, Archive mode runs the archiving program to unpack
2404 and repack archives. Details of the program names and their options
2405 can be set in the @samp{Archive} Customize group. However, you don't
2406 need these programs to look at the archive table of contents, only to
2407 extract or manipulate the subfiles in the archive.
2408
2409 @node Remote Files
2410 @section Remote Files
2411
2412 @cindex Tramp
2413 @cindex FTP
2414 @cindex remote file access
2415 You can refer to files on other machines using a special file name
2416 syntax:
2417
2418 @example
2419 @group
2420 /@var{host}:@var{filename}
2421 /@var{user}@@@var{host}:@var{filename}
2422 /@var{user}@@@var{host}#@var{port}:@var{filename}
2423 /@var{method}:@var{user}@@@var{host}:@var{filename}
2424 /@var{method}:@var{user}@@@var{host}#@var{port}:@var{filename}
2425 @end group
2426 @end example
2427
2428 @noindent
2429 To carry out this request, Emacs uses either the FTP program or a
2430 remote-login program such as @command{ssh}, @command{rlogin}, or
2431 @command{telnet}. You can always specify in the file name which
2432 method to use---for example,
2433 @file{/ftp:@var{user}@@@var{host}:@var{filename}} uses FTP, whereas
2434 @file{/ssh:@var{user}@@@var{host}:@var{filename}} uses @command{ssh}.
2435 When you don't specify a method in the file name, Emacs chooses
2436 the method as follows:
2437
2438 @enumerate
2439 @item
2440 If the host name starts with @samp{ftp.} (with dot), then Emacs uses
2441 FTP.
2442 @item
2443 If the user name is @samp{ftp} or @samp{anonymous}, then Emacs uses
2444 FTP.
2445 @item
2446 Otherwise, Emacs uses @command{ssh}.
2447 @end enumerate
2448
2449 @noindent
2450 Remote file access through FTP is handled by the Ange-FTP package, which
2451 is documented in the following. Remote file access through the other
2452 methods is handled by the Tramp package, which has its own manual.
2453 @xref{Top, The Tramp Manual,, tramp, The Tramp Manual}.
2454
2455 When the Ange-FTP package is used, Emacs logs in through FTP using your
2456 user name or the name @var{user}. It may ask you for a password from
2457 time to time; this is used for logging in on @var{host}. The form using
2458 @var{port} allows you to access servers running on a non-default TCP
2459 port.
2460
2461 @cindex backups for remote files
2462 @vindex ange-ftp-make-backup-files
2463 If you want to disable backups for remote files, set the variable
2464 @code{ange-ftp-make-backup-files} to @code{nil}.
2465
2466 By default, the auto-save files (@pxref{Auto Save Files}) for remote
2467 files are made in the temporary file directory on the local machine.
2468 This is achieved using the variable @code{auto-save-file-name-transforms}.
2469
2470 @cindex ange-ftp
2471 @vindex ange-ftp-default-user
2472 @cindex user name for remote file access
2473 Normally, if you do not specify a user name in a remote file name,
2474 that means to use your own user name. But if you set the variable
2475 @code{ange-ftp-default-user} to a string, that string is used instead.
2476
2477 @cindex anonymous FTP
2478 @vindex ange-ftp-generate-anonymous-password
2479 To visit files accessible by anonymous FTP, you use special user
2480 names @samp{anonymous} or @samp{ftp}. Passwords for these user names
2481 are handled specially. The variable
2482 @code{ange-ftp-generate-anonymous-password} controls what happens: if
2483 the value of this variable is a string, then that string is used as
2484 the password; if non-@code{nil} (the default), then the value of
2485 @code{user-mail-address} is used; if @code{nil}, then Emacs prompts
2486 you for a password as usual.
2487
2488 @cindex firewall, and accessing remote files
2489 @cindex gateway, and remote file access with @code{ange-ftp}
2490 @vindex ange-ftp-smart-gateway
2491 @vindex ange-ftp-gateway-host
2492 Sometimes you may be unable to access files on a remote machine
2493 because a @dfn{firewall} in between blocks the connection for security
2494 reasons. If you can log in on a @dfn{gateway} machine from which the
2495 target files @emph{are} accessible, and whose FTP server supports
2496 gatewaying features, you can still use remote file names; all you have
2497 to do is specify the name of the gateway machine by setting the
2498 variable @code{ange-ftp-gateway-host}, and set
2499 @code{ange-ftp-smart-gateway} to @code{t}. Otherwise you may be able
2500 to make remote file names work, but the procedure is complex. You can
2501 read the instructions by typing @kbd{M-x finder-commentary @key{RET}
2502 ange-ftp @key{RET}}.
2503
2504 @vindex file-name-handler-alist
2505 @cindex disabling remote files
2506 You can entirely turn off the FTP file name feature by removing the
2507 entries @code{ange-ftp-completion-hook-function} and
2508 @code{ange-ftp-hook-function} from the variable
2509 @code{file-name-handler-alist}. You can turn off the feature in
2510 individual cases by quoting the file name with @samp{/:} (@pxref{Quoted
2511 File Names}).
2512
2513 @node Quoted File Names
2514 @section Quoted File Names
2515
2516 @cindex quoting file names
2517 @cindex file names, quote special characters
2518 You can @dfn{quote} an absolute file name to prevent special
2519 characters and syntax in it from having their special effects.
2520 The way to do this is to add @samp{/:} at the beginning.
2521
2522 For example, you can quote a local file name which appears remote, to
2523 prevent it from being treated as a remote file name. Thus, if you have
2524 a directory named @file{/foo:} and a file named @file{bar} in it, you
2525 can refer to that file in Emacs as @samp{/:/foo:/bar}.
2526
2527 @samp{/:} can also prevent @samp{~} from being treated as a special
2528 character for a user's home directory. For example, @file{/:/tmp/~hack}
2529 refers to a file whose name is @file{~hack} in directory @file{/tmp}.
2530
2531 Quoting with @samp{/:} is also a way to enter in the minibuffer a
2532 file name that contains @samp{$}. In order for this to work, the
2533 @samp{/:} must be at the beginning of the minibuffer contents. (You
2534 can also double each @samp{$}; see @ref{File Names with $}.)
2535
2536 You can also quote wildcard characters with @samp{/:}, for visiting.
2537 For example, @file{/:/tmp/foo*bar} visits the file
2538 @file{/tmp/foo*bar}.
2539
2540 Another method of getting the same result is to enter
2541 @file{/tmp/foo[*]bar}, which is a wildcard specification that matches
2542 only @file{/tmp/foo*bar}. However, in many cases there is no need to
2543 quote the wildcard characters because even unquoted they give the
2544 right result. For example, if the only file name in @file{/tmp} that
2545 starts with @samp{foo} and ends with @samp{bar} is @file{foo*bar},
2546 then specifying @file{/tmp/foo*bar} will visit only
2547 @file{/tmp/foo*bar}.
2548
2549 @node File Name Cache
2550 @section File Name Cache
2551
2552 @cindex file name caching
2553 @cindex cache of file names
2554 @pindex find
2555 @kindex C-@key{TAB}
2556 @findex file-cache-minibuffer-complete
2557 You can use the @dfn{file name cache} to make it easy to locate a
2558 file by name, without having to remember exactly where it is located.
2559 When typing a file name in the minibuffer, @kbd{C-@key{tab}}
2560 (@code{file-cache-minibuffer-complete}) completes it using the file
2561 name cache. If you repeat @kbd{C-@key{tab}}, that cycles through the
2562 possible completions of what you had originally typed. (However, note
2563 that the @kbd{C-@key{tab}} character cannot be typed on most text-only
2564 terminals.)
2565
2566 The file name cache does not fill up automatically. Instead, you
2567 load file names into the cache using these commands:
2568
2569 @findex file-cache-add-directory
2570 @table @kbd
2571 @item M-x file-cache-add-directory @key{RET} @var{directory} @key{RET}
2572 Add each file name in @var{directory} to the file name cache.
2573 @item M-x file-cache-add-directory-using-find @key{RET} @var{directory} @key{RET}
2574 Add each file name in @var{directory} and all of its nested
2575 subdirectories to the file name cache.
2576 @item M-x file-cache-add-directory-using-locate @key{RET} @var{directory} @key{RET}
2577 Add each file name in @var{directory} and all of its nested
2578 subdirectories to the file name cache, using @command{locate} to find
2579 them all.
2580 @item M-x file-cache-add-directory-list @key{RET} @var{variable} @key{RET}
2581 Add each file name in each directory listed in @var{variable}
2582 to the file name cache. @var{variable} should be a Lisp variable
2583 such as @code{load-path} or @code{exec-path}, whose value is a list
2584 of directory names.
2585 @item M-x file-cache-clear-cache @key{RET}
2586 Clear the cache; that is, remove all file names from it.
2587 @end table
2588
2589 The file name cache is not persistent: it is kept and maintained
2590 only for the duration of the Emacs session. You can view the contents
2591 of the cache with the @code{file-cache-display} command.
2592
2593 @node File Conveniences
2594 @section Convenience Features for Finding Files
2595
2596 In this section, we introduce some convenient facilities for finding
2597 recently-opened files, reading file names from a buffer, and viewing
2598 image files.
2599
2600 @findex recentf-mode
2601 @vindex recentf-mode
2602 @findex recentf-save-list
2603 @findex recentf-edit-list
2604 If you enable Recentf mode, with @kbd{M-x recentf-mode}, the
2605 @samp{File} menu includes a submenu containing a list of recently
2606 opened files. @kbd{M-x recentf-save-list} saves the current
2607 @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list}
2608 edits it.
2609
2610 The @kbd{M-x ffap} command generalizes @code{find-file} with more
2611 powerful heuristic defaults (@pxref{FFAP}), often based on the text at
2612 point. Partial Completion mode offers other features extending
2613 @code{find-file}, which can be used with @code{ffap}.
2614 @xref{Completion Options}.
2615
2616 @findex image-mode
2617 @findex image-toggle-display
2618 @cindex images, viewing
2619 Visiting image files automatically selects Image mode. This major
2620 mode allows you to toggle between displaying the file as an image in
2621 the Emacs buffer, and displaying its underlying text representation,
2622 using the command @kbd{C-c C-c} (@code{image-toggle-display}). This
2623 works only when Emacs can display the specific image type.
2624
2625 @findex thumbs-mode
2626 @findex mode, thumbs
2627 Thumbs mode is a major mode for viewing directories containing many
2628 image files. To use it, type @kbd{M-x thumbs} and specify the
2629 directory to view. The images in that directory will be displayed in
2630 a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a
2631 thumbnail to view the full-size image. Thumbs mode requires the
2632 @file{convert} program, which is part of the ImageMagick software
2633 package.
2634
2635 @node Filesets
2636 @section Filesets
2637 @cindex filesets
2638
2639 @findex filesets-init
2640 If you regularly edit a certain group of files, you can define them
2641 as a @dfn{fileset}. This lets you perform certain operations, such as
2642 visiting, @code{query-replace}, and shell commands on all the files
2643 at once. To make use of filesets, you must first add the expression
2644 @code{(filesets-init)} to your @file{.emacs} file (@pxref{Init File}).
2645 This adds a @samp{Filesets} menu to the menu bar.
2646
2647 @findex filesets-add-buffer
2648 @findex filesets-remove-buffer
2649 The simplest way to define a fileset is by adding files to it one
2650 at a time. To add a file to fileset @var{name}, visit the file and
2651 type @kbd{M-x filesets-add-buffer @kbd{RET} @var{name} @kbd{RET}}. If
2652 there is no fileset @var{name}, this creates a new one, which
2653 initially creates only the current file. The command @kbd{M-x
2654 filesets-remove-buffer} removes the current file from a fileset.
2655
2656 You can also edit the list of filesets directly, with @kbd{M-x
2657 filesets-edit} (or by choosing @samp{Edit Filesets} from the
2658 @samp{Filesets} menu). The editing is performed in a Customize buffer
2659 (@pxref{Easy Customization}). Filesets need not be a simple list of
2660 files---you can also define filesets using regular expression matching
2661 file names. Some examples of these more complicated filesets are
2662 shown in the Customize buffer. Remember to select @samp{Save for
2663 future sessions} if you want to use the same filesets in future Emacs
2664 sessions.
2665
2666 You can use the command @kbd{M-x filesets-open} to visit all the
2667 files in a fileset, and @kbd{M-x filesets-close} to close them. Use
2668 @kbd{M-x filesets-run-cmd} to run a shell command on all the files in
2669 a fileset. These commands are also available from the @samp{Filesets}
2670 menu, where each existing fileset is represented by a submenu.
2671
2672 @ignore
2673 arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250
2674 @end ignore