annotate doc/emacs/emerge-xtra.texi @ 100974:cb5d2387102c

Add 2009 to copyright years.
author Glenn Morris <rgm@gnu.org>
date Thu, 08 Jan 2009 05:28:46 +0000
parents 5d58981e6690
children a7852a825f44
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.
100974
cb5d2387102c Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
2 @c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
84237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4 @c
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @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
6 @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
7 @node Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 @section Merging Files with Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 @cindex Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 @cindex merging files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
12 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
13 modify the same program in two different directions. To recover from
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
14 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
15 easier. For other ways to compare files, see
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
17 @ref{Comparing Files,,, emacs, the Emacs Manual},
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 @ref{Comparing Files},
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 @end ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22 and @ref{Top, Ediff,, ediff, The Ediff Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
23
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24 @menu
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 * Overview of Emerge:: How to start Emerge. Basic concepts.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 * Submodes of Emerge:: Fast mode vs. Edit mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 Skip Prefers mode and Auto Advance mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 * State of Difference:: You do the merge by specifying state A or B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 for each difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30 * Merge Commands:: Commands for selecting a difference,
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31 changing states of differences, etc.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32 * Exiting Emerge:: What to do when you've finished the merge.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33 * Combining in Emerge:: How to keep both alternatives for a difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34 * Fine Points of Emerge:: Misc.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35 @end menu
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37 @node Overview of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 @subsection Overview of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 To start Emerge, run one of these four commands:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 @table @kbd
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 @item M-x emerge-files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 @findex emerge-files
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 Merge two specified files.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 @item M-x emerge-files-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 @findex emerge-files-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 Merge two specified files, with reference to a common ancestor.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51 @item M-x emerge-buffers
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 @findex emerge-buffers
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 Merge two buffers.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 @item M-x emerge-buffers-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 @findex emerge-buffers-with-ancestor
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 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
58 buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 @cindex merge buffer (Emerge)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 @cindex A and B buffers (Emerge)
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 The Emerge commands compare two files or buffers, and display the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 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
65 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
66 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
67 differences. Wherever the two input texts differ, you can choose which
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 one of them to include in the merge buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70 The Emerge commands that take input from existing buffers use only
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 the accessible portions of those buffers, if they are narrowed.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 @xref{Narrowing,,, emacs, the Emacs Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 @xref{Narrowing}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77 @end ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78
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 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
81 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
82 alternative is right. Wherever one current version agrees with the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 ancestor, Emerge presumes that the other current version is a deliberate
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 change which should be kept in the merged version. Use the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 @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
86 text. These commands read three file or buffer names---variant A,
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 variant B, and the common ancestor.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 After the comparison is done and the buffers are prepared, the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 interactive merging starts. You control the merging by typing special
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 @dfn{merge commands} in the merge buffer (@pxref{Merge Commands}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 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
93 which one of them to keep, or edit them both together.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 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
96 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
97 ordinary Emacs commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 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
100 particular difference, called the @dfn{selected} difference. This
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 difference is marked off in the three buffers like this:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 vvvvvvvvvvvvvvvvvvvv
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 @var{text that differs}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 ^^^^^^^^^^^^^^^^^^^^
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 @noindent
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 Emerge numbers all the differences sequentially and the mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 line always shows the number of the selected difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 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
114 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
115 then the B version is initially preferred for that difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 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
118 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
119 numeric argument to @code{emerge-files} or
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 @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
121 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
122 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
123
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 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
125 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
126 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
127
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 @node Submodes of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 @subsection Submodes of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131 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
132 and Edit mode. In Fast mode, basic merge commands are single
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 characters, but ordinary Emacs commands are disabled. This is
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 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
135 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
136 commands are also available. This allows editing the merge buffer, but
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137 slows down Emerge operations.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139 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
140 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
141 and @samp{F}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 Emerge has two additional submodes that affect how particular merge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 commands work: Auto Advance mode and Skip Prefers mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146 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
147 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
148 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
149 input. The mode line indicates Auto Advance mode with @samp{A}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151 If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 skip over differences in states prefer-A and prefer-B (@pxref{State of
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
153 Difference}). Thus you see only differences for which neither version
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154 is presumed ``correct.'' The mode line indicates Skip Prefers mode with
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155 @samp{S}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157 @findex emerge-auto-advance-mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158 @findex emerge-skip-prefers-mode
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 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
160 clear Auto Advance mode. Use @kbd{s s}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161 (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 These commands turn on the mode with a positive argument, turns it off
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 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
164
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 @node State of Difference
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 @subsection State of a Difference
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 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
169 @samp{^} characters. Each difference has one of these seven states:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 @table @asis
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 @item A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 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
174 produces this state; the mode line indicates it with @samp{A}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 @item B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177 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
178 produces this state; the mode line indicates it with @samp{B}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 @item default-A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 @itemx default-B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 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
183 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
184 (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
185 which one alternative is ``preferred'' (see below).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 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
188 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
189 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
190 the mode line.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 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
193 b} chooses default-B. This chosen default applies to all differences
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 which you haven't ever selected and for which no alternative is preferred.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 If you are moving through the merge sequentially, the differences you
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196 haven't selected are those following the selected one. Thus, while
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197 moving sequentially, you can effectively make the A version the default
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 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
199 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
200
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201 @item prefer-A
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202 @itemx prefer-B
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203 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
204 @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
205 but one alternative seems likely to be right because the other
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206 alternative agrees with the common ancestor. Thus, where the A buffer
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 agrees with the common ancestor, the B version is preferred, because
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 chances are it is the one that was actually changed.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 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
211
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 @item combined
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213 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
214 result of the @kbd{x c} or @kbd{x C} commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216 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
217 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
218
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219 The mode line displays this state as @samp{comb}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222 @node Merge Commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223 @subsection Merge Commands
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 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
226 with @kbd{C-c C-c}:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
227
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
228 @table @kbd
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229 @item p
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 Select the previous difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 @item n
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233 Select the next difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 @item a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236 Choose the A version of this difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 @item b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239 Choose the B version of this difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 @item C-u @var{n} j
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242 Select difference number @var{n}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244 @item .
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245 Select the difference containing point. You can use this command in the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 merge buffer or in the A or B buffer.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
247
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
248 @item q
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
249 Quit---finish the merge.
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 C-]
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252 Abort---exit merging and do not save the output.
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 f
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 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
256
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 @item e
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 Go into Edit mode.
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 l
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261 Recenter (like @kbd{C-l}) all three windows.
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 -
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
264 Specify part of a prefix numeric argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
265
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 @item @var{digit}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267 Also specify part of a prefix numeric argument.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269 @item d a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270 Choose the A version as the default from here down in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271 the merge buffer.
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 b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 Choose the B 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 c a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278 Copy the A version of this difference into the kill ring.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 @item c b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 Copy the B version of this difference into the kill ring.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283 @item i a
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 Insert the A version of this difference at point.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286 @item i b
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 Insert the B version of this difference at point.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 @item m
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 Put point and mark around the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292 @item ^
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 Scroll all three windows down (like @kbd{M-v}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295 @item v
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 Scroll all three windows up (like @kbd{C-v}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298 @item <
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299 Scroll all three windows left (like @kbd{C-x <}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 @item >
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 Scroll all three windows right (like @kbd{C-x >}).
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 @item |
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 Reset horizontal scroll on all three windows.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307 @item x 1
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 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
309 to full size.)
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 c
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 Combine the two versions of this difference (@pxref{Combining in
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 Emerge}).
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 f
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 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
317 window. (Use @kbd{C-u l} to restore windows.)
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 j
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 Join this difference with the following one.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 (@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
322
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 @item x s
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 Split this difference into two differences. Before you use this
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325 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
326 you want to split the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 @item x t
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 Trim identical lines off the top and bottom of the difference.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 Such lines occur when the A and B versions are
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331 identical but differ from the ancestor version.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332 @end table
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 @node Exiting Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335 @subsection Exiting Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337 The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 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
339 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
340 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
341 Emerge commands in the merge buffer, since executing them later could
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342 damage the contents of the various buffers.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
344 @kbd{C-]} aborts the merge. This means exiting without writing the
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
345 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
346 real difference between aborting and finishing the merge.
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 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
349 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
350 abort.
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 @node Combining in Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353 @subsection Combining the Two Versions
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355 Sometimes you want to keep @emph{both} alternatives for a particular
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
356 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
357 like this:
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 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 @group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
361 #ifdef NEW
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
362 @var{version from A buffer}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
363 #else /* not NEW */
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
364 @var{version from B buffer}
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
365 #endif /* not NEW */
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
366 @end group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
367 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
368
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369 @noindent
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 @vindex emerge-combine-versions-template
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 While this example shows C preprocessor conditionals delimiting the two
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
372 alternative versions, you can specify the strings to use by setting
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373 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
374 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
375 @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
376 produces the results shown above, looks like this:
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
378 @example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
379 @group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
380 "#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
381 @end group
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
382 @end example
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
383
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
384 @node Fine Points of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
385 @subsection Fine Points of Emerge
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
386
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387 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
388 Emerge modifies them temporarily, but ultimately puts them back the way
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 they were.
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 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
392 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
393 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
394
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 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
396 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
397 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
398 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
399 doing other things with Emacs until Emerge is ready to accept
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
400 commands.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 @vindex emerge-startup-hook
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 After setting up the merge, Emerge runs the hook
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404 @code{emerge-startup-hook}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405 @iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 @xref{Hooks,,, emacs, the Emacs Manual}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407 @end iftex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408 @ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
409 @xref{Hooks}.
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 @end ifnottex
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
411
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
412 @ignore
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
413 arch-tag: cda63f09-9c5f-4ea1-adb9-4a820fdfb24e
c8665d7fa5fe Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 @end ignore