root/branches/2.1/info/emacs-10

Revision 3212, 47.6 kB (checked in by miyoshi, 5 years ago)

Sync up with Emacs-21.3.

Line 
1 This is ../info/emacs, produced by makeinfo version 4.3 from emacs.texi.
2
3    This is the Fourteenth edition of the `GNU Emacs Manual', updated
4 for Emacs version 21.3.
5
6 INFO-DIR-SECTION Emacs
7 START-INFO-DIR-ENTRY
8 * Emacs: (emacs).       The extensible self-documenting text editor.
9 END-INFO-DIR-ENTRY
10
11    Published by the Free Software Foundation 59 Temple Place, Suite 330
12 Boston, MA  02111-1307 USA
13
14    Copyright (C)
15 1985,1986,1987,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002
16 Free Software Foundation, Inc.
17
18    Permission is granted to copy, distribute and/or modify this document
19 under the terms of the GNU Free Documentation License, Version 1.1 or
20 any later version published by the Free Software Foundation; with the
21 Invariant Sections being "The GNU Manifesto", "Distribution" and "GNU
22 GENERAL PUBLIC LICENSE", with the Front-Cover texts being "A GNU
23 Manual," and with the Back-Cover Texts as in (a) below.  A copy of the
24 license is included in the section entitled "GNU Free Documentation
25 License."
26
27    (a) The FSF's Back-Cover Text is: "You have freedom to copy and
28 modify this GNU Manual, like GNU software.  Copies published by the Free
29 Software Foundation raise funds for GNU development."
30
31 
32 File: emacs,  Node: Snapshots,  Next: Miscellaneous VC,  Prev: Remote Repositories,  Up: Version Control
33
34 Snapshots
35 ---------
36
37    A "snapshot" is a named set of file versions (one for each
38 registered file) that you can treat as a unit.  One important kind of
39 snapshot is a "release", a (theoretically) stable version of the system
40 that is ready for distribution to users.
41
42 * Menu:
43
44 * Making Snapshots::            The snapshot facilities.
45 * Snapshot Caveats::            Things to be careful of when using snapshots.
46
47 
48 File: emacs,  Node: Making Snapshots,  Next: Snapshot Caveats,  Up: Snapshots
49
50 Making and Using Snapshots
51 ..........................
52
53    There are two basic commands for snapshots; one makes a snapshot
54 with a given name, the other retrieves a named snapshot.
55
56 `C-x v s NAME <RET>'
57      Define the last saved versions of every registered file in or
58      under the current directory as a snapshot named NAME
59      (`vc-create-snapshot').
60
61 `C-x v r NAME <RET>'
62      For all registered files at or below the current directory level,
63      select whatever versions correspond to the snapshot NAME
64      (`vc-retrieve-snapshot').
65
66      This command reports an error if any files are locked at or below
67      the current directory, without changing anything; this is to avoid
68      overwriting work in progress.
69
70    A snapshot uses a very small amount of resources--just enough to
71 record the list of file names and which version belongs to the
72 snapshot.  Thus, you need not hesitate to create snapshots whenever
73 they are useful.
74
75    You can give a snapshot name as an argument to `C-x v =' or `C-x v
76 ~' (*note Old Versions::).  Thus, you can use it to compare a snapshot
77 against the current files, or two snapshots against each other, or a
78 snapshot against a named version.
79
80 
81 File: emacs,  Node: Snapshot Caveats,  Prev: Making Snapshots,  Up: Snapshots
82
83 Snapshot Caveats
84 ................
85
86    VC's snapshot facilities are modeled on RCS's named-configuration
87 support.  They use RCS's native facilities for this, so under VC
88 snapshots made using RCS are visible even when you bypass VC.
89
90    For SCCS, VC implements snapshots itself.  The files it uses contain
91 name/file/version-number triples.  These snapshots are visible only
92 through VC.
93
94    A snapshot is a set of checked-in versions.  So make sure that all
95 the files are checked in and not locked when you make a snapshot.
96
97    File renaming and deletion can create some difficulties with
98 snapshots.  This is not a VC-specific problem, but a general design
99 issue in version control systems that no one has solved very well yet.
100
101    If you rename a registered file, you need to rename its master along
102 with it (the command `vc-rename-file' does this automatically).  If you
103 are using SCCS, you must also update the records of the snapshot, to
104 mention the file by its new name (`vc-rename-file' does this, too).  An
105 old snapshot that refers to a master file that no longer exists under
106 the recorded name is invalid; VC can no longer retrieve it.  It would
107 be beyond the scope of this manual to explain enough about RCS and SCCS
108 to explain how to update the snapshots by hand.
109
110    Using `vc-rename-file' makes the snapshot remain valid for
111 retrieval, but it does not solve all problems.  For example, some of the
112 files in your program probably refer to others by name.  At the very
113 least, the makefile probably mentions the file that you renamed.  If you
114 retrieve an old snapshot, the renamed file is retrieved under its new
115 name, which is not the name that the makefile expects.  So the program
116 won't really work as retrieved.
117
118 
119 File: emacs,  Node: Miscellaneous VC,  Next: Customizing VC,  Prev: Snapshots,  Up: Version Control
120
121 Miscellaneous Commands and Features of VC
122 -----------------------------------------
123
124    This section explains the less-frequently-used features of VC.
125
126 * Menu:
127
128 * Change Logs and VC::  Generating a change log file from log entries.
129 * Renaming and VC::     A command to rename both the source and master
130                           file correctly.
131 * Version Headers::     Inserting version control headers into working files.
132
133 
134 File: emacs,  Node: Change Logs and VC,  Next: Renaming and VC,  Up: Miscellaneous VC
135
136 Change Logs and VC
137 ..................
138
139    If you use RCS or CVS for a program and also maintain a change log
140 file for it (*note Change Log::), you can generate change log entries
141 automatically from the version control log entries:
142
143 `C-x v a'
144      Visit the current directory's change log file and, for registered
145      files in that directory, create new entries for versions checked
146      in since the most recent entry in the change log file.
147      (`vc-update-change-log').
148
149      This command works with RCS or CVS only, not with SCCS.
150
151 `C-u C-x v a'
152      As above, but only find entries for the current buffer's file.
153
154 `M-1 C-x v a'
155      As above, but find entries for all the currently visited files
156      that are maintained with version control.  This works only with
157      RCS, and it puts all entries in the log for the default directory,
158      which may not be appropriate.
159
160    For example, suppose the first line of `ChangeLog' is dated
161 1999-04-10, and that the only check-in since then was by Nathaniel
162 Bowditch to `rcs2log' on 1999-05-22 with log text `Ignore log messages
163 that start with `#'.'.  Then `C-x v a' visits `ChangeLog' and inserts
164 text like this:
165
166      1999-05-22  Nathaniel Bowditch  <nat@apn.org>
167      
168              * rcs2log: Ignore log messages that start with `#'.
169
170 You can then edit the new change log entry further as you wish.
171
172    Some of the new change log entries may duplicate what's already in
173 ChangeLog.  You will have to remove these duplicates by hand.
174
175    Normally, the log entry for file `foo' is displayed as `* foo: TEXT
176 OF LOG ENTRY'.  The `:' after `foo' is omitted if the text of the log
177 entry starts with `(FUNCTIONNAME): '.  For example, if the log entry
178 for `vc.el' is `(vc-do-command): Check call-process status.', then the
179 text in `ChangeLog' looks like this:
180
181      1999-05-06  Nathaniel Bowditch  <nat@apn.org>
182      
183              * vc.el (vc-do-command): Check call-process status.
184
185    When `C-x v a' adds several change log entries at once, it groups
186 related log entries together if they all are checked in by the same
187 author at nearly the same time.  If the log entries for several such
188 files all have the same text, it coalesces them into a single entry.
189 For example, suppose the most recent check-ins have the following log
190 entries:
191
192 * For `vc.texinfo': `Fix expansion typos.'
193 * For `vc.el': `Don't call expand-file-name.'
194 * For `vc-hooks.el': `Don't call expand-file-name.'
195
196 They appear like this in `ChangeLog':
197
198      1999-04-01  Nathaniel Bowditch  <nat@apn.org>
199      
200              * vc.texinfo: Fix expansion typos.
201      
202              * vc.el, vc-hooks.el: Don't call expand-file-name.
203
204    Normally, `C-x v a' separates log entries by a blank line, but you
205 can mark several related log entries to be clumped together (without an
206 intervening blank line) by starting the text of each related log entry
207 with a label of the form `{CLUMPNAME} '.  The label itself is not
208 copied to `ChangeLog'.  For example, suppose the log entries are:
209
210 * For `vc.texinfo': `{expand} Fix expansion typos.'
211 * For `vc.el': `{expand} Don't call expand-file-name.'
212 * For `vc-hooks.el': `{expand} Don't call expand-file-name.'
213
214 Then the text in `ChangeLog' looks like this:
215
216      1999-04-01  Nathaniel Bowditch  <nat@apn.org>
217      
218              * vc.texinfo: Fix expansion typos.
219              * vc.el, vc-hooks.el: Don't call expand-file-name.
220
221    A log entry whose text begins with `#' is not copied to `ChangeLog'.
222 For example, if you merely fix some misspellings in comments, you can
223 log the change with an entry beginning with `#' to avoid putting such
224 trivia into `ChangeLog'.
225
226 
227 File: emacs,  Node: Renaming and VC,  Next: Version Headers,  Prev: Change Logs and VC,  Up: Miscellaneous VC
228
229 Renaming VC Work Files and Master Files
230 .......................................
231
232    When you rename a registered file, you must also rename its master
233 file correspondingly to get proper results.  Use `vc-rename-file' to
234 rename the source file as you specify, and rename its master file
235 accordingly.  It also updates any snapshots (*note Snapshots::) that
236 mention the file, so that they use the new name; despite this, the
237 snapshot thus modified may not completely work (*note Snapshot
238 Caveats::).
239
240    You cannot use `vc-rename-file' on a file that is locked by someone
241 else.
242
243 
244 File: emacs,  Node: Version Headers,  Prev: Renaming and VC,  Up: Miscellaneous VC
245
246 Inserting Version Control Headers
247 .................................
248
249    Sometimes it is convenient to put version identification strings
250 directly into working files.  Certain special strings called "version
251 headers" are replaced in each successive version by the number of that
252 version.
253
254    If you are using RCS, and version headers are present in your working
255 files, Emacs can use them to determine the current version and the
256 locking state of the files.  This is more reliable than referring to the
257 master files, which is done when there are no version headers.  Note
258 that in a multi-branch environment, version headers are necessary to
259 make VC behave correctly (*note Multi-User Branching::).
260
261    Searching for version headers is controlled by the variable
262 `vc-consult-headers'.  If it is non-`nil' (the default), Emacs searches
263 for headers to determine the version number you are editing.  Setting
264 it to `nil' disables this feature.
265
266    You can use the `C-x v h' command (`vc-insert-headers') to insert a
267 suitable header string.
268
269 `C-x v h'
270      Insert headers in a file for use with your version-control system.
271
272    The default header string is `$Id$' for RCS and `%W%' for SCCS.  You
273 can specify other headers to insert by setting the variable
274 `vc-header-alist'.  Its value is a list of elements of the form
275 `(PROGRAM . STRING)' where PROGRAM is `RCS' or `SCCS' and STRING is the
276 string to use.
277
278    Instead of a single string, you can specify a list of strings; then
279 each string in the list is inserted as a separate header on a line of
280 its own.
281
282    It is often necessary to use "superfluous" backslashes when writing
283 the strings that you put in this variable.  For instance, you might
284 write `"$Id\$"' rather than `"$Id$"'.  The extra backslash prevents the
285 string constant from being interpreted as a header, if the Emacs Lisp
286 file containing it is maintained with version control.
287
288    Each header is inserted surrounded by tabs, inside comment
289 delimiters, on a new line at point.  Normally the ordinary comment
290 start and comment end strings of the current mode are used, but for
291 certain modes, there are special comment delimiters for this purpose;
292 the variable `vc-comment-alist' specifies them.  Each element of this
293 list has the form `(MODE STARTER ENDER)'.
294
295    The variable `vc-static-header-alist' specifies further strings to
296 add based on the name of the buffer.  Its value should be a list of
297 elements of the form `(REGEXP . FORMAT)'.  Whenever REGEXP matches the
298 buffer name, FORMAT is inserted as part of the header.  A header line
299 is inserted for each element that matches the buffer name, and for each
300 string specified by `vc-header-alist'.  The header line is made by
301 processing the string from `vc-header-alist' with the format taken from
302 the element.  The default value for `vc-static-header-alist' is as
303 follows:
304
305      (("\\.c$" .
306        "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
307      #endif /* lint */\n"))
308
309 It specifies insertion of text of this form:
310
311
312      #ifndef lint
313      static char vcid[] = "STRING";
314      #endif /* lint */
315
316 Note that the text above starts with a blank line.
317
318    If you use more than one version header in a file, put them close
319 together in the file.  The mechanism in `revert-buffer' that preserves
320 markers may not handle markers positioned between two version headers.
321
322 
323 File: emacs,  Node: Customizing VC,  Prev: Miscellaneous VC,  Up: Version Control
324
325 Customizing VC
326 --------------
327
328    The variable `vc-handled-backends' determines which version control
329 systems VC should handle.  The default value is `(RCS CVS SCCS)', so it
330 contains all three version systems that are currently supported.  If
331 you want VC to ignore one or more of these systems, exclude its name
332 from the list.
333
334    The order of systems in the list is significant: when you visit a
335 file registered in more than one system (*note Local Version Control::),
336 VC uses the system that comes first in `vc-handled-backends' by
337 default.  The order is also significant when you register a file for
338 the first time, *note Registering:: for details.
339
340 * Menu:
341
342 * General VC Options::  Options that apply to multiple back ends.
343 * RCS and SCCS::        Options for RCS and SCCS.
344 * CVS Options::         Options for CVS.
345
346 
347 File: emacs,  Node: General VC Options,  Next: RCS and SCCS,  Up: Customizing VC
348
349 General Options
350 ...............
351
352    Emacs normally does not save backup files for source files that are
353 maintained with version control.  If you want to make backup files even
354 for files that use version control, set the variable
355 `vc-make-backup-files' to a non-`nil' value.
356
357    Normally the work file exists all the time, whether it is locked or
358 not.  If you set `vc-keep-workfiles' to `nil', then checking in a new
359 version with `C-x C-q' deletes the work file; but any attempt to visit
360 the file with Emacs creates it again.  (With CVS, work files are always
361 kept.)
362
363    Editing a version-controlled file through a symbolic link can be
364 dangerous.  It bypasses the version control system--you can edit the
365 file without locking it, and fail to check your changes in.  Also, your
366 changes might overwrite those of another user.  To protect against
367 this, VC checks each symbolic link that you visit, to see if it points
368 to a file under version control.
369
370    The variable `vc-follow-symlinks' controls what to do when a
371 symbolic link points to a version-controlled file.  If it is `nil', VC
372 only displays a warning message.  If it is `t', VC automatically
373 follows the link, and visits the real file instead, telling you about
374 this in the echo area.  If the value is `ask' (the default), VC asks
375 you each time whether to follow the link.
376
377    If `vc-suppress-confirm' is non-`nil', then `C-x C-q' and `C-x v i'
378 can save the current buffer without asking, and `C-x v u' also operates
379 without asking for confirmation.  (This variable does not affect `C-x v
380 c'; that operation is so drastic that it should always ask for
381 confirmation.)
382
383    VC mode does much of its work by running the shell commands for RCS,
384 CVS and SCCS.  If `vc-command-messages' is non-`nil', VC displays
385 messages to indicate which shell commands it runs, and additional
386 messages when the commands finish.
387
388    You can specify additional directories to search for version control
389 programs by setting the variable `vc-path'.  These directories are
390 searched before the usual search path.  It is rarely necessary to set
391 this variable, because VC normally finds the proper files automatically.
392
393 
394 File: emacs,  Node: RCS and SCCS,  Next: CVS Options,  Prev: General VC Options,  Up: Customizing VC
395
396 Options for RCS and SCCS
397 ........................
398
399    By default, RCS uses locking to coordinate the activities of several
400 users, but there is a mode called "non-strict locking" in which you can
401 check-in changes without locking the file first.  Use `rcs -U' to
402 switch to non-strict locking for a particular file, see the `rcs'
403 manual page for details.
404
405    When deducing the version control state of an RCS file, VC first
406 looks for an RCS version header string in the file (*note Version
407 Headers::).  If there is no header string, VC normally looks at the
408 file permissions of the work file; this is fast.  But there might be
409 situations when the file permissions cannot be trusted.  In this case
410 the master file has to be consulted, which is rather expensive.  Also
411 the master file can only tell you _if_ there's any lock on the file,
412 but not whether your work file really contains that locked version.
413
414    You can tell VC not to use version headers to determine the file
415 status by setting `vc-consult-headers' to `nil'.  VC then always uses
416 the file permissions (if it is supposed to trust them), or else checks
417 the master file.
418
419    You can specify the criterion for whether to trust the file
420 permissions by setting the variable `vc-mistrust-permissions'.  Its
421 value can be `t' (always mistrust the file permissions and check the
422 master file), `nil' (always trust the file permissions), or a function
423 of one argument which makes the decision.  The argument is the
424 directory name of the `RCS' subdirectory.  A non-`nil' value from the
425 function says to mistrust the file permissions.  If you find that the
426 file permissions of work files are changed erroneously, set
427 `vc-mistrust-permissions' to `t'.  Then VC always checks the master
428 file to determine the file's status.
429
430    VC determines the version control state of files under SCCS much as
431 with RCS.  It does not consider SCCS version headers, though.  Thus,
432 the variable `vc-mistrust-permissions' affects SCCS use, but
433 `vc-consult-headers' does not.
434
435 
436 File: emacs,  Node: CVS Options,  Prev: RCS and SCCS,  Up: Customizing VC
437
438 Options specific for CVS
439 ........................
440
441    By default, CVS does not use locking to coordinate the activities of
442 several users; anyone can change a work file at any time.  However,
443 there are ways to restrict this, resulting in behavior that resembles
444 locking.
445
446    For one thing, you can set the `CVSREAD' environment variable (the
447 value you use makes no difference).  If this variable is defined, CVS
448 makes your work files read-only by default.  In Emacs, you must type
449 `C-x C-q' to make the file writable, so that editing works in fact
450 similar as if locking was used.  Note however, that no actual locking
451 is performed, so several users can make their files writable at the
452 same time.  When setting `CVSREAD' for the first time, make sure to
453 check out all your modules anew, so that the file protections are set
454 correctly.
455
456    Another way to achieve something similar to locking is to use the
457 "watch" feature of CVS.  If a file is being watched, CVS makes it
458 read-only by default, and you must also use `C-x C-q' in Emacs to make
459 it writable.  VC calls `cvs edit' to make the file writable, and CVS
460 takes care to notify other developers of the fact that you intend to
461 change the file.  See the CVS documentation for details on using the
462 watch feature.
463
464    When a file's repository is on a remote machine, VC tries to keep
465 network interactions to a minimum.  This is controlled by the variable
466 `vc-cvs-stay-local'.  If it is `t' (the default), then VC uses only the
467 entry in the local CVS subdirectory to determine the file's state (and
468 possibly information returned by previous CVS commands).  One
469 consequence of this is that when you have modified a file, and somebody
470 else has already checked in other changes to the file, you are not
471 notified of it until you actually try to commit.  (But you can try to
472 pick up any recent changes from the repository first, using `C-x v m
473 <RET>', *note Merging::).
474
475    When `vc-cvs-stay-local' is `t', VC also makes local version
476 backups, so that simple diff and revert operations are completely local
477 (*note Version Backups::).
478
479    On the other hand, if you set `vc-cvs-stay-local' to `nil', then VC
480 queries the remote repository _before_ it decides what to do in
481 `vc-next-action' (`C-x v v'), just as it does for local repositories.
482 It also does not make any version backups.
483
484    You can also set `vc-cvs-stay-local' to a regular expression that is
485 matched against the repository host name; VC then stays local only for
486 repositories from hosts that match the pattern.
487
488 
489 File: emacs,  Node: Directories,  Next: Comparing Files,  Prev: Version Control,  Up: Files
490
491 File Directories
492 ================
493
494    The file system groups files into "directories".  A "directory
495 listing" is a list of all the files in a directory.  Emacs provides
496 commands to create and delete directories, and to make directory
497 listings in brief format (file names only) and verbose format (sizes,
498 dates, and authors included).  There is also a directory browser called
499 Dired; see *Note Dired::.
500
501 `C-x C-d DIR-OR-PATTERN <RET>'
502      Display a brief directory listing (`list-directory').
503
504 `C-u C-x C-d DIR-OR-PATTERN <RET>'
505      Display a verbose directory listing.
506
507 `M-x make-directory <RET> DIRNAME <RET>'
508      Create a new directory named DIRNAME.
509
510 `M-x delete-directory <RET> DIRNAME <RET>'
511      Delete the directory named DIRNAME.  It must be empty, or you get
512      an error.
513
514    The command to display a directory listing is `C-x C-d'
515 (`list-directory').  It reads using the minibuffer a file name which is
516 either a directory to be listed or a wildcard-containing pattern for
517 the files to be listed.  For example,
518
519      C-x C-d /u2/emacs/etc <RET>
520
521 lists all the files in directory `/u2/emacs/etc'.  Here is an example
522 of specifying a file name pattern:
523
524      C-x C-d /u2/emacs/src/*.c <RET>
525
526    Normally, `C-x C-d' displays a brief directory listing containing
527 just file names.  A numeric argument (regardless of value) tells it to
528 make a verbose listing including sizes, dates, and owners (like `ls
529 -l').
530
531    The text of a directory listing is obtained by running `ls' in an
532 inferior process.  Two Emacs variables control the switches passed to
533 `ls': `list-directory-brief-switches' is a string giving the switches
534 to use in brief listings (`"-CF"' by default), and
535 `list-directory-verbose-switches' is a string giving the switches to
536 use in a verbose listing (`"-l"' by default).
537
538 
539 File: emacs,  Node: Comparing Files,  Next: Misc File Ops,  Prev: Directories,  Up: Files
540
541 Comparing Files
542 ===============
543
544    The command `M-x diff' compares two files, displaying the
545 differences in an Emacs buffer named `*diff*'.  It works by running the
546 `diff' program, using options taken from the variable `diff-switches'.
547 The value of `diff-switches' should be a string; the default is `"-c"'
548 to specify a context diff.
549
550    The buffer `*diff*' has Compilation mode as its major mode, so you
551 can use `C-x `' to visit successive changed locations in the two source
552 files.  You can also move to a particular hunk of changes and type
553 <RET> or `C-c C-c', or click `Mouse-2' on it, to move to the
554 corresponding source location.  You can also use the other special
555 commands of Compilation mode: <SPC> and <DEL> for scrolling, and `M-p'
556 and `M-n' for cursor motion.  *Note Compilation::.
557
558    The command `M-x diff-backup' compares a specified file with its most
559 recent backup.  If you specify the name of a backup file, `diff-backup'
560 compares it with the source file that it is a backup of.
561
562    The command `M-x compare-windows' compares the text in the current
563 window with that in the next window.  Comparison starts at point in each
564 window, and each starting position is pushed on the mark ring in its
565 respective buffer.  Then point moves forward in each window, a character
566 at a time, until a mismatch between the two windows is reached.  Then
567 the command is finished.  For more information about windows in Emacs,
568 *Note Windows::.
569
570    With a numeric argument, `compare-windows' ignores changes in
571 whitespace.  If the variable `compare-ignore-case' is non-`nil', it
572 ignores differences in case as well.
573
574    Differences between versions of files are often distributed as
575 "patches", which are the output from `diff' or a version control system
576 that uses `diff'.  `M-x diff-mode' turns on Diff mode, a major mode for
577 viewing and editing patches, either as "unified diffs" or "context
578 diffs."
579
580    You can use `M-x smerge-mode' to turn on Smerge mode, a minor mode
581 for editing output from the `diff3' program.  This is typically the
582 result of a failed merge from a version control system "update" outside
583 VC, due to conflicting changes to a file.  Smerge mode provides
584 commands to resolve conflicts by selecting specific changes.
585
586    See also *Note Emerge::, and *Note Top: (ediff)Top, for convenient
587 facilities for merging two similar files.
588
589 
590 File: emacs,  Node: Misc File Ops,  Next: Compressed Files,  Prev: Comparing Files,  Up: Files
591
592 Miscellaneous File Operations
593 =============================
594
595    Emacs has commands for performing many other operations on files.
596 All operate on one file; they do not accept wildcard file names.
597
598    `M-x view-file' allows you to scan or read a file by sequential
599 screenfuls.  It reads a file name argument using the minibuffer.  After
600 reading the file into an Emacs buffer, `view-file' displays the
601 beginning.  You can then type <SPC> to scroll forward one windowful, or
602 <DEL> to scroll backward.  Various other commands are provided for
603 moving around in the file, but none for changing it; type `?' while
604 viewing for a list of them.  They are mostly the same as normal Emacs
605 cursor motion commands.  To exit from viewing, type `q'.  The commands
606 for viewing are defined by a special major mode called View mode.
607
608    A related command, `M-x view-buffer', views a buffer already present
609 in Emacs.  *Note Misc Buffer::.
610
611    `M-x insert-file' (also `C-x i') inserts a copy of the contents of
612 the specified file into the current buffer at point, leaving point
613 unchanged before the contents and the mark after them.
614
615    `M-x write-region' is the inverse of `M-x insert-file'; it copies
616 the contents of the region into the specified file.  `M-x
617 append-to-file' adds the text of the region to the end of the specified
618 file.  *Note Accumulating Text::.
619
620    `M-x delete-file' deletes the specified file, like the `rm' command
621 in the shell.  If you are deleting many files in one directory, it may
622 be more convenient to use Dired (*note Dired::).
623
624    `M-x rename-file' reads two file names OLD and NEW using the
625 minibuffer, then renames file OLD as NEW.  If the file name NEW already
626 exists, you must confirm with `yes' or renaming is not done; this is
627 because renaming causes the old meaning of the name NEW to be lost.  If
628 OLD and NEW are on different file systems, the file OLD is copied and
629 deleted.
630
631    The similar command `M-x add-name-to-file' is used to add an
632 additional name to an existing file without removing its old name.  The
633 new name is created as a "hard link" to the existing file.  The new
634 name must belong on the same file system that the file is on.  On
635 Windows, this command works only if the file resides in an NTFS file
636 system.  On MS-DOS, it works by copying the file.
637
638    `M-x copy-file' reads the file OLD and writes a new file named NEW
639 with the same contents.  Confirmation is required if a file named NEW
640 already exists, because copying has the consequence of overwriting the
641 old contents of the file NEW.
642
643    `M-x make-symbolic-link' reads two file names TARGET and LINKNAME,
644 then creates a symbolic link named LINKNAME, which points at TARGET.
645 The effect is that future attempts to open file LINKNAME will refer to
646 whatever file is named TARGET at the time the opening is done, or will
647 get an error if the name TARGET is not in use at that time.  This
648 command does not expand the argument TARGET, so that it allows you to
649 specify a relative name as the target of the link.
650
651    Confirmation is required when creating the link if LINKNAME is in
652 use.  Note that not all systems support symbolic links; on systems that
653 don't support them, this command is not defined.
654
655 
656 File: emacs,  Node: Compressed Files,  Next: File Archives,  Prev: Misc File Ops,  Up: Files
657
658 Accessing Compressed Files
659 ==========================
660
661    Emacs comes with a library that can automatically uncompress
662 compressed files when you visit them, and automatically recompress them
663 if you alter them and save them.  To enable this feature, type the
664 command `M-x auto-compression-mode'.  You can enable it permanently by
665 customizing the option `auto-compression-mode'.
666
667    When automatic compression (which implies automatic uncompression as
668 well) is enabled, Emacs recognizes compressed files by their file names.
669 File names ending in `.gz' indicate a file compressed with `gzip'.
670 Other endings indicate other compression programs.
671
672    Automatic uncompression and compression apply to all the operations
673 in which Emacs uses the contents of a file.  This includes visiting it,
674 saving it, inserting its contents into a buffer, loading it, and byte
675 compiling it.
676
677 
678 File: emacs,  Node: File Archives,  Next: Remote Files,  Prev: Compressed Files,  Up: Files
679
680 File Archives
681 =============
682
683    A file whose name ends in `.tar' is normally an "archive" made by
684 the `tar' program.  Emacs views these files in a special mode called
685 Tar mode which provides a Dired-like list of the contents (*note
686 Dired::).  You can move around through the list just as you would in
687 Dired, and visit the subfiles contained in the archive.  However, not
688 all Dired commands are available in Tar mode.
689
690    If you enable Auto Compression mode (*note Compressed Files::), then
691 Tar mode is used also for compressed archives--files with extensions
692 `.tgz', `.tar.Z' and `.tar.gz'.
693
694    The keys `e', `f' and <RET> all extract a component file into its
695 own buffer.  You can edit it there and when you save the buffer the
696 edited version will replace the version in the Tar buffer.  `v'
697 extracts a file into a buffer in View mode.  `o' extracts the file and
698 displays it in another window, so you could edit the file and operate
699 on the archive simultaneously.  `d' marks a file for deletion when you
700 later use `x', and `u' unmarks a file, as in Dired.  `C' copies a file
701 from the archive to disk and `R' renames a file.  `g' reverts the
702 buffer from the archive on disk.
703
704    The keys `M', `G', and `O' change the file's permission bits, group,
705 and owner, respectively.
706
707    If your display supports colors and the mouse, moving the mouse
708 pointer across a file name highlights that file name, indicating that
709 you can click on it.  Clicking `Mouse-2' on the highlighted file name
710 extracts the file into a buffer and displays that buffer.
711
712    Saving the Tar buffer writes a new version of the archive to disk
713 with the changes you made to the components.
714
715    You don't need the `tar' program to use Tar mode--Emacs reads the
716 archives directly.  However, accessing compressed archives requires the
717 appropriate uncompression program.
718
719    A separate but similar Archive mode is used for archives produced by
720 the programs `arc', `jar', `lzh', `zip', and `zoo', which have
721 extensions corresponding to the program names.
722
723    The key bindings of Archive mode are similar to those in Tar mode,
724 with the addition of the `m' key which marks a file for subsequent
725 operations, and `M-<DEL>' which unmarks all the marked files.  Also,
726 the `a' key toggles the display of detailed file information, for those
727 archive types where it won't fit in a single line.  Operations such as
728 renaming a subfile, or changing its mode or owner, are supported only
729 for some of the archive formats.
730
731    Unlike Tar mode, Archive mode runs the archiving program to unpack
732 and repack archives.  Details of the program names and their options
733 can be set in the `Archive' Customize group.  However, you don't need
734 these programs to look at the archive table of contents, only to
735 extract or manipulate the subfiles in the archive.
736
737 
738 File: emacs,  Node: Remote Files,  Next: Quoted File Names,  Prev: File Archives,  Up: Files
739
740 Remote Files
741 ============
742
743    You can refer to files on other machines using a special file name
744 syntax:
745
746      /HOST:FILENAME
747      /USER@HOST:FILENAME
748      /USER@HOST#PORT:FILENAME
749
750 When you do this, Emacs uses the FTP program to read and write files on
751 the specified host.  It logs in through FTP using your user name or the
752 name USER.  It may ask you for a password from time to time; this is
753 used for logging in on HOST.  The form using PORT allows you to access
754 servers running on a non-default TCP port.
755
756    If you want to disable backups for remote files, set the variable
757 `ange-ftp-make-backup-files' to `nil'.
758
759    Normally, if you do not specify a user name in a remote file name,
760 that means to use your own user name.  But if you set the variable
761 `ange-ftp-default-user' to a string, that string is used instead.  (The
762 Emacs package that implements FTP file access is called `ange-ftp'.)
763
764    To visit files accessible by anonymous FTP, you use special user
765 names `anonymous' or `ftp'.  Passwords for these user names are handled
766 specially.  The variable `ange-ftp-generate-anonymous-password'
767 controls what happens: if the value of this variable is a string, then
768 that string is used as the password; if non-`nil' (the default), then
769 the value of `user-mail-address' is used; if `nil', the user is prompted
770 for a password as normal.
771
772    Sometimes you may be unable to access files on a remote machine
773 because a "firewall" in between blocks the connection for security
774 reasons.  If you can log in on a "gateway" machine from which the
775 target files _are_ accessible, and whose FTP server supports gatewaying
776 features, you can still use remote file names; all you have to do is
777 specify the name of the gateway machine by setting the variable
778 `ange-ftp-gateway-host', and set `ange-ftp-smart-gateway' to `t'.
779 Otherwise you may be able to make remote file names work, but the
780 procedure is complex.  You can read the instructions by typing `M-x
781 finder-commentary <RET> ange-ftp <RET>'.
782
783    You can entirely turn off the FTP file name feature by removing the
784 entries `ange-ftp-completion-hook-function' and
785 `ange-ftp-hook-function' from the variable `file-name-handler-alist'.
786 You can turn off the feature in individual cases by quoting the file
787 name with `/:' (*note Quoted File Names::).
788
789 
790 File: emacs,  Node: Quoted File Names,  Next: File Name Cache,  Prev: Remote Files,  Up: Files
791
792 Quoted File Names
793 =================
794
795    You can "quote" an absolute file name to prevent special characters
796 and syntax in it from having their special effects.  The way to do this
797 is to add `/:' at the beginning.
798
799    For example, you can quote a local file name which appears remote, to
800 prevent it from being treated as a remote file name.  Thus, if you have
801 a directory named `/foo:' and a file named `bar' in it, you can refer
802 to that file in Emacs as `/:/foo:/bar'.
803
804    `/:' can also prevent `~' from being treated as a special character
805 for a user's home directory.  For example, `/:/tmp/~hack' refers to a
806 file whose name is `~hack' in directory `/tmp'.
807
808    Likewise, quoting with `/:' is one way to enter in the minibuffer a
809 file name that contains `$'.  However, the `/:' must be at the
810 beginning of the minibuffer in order to quote `$'.
811
812    You can also quote wildcard characters with `/:', for visiting.  For
813 example, `/:/tmp/foo*bar' visits the file `/tmp/foo*bar'.  However, in
814 most cases you can simply type the wildcard characters for themselves.
815 For example, if the only file name in `/tmp' that starts with `foo' and
816 ends with `bar' is `foo*bar', then specifying `/tmp/foo*bar' will visit
817 just `/tmp/foo*bar'.  Another way is to specify `/tmp/foo[*]bar'.
818
819 
820 File: emacs,  Node: File Name Cache,  Next: File Conveniences,  Prev: Quoted File Names,  Up: Files
821
822 File Name Cache
823 ===============
824
825    You can use the "file name cache" to make it easy to locate a file
826 by name, without having to remember exactly where it is located.  When
827 typing a file name in the minibuffer, `C-<tab>'
828 (`file-cache-minibuffer-complete') completes it using the file name
829 cache.  If you repeat `C-<tab>', that cycles through the possible
830 completions of what you had originally typed.  Note that the `C-<tab>'
831 character cannot be typed on most text-only terminals.
832
833    The file name cache does not fill up automatically.  Instead, you
834 load file names into the cache using these commands:
835
836 `M-x file-cache-add-directory <RET> DIRECTORY <RET>'
837      Add each file name in DIRECTORY to the file name cache.
838
839 `M-x file-cache-add-directory-using-find <RET> DIRECTORY <RET>'
840      Add each file name in DIRECTORY and all of its nested
841      subdirectories to the file name cache.
842
843 `M-x file-cache-add-directory-using-locate <RET> DIRECTORY <RET>'
844      Add each file name in DIRECTORY and all of its nested
845      subdirectories to the file name cache, using `locate' to find them
846      all.
847
848 `M-x file-cache-add-directory-list <RET> VARIABLE <RET>'
849      Add each file name in each directory listed in VARIABLE to the
850      file name cache.  VARIABLE should be a Lisp variable such as
851      `load-path' or `exec-path', whose value is a list of directory
852      names.
853
854 `M-x file-cache-clear-cache <RET>'
855      Clear the cache; that is, remove all file names from it.
856
857 
858 File: emacs,  Node: File Conveniences,  Prev: File Name Cache,  Up: Files
859
860 Convenience Features for Finding Files
861 ======================================
862
863    If you enable Recentf mode, with `M-x recentf-mode', the `File' menu
864 includes a submenu containing a list of recently opened files.  `M-x
865 recentf-save-list' saves the current `recent-file-list' to a file, and
866 `M-x recentf-edit-list' edits it.
867
868    When Auto-image-file minor mode is enabled, visiting an image file
869 displays it as an image, not as text.  Likewise, inserting an image
870 file into a buffer inserts it as an image.  This works only when Emacs
871 can display the relevant image type.  The variables
872 `image-file-name-extensions' or `image-file-name-regexps' control which
873 file names are recognized as containing images.
874
875    The `M-x ffap' command generalizes `find-file' with more powerful
876 heuristic defaults (*note FFAP::), often based on the text at point.
877 Partial Completion mode offers other features extending `find-file',
878 which can be used with `ffap'.  *Note Completion Options::.
879
880 
881 File: emacs,  Node: Buffers,  Next: Windows,  Prev: Files,  Up: Top
882
883 Using Multiple Buffers
884 **********************
885
886    The text you are editing in Emacs resides in an object called a
887 "buffer".  Each time you visit a file, a buffer is created to hold the
888 file's text.  Each time you invoke Dired, a buffer is created to hold
889 the directory listing.  If you send a message with `C-x m', a buffer
890 named `*mail*' is used to hold the text of the message.  When you ask
891 for a command's documentation, that appears in a buffer called `*Help*'.
892
893    At any time, one and only one buffer is "current".  It is also
894 called the "selected buffer".  Often we say that a command operates on
895 "the buffer" as if there were only one; but really this means that the
896 command operates on the current buffer (most commands do).
897
898    When Emacs has multiple windows, each window has its own chosen
899 buffer and displays it; at any time, only one of the windows is
900 selected, and its chosen buffer is the current buffer.  Each window's
901 mode line normally displays the name of the window's chosen buffer
902 (*note Windows::).
903
904    Each buffer has a name, which can be of any length, and you can
905 select any buffer by giving its name.  Most buffers are made by
906 visiting files, and their names are derived from the files' names.  But
907 you can also create an empty buffer with any name you want.  A newly
908 started Emacs has a buffer named `*scratch*' which can be used for
909 evaluating Lisp expressions in Emacs.  The distinction between upper
910 and lower case matters in buffer names.
911
912    Each buffer records individually what file it is visiting, whether
913 it is modified, and what major mode and minor modes are in effect in it
914 (*note Major Modes::).  Any Emacs variable can be made "local to" a
915 particular buffer, meaning its value in that buffer can be different
916 from the value in other buffers.  *Note Locals::.
917
918    A buffer's size cannot be larger than some maximum, which is defined
919 by the largest buffer position representable by the "Emacs integer"
920 data type.  This is because Emacs tracks buffer positions using that
921 data type.  For 32-bit machines, the largest buffer size is 128
922 megabytes.
923
924 * Menu:
925
926 * Select Buffer::       Creating a new buffer or reselecting an old one.
927 * List Buffers::        Getting a list of buffers that exist.
928 * Misc Buffer::         Renaming; changing read-onlyness; copying text.
929 * Kill Buffer::         Killing buffers you no longer need.
930 * Several Buffers::     How to go through the list of all buffers
931                           and operate variously on several of them.
932 * Indirect Buffers::    An indirect buffer shares the text of another buffer.
933 * Buffer Convenience::  Convenience and customization features for
934                           buffer handling.
935
936 
937 File: emacs,  Node: Select Buffer,  Next: List Buffers,  Up: Buffers
938
939 Creating and Selecting Buffers
940 ==============================
941
942 `C-x b BUFFER <RET>'
943      Select or create a buffer named BUFFER (`switch-to-buffer').
944
945 `C-x 4 b BUFFER <RET>'
946      Similar, but select BUFFER in another window
947      (`switch-to-buffer-other-window').
948
949 `C-x 5 b BUFFER <RET>'
950      Similar, but select BUFFER in a separate frame
951      (`switch-to-buffer-other-frame').
952
953    To select the buffer named BUFNAME, type `C-x b BUFNAME <RET>'.
954 This runs the command `switch-to-buffer' with argument BUFNAME.  You
955 can use completion on an abbreviation for the buffer name you want
956 (*note Completion::).  An empty argument to `C-x b' specifies the
957 buffer that was current most recently among those not now displayed in
958 any window.
959
960    To select a buffer in a window other than the current one, type `C-x
961 4 b BUFNAME <RET>'.  This runs the command
962 `switch-to-buffer-other-window' which displays the buffer BUFNAME in
963 another window.  By default, if displaying the buffer causes two
964 vertically adjacent windows to be displayed, the heights of those
965 windows are evened out; to countermand that and preserve the window
966 configuration, set the variable `even-window-heights' to `nil'.
967
968    Similarly, `C-x 5 b BUFFER <RET>' runs the command
969 `switch-to-buffer-other-frame' which selects a buffer in another frame.
970
971    You can control how certain buffers are handled by these commands by
972 customizing the variables `special-display-buffer-names',
973 `special-display-regexps', `same-window-buffer-names', and
974 `same-window-regexps'.  See *Note Force Same Window::, and *Note
975 Special Buffer Frames::, for more about these variables.  In addition,
976 if the value of `display-buffer-reuse-frames' is non-`nil', and the
977 buffer you want to switch to is already displayed in some frame, Emacs
978 will raise that frame.
979
980    Most buffers are created by visiting files, or by Emacs commands that
981 want to display some text, but you can also create a buffer explicitly
982 by typing `C-x b BUFNAME <RET>'.  This makes a new, empty buffer that
983 is not visiting any file, and selects it for editing.  Such buffers are
984 used for making notes to yourself.  If you try to save one, you are
985 asked for the file name to use.  The new buffer's major mode is
986 determined by the value of `default-major-mode' (*note Major Modes::).
987
988    Note that `C-x C-f', and any other command for visiting a file, can
989 also be used to switch to an existing file-visiting buffer.  *Note
990 Visiting::.
991
992    Emacs uses buffer names that start with a space for internal
993 purposes.  It treats these buffers specially in minor ways--for
994 example, by default they do not record undo information.  It is best to
995 avoid using such buffer names yourself.
996
997 
998 File: emacs,  Node: List Buffers,  Next: Misc Buffer,  Prev: Select Buffer,  Up: Buffers
999
1000 Listing Existing Buffers
1001 ========================
1002
1003 `C-x C-b'
1004      List the existing buffers (`list-buffers').
1005
1006    To display a list of all the buffers that exist, type `C-x C-b'.
1007 Each line in the list shows one buffer's name, major mode and visited
1008 file.  The buffers are listed in the order that they were current; the
1009 buffers that were current most recently come first.
1010
1011    `*' at the beginning of a line indicates the buffer is "modified."
1012 If several buffers are modified, it may be time to save some with `C-x
1013 s' (*note Saving::).  `%' indicates a read-only buffer.  `.' marks the
1014 current buffer.  Here is an example of a buffer list:
1015
1016       MR Buffer         Size  Mode           File
1017       -- ------         ----  ----           ----
1018      .*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
1019          *Help*         1287  Fundamental
1020          files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
1021        % RMAIL          64042 RMAIL          /u/rms/RMAIL
1022       *% man            747   Dired          /u2/emacs/man/
1023          net.emacs      343885 Fundamental   /u/rms/net.emacs
1024          fileio.c       27691 C              /u2/emacs/src/fileio.c
1025          NEWS           67340 Text           /u2/emacs/etc/NEWS
1026          *scratch*         0     Lisp Interaction
1027
1028 Note that the buffer `*Help*' was made by a help request; it is not
1029 visiting any file.  The buffer `man' was made by Dired on the directory
1030 `/u2/emacs/man/'.  You can list only buffers that are visiting files by
1031 giving the command a prefix; for instance, by typing `C-u C-x C-b'.
1032
1033 
1034 File: emacs,  Node: Misc Buffer,  Next: Kill Buffer,  Prev: List Buffers,  Up: Buffers
1035
1036 Miscellaneous Buffer Operations
1037 ===============================
1038
1039 `C-x C-q'
1040      Toggle read-only status of buffer (`vc-toggle-read-only').
1041
1042 `M-x rename-buffer <RET> NAME <RET>'
1043      Change the name of the current buffer.
1044
1045 `M-x rename-uniquely'
1046      Rename the current buffer by adding `<NUMBER>' to the end.
1047
1048 `M-x view-buffer <RET> BUFFER <RET>'
1049      Scroll through buffer BUFFER.
1050
1051    A buffer can be "read-only", which means that commands to change its
1052 contents are not allowed.  The mode line indicates read-only buffers
1053 with `%%' or `%*' near the left margin.  Read-only buffers are usually
1054 made by subsystems such as Dired and Rmail that have special commands
1055 to operate on the text; also by visiting a file whose access control
1056 says you cannot write it.
1057
1058    If you wish to make changes in a read-only buffer, use the command
1059 `C-x C-q' (`vc-toggle-read-only').  It makes a read-only buffer
1060 writable, and makes a writable buffer read-only.  In most cases, this
1061 works by setting the variable `buffer-read-only', which has a local
1062 value in each buffer and makes the buffer read-only if its value is
1063 non-`nil'.  If the file is maintained with version control, `C-x C-q'
1064 works through the version control system to change the read-only status
1065 of the file as well as the buffer.  *Note Version Control::.
1066
1067    `M-x rename-buffer' changes the name of the current buffer.  Specify
1068 the new name as a minibuffer argument.  There is no default.  If you
1069 specify a name that is in use for some other buffer, an error happens
1070 and no renaming is done.
1071
1072    `M-x rename-uniquely' renames the current buffer to a similar name
1073 with a numeric suffix added to make it both different and unique.  This
1074 command does not need an argument.  It is useful for creating multiple
1075 shell buffers: if you rename the `*Shell*' buffer, then do `M-x shell'
1076 again, it makes a new shell buffer named `*Shell*'; meanwhile, the old
1077 shell buffer continues to exist under its new name.  This method is
1078 also good for mail buffers, compilation buffers, and most Emacs
1079 features that create special buffers with particular names.
1080
1081    `M-x view-buffer' is much like `M-x view-file' (*note Misc File
1082 Ops::) except that it examines an already existing Emacs buffer.  View
1083 mode provides commands for scrolling through the buffer conveniently
1084 but not for changing it.  When you exit View mode with `q', that
1085 switches back to the buffer (and the position) which was previously
1086 displayed in the window.  Alternatively, if you exit View mode with
1087 `e', the buffer and the value of point that resulted from your perusal
1088 remain in effect.
1089
1090    The commands `M-x append-to-buffer' and `M-x insert-buffer' can be
1091 used to copy text from one buffer to another.  *Note Accumulating
1092 Text::.
1093
Note: See TracBrowser for help on using the browser.