comparison man/maintaining.texi @ 68693:f06d0aec15a7

(Format of ChangeLog): New node, split out from ChangeLog. (ChangeLog): Clarifications in the remaining text. (Create Tags Table, Etags Regexps, Select Tags Table): Cleanups. (Find Tag): Add @w. (Tags Search): Explain tag table order here. Simplify grep ref. (List Tags): tags-tag-face is a variable, not a face. (Emerge): Cleanups.
author Richard M. Stallman <rms@gnu.org>
date Wed, 08 Feb 2006 00:00:22 +0000
parents dc2d5a6655a3
children 63d1645b9198 c5406394f567
comparison
equal deleted inserted replaced
68692:06780217e0ec 68693:f06d0aec15a7
12 version control features (@pxref{Version Control}) are also particularly 12 version control features (@pxref{Version Control}) are also particularly
13 useful for this purpose. 13 useful for this purpose.
14 14
15 @menu 15 @menu
16 * Change Log:: Maintaining a change history for your program. 16 * Change Log:: Maintaining a change history for your program.
17 * Format of ChangeLog:: What the change log file looks like.
17 * Tags:: Go direct to any function in your program in one 18 * Tags:: Go direct to any function in your program in one
18 command. Tags remembers which file it is in. 19 command. Tags remembers which file it is in.
19 * Emerge:: A convenient way of merging two versions of a program. 20 * Emerge:: A convenient way of merging two versions of a program.
20 @end menu 21 @end menu
21 22
22 @node Change Log 23 @node Change Log
23 @section Change Logs 24 @section Change Logs
25
26 A change log file contains a chronological record of when and why you
27 have changed a program, consisting of a sequence of entries describing
28 individual changes. Normally it is kept in a file called
29 @file{ChangeLog} in the same directory as the file you are editing, or
30 one of its parent directories. A single @file{ChangeLog} file can
31 record changes for all the files in its directory and all its
32 subdirectories.
24 33
25 @cindex change log 34 @cindex change log
26 @kindex C-x 4 a 35 @kindex C-x 4 a
27 @findex add-change-log-entry-other-window 36 @findex add-change-log-entry-other-window
28 The Emacs command @kbd{C-x 4 a} adds a new entry to the change log 37 The Emacs command @kbd{C-x 4 a} adds a new entry to the change log
30 (@code{add-change-log-entry-other-window}). If that file is actually 39 (@code{add-change-log-entry-other-window}). If that file is actually
31 a backup file, it makes an entry appropriate for the file's 40 a backup file, it makes an entry appropriate for the file's
32 parent---that is useful for making log entries for functions that 41 parent---that is useful for making log entries for functions that
33 have been deleted in the current version. 42 have been deleted in the current version.
34 43
35 A change log file contains a chronological record of when and why you
36 have changed a program, consisting of a sequence of entries describing
37 individual changes. Normally it is kept in a file called
38 @file{ChangeLog} in the same directory as the file you are editing, or
39 one of its parent directories. A single @file{ChangeLog} file can
40 record changes for all the files in its directory and all its
41 subdirectories.
42
43 You should put a copyright notice and permission notice at the
44 end of the change log file. Here is an example:
45
46 @example
47 Copyright 1997, 1998 Free Software Foundation, Inc.
48 Copying and distribution of this file, with or without modification, are
49 permitted provided the copyright notice and this notice are preserved.
50 @end example
51
52 @noindent
53 Of course, you should substitute the proper years and copyright holder.
54
55 A change log entry starts with a header line that contains the current
56 date, your name, and your email address (taken from the variable
57 @code{add-log-mailing-address}). Aside from these header lines, every
58 line in the change log starts with a space or a tab. The bulk of the
59 entry consists of @dfn{items}, each of which starts with a line starting
60 with whitespace and a star. Here are two entries, both dated in May
61 1993, with two items and one item respectively.
62
63 @iftex
64 @medbreak
65 @end iftex
66 @smallexample
67 1993-05-25 Richard Stallman <rms@@gnu.org>
68
69 * man.el: Rename symbols `man-*' to `Man-*'.
70 (manual-entry): Make prompt string clearer.
71
72 * simple.el (blink-matching-paren-distance):
73 Change default to 12,000.
74
75 1993-05-24 Richard Stallman <rms@@gnu.org>
76
77 * vc.el (minor-mode-map-alist): Don't use it if it's void.
78 (vc-cancel-version): Doc fix.
79 @end smallexample
80
81 One entry can describe several changes; each change should have its
82 own item, or its own line in an item. Normally there should be a
83 blank line between items. When items are related (parts of the same
84 change, in different places), group them by leaving no blank line
85 between them.
86
87 @kbd{C-x 4 a} visits the change log file and creates a new entry 44 @kbd{C-x 4 a} visits the change log file and creates a new entry
88 unless the most recent entry is for today's date and your name. It 45 unless the most recent entry is for today's date and your name. It
89 also creates a new item for the current file. For many languages, it 46 also creates a new item for the current file. For many languages, it
90 can even guess the name of the function or other object that was 47 can even guess the name of the function or other object that was
91 changed. 48 changed.
92 49
93 @vindex add-log-keep-changes-together 50 @vindex add-log-keep-changes-together
94 When the variable @code{add-log-keep-changes-together} is 51 When the variable @code{add-log-keep-changes-together} is
95 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file 52 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
96 rather than starting a new item. 53 rather than starting a new item.
54
55 @vindex add-log-always-start-new-record
56 If @code{add-log-always-start-new-record} is non-@code{nil},
57 @kbd{C-x 4 a} always makes a new entry, even if the last entry
58 was made by you and on the same date.
97 59
98 @vindex change-log-version-info-enabled 60 @vindex change-log-version-info-enabled
99 @vindex change-log-version-number-regexp-list 61 @vindex change-log-version-number-regexp-list
100 @cindex file version in change log entries 62 @cindex file version in change log entries
101 If the value of the variable @code{change-log-version-info-enabled} 63 If the value of the variable @code{change-log-version-info-enabled}
102 is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the 64 is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the
103 change log entry. It finds the version number by searching the first 65 change log entry. It finds the version number by searching the first
104 ten percent of the file, using regular expressions from the variable 66 ten percent of the file, using regular expressions from the variable
105 @code{change-log-version-number-regexp-list}. 67 @code{change-log-version-number-regexp-list}.
106 68
107 @vindex add-log-always-start-new-record
108 If @code{add-log-always-start-new-record} is non-@code{nil},
109 @kbd{C-x 4 a} always makes a new entry, even if the last entry
110 was made by you and on the same date.
111
112 @cindex Change Log mode 69 @cindex Change Log mode
113 @findex change-log-mode 70 @findex change-log-mode
114 The change log file is visited in Change Log mode. In this major 71 The change log file is visited in Change Log mode. In this major
115 mode, each bunch of grouped items counts as one paragraph, and each 72 mode, each bunch of grouped items counts as one paragraph, and each
116 entry is considered a page. This facilitates editing the entries. 73 entry is considered a page. This facilitates editing the entries.
120 @findex change-log-merge 77 @findex change-log-merge
121 You can use the command @kbd{M-x change-log-merge} to merge other 78 You can use the command @kbd{M-x change-log-merge} to merge other
122 log files into a buffer in Change Log Mode, preserving the date 79 log files into a buffer in Change Log Mode, preserving the date
123 ordering of entries. 80 ordering of entries.
124 81
125 @findex change-log-redate
126 @cindex converting change log date style
127 Versions of Emacs before 20.1 used a different format for the time of
128 the change log entry:
129
130 @smallexample
131 Fri May 25 11:23:23 1993 Richard Stallman <rms@@gnu.org>
132 @end smallexample
133
134 @noindent
135 The @kbd{M-x change-log-redate} command converts all the old-style
136 date entries in the change log file visited in the current buffer to
137 the new format, to make the file uniform in style. This is handy when
138 entries are contributed by many different people, some of whom use old
139 versions of Emacs.
140
141 Version control systems are another way to keep track of changes in your 82 Version control systems are another way to keep track of changes in your
142 program and keep a change log. @xref{Log Buffer}. 83 program and keep a change log. @xref{Log Buffer}.
143 84
144 @ignore 85 @node Format of ChangeLog
145 @c This is commented out because the command is specific 86 @section Format of ChangeLog
146 @c to maintenance of Emacs itself. 87
147 88 A change log entry starts with a header line that contains the current
148 @node Authors 89 date, your name, and your email address (taken from the variable
149 @section @file{AUTHORS} files 90 @code{add-log-mailing-address}). Aside from these header lines, every
150 @cindex @file{AUTHORS} file 91 line in the change log starts with a space or a tab. The bulk of the
151 92 entry consists of @dfn{items}, each of which starts with a line starting
152 Programs which have many contributors usually include a file named 93 with whitespace and a star. Here are two entries, both dated in May
153 @file{AUTHORS} in their distribution, which lists the individual 94 1993, with two items and one item respectively.
154 contributions. Emacs has a special command for maintaining the 95
155 @file{AUTHORS} file that is part of the Emacs distribution. 96 @iftex
156 97 @medbreak
157 @findex authors 98 @end iftex
158 The @kbd{M-x authors} command prompts for the name of the root of the 99 @smallexample
159 Emacs source directory. It then scans @file{ChangeLog} files and Lisp 100 1993-05-25 Richard Stallman <rms@@gnu.org>
160 source files under that directory for information about authors of 101
161 individual packages, and people who made changes in source files, and 102 * man.el: Rename symbols `man-*' to `Man-*'.
162 puts the information it gleans into a buffer named @samp{*Authors*}. 103 (manual-entry): Make prompt string clearer.
163 You can then edit the contents of that buffer and merge it with the 104
164 existing @file{AUTHORS} file. 105 * simple.el (blink-matching-paren-distance):
165 106 Change default to 12,000.
166 Do not assume that this command finds all the contributors; don't 107
167 assume that a person not listed in the output was not a contributor. 108 1993-05-24 Richard Stallman <rms@@gnu.org>
168 If you merged in someone's contribution and did not put his name 109
169 in the change log, he won't show up in @kbd{M-x authors} either. 110 * vc.el (minor-mode-map-alist): Don't use it if it's void.
170 @end ignore 111 (vc-cancel-version): Doc fix.
112 @end smallexample
113
114 One entry can describe several changes; each change should have its
115 own item, or its own line in an item. Normally there should be a
116 blank line between items. When items are related (parts of the same
117 change, in different places), group them by leaving no blank line
118 between them.
119
120 You should put a copyright notice and permission notice at the
121 end of the change log file. Here is an example:
122
123 @example
124 Copyright 1997, 1998 Free Software Foundation, Inc.
125 Copying and distribution of this file, with or without modification, are
126 permitted provided the copyright notice and this notice are preserved.
127 @end example
128
129 @noindent
130 Of course, you should substitute the proper years and copyright holder.
171 131
172 @node Tags 132 @node Tags
173 @section Tags Tables 133 @section Tags Tables
174 @cindex tags table 134 @cindex tags table
175 135
423 described in the table, the way to update the tags table is the same 383 described in the table, the way to update the tags table is the same
424 way it was made in the first place. If the tags table fails to record 384 way it was made in the first place. If the tags table fails to record
425 a tag, or records it for the wrong file, then Emacs cannot possibly 385 a tag, or records it for the wrong file, then Emacs cannot possibly
426 find its definition until you update the tags table. However, if the 386 find its definition until you update the tags table. However, if the
427 position recorded in the tags table becomes a little bit wrong (due to 387 position recorded in the tags table becomes a little bit wrong (due to
428 other editing), the only consequence is a slight delay in finding the 388 other editing), the worst consequence is a slight delay in finding the
429 tag. Even if the stored position is very far wrong, Emacs will still 389 tag. Even if the stored position is very far wrong, Emacs will still
430 find the tag, after searching most of the file for it. Even that 390 find the tag, after searching most of the file for it. That delay is
431 delay is hardly noticeable with today's computers. 391 hardly noticeable with today's computers.
432 392
433 So you should update a tags table when you define new tags that you want 393 Thus, there is no need to update the tags table after each edit.
434 to have listed, or when you move tag definitions from one file to another, 394 You should update a tags table when you define new tags that you want
435 or when changes become substantial. Normally there is no need to update 395 to have listed, or when you move tag definitions from one file to
436 the tags table after each edit, or even every day. 396 another, or when changes become substantial.
437 397
438 One tags table can virtually include another. Specify the included 398 One tags table can virtually include another. Specify the included
439 tags file name with the @samp{--include=@var{file}} option when 399 tags file name with the @samp{--include=@var{file}} option when
440 creating the file that is to include it. The latter file then acts as 400 creating the file that is to include it. The latter file then acts as
441 if it covered all the source files specified in the included file, as 401 if it covered all the source files specified in the included file, as
478 calling @code{etags} from programs. It can be used (only once) in 438 calling @code{etags} from programs. It can be used (only once) in
479 place of a file name on the command line. @code{Etags} will read from 439 place of a file name on the command line. @code{Etags} will read from
480 standard input and mark the produced tags as belonging to the file 440 standard input and mark the produced tags as belonging to the file
481 @var{file}. 441 @var{file}.
482 442
483 @samp{etags --help} prints the list of the languages @code{etags} 443 @samp{etags --help} outputs the list of the languages @code{etags}
484 knows, and the file name rules for guessing the language. It also prints 444 knows, and the file name rules for guessing the language. It also prints
485 a list of all the available @code{etags} options, together with a short 445 a list of all the available @code{etags} options, together with a short
486 explanation. If followed by one or more @samp{--language=@var{lang}} 446 explanation. If followed by one or more @samp{--language=@var{lang}}
487 options, prints detailed information about how tags are generated for 447 options, it outputs detailed information about how tags are generated for
488 @var{lang}. 448 @var{lang}.
489 449
490 @node Etags Regexps 450 @node Etags Regexps
491 @subsection Etags Regexps 451 @subsection Etags Regexps
492 452
493 The @samp{--regex} option provides a general way of recognizing tags 453 The @samp{--regex} option provides a general way of recognizing tags
494 based on regexp matching. You can freely intermix it with file names. 454 based on regexp matching. You can freely intermix this option with
455 file names, and each one applies to the source files that follow it.
495 If you specify multiple @samp{--regex} options, all of them are used 456 If you specify multiple @samp{--regex} options, all of them are used
496 in parallel, but each one applies only to the source files that follow 457 in parallel. The syntax is:
497 it. The syntax is:
498 458
499 @smallexample 459 @smallexample
500 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers} 460 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers}
501 @end smallexample 461 @end smallexample
502 462
535 Match this regular expression against the whole file, and allow 495 Match this regular expression against the whole file, and allow
536 @samp{.} in @var{tagregexp} to match newlines. 496 @samp{.} in @var{tagregexp} to match newlines.
537 @end table 497 @end table
538 498
539 The @samp{-R} option cancels all the regexps defined by preceding 499 The @samp{-R} option cancels all the regexps defined by preceding
540 @samp{--regex} options. It applies to the file names following it, as 500 @samp{--regex} options. It too applies to the file names following
541 you can see from the following example: 501 it. Here's an example:
542 502
543 @smallexample 503 @smallexample
544 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \ 504 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \
545 bar.ber -R --lang=lisp los.er 505 bar.ber -R --lang=lisp los.er
546 @end smallexample 506 @end smallexample
645 @node Select Tags Table 605 @node Select Tags Table
646 @subsection Selecting a Tags Table 606 @subsection Selecting a Tags Table
647 607
648 @vindex tags-file-name 608 @vindex tags-file-name
649 @findex visit-tags-table 609 @findex visit-tags-table
650 Emacs has at any time one @dfn{selected} tags table, and all the commands 610 Emacs has at any time one @dfn{selected} tags table, and all the
651 for working with tags tables use the selected one. To select a tags table, 611 commands for working with tags tables use the selected one. To select
652 type @kbd{M-x visit-tags-table}, which reads the tags table file name as an 612 a tags table, type @kbd{M-x visit-tags-table}, which reads the tags
653 argument. The name @file{TAGS} in the default directory is used as the 613 table file name as an argument, with @file{TAGS} in the default
654 default file name. 614 directory as the default.
655 615
656 All this command does is store the file name in the variable 616 Emacs does not actually read in the tags table contents until you
657 @code{tags-file-name}. Emacs does not actually read in the tags table 617 try to use them; all @code{visit-tags-table} does is store the file
658 contents until you try to use them. Setting this variable yourself is just 618 name in the variable @code{tags-file-name}, and setting the variable
659 as good as using @code{visit-tags-table}. The variable's initial value is 619 yourself is just as good. The variable's initial value is @code{nil};
660 @code{nil}; that value tells all the commands for working with tags tables 620 that value tells all the commands for working with tags tables that
661 that they must ask for a tags table file name to use. 621 they must ask for a tags table file name to use.
662 622
663 Using @code{visit-tags-table} when a tags table is already loaded 623 Using @code{visit-tags-table} when a tags table is already loaded
664 gives you a choice: you can add the new tags table to the current list 624 gives you a choice: you can add the new tags table to the current list
665 of tags tables, or start a new list. The tags commands use all the tags 625 of tags tables, or start a new list. The tags commands use all the tags
666 tables in the current list. If you start a new list, the new tags table 626 tables in the current list. If you start a new list, the new tags table
667 is used @emph{instead} of others. If you add the new table to the 627 is used @emph{instead} of others. If you add the new table to the
668 current list, it is used @emph{as well as} the others. When the tags 628 current list, it is used @emph{as well as} the others.
669 commands scan the list of tags tables, they don't always start at the
670 beginning of the list; they start with the first tags table (if any)
671 that describes the current file, proceed from there to the end of the
672 list, and then scan from the beginning of the list until they have
673 covered all the tables in the list.
674 629
675 @vindex tags-table-list 630 @vindex tags-table-list
676 You can specify a precise list of tags tables by setting the variable 631 You can specify a precise list of tags tables by setting the variable
677 @code{tags-table-list} to a list of strings, like this: 632 @code{tags-table-list} to a list of strings, like this:
678 633
747 @findex find-tag-other-window 702 @findex find-tag-other-window
748 @kindex C-x 5 . 703 @kindex C-x 5 .
749 @findex find-tag-other-frame 704 @findex find-tag-other-frame
750 Like most commands that can switch buffers, @code{find-tag} has a 705 Like most commands that can switch buffers, @code{find-tag} has a
751 variant that displays the new buffer in another window, and one that 706 variant that displays the new buffer in another window, and one that
752 makes a new frame for it. The former is @kbd{C-x 4 .}, which invokes 707 makes a new frame for it. The former is @w{@kbd{C-x 4 .}}, which invokes
753 the command @code{find-tag-other-window}. The latter is @kbd{C-x 5 .}, 708 the command @code{find-tag-other-window}. The latter is @w{@kbd{C-x 5 .}},
754 which invokes @code{find-tag-other-frame}. 709 which invokes @code{find-tag-other-frame}.
755 710
756 To move back to places you've found tags recently, use @kbd{C-u - 711 To move back to places you've found tags recently, use @kbd{C-u -
757 M-.}; more generally, @kbd{M-.} with a negative numeric argument. This 712 M-.}; more generally, @kbd{M-.} with a negative numeric argument. This
758 command can take you to another buffer. @kbd{C-x 4 .} with a negative 713 command can take you to another buffer. @w{@kbd{C-x 4 .}} with a negative
759 argument finds the previous tag location in another window. 714 argument finds the previous tag location in another window.
760 715
761 @kindex M-* 716 @kindex M-*
762 @findex pop-tag-mark 717 @findex pop-tag-mark
763 @vindex find-tag-marker-ring-length 718 @vindex find-tag-marker-ring-length
779 @node Tags Search 734 @node Tags Search
780 @subsection Searching and Replacing with Tags Tables 735 @subsection Searching and Replacing with Tags Tables
781 @cindex search and replace in multiple files 736 @cindex search and replace in multiple files
782 @cindex multiple-file search and replace 737 @cindex multiple-file search and replace
783 738
784 The commands in this section visit and search all the files listed in the 739 The commands in this section visit and search all the files listed
785 selected tags table, one by one. For these commands, the tags table serves 740 in the selected tags table, one by one. For these commands, the tags
786 only to specify a sequence of files to search. 741 table serves only to specify a sequence of files to search. These
742 commands scan the list of tags tables starting with the first tags
743 table (if any) that describes the current file, proceed from there to
744 the end of the list, and then scan from the beginning of the list
745 until they have covered all the tables in the list.
787 746
788 @table @kbd 747 @table @kbd
789 @item M-x tags-search @key{RET} @var{regexp} @key{RET} 748 @item M-x tags-search @key{RET} @var{regexp} @key{RET}
790 Search for @var{regexp} through the files in the selected tags 749 Search for @var{regexp} through the files in the selected tags
791 table. 750 table.
844 Buffers in which no match is found are quickly killed; the others 803 Buffers in which no match is found are quickly killed; the others
845 continue to exist. 804 continue to exist.
846 805
847 It may have struck you that @code{tags-search} is a lot like 806 It may have struck you that @code{tags-search} is a lot like
848 @code{grep}. You can also run @code{grep} itself as an inferior of 807 @code{grep}. You can also run @code{grep} itself as an inferior of
849 Emacs and have Emacs show you the matching lines one by one. This works 808 Emacs and have Emacs show you the matching lines one by one.
850 much like running a compilation; finding the source locations of the
851 @code{grep} matches works like finding the compilation errors.
852 @xref{Grep Searching}. 809 @xref{Grep Searching}.
853 810
854 @node List Tags 811 @node List Tags
855 @subsection Tags Table Inquiries 812 @subsection Tags Table Inquiries
856 813
880 @code{tags-apropos-verbose} is non-@code{nil}, it displays the names 837 @code{tags-apropos-verbose} is non-@code{nil}, it displays the names
881 of the tags files together with the tag names. 838 of the tags files together with the tag names.
882 839
883 @vindex tags-tag-face 840 @vindex tags-tag-face
884 @vindex tags-apropos-additional-actions 841 @vindex tags-apropos-additional-actions
885 You can customize the appearance of the output with the face 842 You can customize the appearance of the output by setting the
886 @code{tags-tag-face}. You can display additional output with @kbd{M-x 843 variable @code{tags-tag-face} to a face. You can display additional
887 tags-apropos} by customizing the variable 844 output with @kbd{M-x tags-apropos} by customizing the variable
888 @code{tags-apropos-additional-actions}---see its documentation for 845 @code{tags-apropos-additional-actions}---see its documentation for
889 details. 846 details.
890 847
891 You can also use the collection of tag names to complete a symbol 848 You can also use the collection of tag names to complete a symbol
892 name in the buffer. @xref{Symbol Completion}. 849 name in the buffer. @xref{Symbol Completion}.
894 @node Emerge 851 @node Emerge
895 @section Merging Files with Emerge 852 @section Merging Files with Emerge
896 @cindex Emerge 853 @cindex Emerge
897 @cindex merging files 854 @cindex merging files
898 855
899 It's not unusual for programmers to get their signals crossed and modify 856 It's not unusual for programmers to get their signals crossed and
900 the same program in two different directions. To recover from this 857 modify the same program in two different directions. To recover from
901 confusion, you need to merge the two versions. Emerge makes this 858 this confusion, you need to merge the two versions. Emerge makes this
902 easier. See also @ref{Comparing Files}, for commands to compare 859 easier. See also @ref{Comparing Files}, for other ways to compare
903 in a more manual fashion, and @ref{Top, Ediff,, ediff, The Ediff Manual}. 860 files, and @ref{Top, Ediff,, ediff, The Ediff Manual}.
904 861
905 @menu 862 @menu
906 * Overview of Emerge:: How to start Emerge. Basic concepts. 863 * Overview of Emerge:: How to start Emerge. Basic concepts.
907 * Submodes of Emerge:: Fast mode vs. Edit mode. 864 * Submodes of Emerge:: Fast mode vs. Edit mode.
908 Skip Prefers mode and Auto Advance mode. 865 Skip Prefers mode and Auto Advance mode.
916 @end menu 873 @end menu
917 874
918 @node Overview of Emerge 875 @node Overview of Emerge
919 @subsection Overview of Emerge 876 @subsection Overview of Emerge
920 877
921 To start Emerge, run one of these four commands: 878 To start Emerge, run one of these four commands:
922 879
923 @table @kbd 880 @table @kbd
924 @item M-x emerge-files 881 @item M-x emerge-files
925 @findex emerge-files 882 @findex emerge-files
926 Merge two specified files. 883 Merge two specified files.