annotate doc/emacs/emerge-xtra.texi @ 112397:a7191495c39c

Include entries from yesterdays checkins that were in an unsaved buffer.
author Ken Manheimer <ken.manheimer@gmail.com>
date Fri, 21 Jan 2011 11:36:24 -0500
parents ef719132ddfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
112218
376148b31b5e Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents: 109262
diff changeset
2 @c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
109262
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3 @c Free Software Foundation, Inc.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4 @c See file emacs.texi for copying conditions.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @c
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 @c This file is included either in emacs-xtra.texi (when producing the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 @c printed version) or in the main Emacs manual (for the on-line version).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 @node Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 @section Merging Files with Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 @cindex Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11 @cindex merging files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
12
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
13 It's not unusual for programmers to get their signals crossed and
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
14 modify the same program in two different directions. To recover from
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
15 this confusion, you need to merge the two versions. Emerge makes this
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16 easier. For other ways to compare files, see
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
17 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 @ref{Comparing Files,,, emacs, the Emacs Manual},
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 @ref{Comparing Files},
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22 @end ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
23 and @ref{Top, Ediff,, ediff, The Ediff Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 @menu
109262
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
26 * Overview of Emerge:: How to start Emerge. Basic concepts.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
27 * Submodes of Emerge:: Fast mode vs. Edit mode.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
28 Skip Prefers mode and Auto Advance mode.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
29 * State of Difference:: You do the merge by specifying state A or B
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
30 for each difference.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
31 * Merge Commands:: Commands for selecting a difference,
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
32 changing states of differences, etc.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
33 * Exiting Emerge:: What to do when you've finished the merge.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
34 * Combining in Emerge:: How to keep both alternatives for a difference.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
35 * Fine Points of Emerge:: Miscellaneous issues.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 @end menu
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 @node Overview of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39 @subsection Overview of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41 To start Emerge, run one of these four commands:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 @table @kbd
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 @item M-x emerge-files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 @findex emerge-files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 Merge two specified files.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 @item M-x emerge-files-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 @findex emerge-files-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 Merge two specified files, with reference to a common ancestor.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 @item M-x emerge-buffers
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 @findex emerge-buffers
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 Merge two buffers.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 @item M-x emerge-buffers-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 @findex emerge-buffers-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 Merge two buffers with reference to a common ancestor in a third
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 @cindex merge buffer (Emerge)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 @cindex A and B buffers (Emerge)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 The Emerge commands compare two files or buffers, and display the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65 comparison in three buffers: one for each input text (the @dfn{A buffer}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67 takes place. The merge buffer shows the full merged text, not just the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 differences. Wherever the two input texts differ, you can choose which
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 one of them to include in the merge buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 The Emerge commands that take input from existing buffers use only
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 the accessible portions of those buffers, if they are narrowed.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 @xref{Narrowing,,, emacs, the Emacs Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77 @xref{Narrowing}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 @end ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81 If a common ancestor version is available, from which the two texts to
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 be merged were both derived, Emerge can use it to guess which
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 alternative is right. Wherever one current version agrees with the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 ancestor, Emerge presumes that the other current version is a deliberate
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 change which should be kept in the merged version. Use the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 @samp{with-ancestor} commands if you want to specify a common ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 text. These commands read three file or buffer names---variant A,
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 variant B, and the common ancestor.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 After the comparison is done and the buffers are prepared, the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 interactive merging starts. You control the merging by typing special
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 @dfn{merge commands} in the merge buffer (@pxref{Merge Commands}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93 For each run of differences between the input texts, you can choose
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94 which one of them to keep, or edit them both together.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 The merge buffer uses a special major mode, Emerge mode, with commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 for making these choices. But you can also edit the buffer with
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98 ordinary Emacs commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100 At any given time, the attention of Emerge is focused on one
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 particular difference, called the @dfn{selected} difference. This
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 difference is marked off in the three buffers like this:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 vvvvvvvvvvvvvvvvvvvv
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 @var{text that differs}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 ^^^^^^^^^^^^^^^^^^^^
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 @noindent
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 Emerge numbers all the differences sequentially and the mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 line always shows the number of the selected difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 Normally, the merge buffer starts out with the A version of the text.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 But when the A version of a difference agrees with the common ancestor,
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 then the B version is initially preferred for that difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 Emerge leaves the merged text in the merge buffer when you exit. At
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 that point, you can save it in a file with @kbd{C-x C-w}. If you give a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 numeric argument to @code{emerge-files} or
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 @code{emerge-files-with-ancestor}, it reads the name of the output file
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 using the minibuffer. (This is the last file name those commands read.)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 Then exiting from Emerge saves the merged text in the output file.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 Normally, Emerge commands save the output buffer in its file when you
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 save the output buffer, but you can save it yourself if you wish.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 @node Submodes of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 @subsection Submodes of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 You can choose between two modes for giving merge commands: Fast mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 and Edit mode. In Fast mode, basic merge commands are single
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 characters, but ordinary Emacs commands are disabled. This is
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135 convenient if you use only merge commands. In Edit mode, all merge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
136 commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137 commands are also available. This allows editing the merge buffer, but
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138 slows down Emerge operations.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141 Fast mode. The mode line indicates Edit and Fast modes with @samp{E}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 and @samp{F}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 Emerge has two additional submodes that affect how particular merge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145 commands work: Auto Advance mode and Skip Prefers mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148 advance to the next difference. This lets you go through the merge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 faster as long as you simply choose one of the alternatives from the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 input. The mode line indicates Auto Advance mode with @samp{A}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
103701
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
153 skip over differences in states ``prefer-A'' and ``prefer-B''
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
154 (@pxref{State of Difference}). Thus you see only differences for
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
155 which neither version is presumed ``correct.'' The mode line
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
156 indicates Skip Prefers mode with @samp{S}. This mode is only relevant
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
157 when there is an ancestor.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 @findex emerge-auto-advance-mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 @findex emerge-skip-prefers-mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161 Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 clear Auto Advance mode. Use @kbd{s s}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
103701
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
164 These commands turn on the mode with a positive argument, turn it off
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 with a negative or zero argument, and toggle the mode with no argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 @node State of Difference
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 @subsection State of a Difference
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 In the merge buffer, a difference is marked with lines of @samp{v} and
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 @samp{^} characters. Each difference has one of these seven states:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 @table @asis
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 @item A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175 The difference is showing the A version. The @kbd{a} command always
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 produces this state; the mode line indicates it with @samp{A}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 @item B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 The difference is showing the B version. The @kbd{b} command always
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 produces this state; the mode line indicates it with @samp{B}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 @item default-A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 @itemx default-B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 The difference is showing the A or the B state by default, because you
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 haven't made a choice. All differences start in the default-A state
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 (and thus the merge buffer is a copy of the A buffer), except those for
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 which one alternative is ``preferred'' (see below).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 When you select a difference, its state changes from default-A or
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190 default-B to plain A or B. Thus, the selected difference never has
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191 state default-A or default-B, and these states are never displayed in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 the mode line.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 The command @kbd{d a} chooses default-A as the default state, and @kbd{d
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 b} chooses default-B. This chosen default applies to all differences
103701
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
196 that you have never selected and for which no alternative is preferred.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197 If you are moving through the merge sequentially, the differences you
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 haven't selected are those following the selected one. Thus, while
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 moving sequentially, you can effectively make the A version the default
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
200 for some sections of the merge buffer and the B version the default for
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201 others by using @kbd{d a} and @kbd{d b} between sections.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203 @item prefer-A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 @itemx prefer-B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205 The difference is showing the A or B state because it is
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206 @dfn{preferred}. This means that you haven't made an explicit choice,
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 but one alternative seems likely to be right because the other
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 alternative agrees with the common ancestor. Thus, where the A buffer
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209 agrees with the common ancestor, the B version is preferred, because
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 chances are it is the one that was actually changed.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
211
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 These two states are displayed in the mode line as @samp{A*} and @samp{B*}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
214 @item combined
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215 The difference is showing a combination of the A and B states, as a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216 result of the @kbd{x c} or @kbd{x C} commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
218 Once a difference is in this state, the @kbd{a} and @kbd{b} commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219 don't do anything to it unless you give them a numeric argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 The mode line displays this state as @samp{comb}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224 @node Merge Commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 @subsection Merge Commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
226
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
227 Here are the Merge commands for Fast mode; in Edit mode, precede them
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
228 with @kbd{C-c C-c}:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 @table @kbd
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231 @item p
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 Select the previous difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234 @item n
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 Select the next difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237 @item a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 Choose the A version of this difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 @item b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 Choose the B version of this difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243 @item C-u @var{n} j
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244 Select difference number @var{n}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 @item .
103701
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
247 Select the difference containing point.
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
248 @c [Does not work in the A or B buffer?]
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
249 @c You can use this command in the merge buffer or in the A or B buffer.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251 @item q
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252 Quit---finish the merge.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
254 @item C-]
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 Abort---exit merging and do not save the output.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 @item f
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 @item e
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261 Go into Edit mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263 @item l
103701
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
264 Recenter (like @kbd{C-l}) all three windows. With an argument,
a7852a825f44 (Emerge): Tweak Misc menu description.
Glenn Morris <rgm@gnu.org>
parents: 100974
diff changeset
265 reestablish the default three-window display.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267 @item -
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268 Specify part of a prefix numeric argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270 @item @var{digit}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271 Also specify part of a prefix numeric argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
273 @item d a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 Choose the A version as the default from here down in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
275 the merge buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277 @item d b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278 Choose the B version as the default from here down in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279 the merge buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 @item c a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282 Copy the A version of this difference into the kill ring.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 @item c b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285 Copy the B version of this difference into the kill ring.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 @item i a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288 Insert the A version of this difference at point.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 @item i b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 Insert the B version of this difference at point.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 @item m
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 Put point and mark around the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 @item ^
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297 Scroll all three windows down (like @kbd{M-v}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299 @item v
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300 Scroll all three windows up (like @kbd{C-v}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 @item <
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303 Scroll all three windows left (like @kbd{C-x <}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 @item >
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 Scroll all three windows right (like @kbd{C-x >}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 @item |
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 Reset horizontal scroll on all three windows.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311 @item x 1
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 Shrink the merge window to one line. (Use @kbd{C-u l} to restore it
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 to full size.)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
314
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
315 @item x c
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 Combine the two versions of this difference (@pxref{Combining in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
317 Emerge}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319 @item x f
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 Show the names of the files/buffers Emerge is operating on, in a Help
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 window. (Use @kbd{C-u l} to restore windows.)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
322
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 @item x j
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 Join this difference with the following one.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325 (@kbd{C-u x j} joins this difference with the previous one.)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 @item x s
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 Split this difference into two differences. Before you use this
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 command, position point in each of the three buffers at the place where
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 you want to split the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332 @item x t
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 Trim identical lines off the top and bottom of the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 Such lines occur when the A and B versions are
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335 identical but differ from the ancestor version.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 @node Exiting Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
339 @subsection Exiting Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
340
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
341 The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342 the results into the output file if you specified one. It restores the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343 A and B buffers to their proper contents, or kills them if they were
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
344 created by Emerge and you haven't changed them. It also disables the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
345 Emerge commands in the merge buffer, since executing them later could
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
346 damage the contents of the various buffers.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
347
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
348 @kbd{C-]} aborts the merge. This means exiting without writing the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
349 output file. If you didn't specify an output file, then there is no
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
350 real difference between aborting and finishing the merge.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
351
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
352 If the Emerge command was called from another Lisp program, then its
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353 return value is @code{t} for successful completion, or @code{nil} if you
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354 abort.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
356 @node Combining in Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
357 @subsection Combining the Two Versions
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
358
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
359 Sometimes you want to keep @emph{both} alternatives for a particular
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 difference. To do this, use @kbd{x c}, which edits the merge buffer
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
361 like this:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
362
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
363 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
364 @group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
365 #ifdef NEW
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
366 @var{version from A buffer}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
367 #else /* not NEW */
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
368 @var{version from B buffer}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369 #endif /* not NEW */
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 @end group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
372
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373 @noindent
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
374 @vindex emerge-combine-versions-template
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
375 While this example shows C preprocessor conditionals delimiting the two
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
376 alternative versions, you can specify the strings to use by setting
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377 the variable @code{emerge-combine-versions-template} to a string of your
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
378 choice. In the string, @samp{%a} says where to put version A, and
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
379 @samp{%b} says where to put version B. The default setting, which
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
380 produces the results shown above, looks like this:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
381
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
382 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
383 @group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
384 "#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
385 @end group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
386 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
388 @node Fine Points of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 @subsection Fine Points of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
390
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
391 During the merge, you mustn't try to edit the A and B buffers yourself.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
392 Emerge modifies them temporarily, but ultimately puts them back the way
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
393 they were.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
394
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 You can have any number of merges going at once---just don't use any one
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
396 buffer as input to more than one merge at once, since the temporary
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
397 changes made in these buffers would get in each other's way.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
398
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
399 Starting Emerge can take a long time because it needs to compare the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
400 files fully. Emacs can't do anything else until @code{diff} finishes.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401 Perhaps in the future someone will change Emerge to do the comparison in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 the background when the input files are large---then you could keep on
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 doing other things with Emacs until Emerge is ready to accept
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404 commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 @vindex emerge-startup-hook
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407 After setting up the merge, Emerge runs the hook
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408 @code{emerge-startup-hook}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
409 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 @xref{Hooks,,, emacs, the Emacs Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
411 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
412 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
413 @xref{Hooks}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 @end ifnottex