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