annotate man/maintaining.texi @ 68816:180e3960a4f1

(dired-mode-map): Bind `\C-t\C-t' to `tumme-dired-insert-marked-thumbs'.
author Juri Linkov <juri@jurta.org>
date Sun, 12 Feb 2006 17:45:08 +0000
parents f06d0aec15a7
children 63d1645b9198 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
61200
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
68639
dc2d5a6655a3 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64951
diff changeset
3 @c 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 @c See file emacs.texi for copying conditions.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @node Maintaining, Abbrevs, Building, Top
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @chapter Maintaining Programs
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 @cindex Lisp editing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @cindex C editing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @cindex program editing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 This chapter describes Emacs features for maintaining programs. The
61200
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
12 version control features (@pxref{Version Control}) are also particularly
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
13 useful for this purpose.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 @menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 * Change Log:: Maintaining a change history for your program.
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
17 * Format of ChangeLog:: What the change log file looks like.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 * Tags:: Go direct to any function in your program in one
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 command. Tags remembers which file it is in.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 * Emerge:: A convenient way of merging two versions of a program.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 @end menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 @node Change Log
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 @section Change Logs
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
26 A change log file contains a chronological record of when and why you
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
27 have changed a program, consisting of a sequence of entries describing
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
28 individual changes. Normally it is kept in a file called
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
29 @file{ChangeLog} in the same directory as the file you are editing, or
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
30 one of its parent directories. A single @file{ChangeLog} file can
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
31 record changes for all the files in its directory and all its
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
32 subdirectories.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
33
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 @cindex change log
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 @kindex C-x 4 a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 @findex add-change-log-entry-other-window
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 The Emacs command @kbd{C-x 4 a} adds a new entry to the change log
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 file for the file you are editing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 (@code{add-change-log-entry-other-window}). If that file is actually
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 a backup file, it makes an entry appropriate for the file's
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 parent---that is useful for making log entries for functions that
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 have been deleted in the current version.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
44 @kbd{C-x 4 a} visits the change log file and creates a new entry
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
45 unless the most recent entry is for today's date and your name. It
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
46 also creates a new item for the current file. For many languages, it
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
47 can even guess the name of the function or other object that was
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
48 changed.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
49
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
50 @vindex add-log-keep-changes-together
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
51 When the variable @code{add-log-keep-changes-together} is
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
52 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
53 rather than starting a new item.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
54
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
55 @vindex add-log-always-start-new-record
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
56 If @code{add-log-always-start-new-record} is non-@code{nil},
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
57 @kbd{C-x 4 a} always makes a new entry, even if the last entry
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
58 was made by you and on the same date.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
60 @vindex change-log-version-info-enabled
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
61 @vindex change-log-version-number-regexp-list
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
62 @cindex file version in change log entries
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
63 If the value of the variable @code{change-log-version-info-enabled}
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
64 is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
65 change log entry. It finds the version number by searching the first
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
66 ten percent of the file, using regular expressions from the variable
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
67 @code{change-log-version-number-regexp-list}.
39623
eff57c5f75db Explain where and how to put the copyright notice and permission
Richard M. Stallman <rms@gnu.org>
parents: 39267
diff changeset
68
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
69 @cindex Change Log mode
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
70 @findex change-log-mode
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
71 The change log file is visited in Change Log mode. In this major
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
72 mode, each bunch of grouped items counts as one paragraph, and each
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
73 entry is considered a page. This facilitates editing the entries.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
74 @kbd{C-j} and auto-fill indent each new line like the previous line;
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
75 this is convenient for entering the contents of an entry.
39623
eff57c5f75db Explain where and how to put the copyright notice and permission
Richard M. Stallman <rms@gnu.org>
parents: 39267
diff changeset
76
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
77 @findex change-log-merge
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
78 You can use the command @kbd{M-x change-log-merge} to merge other
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
79 log files into a buffer in Change Log Mode, preserving the date
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
80 ordering of entries.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
81
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
82 Version control systems are another way to keep track of changes in your
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
83 program and keep a change log. @xref{Log Buffer}.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
84
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
85 @node Format of ChangeLog
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
86 @section Format of ChangeLog
39623
eff57c5f75db Explain where and how to put the copyright notice and permission
Richard M. Stallman <rms@gnu.org>
parents: 39267
diff changeset
87
61200
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
88 A change log entry starts with a header line that contains the current
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
89 date, your name, and your email address (taken from the variable
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
90 @code{add-log-mailing-address}). Aside from these header lines, every
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
91 line in the change log starts with a space or a tab. The bulk of the
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
92 entry consists of @dfn{items}, each of which starts with a line starting
710c5be02d52 (Change Log): add-change-log-entry uses add-log-mailing-address.
Lute Kamstra <lute@gnu.org>
parents: 59798
diff changeset
93 with whitespace and a star. Here are two entries, both dated in May
61466
0d13c2e5baa9 (Change Log): Correct the description of the example.
Richard M. Stallman <rms@gnu.org>
parents: 61200
diff changeset
94 1993, with two items and one item respectively.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 @iftex
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 @medbreak
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 @end iftex
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 1993-05-25 Richard Stallman <rms@@gnu.org>
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 * man.el: Rename symbols `man-*' to `Man-*'.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 (manual-entry): Make prompt string clearer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 * simple.el (blink-matching-paren-distance):
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 Change default to 12,000.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 1993-05-24 Richard Stallman <rms@@gnu.org>
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 * vc.el (minor-mode-map-alist): Don't use it if it's void.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (vc-cancel-version): Doc fix.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 One entry can describe several changes; each change should have its
61466
0d13c2e5baa9 (Change Log): Correct the description of the example.
Richard M. Stallman <rms@gnu.org>
parents: 61200
diff changeset
115 own item, or its own line in an item. Normally there should be a
0d13c2e5baa9 (Change Log): Correct the description of the example.
Richard M. Stallman <rms@gnu.org>
parents: 61200
diff changeset
116 blank line between items. When items are related (parts of the same
0d13c2e5baa9 (Change Log): Correct the description of the example.
Richard M. Stallman <rms@gnu.org>
parents: 61200
diff changeset
117 change, in different places), group them by leaving no blank line
0d13c2e5baa9 (Change Log): Correct the description of the example.
Richard M. Stallman <rms@gnu.org>
parents: 61200
diff changeset
118 between them.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
120 You should put a copyright notice and permission notice at the
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
121 end of the change log file. Here is an example:
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
123 @example
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
124 Copyright 1997, 1998 Free Software Foundation, Inc.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
125 Copying and distribution of this file, with or without modification, are
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
126 permitted provided the copyright notice and this notice are preserved.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
127 @end example
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 @noindent
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
130 Of course, you should substitute the proper years and copyright holder.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 @node Tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 @section Tags Tables
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 @cindex tags table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 A @dfn{tags table} is a description of how a multi-file program is
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 broken up into files. It lists the names of the component files and the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 names and positions of the functions (or other named subunits) in each
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 file. Grouping the related files makes it possible to search or replace
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 through all the files with one command. Recording the function names
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 and positions makes possible the @kbd{M-.} command which finds the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 definition of a function by looking up which of the files it is in.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 Tags tables are stored in files called @dfn{tags table files}. The
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 conventional name for a tags table file is @file{TAGS}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 Each entry in the tags table records the name of one tag, the name of the
43724
16affaf7292b etags honours #line directives.
Francesco Potortì <pot@gnu.org>
parents: 42342
diff changeset
148 file that the tag is defined in (implicitly), and the position in that
16affaf7292b etags honours #line directives.
Francesco Potortì <pot@gnu.org>
parents: 42342
diff changeset
149 file of the tag's definition. When a file parsed by @code{etags} is
43856
7d0cb2cc5e60 Use Cweb, not bison as an example of etags using #line.
Francesco Potortì <pot@gnu.org>
parents: 43724
diff changeset
150 generated from a different source file, like a C file generated from a
7d0cb2cc5e60 Use Cweb, not bison as an example of etags using #line.
Francesco Potortì <pot@gnu.org>
parents: 43724
diff changeset
151 Cweb source file, the tags of the parsed file reference the source
7d0cb2cc5e60 Use Cweb, not bison as an example of etags using #line.
Francesco Potortì <pot@gnu.org>
parents: 43724
diff changeset
152 file.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 Just what names from the described files are recorded in the tags table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 depends on the programming language of the described file. They
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 normally include all file names, functions and subroutines, and may
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 also include global variables, data types, and anything else
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 convenient. Each name recorded is called a @dfn{tag}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 @cindex C++ class browser, tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 @cindex tags, C++
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @cindex class browser, C++
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 @cindex Ebrowse
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 See also the Ebrowse facility, which is tailored for C++.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 @xref{Top,, Ebrowse, ebrowse, Ebrowse User's Manual}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 @menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 * Tag Syntax:: Tag syntax for various types of code and text files.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 * Create Tags Table:: Creating a tags table with @code{etags}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 * Etags Regexps:: Create arbitrary tags using regular expressions.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 * Select Tags Table:: How to visit a tags table.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 * Find Tag:: Commands to find the definition of a specific tag.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 * Tags Search:: Using a tags table for searching and replacing.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 * List Tags:: Listing and finding tags defined in a file.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 @end menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 @node Tag Syntax
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 @subsection Source File Tag Syntax
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 Here is how tag syntax is defined for the most popular languages:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 @itemize @bullet
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 In C code, any C function or typedef is a tag, and so are definitions of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 @code{struct}, @code{union} and @code{enum}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 @code{#define} macro definitions and @code{enum} constants are also
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 tags, unless you specify @samp{--no-defines} when making the tags table.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 Similarly, global variables are tags, unless you specify
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @samp{--no-globals}. Use of @samp{--no-globals} and @samp{--no-defines}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 can make the tags table file much smaller.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 You can tag function declarations and external variables in addition
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 to function definitions by giving the @samp{--declarations} option to
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
194 @code{etags}. You can tag struct members with the @samp{--members}
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
195 option.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 In C++ code, in addition to all the tag constructs of C code, member
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 functions are also recognized, and optionally member variables if you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 use the @samp{--members} option. Tags for variables and functions in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 classes are named @samp{@var{class}::@var{variable}} and
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 @samp{@var{class}::@var{function}}. @code{operator} definitions have
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 tag names like @samp{operator+}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 In Java code, tags include all the constructs recognized in C++, plus
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 the @code{interface}, @code{extends} and @code{implements} constructs.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 Tags for variables and functions in classes are named
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 @samp{@var{class}.@var{variable}} and @samp{@var{class}.@var{function}}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 In La@TeX{} text, the argument of any of the commands @code{\chapter},
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 @code{\section}, @code{\subsection}, @code{\subsubsection},
45659
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
214 @code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
215 @code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
46918
82d113655734 Minor spelling and grammar corrections.
Paul Eggert <eggert@twinsun.com>
parents: 46239
diff changeset
216 @code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
45659
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
217 @code{\newenvironment} or @code{\renewenvironment} is a tag.@refill
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 Other commands can make tags as well, if you specify them in the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 environment variable @env{TEXTAGS} before invoking @code{etags}. The
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 value of this environment variable should be a colon-separated list of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 command names. For example,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 @example
45659
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
225 TEXTAGS="mycommand:myothercommand"
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 export TEXTAGS
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 @noindent
45659
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
230 specifies (using Bourne shell syntax) that the commands
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
231 @samp{\mycommand} and @samp{\myothercommand} also define tags.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 In Lisp code, any function defined with @code{defun}, any variable
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 defined with @code{defvar} or @code{defconst}, and in general the first
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
236 argument of any expression that starts with @samp{(def} in column zero is
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 a tag.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 In Scheme code, tags include anything defined with @code{def} or with a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 construct whose name starts with @samp{def}. They also include variables
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 set with @code{set!} at top level in the file.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @end itemize
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 Several other languages are also supported:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 @itemize @bullet
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 @item
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
250 In Ada code, functions, procedures, packages, tasks and types are
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 tags. Use the @samp{--packages-only} option to create tags for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 packages only.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 In Ada, the same name can be used for different kinds of entity
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (e.g.@:, for a procedure and for a function). Also, for things like
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 packages, procedures and functions, there is the spec (i.e.@: the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 interface) and the body (i.e.@: the implementation). To make it
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 easier to pick the definition you want, Ada tag name have suffixes
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 indicating the type of entity:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 @table @samp
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 @item /b
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 package body.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 @item /f
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 function.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 @item /k
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 task.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 @item /p
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 procedure.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 @item /s
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 package spec.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 @item /t
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 type.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 Thus, @kbd{M-x find-tag @key{RET} bidule/b @key{RET}} will go
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 directly to the body of the package @code{bidule}, while @kbd{M-x
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 find-tag @key{RET} bidule @key{RET}} will just search for any tag
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 @code{bidule}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 In assembler code, labels appearing at the beginning of a line,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 followed by a colon, are tags.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 In Bison or Yacc input files, each rule defines as a tag the nonterminal
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 it constructs. The portions of the file that contain C code are parsed
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 as C code.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 In Cobol code, tags are paragraph names; that is, any word starting in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 column 8 and followed by a period.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 @item
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
295 In Erlang code, the tags are the functions, records and macros defined
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 in the file.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 @item
39267
a8c0a02f6129 Spelling corrections.
Richard M. Stallman <rms@gnu.org>
parents: 39082
diff changeset
299 In Fortran code, functions, subroutines and block data are tags.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 @item
47085
a881d14145d0 etags now parses HTML.
Francesco Potortì <pot@gnu.org>
parents: 46918
diff changeset
302 In HTML input files, the tags are the @code{title} and the @code{h1},
a881d14145d0 etags now parses HTML.
Francesco Potortì <pot@gnu.org>
parents: 46918
diff changeset
303 @code{h2}, @code{h3} headers. Also, tags are @code{name=} in anchors
a881d14145d0 etags now parses HTML.
Francesco Potortì <pot@gnu.org>
parents: 46918
diff changeset
304 and all occurrences of @code{id=}.
a881d14145d0 etags now parses HTML.
Francesco Potortì <pot@gnu.org>
parents: 46918
diff changeset
305
a881d14145d0 etags now parses HTML.
Francesco Potortì <pot@gnu.org>
parents: 46918
diff changeset
306 @item
57087
be3afbddb35b Added support in etags for the Lua script language.
Francesco Potortì <pot@gnu.org>
parents: 52401
diff changeset
307 In Lua input files, all functions are tags.
be3afbddb35b Added support in etags for the Lua script language.
Francesco Potortì <pot@gnu.org>
parents: 52401
diff changeset
308
be3afbddb35b Added support in etags for the Lua script language.
Francesco Potortì <pot@gnu.org>
parents: 52401
diff changeset
309 @item
45919
Francesco Potortì <pot@gnu.org>
parents: 45887
diff changeset
310 In makefiles, targets are tags; additionally, variables are tags
Francesco Potortì <pot@gnu.org>
parents: 45887
diff changeset
311 unless you specify @samp{--no-globals}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 In Objective C code, tags include Objective C definitions for classes,
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
315 class categories, methods and protocols. Tags for variables and
42342
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
316 functions in classes are named @samp{@var{class}::@var{variable}} and
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
317 @samp{@var{class}::@var{function}}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 In Pascal code, the tags are the functions and procedures defined in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 the file.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 @item
42342
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
324 In Perl code, the tags are the packages, subroutines and variables
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
325 defined by the @code{package}, @code{sub}, @code{my} and @code{local}
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
326 keywords. Use @samp{--globals} if you want to tag global variables.
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
327 Tags for subroutines are named @samp{@var{package}::@var{sub}}. The
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
328 name for subroutines defined in the default package is
edeb3d66b7e0 Perl changes for etags.
Francesco Potortì <pot@gnu.org>
parents: 42201
diff changeset
329 @samp{main::@var{sub}}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 @item
42043
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
332 In PHP code, tags are functions, classes and defines. When using the
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
333 @samp{--members} option, vars are tags too.
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
334
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
335 @item
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 In PostScript code, the tags are the functions.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 @item
42043
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
339 In Prolog code, tags are predicates and rules at the beginning of
0fe5fe39786c Etags changes for Prolog and PHP.
Francesco Potortì <pot@gnu.org>
parents: 41864
diff changeset
340 line.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 In Python code, @code{def} or @code{class} at the beginning of a line
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 generate a tag.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 @end itemize
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 You can also generate tags based on regexp matching (@pxref{Etags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 Regexps}) to handle other formats and languages.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 @node Create Tags Table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 @subsection Creating Tags Tables
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 @cindex @code{etags} program
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 The @code{etags} program is used to create a tags table file. It knows
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 the syntax of several languages, as described in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 @iftex
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 the previous section.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 @end iftex
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 @ifinfo
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 @ref{Tag Syntax}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 @end ifinfo
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 Here is how to run @code{etags}:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 @example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 etags @var{inputfiles}@dots{}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 The @code{etags} program reads the specified files, and writes a tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 table named @file{TAGS} in the current working directory.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 If the specified files don't exist, @code{etags} looks for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 compressed versions of them and uncompresses them to read them. Under
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 MS-DOS, @code{etags} also looks for file names like @file{mycode.cgz}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 if it is given @samp{mycode.c} on the command line and @file{mycode.c}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 does not exist.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 @code{etags} recognizes the language used in an input file based on
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 its file name and contents. You can specify the language with the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 @samp{--language=@var{name}} option, described below.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 If the tags table data become outdated due to changes in the files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 described in the table, the way to update the tags table is the same
38264
e781108d8f69 Clarify when it's good to update a tags table and why.
Richard M. Stallman <rms@gnu.org>
parents: 38261
diff changeset
384 way it was made in the first place. If the tags table fails to record
e781108d8f69 Clarify when it's good to update a tags table and why.
Richard M. Stallman <rms@gnu.org>
parents: 38261
diff changeset
385 a tag, or records it for the wrong file, then Emacs cannot possibly
e781108d8f69 Clarify when it's good to update a tags table and why.
Richard M. Stallman <rms@gnu.org>
parents: 38261
diff changeset
386 find its definition until you update the tags table. However, if the
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 position recorded in the tags table becomes a little bit wrong (due to
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
388 other editing), the worst consequence is a slight delay in finding the
38264
e781108d8f69 Clarify when it's good to update a tags table and why.
Richard M. Stallman <rms@gnu.org>
parents: 38261
diff changeset
389 tag. Even if the stored position is very far wrong, Emacs will still
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
390 find the tag, after searching most of the file for it. That delay is
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
391 hardly noticeable with today's computers.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
393 Thus, there is no need to update the tags table after each edit.
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
394 You should update a tags table when you define new tags that you want
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
395 to have listed, or when you move tag definitions from one file to
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
396 another, or when changes become substantial.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 One tags table can virtually include another. Specify the included
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 tags file name with the @samp{--include=@var{file}} option when
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 creating the file that is to include it. The latter file then acts as
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 if it covered all the source files specified in the included file, as
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 well as the files it directly contains.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 If you specify the source files with relative file names when you run
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 @code{etags}, the tags file will contain file names relative to the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 directory where the tags file was initially written. This way, you can
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 move an entire directory tree containing both the tags file and the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 source files, and the tags file will still refer correctly to the source
57102
5c078eb058f8 Put /dev into @file.
Francesco Potortì <pot@gnu.org>
parents: 57090
diff changeset
409 files. If the tags file is in @file{/dev}, however, the file names are
5c078eb058f8 Put /dev into @file.
Francesco Potortì <pot@gnu.org>
parents: 57090
diff changeset
410 made relative to the current working directory.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 If you specify absolute file names as arguments to @code{etags}, then
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 the tags file will contain absolute file names. This way, the tags file
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 will still refer to the same files even if you move it, as long as the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 source files remain in the same place. Absolute file names start with
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 @samp{/}, or with @samp{@var{device}:/} on MS-DOS and MS-Windows.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 When you want to make a tags table from a great number of files, you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 may have problems listing them on the command line, because some systems
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 have a limit on its length. The simplest way to circumvent this limit
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 is to tell @code{etags} to read the file names from its standard input,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 by typing a dash in place of the file names, like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 find . -name "*.[chCH]" -print | etags -
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 Use the option @samp{--language=@var{name}} to specify the language
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 explicitly. You can intermix these options with file names; each one
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 applies to the file names that follow it. Specify
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 @samp{--language=auto} to tell @code{etags} to resume guessing the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 language from the file names and file contents. Specify
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 @samp{--language=none} to turn off language-specific processing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 entirely; then @code{etags} recognizes tags by regexp matching alone
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (@pxref{Etags Regexps}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
45659
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
437 The option @samp{--parse-stdin=@var{file}} is mostly useful when
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
438 calling @code{etags} from programs. It can be used (only once) in
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
439 place of a file name on the command line. @code{Etags} will read from
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
440 standard input and mark the produced tags as belonging to the file
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
441 @var{file}.
c1e620d6140c Document --parse-stdin=FILE for Etags.
Francesco Potortì <pot@gnu.org>
parents: 43856
diff changeset
442
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
443 @samp{etags --help} outputs the list of the languages @code{etags}
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 knows, and the file name rules for guessing the language. It also prints
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 a list of all the available @code{etags} options, together with a short
49123
3e1dde9764c0 Added reference to the new `etags --help --lang=LANG' option.
Francesco Potortì <pot@gnu.org>
parents: 47085
diff changeset
446 explanation. If followed by one or more @samp{--language=@var{lang}}
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
447 options, it outputs detailed information about how tags are generated for
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49123
diff changeset
448 @var{lang}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 @node Etags Regexps
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 @subsection Etags Regexps
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 The @samp{--regex} option provides a general way of recognizing tags
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
454 based on regexp matching. You can freely intermix this option with
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
455 file names, and each one applies to the source files that follow it.
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
456 If you specify multiple @samp{--regex} options, all of them are used
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
457 in parallel. The syntax is:
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 @smallexample
45801
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
460 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers}
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
461 @end smallexample
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
462
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
463 The essential part of the option value is @var{tagregexp}, the
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
464 regexp for matching tags. It is always used anchored, that is, it
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
465 only matches at the beginning of a line. If you want to allow
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
466 indented tags, use a regexp that matches initial whitespace; start it
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
467 with @samp{[ \t]*}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
469 In these regular expressions, @samp{\} quotes the next character, and
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
470 all the GCC character escape sequences are supported (@samp{\a} for
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
471 bell, @samp{\b} for back space, @samp{\d} for delete, @samp{\e} for
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
472 escape, @samp{\f} for formfeed, @samp{\n} for newline, @samp{\r} for
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
473 carriage return, @samp{\t} for tab, and @samp{\v} for vertical tab).
45666
621742dde467 Document Etags regexp char escape sequences.
Francesco Potortì <pot@gnu.org>
parents: 45659
diff changeset
474
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
475 Ideally, @var{tagregexp} should not match more characters than are
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
476 needed to recognize what you want to tag. If the syntax requires you
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
477 to write @var{tagregexp} so it matches more characters beyond the tag
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
478 itself, you should add a @var{nameregexp}, to pick out just the tag.
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
479 This will enable Emacs to find tags more accurately and to do
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
480 completion on tag names more reliably. You can find some examples
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
481 below.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
483 The @var{modifiers} are a sequence of zero or more characters that
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
484 modify the way @code{etags} does the matching. A regexp with no
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
485 modifiers is applied sequentially to each line of the input file, in a
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
486 case-sensitive way. The modifiers and their meanings are:
45801
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
487
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
488 @table @samp
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
489 @item i
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
490 Ignore case when matching this regexp.
45801
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
491 @item m
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
492 Match this regular expression against the whole file, so that
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
493 multi-line matches are possible.
45801
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
494 @item s
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
495 Match this regular expression against the whole file, and allow
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
496 @samp{.} in @var{tagregexp} to match newlines.
45801
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
497 @end table
0cbd872ef18b New multi-line regexp and new regexp syntax.
Francesco Potortì <pot@gnu.org>
parents: 45669
diff changeset
498
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
499 The @samp{-R} option cancels all the regexps defined by preceding
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
500 @samp{--regex} options. It too applies to the file names following
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
501 it. Here's an example:
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 @smallexample
45886
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
504 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 bar.ber -R --lang=lisp los.er
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 Here @code{etags} chooses the parsing language for @file{voo.doo} and
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 @file{bar.ber} according to their contents. @code{etags} also uses
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 @var{reg1} to recognize additional tags in @file{voo.doo}, and both
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 @var{reg1} and @var{reg2} to recognize additional tags in
45886
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
513 @file{bar.ber}. @var{reg1} is checked against each line of
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
514 @file{voo.doo} and @file{bar.ber}, in a case-insensitive way, while
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
515 @var{reg2} is checked against the whole @file{bar.ber} file,
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
516 permitting multi-line matches, in a case-sensitive way. @code{etags}
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
517 uses only the Lisp tags rules, with no user-specified regexp matching,
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
518 to recognize tags in @file{los.er}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519
45887
8aa6e4d588ce some passive forms to active
Francesco Potortì <pot@gnu.org>
parents: 45886
diff changeset
520 You can restrict a @samp{--regex} option to match only files of a
8aa6e4d588ce some passive forms to active
Francesco Potortì <pot@gnu.org>
parents: 45886
diff changeset
521 given language by using the optional prefix @var{@{language@}}.
45886
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
522 (@samp{etags --help} prints the list of languages recognized by
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
523 @code{etags}.) This is particularly useful when storing many
22138a27a5f3 Specify that the separator character can be different from a slash.
Francesco Potortì <pot@gnu.org>
parents: 45801
diff changeset
524 predefined regular expressions for @code{etags} in a file. The
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 following example tags the @code{DEFVAR} macros in the Emacs source
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 files, for the C language only:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 --regex='@{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 @noindent
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
533 When you have complex regular expressions, you can store the list of
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
534 them in a file. The following option syntax instructs @code{etags} to
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
535 read two files of regular expressions. The regular expressions
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
536 contained in the second file are matched without regard to case.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 @smallexample
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
539 --regex=@@@var{case-sensitive-file} --ignore-case-regex=@@@var{ignore-case-file}
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 @noindent
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
543 A regex file for @code{etags} contains one regular expression per
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
544 line. Empty lines, and lines beginning with space or tab are ignored.
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
545 When the first character in a line is @samp{@@}, @code{etags} assumes
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
546 that the rest of the line is the name of another file of regular
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
547 expressions; thus, one such file can include another file. All the
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
548 other lines are taken to be regular expressions. If the first
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
549 non-whitespace text on the line is @samp{--}, that line is a comment.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550
46239
6d4eadedbff1 Describe add-log-always-start-new-record.
Richard M. Stallman <rms@gnu.org>
parents: 45919
diff changeset
551 For example, we can create a file called @samp{emacs.tags} with the
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 following contents:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 -- This is for GNU Emacs C source files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 @{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 and then use it like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 etags --regex=@@emacs.tags *.[ch] */*.[ch]
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 Here are some more examples. The regexps are quoted to protect them
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 from shell interpretation.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 @itemize @bullet
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 Tag Octave files:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 etags --language=none \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 --regex='/###key \(.*\)/\1/' \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 --regex='/[ \t]*global[ \t].*/' \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 *.m
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 Note that tags are not generated for scripts, so that you have to add
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 a line by yourself of the form @samp{###key @var{scriptname}} if you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 want to jump to it.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 Tag Tcl files:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 @item
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 Tag VHDL files:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 @smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 etags --language=none \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 \( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 @end smallexample
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 @end itemize
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 @node Select Tags Table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 @subsection Selecting a Tags Table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 @vindex tags-file-name
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 @findex visit-tags-table
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
610 Emacs has at any time one @dfn{selected} tags table, and all the
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
611 commands for working with tags tables use the selected one. To select
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
612 a tags table, type @kbd{M-x visit-tags-table}, which reads the tags
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
613 table file name as an argument, with @file{TAGS} in the default
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
614 directory as the default.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
616 Emacs does not actually read in the tags table contents until you
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
617 try to use them; all @code{visit-tags-table} does is store the file
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
618 name in the variable @code{tags-file-name}, and setting the variable
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
619 yourself is just as good. The variable's initial value is @code{nil};
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
620 that value tells all the commands for working with tags tables that
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
621 they must ask for a tags table file name to use.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 Using @code{visit-tags-table} when a tags table is already loaded
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 gives you a choice: you can add the new tags table to the current list
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 of tags tables, or start a new list. The tags commands use all the tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 tables in the current list. If you start a new list, the new tags table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 is used @emph{instead} of others. If you add the new table to the
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
628 current list, it is used @emph{as well as} the others.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 @vindex tags-table-list
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 You can specify a precise list of tags tables by setting the variable
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 @code{tags-table-list} to a list of strings, like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 @c keep this on two lines for formatting in smallbook
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 @example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 @group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (setq tags-table-list
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 '("~/emacs" "/usr/local/lib/emacs/src"))
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 @end group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 This tells the tags commands to look at the @file{TAGS} files in your
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 @file{~/emacs} directory and in the @file{/usr/local/lib/emacs/src}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 directory. The order depends on which file you are in and which tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 table mentions that file, as explained above.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 Do not set both @code{tags-file-name} and @code{tags-table-list}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 @node Find Tag
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 @subsection Finding a Tag
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 The most important thing that a tags table enables you to do is to find
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 the definition of a specific tag.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 @table @kbd
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 @item M-.@: @var{tag} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 Find first definition of @var{tag} (@code{find-tag}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 @item C-u M-.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 Find next alternate definition of last tag specified.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 @item C-u - M-.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 Go back to previous tag found.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 @item C-M-. @var{pattern} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 @item C-u C-M-.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 Find the next tag whose name matches the last pattern used.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 @item C-x 4 .@: @var{tag} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 Find first definition of @var{tag}, but display it in another window
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (@code{find-tag-other-window}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 @item C-x 5 .@: @var{tag} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 Find first definition of @var{tag}, and create a new frame to select the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 buffer (@code{find-tag-other-frame}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 @item M-*
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 Pop back to where you previously invoked @kbd{M-.} and friends.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 @kindex M-.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 @findex find-tag
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 a specified tag. It searches through the tags table for that tag, as a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 string, and then uses the tags table info to determine the file that the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 definition is in and the approximate character position in the file of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 the definition. Then @code{find-tag} visits that file, moves point to
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 the approximate character position, and searches ever-increasing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 distances away to find the tag definition.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 If an empty argument is given (just type @key{RET}), the balanced
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 expression in the buffer before or around point is used as the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 @var{tag} argument. @xref{Expressions}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 You don't need to give @kbd{M-.} the full name of the tag; a part
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 will do. This is because @kbd{M-.} finds tags in the table which
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 contain @var{tag} as a substring. However, it prefers an exact match
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 to a substring match. To find other tags that match the same
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 M-.}; this does not read a tag name, but continues searching the tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 table's text for another tag containing the same substring last used.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 If you have a real @key{META} key, @kbd{M-0 M-.}@: is an easier
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 alternative to @kbd{C-u M-.}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 @kindex C-x 4 .
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 @findex find-tag-other-window
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 @kindex C-x 5 .
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 @findex find-tag-other-frame
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 Like most commands that can switch buffers, @code{find-tag} has a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 variant that displays the new buffer in another window, and one that
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
707 makes a new frame for it. The former is @w{@kbd{C-x 4 .}}, which invokes
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
708 the command @code{find-tag-other-window}. The latter is @w{@kbd{C-x 5 .}},
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 which invokes @code{find-tag-other-frame}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 To move back to places you've found tags recently, use @kbd{C-u -
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 M-.}; more generally, @kbd{M-.} with a negative numeric argument. This
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
713 command can take you to another buffer. @w{@kbd{C-x 4 .}} with a negative
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 argument finds the previous tag location in another window.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 @kindex M-*
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 @findex pop-tag-mark
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 @vindex find-tag-marker-ring-length
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 As well as going back to places you've found tags recently, you can go
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 back to places @emph{from where} you found them. Use @kbd{M-*}, which
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 invokes the command @code{pop-tag-mark}, for this. Typically you would
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 find and study the definition of something with @kbd{M-.} and then
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 return to where you were with @kbd{M-*}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 a depth determined by the variable @code{find-tag-marker-ring-length}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 @findex find-tag-regexp
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 @kindex C-M-.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 match a specified regular expression. It is just like @kbd{M-.} except
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 that it does regexp matching instead of substring matching.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 @node Tags Search
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 @subsection Searching and Replacing with Tags Tables
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 @cindex search and replace in multiple files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 @cindex multiple-file search and replace
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
739 The commands in this section visit and search all the files listed
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
740 in the selected tags table, one by one. For these commands, the tags
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
741 table serves only to specify a sequence of files to search. These
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
742 commands scan the list of tags tables starting with the first tags
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
743 table (if any) that describes the current file, proceed from there to
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
744 the end of the list, and then scan from the beginning of the list
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
745 until they have covered all the tables in the list.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 @table @kbd
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 @item M-x tags-search @key{RET} @var{regexp} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 Search for @var{regexp} through the files in the selected tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 table.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 Perform a @code{query-replace-regexp} on each file in the selected tags table.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 @item M-,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 Restart one of the commands above, from the current location of point
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (@code{tags-loop-continue}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 @findex tags-search
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 @kbd{M-x tags-search} reads a regexp using the minibuffer, then
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 searches for matches in all the files in the selected tags table, one
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 file at a time. It displays the name of the file being searched so you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 can follow its progress. As soon as it finds an occurrence,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 @code{tags-search} returns.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 @kindex M-,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 @findex tags-loop-continue
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 Having found one match, you probably want to find all the rest. To find
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 @code{tags-search}. This searches the rest of the current buffer, followed
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 by the remaining files of the tags table.@refill
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 @findex tags-query-replace
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 @kbd{M-x tags-query-replace} performs a single
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 @code{query-replace-regexp} through all the files in the tags table. It
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 reads a regexp to search for and a string to replace with, just like
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 tags-search}, but repeatedly, processing matches according to your
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 input. @xref{Replace}, for more information on query replace.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 @vindex tags-case-fold-search
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 @cindex case-sensitivity and tags search
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 You can control the case-sensitivity of tags search commands by
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 customizing the value of the variable @code{tags-case-fold-search}. The
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 default is to use the same setting as the value of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 @code{case-fold-search} (@pxref{Search Case}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 It is possible to get through all the files in the tags table with a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 single invocation of @kbd{M-x tags-query-replace}. But often it is
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 useful to exit temporarily, which you can do with any input event that
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 has no special query replace meaning. You can resume the query replace
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 subsequently by typing @kbd{M-,}; this command resumes the last tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 search or replace command that you did.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 The commands in this section carry out much broader searches than the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 @code{find-tag} family. The @code{find-tag} commands search only for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 definitions of tags that match your substring or regexp. The commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 @code{tags-search} and @code{tags-query-replace} find every occurrence
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 of the regexp, as ordinary search commands and replace commands do in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 the current buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 These commands create buffers only temporarily for the files that they
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 have to search (those which are not already visited in Emacs buffers).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 Buffers in which no match is found are quickly killed; the others
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 continue to exist.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 It may have struck you that @code{tags-search} is a lot like
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 @code{grep}. You can also run @code{grep} itself as an inferior of
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
808 Emacs and have Emacs show you the matching lines one by one.
64951
74a593bdd0a2 (Tags Search): Replace grep xref to `Compilation' node
Juri Linkov <juri@jurta.org>
parents: 64890
diff changeset
809 @xref{Grep Searching}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 @node List Tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 @subsection Tags Table Inquiries
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 @table @kbd
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 @item M-x list-tags @key{RET} @var{file} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 Display a list of the tags defined in the program file @var{file}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 @item M-x tags-apropos @key{RET} @var{regexp} @key{RET}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 Display a list of all tags matching @var{regexp}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 @findex list-tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 @kbd{M-x list-tags} reads the name of one of the files described by
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 the selected tags table, and displays a list of all the tags defined in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 that file. The ``file name'' argument is really just a string to
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 compare against the file names recorded in the tags table; it is read as
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 a string rather than as a file name. Therefore, completion and
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 defaulting are not available, and you must enter the file name the same
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 way it appears in the tags table. Do not include a directory as part of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 the file name unless the file name recorded in the tags table includes a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 directory.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 @findex tags-apropos
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 @vindex tags-apropos-verbose
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 @kbd{M-x tags-apropos} is like @code{apropos} for tags
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 (@pxref{Apropos}). It finds all the tags in the selected tags table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 whose entries match @var{regexp}, and displays them. If the variable
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 @code{tags-apropos-verbose} is non-@code{nil}, it displays the names
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 of the tags files together with the tag names.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 @vindex tags-tag-face
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 @vindex tags-apropos-additional-actions
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
842 You can customize the appearance of the output by setting the
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
843 variable @code{tags-tag-face} to a face. You can display additional
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
844 output with @kbd{M-x tags-apropos} by customizing the variable
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 @code{tags-apropos-additional-actions}---see its documentation for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 details.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 You can also use the collection of tag names to complete a symbol
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 name in the buffer. @xref{Symbol Completion}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850
38211
5ef494421061 Fix mistakes in @node Emerge.
Richard M. Stallman <rms@gnu.org>
parents: 38198
diff changeset
851 @node Emerge
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 @section Merging Files with Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 @cindex Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 @cindex merging files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
856 It's not unusual for programmers to get their signals crossed and
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
857 modify the same program in two different directions. To recover from
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
858 this confusion, you need to merge the two versions. Emerge makes this
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
859 easier. See also @ref{Comparing Files}, for other ways to compare
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
860 files, and @ref{Top, Ediff,, ediff, The Ediff Manual}.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 @menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 * Overview of Emerge:: How to start Emerge. Basic concepts.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 * Submodes of Emerge:: Fast mode vs. Edit mode.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 Skip Prefers mode and Auto Advance mode.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 * State of Difference:: You do the merge by specifying state A or B
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 for each difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 * Merge Commands:: Commands for selecting a difference,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 changing states of differences, etc.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 * Exiting Emerge:: What to do when you've finished the merge.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 * Combining in Emerge:: How to keep both alternatives for a difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 * Fine Points of Emerge:: Misc.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 @end menu
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 @node Overview of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 @subsection Overview of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877
68693
f06d0aec15a7 (Format of ChangeLog): New node, split out from ChangeLog.
Richard M. Stallman <rms@gnu.org>
parents: 68639
diff changeset
878 To start Emerge, run one of these four commands:
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 @table @kbd
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 @item M-x emerge-files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 @findex emerge-files
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 Merge two specified files.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 @item M-x emerge-files-with-ancestor
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 @findex emerge-files-with-ancestor
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 Merge two specified files, with reference to a common ancestor.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 @item M-x emerge-buffers
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 @findex emerge-buffers
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 Merge two buffers.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 @item M-x emerge-buffers-with-ancestor
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 @findex emerge-buffers-with-ancestor
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 Merge two buffers with reference to a common ancestor in a third
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 @cindex merge buffer (Emerge)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 @cindex A and B buffers (Emerge)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 The Emerge commands compare two files or buffers, and display the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 comparison in three buffers: one for each input text (the @dfn{A buffer}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 takes place. The merge buffer shows the full merged text, not just the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 differences. Wherever the two input texts differ, you can choose which
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 one of them to include in the merge buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 The Emerge commands that take input from existing buffers use only the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 accessible portions of those buffers, if they are narrowed
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (@pxref{Narrowing}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 If a common ancestor version is available, from which the two texts to
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 be merged were both derived, Emerge can use it to guess which
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 alternative is right. Wherever one current version agrees with the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 ancestor, Emerge presumes that the other current version is a deliberate
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 change which should be kept in the merged version. Use the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 @samp{with-ancestor} commands if you want to specify a common ancestor
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 text. These commands read three file or buffer names---variant A,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 variant B, and the common ancestor.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 After the comparison is done and the buffers are prepared, the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 interactive merging starts. You control the merging by typing special
62479
0659ac37d53c (Overview of Emerge): Add cross reference. Remove duplication.
Lute Kamstra <lute@gnu.org>
parents: 61466
diff changeset
923 @dfn{merge commands} in the merge buffer (@pxref{Merge Commands}).
0659ac37d53c (Overview of Emerge): Add cross reference. Remove duplication.
Lute Kamstra <lute@gnu.org>
parents: 61466
diff changeset
924 For each run of differences between the input texts, you can choose
0659ac37d53c (Overview of Emerge): Add cross reference. Remove duplication.
Lute Kamstra <lute@gnu.org>
parents: 61466
diff changeset
925 which one of them to keep, or edit them both together.
38198
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 The merge buffer uses a special major mode, Emerge mode, with commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 for making these choices. But you can also edit the buffer with
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 ordinary Emacs commands.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 At any given time, the attention of Emerge is focused on one
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 particular difference, called the @dfn{selected} difference. This
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 difference is marked off in the three buffers like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 @example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 vvvvvvvvvvvvvvvvvvvv
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 @var{text that differs}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 ^^^^^^^^^^^^^^^^^^^^
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 Emerge numbers all the differences sequentially and the mode
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 line always shows the number of the selected difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 Normally, the merge buffer starts out with the A version of the text.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 But when the A version of a difference agrees with the common ancestor,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 then the B version is initially preferred for that difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 Emerge leaves the merged text in the merge buffer when you exit. At
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 that point, you can save it in a file with @kbd{C-x C-w}. If you give a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 numeric argument to @code{emerge-files} or
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 @code{emerge-files-with-ancestor}, it reads the name of the output file
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 using the minibuffer. (This is the last file name those commands read.)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 Then exiting from Emerge saves the merged text in the output file.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 Normally, Emerge commands save the output buffer in its file when you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 save the output buffer, but you can save it yourself if you wish.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 @node Submodes of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 @subsection Submodes of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 You can choose between two modes for giving merge commands: Fast mode
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 and Edit mode. In Fast mode, basic merge commands are single
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 characters, but ordinary Emacs commands are disabled. This is
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 convenient if you use only merge commands. In Edit mode, all merge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 commands are also available. This allows editing the merge buffer, but
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 slows down Emerge operations.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 Fast mode. The mode line indicates Edit and Fast modes with @samp{E}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 and @samp{F}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 Emerge has two additional submodes that affect how particular merge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 commands work: Auto Advance mode and Skip Prefers mode.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 advance to the next difference. This lets you go through the merge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 faster as long as you simply choose one of the alternatives from the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 input. The mode line indicates Auto Advance mode with @samp{A}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 skip over differences in states prefer-A and prefer-B (@pxref{State of
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 Difference}). Thus you see only differences for which neither version
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 is presumed ``correct.'' The mode line indicates Skip Prefers mode with
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 @samp{S}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 @findex emerge-auto-advance-mode
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 @findex emerge-skip-prefers-mode
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 clear Auto Advance mode. Use @kbd{s s}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 These commands turn on the mode with a positive argument, turns it off
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 with a negative or zero argument, and toggle the mode with no argument.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 @node State of Difference
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 @subsection State of a Difference
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 In the merge buffer, a difference is marked with lines of @samp{v} and
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 @samp{^} characters. Each difference has one of these seven states:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 @table @asis
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 @item A
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 The difference is showing the A version. The @kbd{a} command always
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 produces this state; the mode line indicates it with @samp{A}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 @item B
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 The difference is showing the B version. The @kbd{b} command always
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 produces this state; the mode line indicates it with @samp{B}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 @item default-A
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 @itemx default-B
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 The difference is showing the A or the B state by default, because you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 haven't made a choice. All differences start in the default-A state
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (and thus the merge buffer is a copy of the A buffer), except those for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 which one alternative is ``preferred'' (see below).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 When you select a difference, its state changes from default-A or
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 default-B to plain A or B. Thus, the selected difference never has
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 state default-A or default-B, and these states are never displayed in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 the mode line.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 The command @kbd{d a} chooses default-A as the default state, and @kbd{d
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 b} chooses default-B. This chosen default applies to all differences
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 which you haven't ever selected and for which no alternative is preferred.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 If you are moving through the merge sequentially, the differences you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 haven't selected are those following the selected one. Thus, while
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 moving sequentially, you can effectively make the A version the default
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 for some sections of the merge buffer and the B version the default for
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 others by using @kbd{d a} and @kbd{d b} between sections.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 @item prefer-A
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 @itemx prefer-B
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 The difference is showing the A or B state because it is
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 @dfn{preferred}. This means that you haven't made an explicit choice,
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 but one alternative seems likely to be right because the other
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 alternative agrees with the common ancestor. Thus, where the A buffer
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 agrees with the common ancestor, the B version is preferred, because
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 chances are it is the one that was actually changed.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 These two states are displayed in the mode line as @samp{A*} and @samp{B*}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 @item combined
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 The difference is showing a combination of the A and B states, as a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 result of the @kbd{x c} or @kbd{x C} commands.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 Once a difference is in this state, the @kbd{a} and @kbd{b} commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 don't do anything to it unless you give them a numeric argument.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 The mode line displays this state as @samp{comb}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 @node Merge Commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 @subsection Merge Commands
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 Here are the Merge commands for Fast mode; in Edit mode, precede them
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 with @kbd{C-c C-c}:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 @table @kbd
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 @item p
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 Select the previous difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 @item n
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 Select the next difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 @item a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 Choose the A version of this difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 @item b
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 Choose the B version of this difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 @item C-u @var{n} j
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 Select difference number @var{n}.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 @item .
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 Select the difference containing point. You can use this command in the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 merge buffer or in the A or B buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 @item q
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 Quit---finish the merge.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 @item C-]
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 Abort---exit merging and do not save the output.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 @item f
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 @item e
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 Go into Edit mode.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 @item l
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 Recenter (like @kbd{C-l}) all three windows.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 @item -
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 Specify part of a prefix numeric argument.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 @item @var{digit}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 Also specify part of a prefix numeric argument.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 @item d a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 Choose the A version as the default from here down in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 the merge buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 @item d b
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 Choose the B version as the default from here down in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 the merge buffer.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 @item c a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 Copy the A version of this difference into the kill ring.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 @item c b
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 Copy the B version of this difference into the kill ring.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 @item i a
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 Insert the A version of this difference at point.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 @item i b
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 Insert the B version of this difference at point.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 @item m
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 Put point and mark around the difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 @item ^
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 Scroll all three windows down (like @kbd{M-v}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 @item v
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 Scroll all three windows up (like @kbd{C-v}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 @item <
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 Scroll all three windows left (like @kbd{C-x <}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 @item >
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 Scroll all three windows right (like @kbd{C-x >}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 @item |
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 Reset horizontal scroll on all three windows.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 @item x 1
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 Shrink the merge window to one line. (Use @kbd{C-u l} to restore it
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 to full size.)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 @item x c
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 Combine the two versions of this difference (@pxref{Combining in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 Emerge}).
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 @item x f
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 Show the names of the files/buffers Emerge is operating on, in a Help
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 window. (Use @kbd{C-u l} to restore windows.)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 @item x j
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 Join this difference with the following one.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (@kbd{C-u x j} joins this difference with the previous one.)
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 @item x s
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 Split this difference into two differences. Before you use this
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 command, position point in each of the three buffers at the place where
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 you want to split the difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 @item x t
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 Trim identical lines off the top and bottom of the difference.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 Such lines occur when the A and B versions are
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 identical but differ from the ancestor version.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 @end table
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 @node Exiting Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 @subsection Exiting Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 the results into the output file if you specified one. It restores the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 A and B buffers to their proper contents, or kills them if they were
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 created by Emerge and you haven't changed them. It also disables the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 Emerge commands in the merge buffer, since executing them later could
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 damage the contents of the various buffers.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 @kbd{C-]} aborts the merge. This means exiting without writing the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 output file. If you didn't specify an output file, then there is no
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 real difference between aborting and finishing the merge.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 If the Emerge command was called from another Lisp program, then its
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 return value is @code{t} for successful completion, or @code{nil} if you
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 abort.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 @node Combining in Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 @subsection Combining the Two Versions
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 Sometimes you want to keep @emph{both} alternatives for a particular
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 difference. To do this, use @kbd{x c}, which edits the merge buffer
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 @example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 @group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 #ifdef NEW
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 @var{version from A buffer}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 #else /* not NEW */
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 @var{version from B buffer}
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 #endif /* not NEW */
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 @end group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 @noindent
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 @vindex emerge-combine-versions-template
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 While this example shows C preprocessor conditionals delimiting the two
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 alternative versions, you can specify the strings to use by setting
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 the variable @code{emerge-combine-versions-template} to a string of your
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 choice. In the string, @samp{%a} says where to put version A, and
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 @samp{%b} says where to put version B. The default setting, which
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 produces the results shown above, looks like this:
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 @example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 @group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 "#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 @end group
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 @end example
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 @node Fine Points of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 @subsection Fine Points of Emerge
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 During the merge, you mustn't try to edit the A and B buffers yourself.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 Emerge modifies them temporarily, but ultimately puts them back the way
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 they were.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 You can have any number of merges going at once---just don't use any one
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 buffer as input to more than one merge at once, since the temporary
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 changes made in these buffers would get in each other's way.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 Starting Emerge can take a long time because it needs to compare the
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 files fully. Emacs can't do anything else until @code{diff} finishes.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 Perhaps in the future someone will change Emerge to do the comparison in
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 the background when the input files are large---then you could keep on
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 doing other things with Emacs until Emerge is ready to accept
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 commands.
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 @vindex emerge-startup-hook
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 After setting up the merge, Emerge runs the hook
1381135c49a4 Initial version consists of sections moved from Editing Programs chapter.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 @code{emerge-startup-hook} (@pxref{Hooks}).
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1237
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1238 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1239 arch-tag: b9d83dfb-82ea-4ff6-bab5-05a3617091fb
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1240 @end ignore