Mercurial > emacs
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. |