aboutsummaryrefslogtreecommitdiffstats
path: root/man
diff options
context:
space:
mode:
authorKaroly Lorentey2006-03-22 15:16:06 +0000
committerKaroly Lorentey2006-03-22 15:16:06 +0000
commitd4717700cc0b7af6197c19e22bd912e3b1ed67ee (patch)
tree4e2a630584b23f670aff57a512a8f2d8182e39c4 /man
parentf1be5774242454844bf21fbf32e0f6541e2add34 (diff)
parentd63cd76657e12b92a5d7736a15bc9b97a7f9990e (diff)
downloademacs-d4717700cc0b7af6197c19e22bd912e3b1ed67ee.tar.gz
emacs-d4717700cc0b7af6197c19e22bd912e3b1ed67ee.zip
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-160 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-161 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-162 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-163 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-164 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-165 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-166 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-167 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-168 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-169 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-170 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-171 Update from CVS: man/mh-e.texi (Folders): Various edits. * emacs@sv.gnu.org/emacs--devo--0--patch-172 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-58 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-59 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-60 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-61 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-62 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-63 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-64 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-534
Diffstat (limited to 'man')
-rw-r--r--man/ChangeLog91
-rw-r--r--man/Makefile.in1
-rw-r--r--man/abbrevs.texi2
-rw-r--r--man/emacs-xtra.texi1183
-rw-r--r--man/emacs.texi37
-rw-r--r--man/files.texi135
-rw-r--r--man/gnus.texi2
-rw-r--r--man/help.texi20
-rw-r--r--man/maintaining.texi388
-rw-r--r--man/makefile.w32-in1
-rw-r--r--man/mh-e.texi284
-rw-r--r--man/org.texi2
-rw-r--r--man/picture.texi277
-rw-r--r--man/programs.texi519
-rw-r--r--man/sending.texi2
-rw-r--r--man/text.texi6
16 files changed, 1524 insertions, 1426 deletions
diff --git a/man/ChangeLog b/man/ChangeLog
index 7eddcae6b5e..3628ec610c3 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,12 +1,78 @@
12006-03-21 Bill Wohler <wohler@newt.com>
2
3 * mh-e.texi (Folders): Various edits.
4
52006-03-20 Romain Francoise <romain@orebokech.com>
6
7 * gnus.texi (Mail Folders): Grammar fix.
8
92006-03-21 Juanma Barranquero <lekktu@gmail.com>
10
11 * files.texi (VC Dired Mode): Remove misplaced brackets.
12
132006-03-21 Andre Spiegel <spiegel@gnu.org>
14
15 * files.texi: Various updates and clarifications in the VC
16 chapter.
17
182006-03-19 Luc Teirlinck <teirllm@auburn.edu>
19
20 * help.texi (Help Mode): Document "C-c C-c".
21
222006-03-19 Bill Wohler <wohler@newt.com>
23
24 * mh-e.texi (Replying): Document Mail-Followup-To. Change
25 manually-formatted table to multitable. Add debugging info.
26 Move description of mh-reply-default-reply-to into paragraph
27 that describes its values.
28
292006-03-17 Bill Wohler <wohler@newt.com>
30
31 * mh-e.texi: Use smallexample and smalllisp consistenly.
32 (Sending Mail Tour): Update method of entering
33 addresses and subject.
34 (Sending Mail Tour, Reading Mail Tour, Processing Mail Tour)
35 (Adding Attachments, Searching): Update screenshots for Emacs 22.
36
372006-03-16 Luc Teirlinck <teirllm@auburn.edu>
38
39 * emacs-xtra.texi (Top): Avoid ugly continuation line in
40 menu in the standalone Info reader.
41
422006-03-15 Chong Yidong <cyd@stupidchicken.com>
43
44 * emacs-xtra.texi (Emerge, Picture Mode. Fortran): New chapters,
45 moved here from Emacs manual.
46
47 * programs.texi (Fortran): Section moved to emacs-xtra.
48 (Program Modes): Xref to Fortran in emacs-xtra.
49
50 * maintaining.texi (Emerge): Moved to emacs-xtra.
51 * files.texi (Comparing Files): Xref to Emerge in emacs-xtra.
52
53 * picture.texi: File deleted.
54 * Makefile.in:
55 * makefile.w32-in: Remove picture.texi.
56
57 * text.texi (Text): Xref to Picture Mode in emacs-xtra.
58 * abbrevs.texi (Abbrevs):
59 * sending.texi (Sending Mail): Picture node removed.
60
61 * emacs.texi (Top): Update node listings.
62
632006-03-15 Carsten Dominik <dominik@science.uva.nl>
64
65 * org.texi: Version number change only.
66
12006-03-14 Bill Wohler <wohler@newt.com> 672006-03-14 Bill Wohler <wohler@newt.com>
2 68
3 * mh-e.texi: Add index entries around each paragraph rather than 69 * mh-e.texi: Add index entries around each paragraph rather than
4 depend on entries from beginning of node. Doing so ensures that 70 depend on entries from beginning of node. Doing so ensures that
5 index entries are less likely to be forgotten if text is cut and 71 index entries are less likely to be forgotten if text is cut and
6 pasted, and are necessary anyway if the references are on a 72 pasted, and are necessary anyway if the references are on a
7 separate page. It seems that makeinfo is now (v. 4.8) only 73 separate page. It seems that makeinfo is now (v. 4.8) only
8 producing one index entry per node, so there is no longer any 74 producing one index entry per node, so there is no longer any
9 excuse not to. Use subheading instead of heading. The incorrect 75 excuse not to. Use subheading instead of heading. The incorrect
10 use of heading produced very large fonts in Info--as large as the 76 use of heading produced very large fonts in Info--as large as the
11 main heading. 77 main heading.
12 (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E 78 (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E
@@ -73,9 +139,10 @@
73 139
742006-03-06 Bill Wohler <wohler@newt.com> 1402006-03-06 Bill Wohler <wohler@newt.com>
75 141
76 * mh-e.texi: Move from SourceForge repository to Savannah. This is 142 * mh-e.texi: Move from SourceForge repository to Savannah.
77 version 7.93, which is a total rewrite from the previous edition 143 This is version 7.93, which is a total rewrite from the previous
78 1.3 for MH-E version 5.0.2, and corresponds to MH-E version 7.93. 144 edition 1.3 for MH-E version 5.0.2, and corresponds to MH-E
145 version 7.93.
79 146
802006-03-03 Reiner Steib <Reiner.Steib@gmx.de> 1472006-03-03 Reiner Steib <Reiner.Steib@gmx.de>
81 148
@@ -83,12 +150,12 @@
83 150
842006-03-01 Carsten Dominik <dominik@science.uva.nl> 1512006-03-01 Carsten Dominik <dominik@science.uva.nl>
85 152
86 * org.texi: (Interaction): Added item about `org-mouse.el' by 153 * org.texi (Interaction): Add item about `org-mouse.el' by
87 Piotr Zielinski. 154 Piotr Zielinski.
88 (Managing links): Documented that also mouse-1 can be used to 155 (Managing links): Document that also mouse-1 can be used to
89 activate a link. 156 activate a link.
90 (Headlines, FAQ): Added entry about hiding leading stars. 157 (Headlines, FAQ): Add entry about hiding leading stars.
91 (Miscellaneous): Resorted the sections in this chapter to a more 158 (Miscellaneous): Resort the sections in this chapter to a more
92 logical sequence. 159 logical sequence.
93 160
942006-02-28 Andre Spiegel <spiegel@gnu.org> 1612006-02-28 Andre Spiegel <spiegel@gnu.org>
@@ -154,7 +221,7 @@
154 221
155 * reftex.texi: Version number and date change only. 222 * reftex.texi: Version number and date change only.
156 223
157 * org.texi: (Internal Links): Rewritten to cover the modified 224 * org.texi (Internal Links): Rewrite to cover the modified
158 linking system. 225 linking system.
159 226
1602006-02-21 Nick Roberts <nickrob@snap.net.nz> 2272006-02-21 Nick Roberts <nickrob@snap.net.nz>
@@ -935,7 +1002,7 @@
935 prefix keys even when mark is active. Decribe that RET moves 1002 prefix keys even when mark is active. Decribe that RET moves
936 cursor to next corner in rectangle; clarify insert around rectangle. 1003 cursor to next corner in rectangle; clarify insert around rectangle.
937 1004
9382005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 10052005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
939 1006
940 * cc-mode.texi: The manual has been extensively revised: the 1007 * cc-mode.texi: The manual has been extensively revised: the
941 information about using CC Mode has been separated from the larger 1008 information about using CC Mode has been separated from the larger
diff --git a/man/Makefile.in b/man/Makefile.in
index 854d3213272..749252f5492 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -89,7 +89,6 @@ EMACSSOURCES= \
89 ${srcdir}/building.texi \ 89 ${srcdir}/building.texi \
90 ${srcdir}/maintaining.texi \ 90 ${srcdir}/maintaining.texi \
91 ${srcdir}/abbrevs.texi \ 91 ${srcdir}/abbrevs.texi \
92 ${srcdir}/picture.texi \
93 ${srcdir}/sending.texi \ 92 ${srcdir}/sending.texi \
94 ${srcdir}/rmail.texi \ 93 ${srcdir}/rmail.texi \
95 ${srcdir}/dired.texi \ 94 ${srcdir}/dired.texi \
diff --git a/man/abbrevs.texi b/man/abbrevs.texi
index 683da2204c1..14b6bdbb9f2 100644
--- a/man/abbrevs.texi
+++ b/man/abbrevs.texi
@@ -2,7 +2,7 @@
2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003, 2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,
3@c 2004, 2005, 2006 Free Software Foundation, Inc. 3@c 2004, 2005, 2006 Free Software Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Abbrevs, Picture, Maintaining, Top 5@node Abbrevs, Sending Mail, Maintaining, Top
6@chapter Abbrevs 6@chapter Abbrevs
7@cindex abbrevs 7@cindex abbrevs
8@cindex expansion (of abbrevs) 8@cindex expansion (of abbrevs)
diff --git a/man/emacs-xtra.texi b/man/emacs-xtra.texi
index a352bc913c2..34fa1ca70f2 100644
--- a/man/emacs-xtra.texi
+++ b/man/emacs-xtra.texi
@@ -59,6 +59,11 @@ license to the document, as described in section 6 of the license.
59* Autorevert:: Auto Reverting non-file buffers. 59* Autorevert:: Auto Reverting non-file buffers.
60* Subdir switches:: Subdirectory switches in Dired. 60* Subdir switches:: Subdirectory switches in Dired.
61* Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization. 61* Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization.
62* Emerge:: A convenient way of merging two versions
63 of a program.
64* Picture Mode:: Editing pictures made up of characters
65 using the quarter-plane screen model.
66* Fortran:: Fortran mode and its special features.
62* Index:: 67* Index::
63@end menu 68@end menu
64 69
@@ -1222,6 +1227,1184 @@ the European style, the order of the parameters is changed to @var{day},
1222If one of these functions decides that it applies to a certain date, 1227If one of these functions decides that it applies to a certain date,
1223it returns a value that contains @var{mark}. 1228it returns a value that contains @var{mark}.
1224 1229
1230@node Emerge
1231@chapter Merging Files with Emerge
1232@cindex Emerge
1233@cindex merging files
1234
1235 It's not unusual for programmers to get their signals crossed and
1236modify the same program in two different directions. To recover from
1237this confusion, you need to merge the two versions. Emerge makes this
1238easier. For other ways to compare files, see @ref{Comparing Files,,,
1239emacs, the Emacs Manual} and @ref{Top, Ediff,, ediff, The Ediff
1240Manual}.
1241
1242@menu
1243* Overview of Emerge:: How to start Emerge. Basic concepts.
1244* Submodes of Emerge:: Fast mode vs. Edit mode.
1245 Skip Prefers mode and Auto Advance mode.
1246* State of Difference:: You do the merge by specifying state A or B
1247 for each difference.
1248* Merge Commands:: Commands for selecting a difference,
1249 changing states of differences, etc.
1250* Exiting Emerge:: What to do when you've finished the merge.
1251* Combining in Emerge:: How to keep both alternatives for a difference.
1252* Fine Points of Emerge:: Misc.
1253@end menu
1254
1255@node Overview of Emerge
1256@section Overview of Emerge
1257
1258 To start Emerge, run one of these four commands:
1259
1260@table @kbd
1261@item M-x emerge-files
1262@findex emerge-files
1263Merge two specified files.
1264
1265@item M-x emerge-files-with-ancestor
1266@findex emerge-files-with-ancestor
1267Merge two specified files, with reference to a common ancestor.
1268
1269@item M-x emerge-buffers
1270@findex emerge-buffers
1271Merge two buffers.
1272
1273@item M-x emerge-buffers-with-ancestor
1274@findex emerge-buffers-with-ancestor
1275Merge two buffers with reference to a common ancestor in a third
1276buffer.
1277@end table
1278
1279@cindex merge buffer (Emerge)
1280@cindex A and B buffers (Emerge)
1281 The Emerge commands compare two files or buffers, and display the
1282comparison in three buffers: one for each input text (the @dfn{A buffer}
1283and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging
1284takes place. The merge buffer shows the full merged text, not just the
1285differences. Wherever the two input texts differ, you can choose which
1286one of them to include in the merge buffer.
1287
1288 The Emerge commands that take input from existing buffers use only
1289the accessible portions of those buffers, if they are narrowed.
1290@xref{Narrowing,,, emacs, the Emacs Manual}.
1291
1292
1293 If a common ancestor version is available, from which the two texts to
1294be merged were both derived, Emerge can use it to guess which
1295alternative is right. Wherever one current version agrees with the
1296ancestor, Emerge presumes that the other current version is a deliberate
1297change which should be kept in the merged version. Use the
1298@samp{with-ancestor} commands if you want to specify a common ancestor
1299text. These commands read three file or buffer names---variant A,
1300variant B, and the common ancestor.
1301
1302 After the comparison is done and the buffers are prepared, the
1303interactive merging starts. You control the merging by typing special
1304@dfn{merge commands} in the merge buffer (@pxref{Merge Commands}).
1305For each run of differences between the input texts, you can choose
1306which one of them to keep, or edit them both together.
1307
1308 The merge buffer uses a special major mode, Emerge mode, with commands
1309for making these choices. But you can also edit the buffer with
1310ordinary Emacs commands.
1311
1312 At any given time, the attention of Emerge is focused on one
1313particular difference, called the @dfn{selected} difference. This
1314difference is marked off in the three buffers like this:
1315
1316@example
1317vvvvvvvvvvvvvvvvvvvv
1318@var{text that differs}
1319^^^^^^^^^^^^^^^^^^^^
1320@end example
1321
1322@noindent
1323Emerge numbers all the differences sequentially and the mode
1324line always shows the number of the selected difference.
1325
1326 Normally, the merge buffer starts out with the A version of the text.
1327But when the A version of a difference agrees with the common ancestor,
1328then the B version is initially preferred for that difference.
1329
1330 Emerge leaves the merged text in the merge buffer when you exit. At
1331that point, you can save it in a file with @kbd{C-x C-w}. If you give a
1332numeric argument to @code{emerge-files} or
1333@code{emerge-files-with-ancestor}, it reads the name of the output file
1334using the minibuffer. (This is the last file name those commands read.)
1335Then exiting from Emerge saves the merged text in the output file.
1336
1337 Normally, Emerge commands save the output buffer in its file when you
1338exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not
1339save the output buffer, but you can save it yourself if you wish.
1340
1341@node Submodes of Emerge
1342@section Submodes of Emerge
1343
1344 You can choose between two modes for giving merge commands: Fast mode
1345and Edit mode. In Fast mode, basic merge commands are single
1346characters, but ordinary Emacs commands are disabled. This is
1347convenient if you use only merge commands. In Edit mode, all merge
1348commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs
1349commands are also available. This allows editing the merge buffer, but
1350slows down Emerge operations.
1351
1352 Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to
1353Fast mode. The mode line indicates Edit and Fast modes with @samp{E}
1354and @samp{F}.
1355
1356 Emerge has two additional submodes that affect how particular merge
1357commands work: Auto Advance mode and Skip Prefers mode.
1358
1359 If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands
1360advance to the next difference. This lets you go through the merge
1361faster as long as you simply choose one of the alternatives from the
1362input. The mode line indicates Auto Advance mode with @samp{A}.
1363
1364 If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
1365skip over differences in states prefer-A and prefer-B (@pxref{State of
1366Difference}). Thus you see only differences for which neither version
1367is presumed ``correct.'' The mode line indicates Skip Prefers mode with
1368@samp{S}.
1369
1370@findex emerge-auto-advance-mode
1371@findex emerge-skip-prefers-mode
1372 Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
1373clear Auto Advance mode. Use @kbd{s s}
1374(@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
1375These commands turn on the mode with a positive argument, turns it off
1376with a negative or zero argument, and toggle the mode with no argument.
1377
1378@node State of Difference
1379@section State of a Difference
1380
1381 In the merge buffer, a difference is marked with lines of @samp{v} and
1382@samp{^} characters. Each difference has one of these seven states:
1383
1384@table @asis
1385@item A
1386The difference is showing the A version. The @kbd{a} command always
1387produces this state; the mode line indicates it with @samp{A}.
1388
1389@item B
1390The difference is showing the B version. The @kbd{b} command always
1391produces this state; the mode line indicates it with @samp{B}.
1392
1393@item default-A
1394@itemx default-B
1395The difference is showing the A or the B state by default, because you
1396haven't made a choice. All differences start in the default-A state
1397(and thus the merge buffer is a copy of the A buffer), except those for
1398which one alternative is ``preferred'' (see below).
1399
1400When you select a difference, its state changes from default-A or
1401default-B to plain A or B. Thus, the selected difference never has
1402state default-A or default-B, and these states are never displayed in
1403the mode line.
1404
1405The command @kbd{d a} chooses default-A as the default state, and @kbd{d
1406b} chooses default-B. This chosen default applies to all differences
1407which you haven't ever selected and for which no alternative is preferred.
1408If you are moving through the merge sequentially, the differences you
1409haven't selected are those following the selected one. Thus, while
1410moving sequentially, you can effectively make the A version the default
1411for some sections of the merge buffer and the B version the default for
1412others by using @kbd{d a} and @kbd{d b} between sections.
1413
1414@item prefer-A
1415@itemx prefer-B
1416The difference is showing the A or B state because it is
1417@dfn{preferred}. This means that you haven't made an explicit choice,
1418but one alternative seems likely to be right because the other
1419alternative agrees with the common ancestor. Thus, where the A buffer
1420agrees with the common ancestor, the B version is preferred, because
1421chances are it is the one that was actually changed.
1422
1423These two states are displayed in the mode line as @samp{A*} and @samp{B*}.
1424
1425@item combined
1426The difference is showing a combination of the A and B states, as a
1427result of the @kbd{x c} or @kbd{x C} commands.
1428
1429Once a difference is in this state, the @kbd{a} and @kbd{b} commands
1430don't do anything to it unless you give them a numeric argument.
1431
1432The mode line displays this state as @samp{comb}.
1433@end table
1434
1435@node Merge Commands
1436@section Merge Commands
1437
1438 Here are the Merge commands for Fast mode; in Edit mode, precede them
1439with @kbd{C-c C-c}:
1440
1441@table @kbd
1442@item p
1443Select the previous difference.
1444
1445@item n
1446Select the next difference.
1447
1448@item a
1449Choose the A version of this difference.
1450
1451@item b
1452Choose the B version of this difference.
1453
1454@item C-u @var{n} j
1455Select difference number @var{n}.
1456
1457@item .
1458Select the difference containing point. You can use this command in the
1459merge buffer or in the A or B buffer.
1460
1461@item q
1462Quit---finish the merge.
1463
1464@item C-]
1465Abort---exit merging and do not save the output.
1466
1467@item f
1468Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.)
1469
1470@item e
1471Go into Edit mode.
1472
1473@item l
1474Recenter (like @kbd{C-l}) all three windows.
1475
1476@item -
1477Specify part of a prefix numeric argument.
1478
1479@item @var{digit}
1480Also specify part of a prefix numeric argument.
1481
1482@item d a
1483Choose the A version as the default from here down in
1484the merge buffer.
1485
1486@item d b
1487Choose the B version as the default from here down in
1488the merge buffer.
1489
1490@item c a
1491Copy the A version of this difference into the kill ring.
1492
1493@item c b
1494Copy the B version of this difference into the kill ring.
1495
1496@item i a
1497Insert the A version of this difference at point.
1498
1499@item i b
1500Insert the B version of this difference at point.
1501
1502@item m
1503Put point and mark around the difference.
1504
1505@item ^
1506Scroll all three windows down (like @kbd{M-v}).
1507
1508@item v
1509Scroll all three windows up (like @kbd{C-v}).
1510
1511@item <
1512Scroll all three windows left (like @kbd{C-x <}).
1513
1514@item >
1515Scroll all three windows right (like @kbd{C-x >}).
1516
1517@item |
1518Reset horizontal scroll on all three windows.
1519
1520@item x 1
1521Shrink the merge window to one line. (Use @kbd{C-u l} to restore it
1522to full size.)
1523
1524@item x c
1525Combine the two versions of this difference (@pxref{Combining in
1526Emerge}).
1527
1528@item x f
1529Show the names of the files/buffers Emerge is operating on, in a Help
1530window. (Use @kbd{C-u l} to restore windows.)
1531
1532@item x j
1533Join this difference with the following one.
1534(@kbd{C-u x j} joins this difference with the previous one.)
1535
1536@item x s
1537Split this difference into two differences. Before you use this
1538command, position point in each of the three buffers at the place where
1539you want to split the difference.
1540
1541@item x t
1542Trim identical lines off the top and bottom of the difference.
1543Such lines occur when the A and B versions are
1544identical but differ from the ancestor version.
1545@end table
1546
1547@node Exiting Emerge
1548@section Exiting Emerge
1549
1550 The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
1551the results into the output file if you specified one. It restores the
1552A and B buffers to their proper contents, or kills them if they were
1553created by Emerge and you haven't changed them. It also disables the
1554Emerge commands in the merge buffer, since executing them later could
1555damage the contents of the various buffers.
1556
1557 @kbd{C-]} aborts the merge. This means exiting without writing the
1558output file. If you didn't specify an output file, then there is no
1559real difference between aborting and finishing the merge.
1560
1561 If the Emerge command was called from another Lisp program, then its
1562return value is @code{t} for successful completion, or @code{nil} if you
1563abort.
1564
1565@node Combining in Emerge
1566@section Combining the Two Versions
1567
1568 Sometimes you want to keep @emph{both} alternatives for a particular
1569difference. To do this, use @kbd{x c}, which edits the merge buffer
1570like this:
1571
1572@example
1573@group
1574#ifdef NEW
1575@var{version from A buffer}
1576#else /* not NEW */
1577@var{version from B buffer}
1578#endif /* not NEW */
1579@end group
1580@end example
1581
1582@noindent
1583@vindex emerge-combine-versions-template
1584While this example shows C preprocessor conditionals delimiting the two
1585alternative versions, you can specify the strings to use by setting
1586the variable @code{emerge-combine-versions-template} to a string of your
1587choice. In the string, @samp{%a} says where to put version A, and
1588@samp{%b} says where to put version B. The default setting, which
1589produces the results shown above, looks like this:
1590
1591@example
1592@group
1593"#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
1594@end group
1595@end example
1596
1597@node Fine Points of Emerge
1598@section Fine Points of Emerge
1599
1600 During the merge, you mustn't try to edit the A and B buffers yourself.
1601Emerge modifies them temporarily, but ultimately puts them back the way
1602they were.
1603
1604 You can have any number of merges going at once---just don't use any one
1605buffer as input to more than one merge at once, since the temporary
1606changes made in these buffers would get in each other's way.
1607
1608 Starting Emerge can take a long time because it needs to compare the
1609files fully. Emacs can't do anything else until @code{diff} finishes.
1610Perhaps in the future someone will change Emerge to do the comparison in
1611the background when the input files are large---then you could keep on
1612doing other things with Emacs until Emerge is ready to accept
1613commands.
1614
1615@vindex emerge-startup-hook
1616 After setting up the merge, Emerge runs the hook
1617@code{emerge-startup-hook}. @xref{Hooks,,, emacs, the Emacs Manual}.
1618
1619@node Picture Mode
1620@chapter Editing Pictures
1621@cindex pictures
1622@cindex making pictures out of text characters
1623@findex edit-picture
1624
1625 To edit a picture made out of text characters (for example, a picture
1626of the division of a register into fields, as a comment in a program),
1627use the command @kbd{M-x edit-picture} to enter Picture mode.
1628
1629 In Picture mode, editing is based on the @dfn{quarter-plane} model of
1630text, according to which the text characters lie studded on an area that
1631stretches infinitely far to the right and downward. The concept of the end
1632of a line does not exist in this model; the most you can say is where the
1633last nonblank character on the line is found.
1634
1635 Of course, Emacs really always considers text as a sequence of
1636characters, and lines really do have ends. But Picture mode replaces
1637the most frequently-used commands with variants that simulate the
1638quarter-plane model of text. They do this by inserting spaces or by
1639converting tabs to spaces.
1640
1641 Most of the basic editing commands of Emacs are redefined by Picture mode
1642to do essentially the same thing but in a quarter-plane way. In addition,
1643Picture mode defines various keys starting with the @kbd{C-c} prefix to
1644run special picture editing commands.
1645
1646 One of these keys, @kbd{C-c C-c}, is particularly important. Often a
1647picture is part of a larger file that is usually edited in some other
1648major mode. @kbd{M-x edit-picture} records the name of the previous
1649major mode so you can use the @kbd{C-c C-c} command
1650(@code{picture-mode-exit}) later to go back to that mode. @kbd{C-c C-c}
1651also deletes spaces from the ends of lines, unless given a numeric
1652argument.
1653
1654 The special commands of Picture mode all work in other modes (provided
1655the @file{picture} library is loaded), but are not bound to keys except
1656in Picture mode. The descriptions below talk of moving ``one column''
1657and so on, but all the picture mode commands handle numeric arguments as
1658their normal equivalents do.
1659
1660@vindex picture-mode-hook
1661 Turning on Picture mode runs the hook @code{picture-mode-hook}.
1662Additional extensions to Picture mode can be found in
1663@file{artist.el}.
1664
1665@menu
1666* Basic Picture:: Basic concepts and simple commands of Picture Mode.
1667* Insert in Picture:: Controlling direction of cursor motion
1668 after "self-inserting" characters.
1669* Tabs in Picture:: Various features for tab stops and indentation.
1670* Rectangles in Picture:: Clearing and superimposing rectangles.
1671@end menu
1672
1673@node Basic Picture
1674@section Basic Editing in Picture Mode
1675
1676@findex picture-forward-column
1677@findex picture-backward-column
1678@findex picture-move-down
1679@findex picture-move-up
1680@cindex editing in Picture mode
1681
1682 Most keys do the same thing in Picture mode that they usually do, but
1683do it in a quarter-plane style. For example, @kbd{C-f} is rebound to
1684run @code{picture-forward-column}, a command which moves point one
1685column to the right, inserting a space if necessary so that the actual
1686end of the line makes no difference. @kbd{C-b} is rebound to run
1687@code{picture-backward-column}, which always moves point left one
1688column, converting a tab to multiple spaces if necessary. @kbd{C-n} and
1689@kbd{C-p} are rebound to run @code{picture-move-down} and
1690@code{picture-move-up}, which can either insert spaces or convert tabs
1691as necessary to make sure that point stays in exactly the same column.
1692@kbd{C-e} runs @code{picture-end-of-line}, which moves to after the last
1693nonblank character on the line. There is no need to change @kbd{C-a},
1694as the choice of screen model does not affect beginnings of
1695lines.
1696
1697@findex picture-newline
1698 Insertion of text is adapted to the quarter-plane screen model
1699through the use of Overwrite mode (@pxref{Minor Modes,,, emacs, the
1700Emacs Manual}.) Self-inserting characters replace existing text,
1701column by column, rather than pushing existing text to the right.
1702@key{RET} runs @code{picture-newline}, which just moves to the
1703beginning of the following line so that new text will replace that
1704line.
1705
1706@findex picture-backward-clear-column
1707@findex picture-clear-column
1708@findex picture-clear-line
1709 In Picture mode, the commands that normally delete or kill text,
1710instead erase text (replacing it with spaces). @key{DEL}
1711(@code{picture-backward-clear-column}) replaces the preceding
1712character with a space rather than removing it; this moves point
1713backwards. @kbd{C-d} (@code{picture-clear-column}) replaces the next
1714character or characters with spaces, but does not move point. (If you
1715want to clear characters to spaces and move forward over them, use
1716@key{SPC}.) @kbd{C-k} (@code{picture-clear-line}) really kills the
1717contents of lines, but does not delete the newlines from the buffer.
1718
1719@findex picture-open-line
1720 To do actual insertion, you must use special commands. @kbd{C-o}
1721(@code{picture-open-line}) creates a blank line after the current
1722line; it never splits a line. @kbd{C-M-o} (@code{split-line}) makes
1723sense in Picture mode, so it is not changed. @kbd{C-j}
1724(@code{picture-duplicate-line}) inserts another line with the same
1725contents below the current line.
1726
1727@kindex C-c C-d @r{(Picture mode)}
1728 To do actual deletion in Picture mode, use @kbd{C-w}, @kbd{C-c C-d}
1729(which is defined as @code{delete-char}, as @kbd{C-d} is in other
1730modes), or one of the picture rectangle commands (@pxref{Rectangles in
1731Picture}).
1732
1733@node Insert in Picture
1734@section Controlling Motion after Insert
1735
1736@findex picture-movement-up
1737@findex picture-movement-down
1738@findex picture-movement-left
1739@findex picture-movement-right
1740@findex picture-movement-nw
1741@findex picture-movement-ne
1742@findex picture-movement-sw
1743@findex picture-movement-se
1744@kindex C-c < @r{(Picture mode)}
1745@kindex C-c > @r{(Picture mode)}
1746@kindex C-c ^ @r{(Picture mode)}
1747@kindex C-c . @r{(Picture mode)}
1748@kindex C-c ` @r{(Picture mode)}
1749@kindex C-c ' @r{(Picture mode)}
1750@kindex C-c / @r{(Picture mode)}
1751@kindex C-c \ @r{(Picture mode)}
1752 Since ``self-inserting'' characters in Picture mode overwrite and move
1753point, there is no essential restriction on how point should be moved.
1754Normally point moves right, but you can specify any of the eight
1755orthogonal or diagonal directions for motion after a ``self-inserting''
1756character. This is useful for drawing lines in the buffer.
1757
1758@table @kbd
1759@item C-c <
1760@itemx C-c @key{LEFT}
1761Move left after insertion (@code{picture-movement-left}).
1762@item C-c >
1763@itemx C-c @key{RIGHT}
1764Move right after insertion (@code{picture-movement-right}).
1765@item C-c ^
1766@itemx C-c @key{UP}
1767Move up after insertion (@code{picture-movement-up}).
1768@item C-c .
1769@itemx C-c @key{DOWN}
1770Move down after insertion (@code{picture-movement-down}).
1771@item C-c `
1772@itemx C-c @key{HOME}
1773Move up and left (``northwest'') after insertion (@code{picture-movement-nw}).
1774@item C-c '
1775@itemx C-c @key{PAGEUP}
1776Move up and right (``northeast'') after insertion
1777(@code{picture-movement-ne}).
1778@item C-c /
1779@itemx C-c @key{END}
1780Move down and left (``southwest'') after insertion
1781@*(@code{picture-movement-sw}).
1782@item C-c \
1783@itemx C-c @key{PAGEDOWN}
1784Move down and right (``southeast'') after insertion
1785@*(@code{picture-movement-se}).
1786@end table
1787
1788@kindex C-c C-f @r{(Picture mode)}
1789@kindex C-c C-b @r{(Picture mode)}
1790@findex picture-motion
1791@findex picture-motion-reverse
1792 Two motion commands move based on the current Picture insertion
1793direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
1794same direction as motion after ``insertion'' currently does, while @kbd{C-c
1795C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
1796
1797@node Tabs in Picture
1798@section Picture Mode Tabs
1799
1800@kindex M-TAB @r{(Picture mode)}
1801@findex picture-tab-search
1802@vindex picture-tab-chars
1803 Two kinds of tab-like action are provided in Picture mode. Use
1804@kbd{M-@key{TAB}} (@code{picture-tab-search}) for context-based tabbing.
1805With no argument, it moves to a point underneath the next
1806``interesting'' character that follows whitespace in the previous
1807nonblank line. ``Next'' here means ``appearing at a horizontal position
1808greater than the one point starts out at.'' With an argument, as in
1809@kbd{C-u M-@key{TAB}}, this command moves to the next such interesting
1810character in the current line. @kbd{M-@key{TAB}} does not change the
1811text; it only moves point. ``Interesting'' characters are defined by
1812the variable @code{picture-tab-chars}, which should define a set of
1813characters. The syntax for this variable is like the syntax used inside
1814of @samp{[@dots{}]} in a regular expression---but without the @samp{[}
1815and the @samp{]}. Its default value is @code{"!-~"}.
1816
1817@findex picture-tab
1818 @key{TAB} itself runs @code{picture-tab}, which operates based on the
1819current tab stop settings; it is the Picture mode equivalent of
1820@code{tab-to-tab-stop}. Normally it just moves point, but with a numeric
1821argument it clears the text that it moves over.
1822
1823@kindex C-c TAB @r{(Picture mode)}
1824@findex picture-set-tab-stops
1825 The context-based and tab-stop-based forms of tabbing are brought
1826together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}).
1827This command sets the tab stops to the positions which @kbd{M-@key{TAB}}
1828would consider significant in the current line. The use of this command,
1829together with @key{TAB}, can get the effect of context-based tabbing. But
1830@kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient.
1831
1832 It may be convenient to prevent use of actual tab characters in
1833pictures. For example, this prevents @kbd{C-x @key{TAB}} from messing
1834up the picture. You can do this by setting the variable
1835@code{indent-tabs-mode} to @code{nil}.
1836
1837@node Rectangles in Picture
1838@section Picture Mode Rectangle Commands
1839@cindex rectangles and Picture mode
1840@cindex Picture mode and rectangles
1841
1842 Picture mode defines commands for working on rectangular pieces of
1843the text in ways that fit with the quarter-plane model. The standard
1844rectangle commands may also be useful. @xref{Rectangles,,, emacs, the
1845Emacs Manual}.
1846
1847@table @kbd
1848@item C-c C-k
1849Clear out the region-rectangle with spaces
1850(@code{picture-clear-rectangle}). With argument, delete the text.
1851@item C-c C-w @var{r}
1852Similar, but save rectangle contents in register @var{r} first
1853(@code{picture-clear-rectangle-to-register}).
1854@item C-c C-y
1855Copy last killed rectangle into the buffer by overwriting, with upper
1856left corner at point (@code{picture-yank-rectangle}). With argument,
1857insert instead.
1858@item C-c C-x @var{r}
1859Similar, but use the rectangle in register @var{r}
1860(@code{picture-yank-rectangle-from-register}).
1861@end table
1862
1863@kindex C-c C-k @r{(Picture mode)}
1864@kindex C-c C-w @r{(Picture mode)}
1865@findex picture-clear-rectangle
1866@findex picture-clear-rectangle-to-register
1867 The picture rectangle commands @kbd{C-c C-k}
1868(@code{picture-clear-rectangle}) and @kbd{C-c C-w}
1869(@code{picture-clear-rectangle-to-register}) differ from the standard
1870rectangle commands in that they normally clear the rectangle instead of
1871deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
1872mode.
1873
1874 However, deletion of rectangles can be useful in Picture mode, so
1875these commands delete the rectangle if given a numeric argument.
1876@kbd{C-c C-k} either with or without a numeric argument saves the
1877rectangle for @kbd{C-c C-y}.
1878
1879@kindex C-c C-y @r{(Picture mode)}
1880@kindex C-c C-x @r{(Picture mode)}
1881@findex picture-yank-rectangle
1882@findex picture-yank-rectangle-from-register
1883 The Picture mode commands for yanking rectangles differ from the
1884standard ones in that they overwrite instead of inserting. This is
1885the same way that Picture mode insertion of other text differs from
1886other modes. @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts
1887(by overwriting) the rectangle that was most recently killed, while
1888@kbd{C-c C-x} (@code{picture-yank-rectangle-from-register}) does
1889likewise for the rectangle found in a specified register.
1890
1891@node Fortran
1892@chapter Fortran Mode
1893@cindex Fortran mode
1894@cindex mode, Fortran
1895
1896 Fortran mode provides special motion commands for Fortran statements
1897and subprograms, and indentation commands that understand Fortran
1898conventions of nesting, line numbers and continuation statements.
1899Fortran mode has support for Auto Fill mode that breaks long lines into
1900proper Fortran continuation lines.
1901
1902 Special commands for comments are provided because Fortran comments
1903are unlike those of other languages. Built-in abbrevs optionally save
1904typing when you insert Fortran keywords.
1905
1906 Use @kbd{M-x fortran-mode} to switch to this major mode. This
1907command runs the hook @code{fortran-mode-hook}. @xref{Hooks,,, emacs,
1908the Emacs Manual}.
1909
1910@cindex Fortran77 and Fortran90
1911@findex f90-mode
1912@findex fortran-mode
1913 Fortran mode is meant for editing Fortran77 ``fixed format'' (and also
1914``tab format'') source code. For editing the modern Fortran90 or
1915Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}).
1916Emacs normally uses Fortran mode for files with extension @samp{.f},
1917@samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and
1918@samp{.f95}. GNU Fortran supports both kinds of format.
1919
1920@menu
1921* Motion: Fortran Motion. Moving point by statements or subprograms.
1922* Indent: Fortran Indent. Indentation commands for Fortran.
1923* Comments: Fortran Comments. Inserting and aligning comments.
1924* Autofill: Fortran Autofill. Auto fill support for Fortran.
1925* Columns: Fortran Columns. Measuring columns for valid Fortran.
1926* Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
1927@end menu
1928
1929@node Fortran Motion
1930@section Motion Commands
1931
1932 In addition to the normal commands for moving by and operating on
1933``defuns'' (Fortran subprograms---functions and subroutines, as well as
1934modules for F90 mode), Fortran mode provides special commands to move by
1935statements and other program units.
1936
1937@table @kbd
1938@kindex C-c C-n @r{(Fortran mode)}
1939@findex fortran-next-statement
1940@findex f90-next-statement
1941@item C-c C-n
1942Move to the beginning of the next statement
1943(@code{fortran-next-statement}/@code{f90-next-statement}).
1944
1945@kindex C-c C-p @r{(Fortran mode)}
1946@findex fortran-previous-statement
1947@findex f90-previous-statement
1948@item C-c C-p
1949Move to the beginning of the previous statement
1950(@code{fortran-previous-statement}/@code{f90-previous-statement}).
1951If there is no previous statement (i.e. if called from the first
1952statement in the buffer), move to the start of the buffer.
1953
1954@kindex C-c C-e @r{(F90 mode)}
1955@findex f90-next-block
1956@item C-c C-e
1957Move point forward to the start of the next code block
1958(@code{f90-next-block}). A code block is a subroutine,
1959@code{if}--@code{endif} statement, and so forth. This command exists
1960for F90 mode only, not Fortran mode. With a numeric argument, this
1961moves forward that many blocks.
1962
1963@kindex C-c C-a @r{(F90 mode)}
1964@findex f90-previous-block
1965@item C-c C-a
1966Move point backward to the previous code block
1967(@code{f90-previous-block}). This is like @code{f90-next-block}, but
1968moves backwards.
1969
1970@kindex C-M-n @r{(Fortran mode)}
1971@findex fortran-end-of-block
1972@findex f90-end-of-block
1973@item C-M-n
1974Move to the end of the current code block
1975(@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric
1976agument, move forward that number of blocks. The mark is set before
1977moving point. The F90 mode version of this command checks for
1978consistency of block types and labels (if present), but it does not
1979check the outermost block since that may be incomplete.
1980
1981@kindex C-M-p @r{(Fortran mode)}
1982@findex fortran-beginning-of-block
1983@findex f90-beginning-of-block
1984@item C-M-p
1985Move to the start of the current code block
1986(@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
1987is like @code{fortran-end-of-block}, but moves backwards.
1988@end table
1989
1990@node Fortran Indent
1991@section Fortran Indentation
1992
1993 Special commands and features are needed for indenting Fortran code in
1994order to make sure various syntactic entities (line numbers, comment line
1995indicators and continuation line flags) appear in the columns that are
1996required for standard, fixed (or tab) format Fortran.
1997
1998@menu
1999* Commands: ForIndent Commands. Commands for indenting and filling Fortran.
2000* Contline: ForIndent Cont. How continuation lines indent.
2001* Numbers: ForIndent Num. How line numbers auto-indent.
2002* Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
2003* Vars: ForIndent Vars. Variables controlling Fortran indent style.
2004@end menu
2005
2006@node ForIndent Commands
2007@subsection Fortran Indentation and Filling Commands
2008
2009@table @kbd
2010@item C-M-j
2011Break the current line at point and set up a continuation line
2012(@code{fortran-split-line}).
2013@item M-^
2014Join this line to the previous line (@code{fortran-join-line}).
2015@item C-M-q
2016Indent all the lines of the subprogram point is in
2017(@code{fortran-indent-subprogram}).
2018@item M-q
2019Fill a comment block or statement.
2020@end table
2021
2022@kindex C-M-q @r{(Fortran mode)}
2023@findex fortran-indent-subprogram
2024 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
2025to reindent all the lines of the Fortran subprogram (function or
2026subroutine) containing point.
2027
2028@kindex C-M-j @r{(Fortran mode)}
2029@findex fortran-split-line
2030 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
2031a line in the appropriate fashion for Fortran. In a non-comment line,
2032the second half becomes a continuation line and is indented
2033accordingly. In a comment line, both halves become separate comment
2034lines.
2035
2036@kindex M-^ @r{(Fortran mode)}
2037@kindex C-c C-d @r{(Fortran mode)}
2038@findex fortran-join-line
2039 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
2040which joins a continuation line back to the previous line, roughly as
2041the inverse of @code{fortran-split-line}. The point must be on a
2042continuation line when this command is invoked.
2043
2044@kindex M-q @r{(Fortran mode)}
2045@kbd{M-q} in Fortran mode fills the comment block or statement that
2046point is in. This removes any excess statement continuations.
2047
2048@node ForIndent Cont
2049@subsection Continuation Lines
2050@cindex Fortran continuation lines
2051
2052@vindex fortran-continuation-string
2053 Most Fortran77 compilers allow two ways of writing continuation lines.
2054If the first non-space character on a line is in column 5, then that
2055line is a continuation of the previous line. We call this @dfn{fixed
2056format}. (In GNU Emacs we always count columns from 0; but note that
2057the Fortran standard counts from 1.) The variable
2058@code{fortran-continuation-string} specifies what character to put in
2059column 5. A line that starts with a tab character followed by any digit
2060except @samp{0} is also a continuation line. We call this style of
2061continuation @dfn{tab format}. (Fortran90 introduced ``free format'',
2062with another style of continuation lines).
2063
2064@vindex indent-tabs-mode @r{(Fortran mode)}
2065@vindex fortran-analyze-depth
2066@vindex fortran-tab-mode-default
2067 Fortran mode can use either style of continuation line. When you
2068enter Fortran mode, it tries to deduce the proper continuation style
2069automatically from the buffer contents. It does this by scanning up to
2070@code{fortran-analyze-depth} (default 100) lines from the start of the
2071buffer. The first line that begins with either a tab character or six
2072spaces determines the choice. If the scan fails (for example, if the
2073buffer is new and therefore empty), the value of
2074@code{fortran-tab-mode-default} (@code{nil} for fixed format, and
2075non-@code{nil} for tab format) is used. @samp{/t} in the mode line
2076indicates tab format is selected. Fortran mode sets the value of
2077@code{indent-tabs-mode} accordingly.
2078
2079 If the text on a line starts with the Fortran continuation marker
2080@samp{$}, or if it begins with any non-whitespace character in column
20815, Fortran mode treats it as a continuation line. When you indent a
2082continuation line with @key{TAB}, it converts the line to the current
2083continuation style. When you split a Fortran statement with
2084@kbd{C-M-j}, the continuation marker on the newline is created according
2085to the continuation style.
2086
2087 The setting of continuation style affects several other aspects of
2088editing in Fortran mode. In fixed format mode, the minimum column
2089number for the body of a statement is 6. Lines inside of Fortran
2090blocks that are indented to larger column numbers always use only the
2091space character for whitespace. In tab format mode, the minimum
2092column number for the statement body is 8, and the whitespace before
2093column 8 must always consist of one tab character.
2094
2095@node ForIndent Num
2096@subsection Line Numbers
2097
2098 If a number is the first non-whitespace in the line, Fortran
2099indentation assumes it is a line number and moves it to columns 0
2100through 4. (Columns always count from 0 in GNU Emacs.)
2101
2102@vindex fortran-line-number-indent
2103 Line numbers of four digits or less are normally indented one space.
2104The variable @code{fortran-line-number-indent} controls this; it
2105specifies the maximum indentation a line number can have. The default
2106value of the variable is 1. Fortran mode tries to prevent line number
2107digits passing column 4, reducing the indentation below the specified
2108maximum if necessary. If @code{fortran-line-number-indent} has the
2109value 5, line numbers are right-justified to end in column 4.
2110
2111@vindex fortran-electric-line-number
2112 Simply inserting a line number is enough to indent it according to
2113these rules. As each digit is inserted, the indentation is recomputed.
2114To turn off this feature, set the variable
2115@code{fortran-electric-line-number} to @code{nil}.
2116
2117
2118@node ForIndent Conv
2119@subsection Syntactic Conventions
2120
2121 Fortran mode assumes that you follow certain conventions that simplify
2122the task of understanding a Fortran program well enough to indent it
2123properly:
2124
2125@itemize @bullet
2126@item
2127Two nested @samp{do} loops never share a @samp{continue} statement.
2128
2129@item
2130Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
2131and others are written without embedded whitespace or line breaks.
2132
2133Fortran compilers generally ignore whitespace outside of string
2134constants, but Fortran mode does not recognize these keywords if they
2135are not contiguous. Constructs such as @samp{else if} or @samp{end do}
2136are acceptable, but the second word should be on the same line as the
2137first and not on a continuation line.
2138@end itemize
2139
2140@noindent
2141If you fail to follow these conventions, the indentation commands may
2142indent some lines unaesthetically. However, a correct Fortran program
2143retains its meaning when reindented even if the conventions are not
2144followed.
2145
2146@node ForIndent Vars
2147@subsection Variables for Fortran Indentation
2148
2149@vindex fortran-do-indent
2150@vindex fortran-if-indent
2151@vindex fortran-structure-indent
2152@vindex fortran-continuation-indent
2153@vindex fortran-check-all-num@dots{}
2154@vindex fortran-minimum-statement-indent@dots{}
2155 Several additional variables control how Fortran indentation works:
2156
2157@table @code
2158@item fortran-do-indent
2159Extra indentation within each level of @samp{do} statement (default 3).
2160
2161@item fortran-if-indent
2162Extra indentation within each level of @samp{if}, @samp{select case}, or
2163@samp{where} statements (default 3).
2164
2165@item fortran-structure-indent
2166Extra indentation within each level of @samp{structure}, @samp{union},
2167@samp{map}, or @samp{interface} statements (default 3).
2168
2169@item fortran-continuation-indent
2170Extra indentation for bodies of continuation lines (default 5).
2171
2172@item fortran-check-all-num-for-matching-do
2173In Fortran77, a numbered @samp{do} statement is ended by any statement
2174with a matching line number. It is common (but not compulsory) to use a
2175@samp{continue} statement for this purpose. If this variable has a
2176non-@code{nil} value, indenting any numbered statement must check for a
2177@samp{do} that ends there. If you always end @samp{do} statements with
2178a @samp{continue} line (or if you use the more modern @samp{enddo}),
2179then you can speed up indentation by setting this variable to
2180@code{nil}. The default is @code{nil}.
2181
2182@item fortran-blink-matching-if
2183If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
2184statement moves the cursor momentarily to the matching @samp{if} (or
2185@samp{do}) statement to show where it is. The default is @code{nil}.
2186
2187@item fortran-minimum-statement-indent-fixed
2188Minimum indentation for Fortran statements when using fixed format
2189continuation line style. Statement bodies are never indented less than
2190this much. The default is 6.
2191
2192@item fortran-minimum-statement-indent-tab
2193Minimum indentation for Fortran statements for tab format continuation line
2194style. Statement bodies are never indented less than this much. The
2195default is 8.
2196@end table
2197
2198The variables controlling the indentation of comments are described in
2199the following section.
2200
2201@node Fortran Comments
2202@section Fortran Comments
2203
2204 The usual Emacs comment commands assume that a comment can follow a
2205line of code. In Fortran77, the standard comment syntax requires an
2206entire line to be just a comment. Therefore, Fortran mode replaces the
2207standard Emacs comment commands and defines some new variables.
2208
2209@vindex fortran-comment-line-start
2210 Fortran mode can also handle the Fortran90 comment syntax where comments
2211start with @samp{!} and can follow other text. Because only some Fortran77
2212compilers accept this syntax, Fortran mode will not insert such comments
2213unless you have said in advance to do so. To do this, set the variable
2214@code{fortran-comment-line-start} to @samp{"!"}.
2215
2216@table @kbd
2217@item M-;
2218Align comment or insert new comment (@code{fortran-indent-comment}).
2219
2220@item C-x ;
2221Applies to nonstandard @samp{!} comments only.
2222
2223@item C-c ;
2224Turn all lines of the region into comments, or (with argument) turn them back
2225into real code (@code{fortran-comment-region}).
2226@end table
2227
2228@findex fortran-indent-comment
2229 @kbd{M-;} in Fortran mode is redefined as the command
2230@code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this
2231recognizes any kind of existing comment and aligns its text appropriately;
2232if there is no existing comment, a comment is inserted and aligned. But
2233inserting and aligning comments are not the same in Fortran mode as in
2234other modes.
2235
2236 When a new comment must be inserted, if the current line is blank, a
2237full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
2238comment is inserted if you have said you want to use them. Otherwise a
2239full-line comment is inserted on a new line before the current line.
2240
2241 Nonstandard @samp{!} comments are aligned like comments in other
2242languages, but full-line comments are different. In a standard full-line
2243comment, the comment delimiter itself must always appear in column zero.
2244What can be aligned is the text within the comment. You can choose from
2245three styles of alignment by setting the variable
2246@code{fortran-comment-indent-style} to one of these values:
2247
2248@vindex fortran-comment-indent-style
2249@vindex fortran-comment-line-extra-indent
2250@table @code
2251@item fixed
2252Align the text at a fixed column, which is the sum of
2253@code{fortran-comment-line-extra-indent} and the minimum statement
2254indentation. This is the default.
2255
2256The minimum statement indentation is
2257@code{fortran-minimum-statement-indent-fixed} for fixed format
2258continuation line style and @code{fortran-minimum-statement-indent-tab}
2259for tab format style.
2260
2261@item relative
2262Align the text as if it were a line of code, but with an additional
2263@code{fortran-comment-line-extra-indent} columns of indentation.
2264
2265@item nil
2266Don't move text in full-line comments automatically.
2267@end table
2268
2269@vindex fortran-comment-indent-char
2270 In addition, you can specify the character to be used to indent within
2271full-line comments by setting the variable
2272@code{fortran-comment-indent-char} to the single-character string you want
2273to use.
2274
2275@vindex fortran-directive-re
2276 Compiler directive lines, or preprocessor lines, have much the same
2277appearance as comment lines. It is important, though, that such lines
2278never be indented at all, no matter what the value of
2279@code{fortran-comment-indent-style}. The variable
2280@code{fortran-directive-re} is a regular expression that specifies which
2281lines are directives. Matching lines are never indented, and receive
2282distinctive font-locking.
2283
2284 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
2285you use @samp{!} comments, this command can be used with them. Otherwise
2286it is useless in Fortran mode.
2287
2288@kindex C-c ; @r{(Fortran mode)}
2289@findex fortran-comment-region
2290@vindex fortran-comment-region
2291 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2292lines of the region into comments by inserting the string @samp{C$$$} at
2293the front of each one. With a numeric argument, it turns the region
2294back into live code by deleting @samp{C$$$} from the front of each line
2295in it. The string used for these comments can be controlled by setting
2296the variable @code{fortran-comment-region}. Note that here we have an
2297example of a command and a variable with the same name; these two uses
2298of the name never conflict because in Lisp and in Emacs it is always
2299clear from the context which one is meant.
2300
2301@node Fortran Autofill
2302@section Auto Fill in Fortran Mode
2303
2304 Fortran mode has specialized support for Auto Fill mode, which is a
2305minor mode that automatically splits statements as you insert them
2306when they become too wide. Splitting a statement involves making
2307continuation lines using @code{fortran-continuation-string}
2308(@pxref{ForIndent Cont}). This splitting happens when you type
2309@key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran
2310indentation commands. You activate Auto Fill in Fortran mode in the
2311normal way. @xref{Auto Fill,,, emacs, the Emacs Manual}.
2312
2313@vindex fortran-break-before-delimiters
2314 Auto Fill breaks lines at spaces or delimiters when the lines get
2315longer than the desired width (the value of @code{fill-column}). The
2316delimiters (besides whitespace) that Auto Fill can break at are
2317@samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
2318and @samp{,}. The line break comes after the delimiter if the
2319variable @code{fortran-break-before-delimiters} is @code{nil}.
2320Otherwise (and by default), the break comes before the delimiter.
2321
2322 To enable Auto Fill in all Fortran buffers, add
2323@code{turn-on-auto-fill} to @code{fortran-mode-hook}. @xref{Hooks,,,
2324emacs, the Emacs Manual}.
2325
2326@node Fortran Columns
2327@section Checking Columns in Fortran
2328
2329@table @kbd
2330@item C-c C-r
2331Display a ``column ruler'' momentarily above the current line
2332(@code{fortran-column-ruler}).
2333@item C-c C-w
2334Split the current window horizontally temporarily so that it is 72
2335columns wide (@code{fortran-window-create-momentarily}). This may
2336help you avoid making lines longer than the 72-character limit that
2337some Fortran compilers impose.
2338@item C-u C-c C-w
2339Split the current window horizontally so that it is 72 columns wide
2340(@code{fortran-window-create}). You can then continue editing.
2341@item M-x fortran-strip-sequence-nos
2342Delete all text in column 72 and beyond.
2343@end table
2344
2345@kindex C-c C-r @r{(Fortran mode)}
2346@findex fortran-column-ruler
2347 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2348ruler momentarily above the current line. The comment ruler is two lines
2349of text that show you the locations of columns with special significance in
2350Fortran programs. Square brackets show the limits of the columns for line
2351numbers, and curly brackets show the limits of the columns for the
2352statement body. Column numbers appear above them.
2353
2354 Note that the column numbers count from zero, as always in GNU Emacs.
2355As a result, the numbers may be one less than those you are familiar
2356with; but the positions they indicate in the line are standard for
2357Fortran.
2358
2359@vindex fortran-column-ruler-fixed
2360@vindex fortran-column-ruler-tabs
2361 The text used to display the column ruler depends on the value of the
2362variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
2363@code{nil}, then the value of the variable
2364@code{fortran-column-ruler-fixed} is used as the column ruler.
2365Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
2366displayed. By changing these variables, you can change the column ruler
2367display.
2368
2369@kindex C-c C-w @r{(Fortran mode)}
2370@findex fortran-window-create-momentarily
2371 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2372splits the current window horizontally, making a window 72 columns
2373wide, so you can see any lines that are too long. Type a space to
2374restore the normal width.
2375
2376@kindex C-u C-c C-w @r{(Fortran mode)}
2377@findex fortran-window-create
2378 You can also split the window horizontally and continue editing with
2379the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
2380fortran-window-create}). By editing in this window you can
2381immediately see when you make a line too wide to be correct Fortran.
2382
2383@findex fortran-strip-sequence-nos
2384 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2385column 72 and beyond, on all lines in the current buffer. This is the
2386easiest way to get rid of old sequence numbers.
2387
2388@node Fortran Abbrev
2389@section Fortran Keyword Abbrevs
2390
2391 Fortran mode provides many built-in abbrevs for common keywords and
2392declarations. These are the same sort of abbrev that you can define
2393yourself. To use them, you must turn on Abbrev mode.
2394@xref{Abbrevs,,, emacs, the Emacs Manual}.
2395
2396 The built-in abbrevs are unusual in one way: they all start with a
2397semicolon. You cannot normally use semicolon in an abbrev, but Fortran
2398mode makes this possible by changing the syntax of semicolon to ``word
2399constituent.''
2400
2401 For example, one built-in Fortran abbrev is @samp{;c} for
2402@samp{continue}. If you insert @samp{;c} and then insert a punctuation
2403character such as a space or a newline, the @samp{;c} expands automatically
2404to @samp{continue}, provided Abbrev mode is enabled.@refill
2405
2406 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2407Fortran abbrevs and what they stand for.
1225 2408
1226@node Index 2409@node Index
1227@unnumbered Index 2410@unnumbered Index
diff --git a/man/emacs.texi b/man/emacs.texi
index fc51a6e14dd..2c81305083d 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -103,8 +103,6 @@ Text Mode
103Outline Mode 103Outline Mode
104@TeX{} Mode 104@TeX{} Mode
105Formatted Text 105Formatted Text
106Fortran Mode
107Fortran Indentation
108Shell Command History 106Shell Command History
109 107
110The ones for Dired and Rmail have had the items turned into :: items 108The ones for Dired and Rmail have had the items turned into :: items
@@ -182,8 +180,6 @@ Advanced Features
182* Maintaining:: Features for maintaining large programs. 180* Maintaining:: Features for maintaining large programs.
183* Abbrevs:: How to define text abbreviations to reduce 181* Abbrevs:: How to define text abbreviations to reduce
184 the number of characters you must type. 182 the number of characters you must type.
185* Picture:: Editing pictures made up of characters
186 using the quarter-plane screen model.
187* Sending Mail:: Sending mail in Emacs. 183* Sending Mail:: Sending mail in Emacs.
188* Rmail:: Reading mail in Emacs. 184* Rmail:: Reading mail in Emacs.
189* Dired:: You can ``edit'' a directory to manage files in it. 185* Dired:: You can ``edit'' a directory to manage files in it.
@@ -525,7 +521,6 @@ Editing Programs
525* Misc for Programs:: Other Emacs features useful for editing programs. 521* Misc for Programs:: Other Emacs features useful for editing programs.
526* C Modes:: Special commands of C, C++, Objective-C, 522* C Modes:: Special commands of C, C++, Objective-C,
527 Java, and Pike modes. 523 Java, and Pike modes.
528* Fortran:: Fortran mode and its special features.
529* Asm Mode:: Asm mode and its special features. 524* Asm Mode:: Asm mode and its special features.
530 525
531Top-Level Definitions, or Defuns 526Top-Level Definitions, or Defuns
@@ -572,15 +567,6 @@ C and Related Modes
572* Other C Commands:: Filling comments, viewing expansion of macros, 567* Other C Commands:: Filling comments, viewing expansion of macros,
573 and other neat features. 568 and other neat features.
574 569
575Fortran Mode
576
577* Fortran Motion:: Moving point by statements or subprograms.
578* Fortran Indent:: Indentation commands for Fortran.
579* Fortran Comments:: Inserting and aligning comments.
580* Fortran Autofill:: Auto fill minor mode for Fortran.
581* Fortran Columns:: Measuring columns for valid Fortran.
582* Fortran Abbrev:: Built-in abbrevs for Fortran keywords.
583
584Compiling and Testing Programs 570Compiling and Testing Programs
585 571
586* Compilation:: Compiling programs in languages other 572* Compilation:: Compiling programs in languages other
@@ -615,7 +601,6 @@ Maintaining Large Programs
615* Format of ChangeLog:: What the change log file looks like. 601* Format of ChangeLog:: What the change log file looks like.
616* Tags:: Go direct to any function in your program in one 602* Tags:: Go direct to any function in your program in one
617 command. Tags remembers which file it is in. 603 command. Tags remembers which file it is in.
618* Emerge:: A convenient way of merging two versions of a program.
619 604
620Tags Tables 605Tags Tables
621 606
@@ -627,19 +612,6 @@ Tags Tables
627* Tags Search:: Using a tags table for searching and replacing. 612* Tags Search:: Using a tags table for searching and replacing.
628* List Tags:: Listing and finding tags defined in a file. 613* List Tags:: Listing and finding tags defined in a file.
629 614
630Merging Files with Emerge
631
632* Overview of Emerge:: How to start Emerge. Basic concepts.
633* Submodes of Emerge:: Fast mode vs. Edit mode.
634 Skip Prefers mode and Auto Advance mode.
635* State of Difference:: You do the merge by specifying state A or B
636 for each difference.
637* Merge Commands:: Commands for selecting a difference,
638 changing states of differences, etc.
639* Exiting Emerge:: What to do when you've finished the merge.
640* Combining in Emerge:: How to keep both alternatives for a difference.
641* Fine Points of Emerge:: Misc.
642
643Abbrevs 615Abbrevs
644 616
645* Abbrev Concepts:: Fundamentals of defined abbrevs. 617* Abbrev Concepts:: Fundamentals of defined abbrevs.
@@ -650,14 +622,6 @@ Abbrevs
650* Dynamic Abbrevs:: Abbreviations for words already in the buffer. 622* Dynamic Abbrevs:: Abbreviations for words already in the buffer.
651* Dabbrev Customization:: What is a word, for dynamic abbrevs. Case handling. 623* Dabbrev Customization:: What is a word, for dynamic abbrevs. Case handling.
652 624
653Editing Pictures
654
655* Basic Picture:: Basic concepts and simple commands of Picture Mode.
656* Insert in Picture:: Controlling direction of cursor motion
657 after "self-inserting" characters.
658* Tabs in Picture:: Various features for tab stops and indentation.
659* Rectangles in Picture:: Clearing and superimposing rectangles.
660
661Sending Mail 625Sending Mail
662 626
663* Mail Format:: Format of the mail being composed. 627* Mail Format:: Format of the mail being composed.
@@ -1179,7 +1143,6 @@ shell commands.
1179@include building.texi 1143@include building.texi
1180@include maintaining.texi 1144@include maintaining.texi
1181@include abbrevs.texi 1145@include abbrevs.texi
1182@include picture.texi
1183@include sending.texi 1146@include sending.texi
1184@include rmail.texi 1147@include rmail.texi
1185@include dired.texi 1148@include dired.texi
diff --git a/man/files.texi b/man/files.texi
index 23846167b6e..fa65ef32068 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -1290,7 +1290,7 @@ terms of capabilities, it is the weakest of the six that VC supports.
1290VC compensates for certain features missing in SCCS (snapshots, for 1290VC compensates for certain features missing in SCCS (snapshots, for
1291example) by implementing them itself, but some other VC features, such 1291example) by implementing them itself, but some other VC features, such
1292as multiple branches, are not available with SCCS. Since SCCS is 1292as multiple branches, are not available with SCCS. Since SCCS is
1293non-free, not respecting its users freedom,d, you should not use it; 1293non-free, not respecting its users freedom, you should not use it;
1294use its free replacement CSSC instead. But you should use CSSC only 1294use its free replacement CSSC instead. But you should use CSSC only
1295if for some reason you cannot use RCS, or one of the higher-level 1295if for some reason you cannot use RCS, or one of the higher-level
1296systems such as CVS or GNU Arch. 1296systems such as CVS or GNU Arch.
@@ -1611,8 +1611,8 @@ Examine version @var{version} of the visited file, in a buffer of its
1611own. 1611own.
1612 1612
1613@item C-x v = 1613@item C-x v =
1614Compare the current buffer contents with the latest checked-in version 1614Compare the current buffer contents with the master version from which
1615of the file. 1615you started editing.
1616 1616
1617@item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET} 1617@item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
1618Compare the specified two versions of @var{file}. 1618Compare the specified two versions of @var{file}.
@@ -1635,10 +1635,11 @@ and create a branch from it. @xref{Branches}.)
1635 It is usually more convenient to compare two versions of the file, 1635 It is usually more convenient to compare two versions of the file,
1636with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =} 1636with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =}
1637compares the current buffer contents (saving them in the file if 1637compares the current buffer contents (saving them in the file if
1638necessary) with the last checked-in version of the file. @kbd{C-u C-x 1638necessary) with the master version from which you started editing the
1639v =}, with a numeric argument, reads a file name and two version 1639file (this is not necessarily the latest version of the file).
1640numbers, then compares those versions of the specified file. Both 1640@kbd{C-u C-x v =}, with a numeric argument, reads a file name and two
1641forms display the output in a special buffer in another window. 1641version numbers, then compares those versions of the specified file.
1642Both forms display the output in a special buffer in another window.
1642 1643
1643 You can specify a checked-in version by its number; an empty input 1644 You can specify a checked-in version by its number; an empty input
1644specifies the current contents of the work file (which may be different 1645specifies the current contents of the work file (which may be different
@@ -1669,7 +1670,7 @@ versions are not, in general, present as files on your disk.)
1669 1670
1670@findex vc-annotate 1671@findex vc-annotate
1671@kindex C-x v g 1672@kindex C-x v g
1672 For some backends, you can display the file @dfn{annotated} with 1673 For some back ends, you can display the file @dfn{annotated} with
1673per-line version information and using colors to enhance the visual 1674per-line version information and using colors to enhance the visual
1674appearance, with the command @kbd{M-x vc-annotate}. 1675appearance, with the command @kbd{M-x vc-annotate}.
1675It creates a new buffer (the ``annotate buffer'') displaying the 1676It creates a new buffer (the ``annotate buffer'') displaying the
@@ -1720,7 +1721,7 @@ line.
1720@item W 1721@item W
1721Annotate the workfile version--the one you are editing. If you used 1722Annotate the workfile version--the one you are editing. If you used
1722@kbd{P} and @kbd{N} to browse to other revisions, use this key to 1723@kbd{P} and @kbd{N} to browse to other revisions, use this key to
1723return to the latest version. 1724return to your current version.
1724@end table 1725@end table
1725 1726
1726@node Secondary VC Commands 1727@node Secondary VC Commands
@@ -1840,7 +1841,8 @@ current line was committed.
1840 1841
1841@table @kbd 1842@table @kbd
1842@item C-x v u 1843@item C-x v u
1843Revert the buffer and the file to the last checked-in version. 1844Revert the buffer and the file to the version from which you started
1845editing the file.
1844 1846
1845@item C-x v c 1847@item C-x v c
1846Remove the last-entered change from the master for the visited file. 1848Remove the last-entered change from the master for the visited file.
@@ -1850,11 +1852,11 @@ This undoes your last check-in.
1850@kindex C-x v u 1852@kindex C-x v u
1851@findex vc-revert-buffer 1853@findex vc-revert-buffer
1852 If you want to discard your current set of changes and revert to the 1854 If you want to discard your current set of changes and revert to the
1853last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}). 1855version from which you started editing the file, use @kbd{C-x v u}
1854This leaves the file unlocked; if locking is in use, you must first lock 1856(@code{vc-revert-buffer}). This leaves the file unlocked; if locking
1855the file again before you change it again. @kbd{C-x v u} requires 1857is in use, you must first lock the file again before you change it
1856confirmation, unless it sees that you haven't made any changes since the 1858again. @kbd{C-x v u} requires confirmation, unless it sees that you
1857last checked-in version. 1859haven't made any changes with respect to the master version.
1858 1860
1859 @kbd{C-x v u} is also the command to unlock a file if you lock it and 1861 @kbd{C-x v u} is also the command to unlock a file if you lock it and
1860then decide not to change it. 1862then decide not to change it.
@@ -1863,9 +1865,11 @@ then decide not to change it.
1863@findex vc-cancel-version 1865@findex vc-cancel-version
1864 To cancel a change that you already checked in, use @kbd{C-x v c} 1866 To cancel a change that you already checked in, use @kbd{C-x v c}
1865(@code{vc-cancel-version}). This command discards all record of the 1867(@code{vc-cancel-version}). This command discards all record of the
1866most recent checked-in version. @kbd{C-x v c} also offers to revert 1868most recent checked-in version, but only if your work file corresponds
1867your work file and buffer to the previous version (the one that precedes 1869to that version---you cannot use @kbd{C-x v c} to cancel a version
1868the version that is deleted). 1870that is not the latest on its branch. @kbd{C-x v c} also offers to
1871revert your work file and buffer to the previous version (the one that
1872precedes the version that is deleted).
1869 1873
1870 If you answer @kbd{no}, VC keeps your changes in the buffer, and locks 1874 If you answer @kbd{no}, VC keeps your changes in the buffer, and locks
1871the file. The no-revert option is useful when you have checked in a 1875the file. The no-revert option is useful when you have checked in a
@@ -1963,6 +1967,24 @@ The files @samp{file1} and @samp{file2} are under version control,
1963have also been checked in to the repository---you need to merge them 1967have also been checked in to the repository---you need to merge them
1964with the work file before you can check it in. 1968with the work file before you can check it in.
1965 1969
1970@vindex vc-stay-local
1971@vindex vc-cvs-stay-local
1972 In the above, if the repository were on a remote machine, VC would
1973only contact it when the variable @code{vc-stay-local} (or
1974@code{vc-cvs-stay-local}) is nil (@pxref{CVS Options}). This is
1975because access to the repository may be slow, or you may be working
1976offline and not have access to the repository at all. As a
1977consequence, VC would not be able to tell you that @samp{file3.c} is
1978in the ``merge'' state; you would learn that only when you try to
1979check-in your modified copy of the file, or use a command such as
1980@kbd{C-x v m}.
1981
1982 In practice, this is not a problem because CVS handles this case
1983consistently whenever it arises. In VC, you'll simply get prompted to
1984merge the remote changes into your work file first. The benefits of
1985less network communication usually outweigh the disadvantage of not
1986seeing remote changes immediately.
1987
1966@vindex vc-directory-exclusion-list 1988@vindex vc-directory-exclusion-list
1967 When VC Dired displays subdirectories (in the ``full'' display mode), 1989 When VC Dired displays subdirectories (in the ``full'' display mode),
1968it omits some that should never contain any files under version control. 1990it omits some that should never contain any files under version control.
@@ -2420,12 +2442,16 @@ or a snapshot against a named version.
2420support. They use RCS's native facilities for this, so 2442support. They use RCS's native facilities for this, so
2421snapshots made using RCS through VC are visible even when you bypass VC. 2443snapshots made using RCS through VC are visible even when you bypass VC.
2422 2444
2445 With CVS, Meta-CVS, and Subversion, VC also uses the native
2446mechanism provided by that back end to make snapshots and retrieve them
2447(@dfn{tags} for CVS and Meta-CVS, @dfn{copies} for Subversion).
2448
2423@c worded verbosely to avoid overfull hbox. 2449@c worded verbosely to avoid overfull hbox.
2424 For SCCS, VC implements snapshots itself. The files it uses contain 2450 For SCCS, VC implements snapshots itself. The files it uses contain
2425name/file/version-number triples. These snapshots are visible only 2451name/file/version-number triples. These snapshots are visible only
2426through VC. 2452through VC.
2427 2453
2428@c ??? What about CVS? 2454 There is no support for VC snapshots using GNU Arch yet.
2429 2455
2430 A snapshot is a set of checked-in versions. So make sure that all the 2456 A snapshot is a set of checked-in versions. So make sure that all the
2431files are checked in and not locked when you make a snapshot. 2457files are checked in and not locked when you make a snapshot.
@@ -2479,9 +2505,8 @@ in that directory, create new entries for versions checked in since the
2479most recent entry in the change log file. 2505most recent entry in the change log file.
2480(@code{vc-update-change-log}). 2506(@code{vc-update-change-log}).
2481 2507
2482This command works with RCS or CVS only, not with SCCS. 2508This command works with RCS or CVS only, not with any of the other
2483 2509back ends.
2484@c ??? What about other back ends?
2485 2510
2486@item C-u C-x v a 2511@item C-u C-x v a
2487As above, but only find entries for the current buffer's file. 2512As above, but only find entries for the current buffer's file.
@@ -2620,7 +2645,7 @@ mention the file, so that they use the new name; despite this, the
2620snapshot thus modified may not completely work (@pxref{Snapshot 2645snapshot thus modified may not completely work (@pxref{Snapshot
2621Caveats}). 2646Caveats}).
2622 2647
2623 Some backends do not provide an explicit rename operation to their 2648 Some back ends do not provide an explicit rename operation to their
2624repositories. After issuing @code{vc-rename-file}, use @kbd{C-x v v} 2649repositories. After issuing @code{vc-rename-file}, use @kbd{C-x v v}
2625on the original and renamed buffers and provide the necessary edit 2650on the original and renamed buffers and provide the necessary edit
2626log. 2651log.
@@ -2634,22 +2659,26 @@ someone else.
2634 Sometimes it is convenient to put version identification strings 2659 Sometimes it is convenient to put version identification strings
2635directly into working files. Certain special strings called 2660directly into working files. Certain special strings called
2636@dfn{version headers} are replaced in each successive version by the 2661@dfn{version headers} are replaced in each successive version by the
2637number of that version. 2662number of that version, the name of the user who created it, and other
2638 2663relevant information. All of the back ends that VC supports have such
2639@c ??? How does this relate to CVS? 2664a mechanism, except GNU Arch.
2640 2665
2641 If you are using RCS, and version headers are present in your working 2666 VC does not normally use the information contained in these headers.
2642files, Emacs can use them to determine the current version and the 2667The exception is RCS---with RCS, version headers are sometimes more
2643locking state of the files. This is more reliable than referring to the 2668reliable than the master file to determine which version of the file
2644master files, which is done when there are no version headers. Note 2669you are editing. Note that in a multi-branch environment, version
2645that in a multi-branch environment, version headers are necessary to 2670headers are necessary to make VC behave correctly (@pxref{Multi-User
2646make VC behave correctly (@pxref{Multi-User Branching}). 2671Branching}).
2647 2672
2648 Searching for version headers is controlled by the variable 2673 Searching for RCS version headers is controlled by the variable
2649@code{vc-consult-headers}. If it is non-@code{nil} (the default), 2674@code{vc-consult-headers}. If it is non-@code{nil} (the default),
2650Emacs searches for headers to determine the version number you are 2675Emacs searches for headers to determine the version number you are
2651editing. Setting it to @code{nil} disables this feature. 2676editing. Setting it to @code{nil} disables this feature.
2652 2677
2678 Note that although CVS uses the same kind of version headers as RCS
2679does, VC never searches for these headers if you are using CVS,
2680regardless of the above setting.
2681
2653@kindex C-x v h 2682@kindex C-x v h
2654@findex vc-insert-headers 2683@findex vc-insert-headers
2655 You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to 2684 You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
@@ -2872,23 +2901,25 @@ and CVS takes care to notify other developers of the fact that you
2872intend to change the file. See the CVS documentation for details on 2901intend to change the file. See the CVS documentation for details on
2873using the watch feature. 2902using the watch feature.
2874 2903
2904@vindex vc-stay-local
2875@vindex vc-cvs-stay-local 2905@vindex vc-cvs-stay-local
2876@cindex remote repositories (CVS) 2906@cindex remote repositories (CVS)
2877 When a file's repository is on a remote machine, VC tries to keep 2907 When a file's repository is on a remote machine, VC tries to keep
2878network interactions to a minimum. This is controlled by the variable 2908network interactions to a minimum. This is controlled by the variable
2879@code{vc-cvs-stay-local}. If it is @code{t} (the default), then VC uses 2909@code{vc-cvs-stay-local}. There is another variable,
2880only the entry in the local CVS subdirectory to determine the file's 2910@code{vc-stay-local}, which enables the feature also for other back
2881state (and possibly information returned by previous CVS commands). One 2911ends that support it, including CVS. In the following, we will talk
2882consequence of this is that when you have modified a file, and somebody 2912only about @code{vc-cvs-stay-local}, but everything applies to
2883else has already checked in other changes to the file, you are not 2913@code{vc-stay-local} as well.
2884notified of it until you actually try to commit. (But you can try to
2885pick up any recent changes from the repository first, using @kbd{C-x v m
2886@key{RET}}, @pxref{Merging}).
2887 2914
2888@vindex vc-cvs-global-switches 2915If @code{vc-cvs-stay-local} is @code{t} (the default), then VC uses
2889 The variable @code{vc-cvs-global-switches}, if non-@code{nil}, 2916only the entry in the local CVS subdirectory to determine the file's
2890should be a string specifying switches to pass to CVS for all CVS 2917state (and possibly information returned by previous CVS commands).
2891operations. 2918One consequence of this is that when you have modified a file, and
2919somebody else has already checked in other changes to the file, you
2920are not notified of it until you actually try to commit. (But you can
2921try to pick up any recent changes from the repository first, using
2922@kbd{C-x v m @key{RET}}, @pxref{Merging}).
2892 2923
2893 When @code{vc-cvs-stay-local} is @code{t}, VC also makes local 2924 When @code{vc-cvs-stay-local} is @code{t}, VC also makes local
2894version backups, so that simple diff and revert operations are 2925version backups, so that simple diff and revert operations are
@@ -2903,6 +2934,12 @@ repositories. It also does not make any version backups.
2903that is matched against the repository host name; VC then stays local 2934that is matched against the repository host name; VC then stays local
2904only for repositories from hosts that match the pattern. 2935only for repositories from hosts that match the pattern.
2905 2936
2937@vindex vc-cvs-global-switches
2938 You can specify additional command line options to pass to all CVS
2939operations in the variable @code{vc-cvs-global-switches}. These
2940switches are inserted immediately after the @code{cvs} command, before
2941the name of the operation to invoke.
2942
2906@node Directories 2943@node Directories
2907@section File Directories 2944@section File Directories
2908 2945
@@ -3037,8 +3074,8 @@ typically the result of a failed merge from a version control system
3037mode provides commands to resolve conflicts by selecting specific 3074mode provides commands to resolve conflicts by selecting specific
3038changes. 3075changes.
3039 3076
3040 See also @ref{Emerge}, and @ref{Top,,, ediff, The Ediff Manual}, for 3077 @inforef{Emerge,, emacs-xtra} for the Emerge facility, which
3041convenient facilities for merging two similar files. 3078provides a powerful interface for merging files.
3042 3079
3043@node Misc File Ops 3080@node Misc File Ops
3044@section Miscellaneous File Operations 3081@section Miscellaneous File Operations
diff --git a/man/gnus.texi b/man/gnus.texi
index c64305a3a66..7aa367bb310 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -15293,7 +15293,7 @@ When the marks file is used (which it is by default), @code{nnfolder}
15293servers have the property that you may backup them using @code{tar} or 15293servers have the property that you may backup them using @code{tar} or
15294similar, and later be able to restore them into Gnus (by adding the 15294similar, and later be able to restore them into Gnus (by adding the
15295proper @code{nnfolder} server) and have all your marks be preserved. 15295proper @code{nnfolder} server) and have all your marks be preserved.
15296Marks for a group is usually stored in a file named as the mbox file 15296Marks for a group are usually stored in a file named as the mbox file
15297with @code{.mrk} concatenated to it (but see 15297with @code{.mrk} concatenated to it (but see
15298@code{nnfolder-marks-file-suffix}) within the @code{nnfolder} 15298@code{nnfolder-marks-file-suffix}) within the @code{nnfolder}
15299directory. Individual @code{nnfolder} groups are also possible to 15299directory. Individual @code{nnfolder} groups are also possible to
diff --git a/man/help.texi b/man/help.texi
index 634dca792f0..84a3656ad57 100644
--- a/man/help.texi
+++ b/man/help.texi
@@ -482,14 +482,16 @@ Move point back to the previous cross reference.
482@item Mouse-1 482@item Mouse-1
483@itemx Mouse-2 483@itemx Mouse-2
484Follow a cross reference that you click on. 484Follow a cross reference that you click on.
485@item C-c C-c
486Show all documentation about the symbol at point.
485@end table 487@end table
486 488
487 When a function name (@pxref{M-x,, Running Commands by Name}) or 489 When a function name (@pxref{M-x,, Running Commands by Name}),
488variable name (@pxref{Variables}) appears in the documentation, it 490variable name (@pxref{Variables}), or face name (@pxref{Faces}) appears
489normally appears inside paired single-quotes. You can click on the 491in the documentation, it normally appears inside paired single-quotes.
490name with @kbd{Mouse-1} or @kbd{Mouse-2}, or move point there and type 492You can click on the name with @kbd{Mouse-1} or @kbd{Mouse-2}, or move
491@key{RET}, to view the documentation of that command or variable. Use 493point there and type @key{RET}, to view the documentation of that
492@kbd{C-c C-b} to retrace your steps. 494command, variable or face. Use @kbd{C-c C-b} to retrace your steps.
493 495
494@cindex URL, viewing in help 496@cindex URL, viewing in help
495@cindex help, viewing web pages 497@cindex help, viewing web pages
@@ -510,6 +512,12 @@ the help text. @key{TAB} (@code{help-next-ref}) moves point down to the
510next cross reference. Use @kbd{S-@key{TAB}} to move point up to the 512next cross reference. Use @kbd{S-@key{TAB}} to move point up to the
511previous cross reference (@code{help-previous-ref}). 513previous cross reference (@code{help-previous-ref}).
512 514
515To view all documentation about a symbol, whether quoted or not, move
516point over the symbol and type @kbd{C-c C-c}
517(@code{help-follow-symbol}). This shows all available documentation
518about the symbol as a variable, function or face. Just like for
519quoted cross references, you can use @kbd{C-c C-b} to retrace your steps.
520
513@node Misc Help 521@node Misc Help
514@section Other Help Commands 522@section Other Help Commands
515 523
diff --git a/man/maintaining.texi b/man/maintaining.texi
index 9836aae4e83..f0b5f1c31af 100644
--- a/man/maintaining.texi
+++ b/man/maintaining.texi
@@ -14,7 +14,6 @@ also particularly useful for this purpose.
14* Format of ChangeLog:: What the change log file looks like. 14* Format of ChangeLog:: What the change log file looks like.
15* Tags:: Go direct to any function in your program in one 15* Tags:: Go direct to any function in your program in one
16 command. Tags remembers which file it is in. 16 command. Tags remembers which file it is in.
17* Emerge:: A convenient way of merging two versions of a program.
18@end menu 17@end menu
19 18
20@node Change Log 19@node Change Log
@@ -846,393 +845,6 @@ details.
846 You can also use the collection of tag names to complete a symbol 845 You can also use the collection of tag names to complete a symbol
847name in the buffer. @xref{Symbol Completion}. 846name in the buffer. @xref{Symbol Completion}.
848 847
849@node Emerge
850@section Merging Files with Emerge
851@cindex Emerge
852@cindex merging files
853
854 It's not unusual for programmers to get their signals crossed and
855modify the same program in two different directions. To recover from
856this confusion, you need to merge the two versions. Emerge makes this
857easier. See also @ref{Comparing Files}, for other ways to compare
858files, and @ref{Top, Ediff,, ediff, The Ediff Manual}.
859
860@menu
861* Overview of Emerge:: How to start Emerge. Basic concepts.
862* Submodes of Emerge:: Fast mode vs. Edit mode.
863 Skip Prefers mode and Auto Advance mode.
864* State of Difference:: You do the merge by specifying state A or B
865 for each difference.
866* Merge Commands:: Commands for selecting a difference,
867 changing states of differences, etc.
868* Exiting Emerge:: What to do when you've finished the merge.
869* Combining in Emerge:: How to keep both alternatives for a difference.
870* Fine Points of Emerge:: Misc.
871@end menu
872
873@node Overview of Emerge
874@subsection Overview of Emerge
875
876 To start Emerge, run one of these four commands:
877
878@table @kbd
879@item M-x emerge-files
880@findex emerge-files
881Merge two specified files.
882
883@item M-x emerge-files-with-ancestor
884@findex emerge-files-with-ancestor
885Merge two specified files, with reference to a common ancestor.
886
887@item M-x emerge-buffers
888@findex emerge-buffers
889Merge two buffers.
890
891@item M-x emerge-buffers-with-ancestor
892@findex emerge-buffers-with-ancestor
893Merge two buffers with reference to a common ancestor in a third
894buffer.
895@end table
896
897@cindex merge buffer (Emerge)
898@cindex A and B buffers (Emerge)
899 The Emerge commands compare two files or buffers, and display the
900comparison in three buffers: one for each input text (the @dfn{A buffer}
901and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging
902takes place. The merge buffer shows the full merged text, not just the
903differences. Wherever the two input texts differ, you can choose which
904one of them to include in the merge buffer.
905
906 The Emerge commands that take input from existing buffers use only the
907accessible portions of those buffers, if they are narrowed
908(@pxref{Narrowing}).
909
910 If a common ancestor version is available, from which the two texts to
911be merged were both derived, Emerge can use it to guess which
912alternative is right. Wherever one current version agrees with the
913ancestor, Emerge presumes that the other current version is a deliberate
914change which should be kept in the merged version. Use the
915@samp{with-ancestor} commands if you want to specify a common ancestor
916text. These commands read three file or buffer names---variant A,
917variant B, and the common ancestor.
918
919 After the comparison is done and the buffers are prepared, the
920interactive merging starts. You control the merging by typing special
921@dfn{merge commands} in the merge buffer (@pxref{Merge Commands}).
922For each run of differences between the input texts, you can choose
923which one of them to keep, or edit them both together.
924
925 The merge buffer uses a special major mode, Emerge mode, with commands
926for making these choices. But you can also edit the buffer with
927ordinary Emacs commands.
928
929 At any given time, the attention of Emerge is focused on one
930particular difference, called the @dfn{selected} difference. This
931difference is marked off in the three buffers like this:
932
933@example
934vvvvvvvvvvvvvvvvvvvv
935@var{text that differs}
936^^^^^^^^^^^^^^^^^^^^
937@end example
938
939@noindent
940Emerge numbers all the differences sequentially and the mode
941line always shows the number of the selected difference.
942
943 Normally, the merge buffer starts out with the A version of the text.
944But when the A version of a difference agrees with the common ancestor,
945then the B version is initially preferred for that difference.
946
947 Emerge leaves the merged text in the merge buffer when you exit. At
948that point, you can save it in a file with @kbd{C-x C-w}. If you give a
949numeric argument to @code{emerge-files} or
950@code{emerge-files-with-ancestor}, it reads the name of the output file
951using the minibuffer. (This is the last file name those commands read.)
952Then exiting from Emerge saves the merged text in the output file.
953
954 Normally, Emerge commands save the output buffer in its file when you
955exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not
956save the output buffer, but you can save it yourself if you wish.
957
958@node Submodes of Emerge
959@subsection Submodes of Emerge
960
961 You can choose between two modes for giving merge commands: Fast mode
962and Edit mode. In Fast mode, basic merge commands are single
963characters, but ordinary Emacs commands are disabled. This is
964convenient if you use only merge commands. In Edit mode, all merge
965commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs
966commands are also available. This allows editing the merge buffer, but
967slows down Emerge operations.
968
969 Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to
970Fast mode. The mode line indicates Edit and Fast modes with @samp{E}
971and @samp{F}.
972
973 Emerge has two additional submodes that affect how particular merge
974commands work: Auto Advance mode and Skip Prefers mode.
975
976 If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands
977advance to the next difference. This lets you go through the merge
978faster as long as you simply choose one of the alternatives from the
979input. The mode line indicates Auto Advance mode with @samp{A}.
980
981 If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
982skip over differences in states prefer-A and prefer-B (@pxref{State of
983Difference}). Thus you see only differences for which neither version
984is presumed ``correct.'' The mode line indicates Skip Prefers mode with
985@samp{S}.
986
987@findex emerge-auto-advance-mode
988@findex emerge-skip-prefers-mode
989 Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
990clear Auto Advance mode. Use @kbd{s s}
991(@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
992These commands turn on the mode with a positive argument, turns it off
993with a negative or zero argument, and toggle the mode with no argument.
994
995@node State of Difference
996@subsection State of a Difference
997
998 In the merge buffer, a difference is marked with lines of @samp{v} and
999@samp{^} characters. Each difference has one of these seven states:
1000
1001@table @asis
1002@item A
1003The difference is showing the A version. The @kbd{a} command always
1004produces this state; the mode line indicates it with @samp{A}.
1005
1006@item B
1007The difference is showing the B version. The @kbd{b} command always
1008produces this state; the mode line indicates it with @samp{B}.
1009
1010@item default-A
1011@itemx default-B
1012The difference is showing the A or the B state by default, because you
1013haven't made a choice. All differences start in the default-A state
1014(and thus the merge buffer is a copy of the A buffer), except those for
1015which one alternative is ``preferred'' (see below).
1016
1017When you select a difference, its state changes from default-A or
1018default-B to plain A or B. Thus, the selected difference never has
1019state default-A or default-B, and these states are never displayed in
1020the mode line.
1021
1022The command @kbd{d a} chooses default-A as the default state, and @kbd{d
1023b} chooses default-B. This chosen default applies to all differences
1024which you haven't ever selected and for which no alternative is preferred.
1025If you are moving through the merge sequentially, the differences you
1026haven't selected are those following the selected one. Thus, while
1027moving sequentially, you can effectively make the A version the default
1028for some sections of the merge buffer and the B version the default for
1029others by using @kbd{d a} and @kbd{d b} between sections.
1030
1031@item prefer-A
1032@itemx prefer-B
1033The difference is showing the A or B state because it is
1034@dfn{preferred}. This means that you haven't made an explicit choice,
1035but one alternative seems likely to be right because the other
1036alternative agrees with the common ancestor. Thus, where the A buffer
1037agrees with the common ancestor, the B version is preferred, because
1038chances are it is the one that was actually changed.
1039
1040These two states are displayed in the mode line as @samp{A*} and @samp{B*}.
1041
1042@item combined
1043The difference is showing a combination of the A and B states, as a
1044result of the @kbd{x c} or @kbd{x C} commands.
1045
1046Once a difference is in this state, the @kbd{a} and @kbd{b} commands
1047don't do anything to it unless you give them a numeric argument.
1048
1049The mode line displays this state as @samp{comb}.
1050@end table
1051
1052@node Merge Commands
1053@subsection Merge Commands
1054
1055 Here are the Merge commands for Fast mode; in Edit mode, precede them
1056with @kbd{C-c C-c}:
1057
1058@table @kbd
1059@item p
1060Select the previous difference.
1061
1062@item n
1063Select the next difference.
1064
1065@item a
1066Choose the A version of this difference.
1067
1068@item b
1069Choose the B version of this difference.
1070
1071@item C-u @var{n} j
1072Select difference number @var{n}.
1073
1074@item .
1075Select the difference containing point. You can use this command in the
1076merge buffer or in the A or B buffer.
1077
1078@item q
1079Quit---finish the merge.
1080
1081@item C-]
1082Abort---exit merging and do not save the output.
1083
1084@item f
1085Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.)
1086
1087@item e
1088Go into Edit mode.
1089
1090@item l
1091Recenter (like @kbd{C-l}) all three windows.
1092
1093@item -
1094Specify part of a prefix numeric argument.
1095
1096@item @var{digit}
1097Also specify part of a prefix numeric argument.
1098
1099@item d a
1100Choose the A version as the default from here down in
1101the merge buffer.
1102
1103@item d b
1104Choose the B version as the default from here down in
1105the merge buffer.
1106
1107@item c a
1108Copy the A version of this difference into the kill ring.
1109
1110@item c b
1111Copy the B version of this difference into the kill ring.
1112
1113@item i a
1114Insert the A version of this difference at point.
1115
1116@item i b
1117Insert the B version of this difference at point.
1118
1119@item m
1120Put point and mark around the difference.
1121
1122@item ^
1123Scroll all three windows down (like @kbd{M-v}).
1124
1125@item v
1126Scroll all three windows up (like @kbd{C-v}).
1127
1128@item <
1129Scroll all three windows left (like @kbd{C-x <}).
1130
1131@item >
1132Scroll all three windows right (like @kbd{C-x >}).
1133
1134@item |
1135Reset horizontal scroll on all three windows.
1136
1137@item x 1
1138Shrink the merge window to one line. (Use @kbd{C-u l} to restore it
1139to full size.)
1140
1141@item x c
1142Combine the two versions of this difference (@pxref{Combining in
1143Emerge}).
1144
1145@item x f
1146Show the names of the files/buffers Emerge is operating on, in a Help
1147window. (Use @kbd{C-u l} to restore windows.)
1148
1149@item x j
1150Join this difference with the following one.
1151(@kbd{C-u x j} joins this difference with the previous one.)
1152
1153@item x s
1154Split this difference into two differences. Before you use this
1155command, position point in each of the three buffers at the place where
1156you want to split the difference.
1157
1158@item x t
1159Trim identical lines off the top and bottom of the difference.
1160Such lines occur when the A and B versions are
1161identical but differ from the ancestor version.
1162@end table
1163
1164@node Exiting Emerge
1165@subsection Exiting Emerge
1166
1167 The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
1168the results into the output file if you specified one. It restores the
1169A and B buffers to their proper contents, or kills them if they were
1170created by Emerge and you haven't changed them. It also disables the
1171Emerge commands in the merge buffer, since executing them later could
1172damage the contents of the various buffers.
1173
1174 @kbd{C-]} aborts the merge. This means exiting without writing the
1175output file. If you didn't specify an output file, then there is no
1176real difference between aborting and finishing the merge.
1177
1178 If the Emerge command was called from another Lisp program, then its
1179return value is @code{t} for successful completion, or @code{nil} if you
1180abort.
1181
1182@node Combining in Emerge
1183@subsection Combining the Two Versions
1184
1185 Sometimes you want to keep @emph{both} alternatives for a particular
1186difference. To do this, use @kbd{x c}, which edits the merge buffer
1187like this:
1188
1189@example
1190@group
1191#ifdef NEW
1192@var{version from A buffer}
1193#else /* not NEW */
1194@var{version from B buffer}
1195#endif /* not NEW */
1196@end group
1197@end example
1198
1199@noindent
1200@vindex emerge-combine-versions-template
1201While this example shows C preprocessor conditionals delimiting the two
1202alternative versions, you can specify the strings to use by setting
1203the variable @code{emerge-combine-versions-template} to a string of your
1204choice. In the string, @samp{%a} says where to put version A, and
1205@samp{%b} says where to put version B. The default setting, which
1206produces the results shown above, looks like this:
1207
1208@example
1209@group
1210"#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
1211@end group
1212@end example
1213
1214@node Fine Points of Emerge
1215@subsection Fine Points of Emerge
1216
1217 During the merge, you mustn't try to edit the A and B buffers yourself.
1218Emerge modifies them temporarily, but ultimately puts them back the way
1219they were.
1220
1221 You can have any number of merges going at once---just don't use any one
1222buffer as input to more than one merge at once, since the temporary
1223changes made in these buffers would get in each other's way.
1224
1225 Starting Emerge can take a long time because it needs to compare the
1226files fully. Emacs can't do anything else until @code{diff} finishes.
1227Perhaps in the future someone will change Emerge to do the comparison in
1228the background when the input files are large---then you could keep on
1229doing other things with Emacs until Emerge is ready to accept
1230commands.
1231
1232@vindex emerge-startup-hook
1233 After setting up the merge, Emerge runs the hook
1234@code{emerge-startup-hook} (@pxref{Hooks}).
1235
1236@ignore 848@ignore
1237 arch-tag: b9d83dfb-82ea-4ff6-bab5-05a3617091fb 849 arch-tag: b9d83dfb-82ea-4ff6-bab5-05a3617091fb
1238@end ignore 850@end ignore
diff --git a/man/makefile.w32-in b/man/makefile.w32-in
index 34bb5fe6435..93f79f49689 100644
--- a/man/makefile.w32-in
+++ b/man/makefile.w32-in
@@ -90,7 +90,6 @@ EMACSSOURCES= \
90 $(srcdir)/building.texi \ 90 $(srcdir)/building.texi \
91 $(srcdir)/maintaining.texi \ 91 $(srcdir)/maintaining.texi \
92 $(srcdir)/abbrevs.texi \ 92 $(srcdir)/abbrevs.texi \
93 $(srcdir)/picture.texi \
94 $(srcdir)/sending.texi \ 93 $(srcdir)/sending.texi \
95 $(srcdir)/rmail.texi \ 94 $(srcdir)/rmail.texi \
96 $(srcdir)/dired.texi \ 95 $(srcdir)/dired.texi \
diff --git a/man/mh-e.texi b/man/mh-e.texi
index be1d61d930c..180a093ceb8 100644
--- a/man/mh-e.texi
+++ b/man/mh-e.texi
@@ -11,8 +11,8 @@
11@set VERSION 7.93 11@set VERSION 7.93
12@c Edition of the manual. It is either empty for the first edition or 12@c Edition of the manual. It is either empty for the first edition or
13@c has the form ", nth Edition" (without the quotes). 13@c has the form ", nth Edition" (without the quotes).
14@set EDITION , 3rd Edition 14@set EDITION , 5th Edition
15@set UPDATED 2006-03-14 15@set UPDATED 2006-03-19
16@set UPDATE-MONTH March, 2006 16@set UPDATE-MONTH March, 2006
17 17
18@c Other variables. 18@c Other variables.
@@ -22,7 +22,7 @@
22@c Copyright 22@c Copyright
23@copying 23@copying
24This is version @value{VERSION}@value{EDITION} of @cite{The MH-E 24This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
25Manual}, last updated @value{UPDATED} 25Manual}, last updated @value{UPDATED}.
26 26
27Copyright @copyright{} 1995, 27Copyright @copyright{} 1995,
28 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc. 28 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
@@ -664,30 +664,29 @@ get the big picture, and then you can read the manual as you wish.
664@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E 664@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E
665@section Sending Mail 665@section Sending Mail
666 666
667@cindex MH-Letter mode
668@cindex mode
669@cindex modes, MH-Letter
667@cindex sending mail 670@cindex sending mail
668@findex mh-smail 671@findex mh-smail
669@kindex M-x mh-smail 672@kindex M-x mh-smail
670 673
671Let's start our tour by sending ourselves a message which we can later 674Let's start our tour by sending ourselves a message which we can later
672read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program 675read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program
673to send messages. You will be prompted in the minibuffer by 676to send messages. Your message appears in an Emacs buffer whose
674@samp{To:}. Enter your login name. The next prompt is @samp{Cc:}. Hit 677mode@footnote{A @dfn{mode} changes Emacs to make it easier to edit a
675@key{RET} to indicate that no carbon copies are to be sent. At the 678particular type of text.} is MH-Letter.
676@samp{Subject:} prompt, enter @kbd{Test} or anything else that comes
677to mind.
678 679
679@cindex MH-Letter mode 680Enter your login name in the @samp{To:} header field. Press the
680@cindex modes, MH-Letter 681@key{TAB} twice to move the cursor past the @samp{Cc:} field, since no
681@cindex mode 682carbon copies are to be sent, and on to the @samp{Subject:} field.
683Enter @kbd{Test} or anything else that comes to mind.
682 684
683Once you've specified the recipients and subject, your message appears 685Press @key{TAB} again to move the cursor to the body of the message.
684in an Emacs buffer whose mode@footnote{A @dfn{mode} changes Emacs to 686Enter some text, using normal Emacs commands. You should now have
685make it easier to edit a particular type of text.} is MH-Letter. Enter 687something like this@footnote{If you're running Emacs under the X
686some text in the body of the message, using normal Emacs commands. You 688Window System, then you would also see a menu bar and a tool bar. I've
687should now have something like this@footnote{If you're running Emacs 689left out the menu bar and tool bar in all of the example screens.}:
688under the X Window System, then you would also see a menu bar. Under
689Emacs 21, you would also see a tool bar. I've left out the menu bar and
690tool bar in all of the example screens.}:
691 690
692@cartouche 691@cartouche
693@smallexample 692@smallexample
@@ -697,16 +696,17 @@ tool bar in all of the example screens.}:
697 696
698 697
699 698
700--:-- *scratch* (Lisp Interaction)--L1--All------------------------- 699--:-- *scratch* All L1 (Lisp Interaction)-------------------------
701To: wohler 700To: wohler
702cc: 701cc:
703Subject: Test 702Subject: Test
703X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
704-------- 704--------
705This is a test message to get the wheels churning...# 705This is a test message to get the wheels churning...#
706 706
707 707
708--:** @{draft@} (MH-Letter)--L5--All----------------------------------- 708--:** @{draft@} All L5 (MH-Letter)----------------------------------
709 709Type C-c C-c to send message, C-C ? for help
710@end smallexample 710@end smallexample
711@end cartouche 711@end cartouche
712@i{MH-E message composition window} 712@i{MH-E message composition window}
@@ -780,19 +780,18 @@ You should see the scan line for your message, and perhaps others. Use
780 3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1 780 3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1
781# 4+t08/24 To:wohler Test<<This is a test message to get the wheels 781# 4+t08/24 To:wohler Test<<This is a test message to get the wheels
782 782
783-:%% @{+inbox@} 4 msgs (1-4) (MH-Folder Show)--L4--Bot-------------- 783-:%% @{+inbox/select@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------
784To: wohler 784To: wohler
785Subject: Test 785Subject: Test
786Date: Wed, 24 Aug 1994 13:01:13 -0700 786X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
787Date: Fri, 17 Mar 2006 10:49:11 -0800
787From: Bill Wohler <wohler@@stop.mail-abuse.org> 788From: Bill Wohler <wohler@@stop.mail-abuse.org>
788 789
789This is a test message to get the wheels churning... 790This is a test message to get the wheels churning...
790 791
791 792
792 793
793 794--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
794
795--:-- @{show-+inbox@} 4 (MH-Show)--L1--All---------------------------
796 795
797@end smallexample 796@end smallexample
798@end cartouche 797@end cartouche
@@ -816,31 +815,37 @@ ourselves. Ensure that the cursor is still on the same line as your
816test message and type @kbd{r}. You are prompted in the minibuffer with 815test message and type @kbd{r}. You are prompted in the minibuffer with
817@samp{Reply to whom:}. Here MH-E is asking whether you'd like to reply 816@samp{Reply to whom:}. Here MH-E is asking whether you'd like to reply
818to the original sender only, to the sender and primary recipients, or 817to the original sender only, to the sender and primary recipients, or
819to the sender and all recipients. If you simply hit @key{RET}, you'll 818to the sender and all recipients. You can press @key{TAB} to see these
820reply only to the sender. Hit @key{RET} now. 819choices. If you simply press @key{RET}, you'll reply only to the
820sender. Press @key{RET} now.
821 821
822You'll find yourself in an Emacs buffer similar to that when you were 822You'll find yourself in an Emacs buffer similar to that when you were
823sending the original message, like this: 823sending the original message, like this:
824 824
825@cartouche 825@cartouche
826@smallexample 826@smallexample
827To: wohler 827To:
828Subject: Re: Test 828cc:
829In-reply-to: Bill Wohler's message of Wed, 24 Aug 1994 13:01:13 -0700 829Subject: Re: Test
830 <199408242001.NAA00505@@stop.mail-abuse.org> 830In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
831References: <31054.1142621351@@stop.mail-abuse.org>
832Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
833 message dated "Fri, 17 Mar 2006 10:49:11 -0800."
834X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
831-------- 835--------
832# 836#
833 837
834--:-- @{draft@} (MH-Letter)--L11--Bot--------------------------------- 838--:-- @{draft@} All L10 (MH-Letter)----------------------------------
835To: wohler 839To: wohler
836Subject: Test 840Subject: Test
837Date: Wed, 24 Aug 1994 13:01:13 -0700 841X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
842Date: Fri, 17 Mar 2006 10:49:11 -0800
838From: Bill Wohler <wohler@@stop.mail-abuse.org> 843From: Bill Wohler <wohler@@stop.mail-abuse.org>
839 844
840This is a test message to get the wheels churning... 845This is a test message to get the wheels churning...
841 846
842--:-- @{show-+inbox@} 4 (MH-Show)--L1--All---------------------------- 847--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
843Composing a reply...done 848Type C-c C-c to send message, C-c ? for help
844@end smallexample 849@end smallexample
845@end cartouche 850@end cartouche
846@i{Composition window during reply} 851@i{Composition window during reply}
@@ -1418,9 +1423,9 @@ mode line as well, add the following to @file{~/.emacs}:
1418 1423
1419@findex display-time 1424@findex display-time
1420 1425
1421@lisp 1426@smalllisp
1422(display-time) 1427(display-time)
1423@end lisp 1428@end smalllisp
1424 1429
1425@cindex @command{inc} 1430@cindex @command{inc}
1426@cindex incorporating 1431@cindex incorporating
@@ -2297,9 +2302,9 @@ other graphical widgets. @xref{Viewing}.
2297 2302
2298Attachments in MH-E are indicated by @dfn{buttons} like this: 2303Attachments in MH-E are indicated by @dfn{buttons} like this:
2299 2304
2300@example 2305@smallexample
2301[1. image/jpeg; foo.jpg]... 2306[1. image/jpeg; foo.jpg]...
2302@end example 2307@end smallexample
2303 2308
2304@findex mh-next-button 2309@findex mh-next-button
2305@findex mh-press-button 2310@findex mh-press-button
@@ -2488,9 +2493,9 @@ expect if the entire message is HTML, or there is an inline HTML body
2488part. However, if there is an HTML body part that is an attachment, 2493part. However, if there is an HTML body part that is an attachment,
2489then you'll see a button like this: 2494then you'll see a button like this:
2490 2495
2491@example 2496@smallexample
2492[1. text/html; foo.html]... 2497[1. text/html; foo.html]...
2493@end example 2498@end smallexample
2494 2499
2495To see how to read the contents of this body part, see @ref{Viewing 2500To see how to read the contents of this body part, see @ref{Viewing
2496Attachments}. 2501Attachments}.
@@ -3492,8 +3497,7 @@ ahead and delete or refile the messages, use @kbd{x}
3492(@code{mh-execute-commands}). Many MH-E commands that may affect the 3497(@code{mh-execute-commands}). Many MH-E commands that may affect the
3493numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if 3498numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if
3494you want to process refiles or deletes first and then either run 3499you want to process refiles or deletes first and then either run
3495@kbd{x} for you or undo the pending refiles and deletes, which are 3500@kbd{x} for you or undo the pending refiles and deletes.
3496lost.
3497 3501
3498@kindex x 3502@kindex x
3499@vindex mh-after-commands-processed-hook 3503@vindex mh-after-commands-processed-hook
@@ -3547,12 +3551,13 @@ folder for later examination.
3547@kindex t 3551@kindex t
3548@vindex mh-recenter-summary-flag 3552@vindex mh-recenter-summary-flag
3549 3553
3550When you use @kbd{t} to toggle between show mode and scan mode, the 3554When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder
3551MH-Show buffer is hidden and the MH-Folder buffer is left alone. 3555mode, the MH-Show buffer is hidden and the MH-Folder buffer is left
3552Setting @code{mh-recenter-summary-flag} to a non-@code{nil} value 3556alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil}
3553causes the toggle to display as many scan lines as possible, with the 3557value causes the toggle to display as many scan lines as possible,
3554cursor at the middle. The effect of @code{mh-recenter-summary-flag} is 3558with the cursor at the middle. The effect of
3555rather useful, but it can be annoying on a slow network connection. 3559@code{mh-recenter-summary-flag} is rather useful, but it can be
3560annoying on a slow network connection.
3556 3561
3557@findex mh-visit-folder 3562@findex mh-visit-folder
3558@kindex F v 3563@kindex F v
@@ -3578,8 +3583,6 @@ If you forget where you've refiled your messages, you can find them
3578using @kbd{F s} (@code{mh-search}). @xref{Searching}. 3583using @kbd{F s} (@code{mh-search}). @xref{Searching}.
3579 3584
3580@cindex @command{procmail} 3585@cindex @command{procmail}
3581@cindex @command{rcvstore}
3582@cindex MH commands, @command{rcvstore}
3583@cindex @samp{unseen} sequence 3586@cindex @samp{unseen} sequence
3584@cindex sequence, @samp{unseen} 3587@cindex sequence, @samp{unseen}
3585@cindex Unix commands, @command{procmail} 3588@cindex Unix commands, @command{procmail}
@@ -3588,14 +3591,14 @@ using @kbd{F s} (@code{mh-search}). @xref{Searching}.
3588@kindex F n 3591@kindex F n
3589@vindex mh-new-messages-folders 3592@vindex mh-new-messages-folders
3590 3593
3591If you use a program such as @command{procmail} to use 3594If you use a program such as @command{procmail} to file your incoming
3592@command{rcvstore} to file your incoming mail automatically, you can 3595mail automatically, you can display new, unseen, messages using the
3593display new, unseen, messages using the command @kbd{F n} 3596command @kbd{F n} (@code{mh-index-new-messages}). All messages in the
3594(@code{mh-index-new-messages}). All messages in the @samp{unseen} 3597@samp{unseen} sequence from the folders in
3595sequence from the folders in @code{mh-new-messages-folders} are 3598@code{mh-new-messages-folders} are listed. However, this list of
3596listed. However, this list of folders can be overridden with a prefix 3599folders can be overridden with a prefix argument: with a prefix
3597argument: with a prefix argument, enter a space-separated list of 3600argument, enter a space-separated list of folders, or nothing to
3598folders, or nothing to search all folders. 3601search all folders.
3599 3602
3600@cindex @samp{tick} sequence 3603@cindex @samp{tick} sequence
3601@cindex sequence, @samp{tick} 3604@cindex sequence, @samp{tick}
@@ -3682,7 +3685,7 @@ searching.
3682 3685
3683@quotation 3686@quotation
3684Use this hook with care. If there is a bug in your hook which returns 3687Use this hook with care. If there is a bug in your hook which returns
3685@code{t} on @samp{+inbox} and you hit @kbd{k} by accident in the 3688@code{t} on @samp{+inbox} and you press @kbd{k} by accident in the
3686@code{+inbox} folder, you will not be happy. 3689@code{+inbox} folder, you will not be happy.
3687@end quotation 3690@end quotation
3688@sp 1 3691@sp 1
@@ -3774,9 +3777,9 @@ mh-smail} directly, or from the command line like this:
3774 3777
3775@cindex starting from command line 3778@cindex starting from command line
3776 3779
3777@example 3780@smallexample
3778$ @kbd{emacs -f mh-smail} 3781$ @kbd{emacs -f mh-smail}
3779@end example 3782@end smallexample
3780 3783
3781@findex goto-address-at-point 3784@findex goto-address-at-point
3782@vindex mail-user-agent 3785@vindex mail-user-agent
@@ -4050,31 +4053,47 @@ command.
4050When you reply to a message, you are first prompted with @samp{Reply 4053When you reply to a message, you are first prompted with @samp{Reply
4051to whom?}. You have several choices here. 4054to whom?}. You have several choices here.
4052 4055
4053@smallexample 4056@quotation
4054@group 4057@multitable @columnfractions .20 .80
4055@b{Response} @b{Reply Goes To} 4058@c @headitem Response @tab Reply Goes To
4056 4059@c XXX @headitem not yet supported by SourceForge's texi2pdf.
4057@kbd{from} @r{The person who sent the message. This is the default,} 4060@item @b{Response} @tab @b{Reply Goes To}
4058 @r{so @key{RET} is sufficient.} 4061@c -------------------------
4059 4062@item @kbd{from}
4060@kbd{to} @r{Replies to the sender, plus all recipients in the} 4063@tab
4061 @r{@samp{To:} header field.} 4064The person who sent the message. This is the default, so @key{RET} is
4062 4065sufficient.
4063@kbd{all} 4066@c -------------------------
4064@kbd{cc} @r{Forms a reply to the sender, plus all recipients.} 4067@item @kbd{to}
4065@end group 4068@tab
4066@end smallexample 4069Replies to the sender, plus all recipients in the @samp{To:} header field.
4070@c -------------------------
4071@item @kbd{cc}@*@kbd{all}
4072@tab
4073Forms a reply to the addresses in the @samp{Mail-Followup-To:} header
4074field if one exists; otherwise forms a reply to the sender, plus all
4075recipients.
4076@end multitable
4077@end quotation
4067 4078
4068@cindex @command{repl} 4079@cindex @command{repl}
4069@cindex MH commands, @command{repl} 4080@cindex MH commands, @command{repl}
4081@vindex mh-reply-default-reply-to
4070 4082
4071Depending on your answer, @command{repl}@footnote{See the section 4083Depending on your answer, @command{repl}@footnote{See the section
4072@uref{@value{MH-BOOK-HOME}/reprep.htm, Replying to Messages: repl} in 4084@uref{@value{MH-BOOK-HOME}/reprep.htm, Replying to Messages: repl} in
4073the MH book.} is given a different argument to form your reply. 4085the MH book.} is given a different argument to form your reply.
4074Specifically, a choice of @kbd{from} or none at all runs @samp{repl 4086Specifically, a choice of @kbd{from} or none at all runs @samp{repl
4075-nocc all}, and a choice of @kbd{to} runs @samp{repl -cc to}. Finally, 4087-nocc all}, and a choice of @kbd{to} runs @samp{repl -cc to}. Finally,
4076either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. 4088either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you
4077 4089find that most of the time you specify one of these choices when you
4090reply to a message, you can change the option
4091@code{mh-reply-default-reply-to} from its default value of
4092@samp{Prompt} to one of the choices listed above. You can always edit
4093the recipients in the draft.
4094
4095@cindex @samp{repl:} MH profile component
4096@cindex MH profile component, @samp{repl:}
4078@cindex MH-Letter mode 4097@cindex MH-Letter mode
4079@cindex MH-Show mode 4098@cindex MH-Show mode
4080@cindex draft 4099@cindex draft
@@ -4083,7 +4102,10 @@ either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}.
4083 4102
4084Two windows are then created. One window contains the message to which 4103Two windows are then created. One window contains the message to which
4085you are replying in an MH-Show buffer. Your draft, in MH-Letter mode 4104you are replying in an MH-Show buffer. Your draft, in MH-Letter mode
4086(@pxref{Editing Drafts}), is in the other window. 4105(@pxref{Editing Drafts}), is in the other window. If the reply draft
4106was not one that you expected, check the things that affect the
4107behavior of @command{repl} which include the @samp{repl:} profile
4108component and the @file{replcomps} and @file{replgroupcomps} files.
4087 4109
4088If you supply a prefix argument (as in @kbd{C-u r}), the message you 4110If you supply a prefix argument (as in @kbd{C-u r}), the message you
4089are replying to is inserted in your reply after having first been run 4111are replying to is inserted in your reply after having first been run
@@ -4110,15 +4132,6 @@ buffer by turning off the option @code{mh-reply-show-message-flag}.
4110If you wish to customize the header or other parts of the reply draft, 4132If you wish to customize the header or other parts of the reply draft,
4111please see @command{repl}(1) and @code{mh-format}(5). 4133please see @command{repl}(1) and @code{mh-format}(5).
4112 4134
4113@vindex mh-reply-default-reply-to
4114
4115The @code{mh-reply-default-reply-to} option is set to @samp{Prompt} by
4116default so that you are prompted for the recipient of a reply. If you
4117find that most of the time that you specify @kbd{cc} when you reply to
4118a message, set this option to @samp{cc}. Other choices include
4119@samp{from}, @samp{to}, or @samp{all}. You can always edit the
4120recipients in the draft.
4121
4122@node Forwarding, Redistributing, Replying, Sending Mail 4135@node Forwarding, Redistributing, Replying, Sending Mail
4123@section Forwarding Mail 4136@section Forwarding Mail
4124 4137
@@ -4781,23 +4794,23 @@ quotes match the value of @code{mh-ins-buf-prefix} (@pxref{Inserting
4781Letter}). For example, let's assume you have the following in your 4794Letter}). For example, let's assume you have the following in your
4782draft: 4795draft:
4783 4796
4784@example 4797@smallexample
4785@group 4798@group
4786> Hopefully this gives you an idea of what I'm currently doing. I'm \ 4799> Hopefully this gives you an idea of what I'm currently doing. I'm \
4787not sure yet whether I'm completely satisfied with my setup, but \ 4800not sure yet whether I'm completely satisfied with my setup, but \
4788it's worked okay for me so far. 4801it's worked okay for me so far.
4789@end group 4802@end group
4790@end example 4803@end smallexample
4791 4804
4792Running @kbd{M-q} on this paragraph produces: 4805Running @kbd{M-q} on this paragraph produces:
4793 4806
4794@example 4807@smallexample
4795@group 4808@group
4796> Hopefully this gives you an idea of what I'm currently doing. I'm not 4809> Hopefully this gives you an idea of what I'm currently doing. I'm not
4797> sure yet whether I'm completely satisfied with my setup, but it's 4810> sure yet whether I'm completely satisfied with my setup, but it's
4798> worked okay for me so far. 4811> worked okay for me so far.
4799@end group 4812@end group
4800@end example 4813@end smallexample
4801 4814
4802@findex mh-open-line 4815@findex mh-open-line
4803@findex open-line 4816@findex open-line
@@ -4812,7 +4825,7 @@ column as it was. This is useful when breaking up paragraphs in
4812replies. For example, if this command was used when point was after 4825replies. For example, if this command was used when point was after
4813the first period in the paragraph above, the result would be this: 4826the first period in the paragraph above, the result would be this:
4814 4827
4815@example 4828@smallexample
4816@group 4829@group
4817> Hopefully this gives you an idea of what I'm currently doing. 4830> Hopefully this gives you an idea of what I'm currently doing.
4818 4831
@@ -4820,7 +4833,7 @@ the first period in the paragraph above, the result would be this:
4820> sure yet whether I'm completely satisfied with my setup, but it's 4833> sure yet whether I'm completely satisfied with my setup, but it's
4821> worked okay for me so far. 4834> worked okay for me so far.
4822@end group 4835@end group
4823@end example 4836@end smallexample
4824 4837
4825@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts 4838@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts
4826@section Inserting Letter to Which You're Replying 4839@section Inserting Letter to Which You're Replying
@@ -4839,7 +4852,7 @@ attribution, yanking a portion of text from the message to which
4839you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> }) 4852you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> })
4840before each line. 4853before each line.
4841 4854
4842@example 4855@smallexample
4843@group 4856@group
4844Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote: 4857Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote:
4845 4858
@@ -4847,7 +4860,7 @@ Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote:
4847> sure yet whether I'm completely satisfied with my setup, but it's 4860> sure yet whether I'm completely satisfied with my setup, but it's
4848> worked okay for me so far. 4861> worked okay for me so far.
4849@end group 4862@end group
4850@end example 4863@end smallexample
4851 4864
4852@vindex mh-extract-from-attribution-verb 4865@vindex mh-extract-from-attribution-verb
4853 4866
@@ -5318,7 +5331,7 @@ When you are finished editing a @sc{mime} message, it might look like this:
5318 5331
5319 5332
5320 5333
5321--:%% @{+inbox@} 4 msgs (1-4) (MH-Folder Show)--L4--Bot--------------- 5334--:%% @{+inbox@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------------
5322To: wohler 5335To: wohler
5323cc: 5336cc:
5324Subject: Test of MIME 5337Subject: Test of MIME
@@ -5328,7 +5341,7 @@ Here is the SETI@@Home logo:
5328<#part type="image/x-xpm" filename="~/lib/images/setiathome.xpm" 5341<#part type="image/x-xpm" filename="~/lib/images/setiathome.xpm"
5329disposition=inline description="SETI@@home logo"> 5342disposition=inline description="SETI@@home logo">
5330<#/part> 5343<#/part>
5331--:** @{draft@} (MH-Letter)--L8--All---------------------------------- 5344--:** @{draft@} All L8 (MH-Letter)----------------------------------
5332 5345
5333@end smallexample 5346@end smallexample
5334@end cartouche 5347@end cartouche
@@ -5355,6 +5368,7 @@ details from the user.
5355To: wohler 5368To: wohler
5356cc: 5369cc:
5357Subject: Test of MIME 5370Subject: Test of MIME
5371X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
5358MIME-Version: 1.0 5372MIME-Version: 1.0
5359Content-Type: multipart/mixed; boundary="=-=-=" 5373Content-Type: multipart/mixed; boundary="=-=-="
5360-------- 5374--------
@@ -5369,8 +5383,8 @@ Content-Disposition: inline; filename=setiathome.xpm
5369Content-Transfer-Encoding: base64 5383Content-Transfer-Encoding: base64
5370Content-Description: SETI@@home logo 5384Content-Description: SETI@@home logo
5371 5385
5372LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2NCAy 5386LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2N
5373--:-- @{draft@} (MH-Letter)--L2--Top---------------------------------- 5387--:-- @{draft@} Top L1 (MH-Letter)----------------------------------
5374 5388
5375@end smallexample 5389@end smallexample
5376@end cartouche 5390@end cartouche
@@ -5447,25 +5461,25 @@ following commands to do so any time before sending your message.
5447The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign}) 5461The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign})
5448inserts the following tag: 5462inserts the following tag:
5449 5463
5450@example 5464@smallexample
5451<#secure method=pgpmime mode=sign> 5465<#secure method=pgpmime mode=sign>
5452@end example 5466@end smallexample
5453 5467
5454This is used to sign your message digitally. Likewise, the command 5468This is used to sign your message digitally. Likewise, the command
5455@kbd{C-c C-m C-e} (@code{mh-mml-secure-message-encrypt}) inserts the 5469@kbd{C-c C-m C-e} (@code{mh-mml-secure-message-encrypt}) inserts the
5456following tag: 5470following tag:
5457 5471
5458@example 5472@smallexample
5459<#secure method=pgpmime mode=encrypt> 5473<#secure method=pgpmime mode=encrypt>
5460@end example 5474@end smallexample
5461 5475
5462This is used to encrypt your message. Finally, the command @kbd{C-c 5476This is used to encrypt your message. Finally, the command @kbd{C-c
5463C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the 5477C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the
5464following tag: 5478following tag:
5465 5479
5466@example 5480@smallexample
5467<#secure method=pgpmime mode=signencrypt> 5481<#secure method=pgpmime mode=signencrypt>
5468@end example 5482@end smallexample
5469 5483
5470@findex mh-mml-unsecure-message 5484@findex mh-mml-unsecure-message
5471@kindex C-c C-m C-n 5485@kindex C-c C-m C-n
@@ -5703,10 +5717,10 @@ make case significant which can be used to segregate completion of
5703your aliases. You might use uppercase for mailing lists and lowercase 5717your aliases. You might use uppercase for mailing lists and lowercase
5704for people. For example, you might have: 5718for people. For example, you might have:
5705 5719
5706@example 5720@smallexample
5707mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org> 5721mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org>
5708MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org> 5722MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org>
5709@end example 5723@end smallexample
5710 5724
5711When this option is turned off, if you were to type @kbd{M} in the 5725When this option is turned off, if you were to type @kbd{M} in the
5712@samp{To:} field and then @kbd{M-@key{TAB}}, then you'd get the list; 5726@samp{To:} field and then @kbd{M-@key{TAB}}, then you'd get the list;
@@ -5767,9 +5781,9 @@ The prefix @samp{local.} can be modified via the option
5767 5781
5768For example, consider the following password file entry: 5782For example, consider the following password file entry:
5769 5783
5770@example 5784@smallexample
5771psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh 5785psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh
5772@end example 5786@end smallexample
5773 5787
5774@vindex mh-alias-local-users-prefix 5788@vindex mh-alias-local-users-prefix
5775 5789
@@ -5839,7 +5853,8 @@ other prefixes to organize your aliases or disambiguate entries. You
5839might use prefixes for locales, jobs, or activities. For example, I 5853might use prefixes for locales, jobs, or activities. For example, I
5840have: 5854have:
5841 5855
5842@example 5856@smallexample
5857@group
5843; Work 5858; Work
5844attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com> 5859attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com>
5845isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com> 5860isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com>
@@ -5851,7 +5866,8 @@ sailing.mike.maloney: Mike Maloney <mmaloney@@stop.mail-abuse.com>
5851; Personal 5866; Personal
5852ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com> 5867ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com>
5853... 5868...
5854@end example 5869@end group
5870@end smallexample
5855 5871
5856Using prefixes instead of postfixes helps you explore aliases during 5872Using prefixes instead of postfixes helps you explore aliases during
5857completion. If you forget the name of an old dive buddy, you can enter 5873completion. If you forget the name of an old dive buddy, you can enter
@@ -6566,12 +6582,13 @@ Next, an MH-Search buffer appears where you can enter search criteria.
6566 6582
6567@cartouche 6583@cartouche
6568@smallexample 6584@smallexample
6569From: # 6585From:
6570To: 6586To:
6571Cc: 6587Cc:
6572Date: 6588Date:
6573Subject: 6589Subject:
6574-------- 6590--------
6591#
6575 6592
6576 6593
6577 6594
@@ -6580,9 +6597,8 @@ Subject:
6580 6597
6581 6598
6582 6599
6583 6600--:** search-pattern All L7 (MH-Search)---------------------------
6584--:** search-pattern (MH-Search)--L1--All----------------------------- 6601Type C-c C-c to search messages, C-c C-p to use pick, C-c ? for help
6585
6586@end smallexample 6602@end smallexample
6587@end cartouche 6603@end cartouche
6588@i{Search window} 6604@i{Search window}
@@ -8280,9 +8296,9 @@ which displays the sender, the subject, and the message number. This
8280format places a @samp{+} after the message number for the current 8296format places a @samp{+} after the message number for the current
8281message according to MH; it also uses that column for notations. 8297message according to MH; it also uses that column for notations.
8282 8298
8283@example 8299@smallexample
8284%20(decode(friendly@{from@})) %50(decode@{subject@}) %4(msg)%<(cur)+%| %> 8300%20(decode(friendly@{from@})) %50(decode@{subject@}) %4(msg)%<(cur)+%| %>
8285@end example 8301@end smallexample
8286 8302
8287@vindex mh-adaptive-cmd-note-flag 8303@vindex mh-adaptive-cmd-note-flag
8288@vindex mh-scan-format-file 8304@vindex mh-scan-format-file
@@ -8298,9 +8314,9 @@ least display the output of scan in your MH-Folder buffer.
8298 8314
8299@vindex mh-scan-valid-regexp, example 8315@vindex mh-scan-valid-regexp, example
8300 8316
8301@lisp 8317@smalllisp
8302(setq mh-scan-valid-regexp "[0-9]+[+D^ ]$") 8318(setq mh-scan-valid-regexp "[0-9]+[+D^ ]$")
8303@end lisp 8319@end smalllisp
8304 8320
8305Now, in order to get rid of the @samp{Cursor not pointing to message} 8321Now, in order to get rid of the @samp{Cursor not pointing to message}
8306message, you need to tell MH-E how to access the message number. You 8322message, you need to tell MH-E how to access the message number. You
@@ -8310,18 +8326,18 @@ the first place.
8310@vindex mh-scan-msg-number-regexp, example 8326@vindex mh-scan-msg-number-regexp, example
8311@vindex mh-scan-msg-search-regexp, example 8327@vindex mh-scan-msg-search-regexp, example
8312 8328
8313@lisp 8329@smalllisp
8314(setq mh-scan-msg-number-regexp "^.* \\([0-9]+\\)[+D^ ]$") 8330(setq mh-scan-msg-number-regexp "^.* \\([0-9]+\\)[+D^ ]$")
8315(setq mh-scan-msg-search-regexp " %d[+D^ ]$") 8331(setq mh-scan-msg-search-regexp " %d[+D^ ]$")
8316@end lisp 8332@end smalllisp
8317 8333
8318In order to get the next and previous commands working, add this. 8334In order to get the next and previous commands working, add this.
8319 8335
8320@vindex mh-scan-good-msg-regexp, example 8336@vindex mh-scan-good-msg-regexp, example
8321 8337
8322@lisp 8338@smalllisp
8323(setq mh-scan-good-msg-regexp "^.* \\([0-9]+\\)[+D^ ]$") 8339(setq mh-scan-good-msg-regexp "^.* \\([0-9]+\\)[+D^ ]$")
8324@end lisp 8340@end smalllisp
8325 8341
8326Note that the current message isn't marked with a @samp{+} when moving 8342Note that the current message isn't marked with a @samp{+} when moving
8327between the next and previous messages. Here is the code required to 8343between the next and previous messages. Here is the code required to
@@ -8330,20 +8346,20 @@ get this working.
8330@vindex set-mh-cmd-note, example 8346@vindex set-mh-cmd-note, example
8331@vindex mh-scan-cur-msg-number-regexp, example 8347@vindex mh-scan-cur-msg-number-regexp, example
8332 8348
8333@lisp 8349@smalllisp
8334(set-mh-cmd-note 76) 8350(set-mh-cmd-note 76)
8335(setq mh-scan-cur-msg-number-regexp "^.* \\([0-9]+\\)\\+$") 8351(setq mh-scan-cur-msg-number-regexp "^.* \\([0-9]+\\)\\+$")
8336@end lisp 8352@end smalllisp
8337 8353
8338Finally, add the following to delete and refile messages. 8354Finally, add the following to delete and refile messages.
8339 8355
8340@vindex mh-scan-deleted-msg-regexp, example 8356@vindex mh-scan-deleted-msg-regexp, example
8341@vindex mh-scan-refiled-msg-regexp, example 8357@vindex mh-scan-refiled-msg-regexp, example
8342 8358
8343@lisp 8359@smalllisp
8344(setq mh-scan-deleted-msg-regexp "^.* \\([0-9]+\\)D$") 8360(setq mh-scan-deleted-msg-regexp "^.* \\([0-9]+\\)D$")
8345(setq mh-scan-refiled-msg-regexp "^.* \\([0-9]+\\)\\^$") 8361(setq mh-scan-refiled-msg-regexp "^.* \\([0-9]+\\)\\^$")
8346@end lisp 8362@end smalllisp
8347 8363
8348This is just a bare minimum; it's best to adjust all of the regular 8364This is just a bare minimum; it's best to adjust all of the regular
8349expressions to ensure that MH-E and highlighting perform well. 8365expressions to ensure that MH-E and highlighting perform well.
@@ -8439,9 +8455,9 @@ If your version of @command{rcvstore} doesn't add messages to the
8439@samp{unseen} sequence by default, add the following line to your MH 8455@samp{unseen} sequence by default, add the following line to your MH
8440profile: 8456profile:
8441 8457
8442@example 8458@smallexample
8443Unseen-Sequence: unseen 8459Unseen-Sequence: unseen
8444@end example 8460@end smallexample
8445 8461
8446Now view your new messages with the speedbar (@pxref{Speedbar}) or with 8462Now view your new messages with the speedbar (@pxref{Speedbar}) or with
8447@kbd{F n} (@code{mh-index-new-messages}). @xref{Folders}. 8463@kbd{F n} (@code{mh-index-new-messages}). @xref{Folders}.
@@ -8489,14 +8505,14 @@ Next add the following to @file{~/.procmailrc}. If you don't subscribe
8489to the GnuCash mailing list, substitute one to which you are 8505to the GnuCash mailing list, substitute one to which you are
8490subscribed. 8506subscribed.
8491 8507
8492@example 8508@smallexample
8493MAILDIR=$HOME/`mhparam Path` 8509MAILDIR=$HOME/`mhparam Path`
8494# Place mail sent to the GnuCash mailing list in gnucash.spool, where 8510# Place mail sent to the GnuCash mailing list in gnucash.spool, where
8495# Gnus will pick it up. 8511# Gnus will pick it up.
8496:0: 8512:0:
8497* ^TO.*gnucash.*@.*gnucash.org 8513* ^TO.*gnucash.*@.*gnucash.org
8498gnucash.spool 8514gnucash.spool
8499@end example 8515@end smallexample
8500 8516
8501Wait for some messages to appear in @file{gnucash.spool} and run Gnus 8517Wait for some messages to appear in @file{gnucash.spool} and run Gnus
8502with @kbd{M-x gnus @key{RET}}. To view the folder created in the 8518with @kbd{M-x gnus @key{RET}}. To view the folder created in the
diff --git a/man/org.texi b/man/org.texi
index 06deb034a3a..60259e2834c 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,7 +4,7 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 4.09 7@set VERSION 4.10
8@set DATE March 2006 8@set DATE March 2006
9 9
10@dircategory Emacs 10@dircategory Emacs
diff --git a/man/picture.texi b/man/picture.texi
deleted file mode 100644
index 2e162c04057..00000000000
--- a/man/picture.texi
+++ /dev/null
@@ -1,277 +0,0 @@
1@c This is part of the Emacs manual.
2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,
3@c 2004, 2005, 2006 Free Software Foundation, Inc.
4@c See file emacs.texi for copying conditions.
5@node Picture, Sending Mail, Abbrevs, Top
6@chapter Editing Pictures
7@cindex pictures
8@cindex making pictures out of text characters
9@findex edit-picture
10
11 To edit a picture made out of text characters (for example, a picture
12of the division of a register into fields, as a comment in a program),
13use the command @kbd{M-x edit-picture} to enter Picture mode.
14
15 In Picture mode, editing is based on the @dfn{quarter-plane} model of
16text, according to which the text characters lie studded on an area that
17stretches infinitely far to the right and downward. The concept of the end
18of a line does not exist in this model; the most you can say is where the
19last nonblank character on the line is found.
20
21 Of course, Emacs really always considers text as a sequence of
22characters, and lines really do have ends. But Picture mode replaces
23the most frequently-used commands with variants that simulate the
24quarter-plane model of text. They do this by inserting spaces or by
25converting tabs to spaces.
26
27 Most of the basic editing commands of Emacs are redefined by Picture mode
28to do essentially the same thing but in a quarter-plane way. In addition,
29Picture mode defines various keys starting with the @kbd{C-c} prefix to
30run special picture editing commands.
31
32 One of these keys, @kbd{C-c C-c}, is particularly important. Often a
33picture is part of a larger file that is usually edited in some other
34major mode. @kbd{M-x edit-picture} records the name of the previous
35major mode so you can use the @kbd{C-c C-c} command
36(@code{picture-mode-exit}) later to go back to that mode. @kbd{C-c C-c}
37also deletes spaces from the ends of lines, unless given a numeric
38argument.
39
40 The special commands of Picture mode all work in other modes (provided
41the @file{picture} library is loaded), but are not bound to keys except
42in Picture mode. The descriptions below talk of moving ``one column''
43and so on, but all the picture mode commands handle numeric arguments as
44their normal equivalents do.
45
46@vindex picture-mode-hook
47 Turning on Picture mode runs the hook @code{picture-mode-hook}
48(@pxref{Hooks}). Additional extensions to Picture mode can be found
49in @file{artist.el}.
50
51@menu
52* Basic Picture:: Basic concepts and simple commands of Picture Mode.
53* Insert in Picture:: Controlling direction of cursor motion
54 after "self-inserting" characters.
55* Tabs in Picture:: Various features for tab stops and indentation.
56* Rectangles in Picture:: Clearing and superimposing rectangles.
57@end menu
58
59@node Basic Picture, Insert in Picture, Picture, Picture
60@section Basic Editing in Picture Mode
61
62@findex picture-forward-column
63@findex picture-backward-column
64@findex picture-move-down
65@findex picture-move-up
66@cindex editing in Picture mode
67
68 Most keys do the same thing in Picture mode that they usually do, but
69do it in a quarter-plane style. For example, @kbd{C-f} is rebound to
70run @code{picture-forward-column}, a command which moves point one
71column to the right, inserting a space if necessary so that the actual
72end of the line makes no difference. @kbd{C-b} is rebound to run
73@code{picture-backward-column}, which always moves point left one
74column, converting a tab to multiple spaces if necessary. @kbd{C-n} and
75@kbd{C-p} are rebound to run @code{picture-move-down} and
76@code{picture-move-up}, which can either insert spaces or convert tabs
77as necessary to make sure that point stays in exactly the same column.
78@kbd{C-e} runs @code{picture-end-of-line}, which moves to after the last
79nonblank character on the line. There is no need to change @kbd{C-a},
80as the choice of screen model does not affect beginnings of
81lines.
82
83@findex picture-newline
84 Insertion of text is adapted to the quarter-plane screen model through
85the use of Overwrite mode (@pxref{Minor Modes}). Self-inserting characters
86replace existing text, column by column, rather than pushing existing text
87to the right. @key{RET} runs @code{picture-newline}, which just moves to
88the beginning of the following line so that new text will replace that
89line.
90
91@findex picture-backward-clear-column
92@findex picture-clear-column
93@findex picture-clear-line
94 In Picture mode, the commands that normally delete or kill text,
95instead erase text (replacing it with spaces). @key{DEL}
96(@code{picture-backward-clear-column}) replaces the preceding
97character with a space rather than removing it; this moves point
98backwards. @kbd{C-d} (@code{picture-clear-column}) replaces the next
99character or characters with spaces, but does not move point. (If you
100want to clear characters to spaces and move forward over them, use
101@key{SPC}.) @kbd{C-k} (@code{picture-clear-line}) really kills the
102contents of lines, but does not delete the newlines from the buffer.
103
104@findex picture-open-line
105 To do actual insertion, you must use special commands. @kbd{C-o}
106(@code{picture-open-line}) creates a blank line after the current
107line; it never splits a line. @kbd{C-M-o} (@code{split-line}) makes
108sense in Picture mode, so it is not changed. @kbd{C-j}
109(@code{picture-duplicate-line}) inserts another line with the same
110contents below the current line.
111
112@kindex C-c C-d @r{(Picture mode)}
113 To do actual deletion in Picture mode, use @kbd{C-w}, @kbd{C-c C-d}
114(which is defined as @code{delete-char}, as @kbd{C-d} is in other
115modes), or one of the picture rectangle commands (@pxref{Rectangles in
116Picture}).
117
118@node Insert in Picture, Tabs in Picture, Basic Picture, Picture
119@section Controlling Motion after Insert
120
121@findex picture-movement-up
122@findex picture-movement-down
123@findex picture-movement-left
124@findex picture-movement-right
125@findex picture-movement-nw
126@findex picture-movement-ne
127@findex picture-movement-sw
128@findex picture-movement-se
129@kindex C-c < @r{(Picture mode)}
130@kindex C-c > @r{(Picture mode)}
131@kindex C-c ^ @r{(Picture mode)}
132@kindex C-c . @r{(Picture mode)}
133@kindex C-c ` @r{(Picture mode)}
134@kindex C-c ' @r{(Picture mode)}
135@kindex C-c / @r{(Picture mode)}
136@kindex C-c \ @r{(Picture mode)}
137 Since ``self-inserting'' characters in Picture mode overwrite and move
138point, there is no essential restriction on how point should be moved.
139Normally point moves right, but you can specify any of the eight
140orthogonal or diagonal directions for motion after a ``self-inserting''
141character. This is useful for drawing lines in the buffer.
142
143@table @kbd
144@item C-c <
145@itemx C-c @key{LEFT}
146Move left after insertion (@code{picture-movement-left}).
147@item C-c >
148@itemx C-c @key{RIGHT}
149Move right after insertion (@code{picture-movement-right}).
150@item C-c ^
151@itemx C-c @key{UP}
152Move up after insertion (@code{picture-movement-up}).
153@item C-c .
154@itemx C-c @key{DOWN}
155Move down after insertion (@code{picture-movement-down}).
156@item C-c `
157@itemx C-c @key{HOME}
158Move up and left (``northwest'') after insertion (@code{picture-movement-nw}).
159@item C-c '
160@itemx C-c @key{PAGEUP}
161Move up and right (``northeast'') after insertion
162(@code{picture-movement-ne}).
163@item C-c /
164@itemx C-c @key{END}
165Move down and left (``southwest'') after insertion
166@*(@code{picture-movement-sw}).
167@item C-c \
168@itemx C-c @key{PAGEDOWN}
169Move down and right (``southeast'') after insertion
170@*(@code{picture-movement-se}).
171@end table
172
173@kindex C-c C-f @r{(Picture mode)}
174@kindex C-c C-b @r{(Picture mode)}
175@findex picture-motion
176@findex picture-motion-reverse
177 Two motion commands move based on the current Picture insertion
178direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
179same direction as motion after ``insertion'' currently does, while @kbd{C-c
180C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
181
182@node Tabs in Picture, Rectangles in Picture, Insert in Picture, Picture
183@section Picture Mode Tabs
184
185@kindex M-TAB @r{(Picture mode)}
186@findex picture-tab-search
187@vindex picture-tab-chars
188 Two kinds of tab-like action are provided in Picture mode. Use
189@kbd{M-@key{TAB}} (@code{picture-tab-search}) for context-based tabbing.
190With no argument, it moves to a point underneath the next
191``interesting'' character that follows whitespace in the previous
192nonblank line. ``Next'' here means ``appearing at a horizontal position
193greater than the one point starts out at.'' With an argument, as in
194@kbd{C-u M-@key{TAB}}, this command moves to the next such interesting
195character in the current line. @kbd{M-@key{TAB}} does not change the
196text; it only moves point. ``Interesting'' characters are defined by
197the variable @code{picture-tab-chars}, which should define a set of
198characters. The syntax for this variable is like the syntax used inside
199of @samp{[@dots{}]} in a regular expression---but without the @samp{[}
200and the @samp{]}. Its default value is @code{"!-~"}.
201
202@findex picture-tab
203 @key{TAB} itself runs @code{picture-tab}, which operates based on the
204current tab stop settings; it is the Picture mode equivalent of
205@code{tab-to-tab-stop}. Normally it just moves point, but with a numeric
206argument it clears the text that it moves over.
207
208@kindex C-c TAB @r{(Picture mode)}
209@findex picture-set-tab-stops
210 The context-based and tab-stop-based forms of tabbing are brought
211together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}).
212This command sets the tab stops to the positions which @kbd{M-@key{TAB}}
213would consider significant in the current line. The use of this command,
214together with @key{TAB}, can get the effect of context-based tabbing. But
215@kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient.
216
217 It may be convenient to prevent use of actual tab characters in
218pictures. For example, this prevents @kbd{C-x @key{TAB}} from messing
219up the picture. You can do this by setting the variable
220@code{indent-tabs-mode} to @code{nil}. @xref{Just Spaces}.
221
222@node Rectangles in Picture,, Tabs in Picture, Picture
223@section Picture Mode Rectangle Commands
224@cindex rectangles and Picture mode
225@cindex Picture mode and rectangles
226
227 Picture mode defines commands for working on rectangular pieces of the
228text in ways that fit with the quarter-plane model. The standard rectangle
229commands may also be useful (@pxref{Rectangles}).
230
231@table @kbd
232@item C-c C-k
233Clear out the region-rectangle with spaces
234(@code{picture-clear-rectangle}). With argument, delete the text.
235@item C-c C-w @var{r}
236Similar, but save rectangle contents in register @var{r} first
237(@code{picture-clear-rectangle-to-register}).
238@item C-c C-y
239Copy last killed rectangle into the buffer by overwriting, with upper
240left corner at point (@code{picture-yank-rectangle}). With argument,
241insert instead.
242@item C-c C-x @var{r}
243Similar, but use the rectangle in register @var{r}
244(@code{picture-yank-rectangle-from-register}).
245@end table
246
247@kindex C-c C-k @r{(Picture mode)}
248@kindex C-c C-w @r{(Picture mode)}
249@findex picture-clear-rectangle
250@findex picture-clear-rectangle-to-register
251 The picture rectangle commands @kbd{C-c C-k}
252(@code{picture-clear-rectangle}) and @kbd{C-c C-w}
253(@code{picture-clear-rectangle-to-register}) differ from the standard
254rectangle commands in that they normally clear the rectangle instead of
255deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
256mode.
257
258 However, deletion of rectangles can be useful in Picture mode, so
259these commands delete the rectangle if given a numeric argument.
260@kbd{C-c C-k} either with or without a numeric argument saves the
261rectangle for @kbd{C-c C-y}.
262
263@kindex C-c C-y @r{(Picture mode)}
264@kindex C-c C-x @r{(Picture mode)}
265@findex picture-yank-rectangle
266@findex picture-yank-rectangle-from-register
267 The Picture mode commands for yanking rectangles differ from the
268standard ones in that they overwrite instead of inserting. This is
269the same way that Picture mode insertion of other text differs from
270other modes. @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts
271(by overwriting) the rectangle that was most recently killed, while
272@kbd{C-c C-x} (@code{picture-yank-rectangle-from-register}) does
273likewise for the rectangle found in a specified register.
274
275@ignore
276 arch-tag: b7589747-683c-4f40-aed8-1b10403cb666
277@end ignore
diff --git a/man/programs.texi b/man/programs.texi
index 643e6445fb0..9ec4f7ff2d3 100644
--- a/man/programs.texi
+++ b/man/programs.texi
@@ -41,7 +41,6 @@ Highlight program syntax (@pxref{Font Lock}).
41* Misc for Programs:: Other Emacs features useful for editing programs. 41* Misc for Programs:: Other Emacs features useful for editing programs.
42* C Modes:: Special commands of C, C++, Objective-C, 42* C Modes:: Special commands of C, C++, Objective-C,
43 Java, and Pike modes. 43 Java, and Pike modes.
44* Fortran:: Fortran mode and its special features.
45* Asm Mode:: Asm mode and its special features. 44* Asm Mode:: Asm mode and its special features.
46@end menu 45@end menu
47 46
@@ -109,7 +108,8 @@ tab character before point, in these modes.
109 Separate manuals are available for the modes for Ada (@pxref{Top, , Ada 108 Separate manuals are available for the modes for Ada (@pxref{Top, , Ada
110Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL/Pike/AWK 109Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL/Pike/AWK
111(@pxref{Top, , CC Mode, ccmode, CC Mode}) and the IDLWAVE modes 110(@pxref{Top, , CC Mode, ccmode, CC Mode}) and the IDLWAVE modes
112(@pxref{Top, , IDLWAVE, idlwave, IDLWAVE User Manual}). 111(@pxref{Top, , IDLWAVE, idlwave, IDLWAVE User Manual}). For Fortran
112mode, @inforef{Fortran,, emacs-xtra}.
113 113
114@cindex mode hook 114@cindex mode hook
115@vindex c-mode-hook 115@vindex c-mode-hook
@@ -1715,521 +1715,6 @@ to a C/C++ source file, or vice versa. The variable
1715names. 1715names.
1716@end table 1716@end table
1717 1717
1718@node Fortran
1719@section Fortran Mode
1720@cindex Fortran mode
1721@cindex mode, Fortran
1722
1723 Fortran mode provides special motion commands for Fortran statements
1724and subprograms, and indentation commands that understand Fortran
1725conventions of nesting, line numbers and continuation statements.
1726Fortran mode has support for Auto Fill mode that breaks long lines into
1727proper Fortran continuation lines.
1728
1729 Special commands for comments are provided because Fortran comments
1730are unlike those of other languages. Built-in abbrevs optionally save
1731typing when you insert Fortran keywords.
1732
1733 Use @kbd{M-x fortran-mode} to switch to this major mode. This command
1734runs the hook @code{fortran-mode-hook} (@pxref{Hooks}).
1735
1736@cindex Fortran77 and Fortran90
1737@findex f90-mode
1738@findex fortran-mode
1739 Fortran mode is meant for editing Fortran77 ``fixed format'' (and also
1740``tab format'') source code. For editing the modern Fortran90 or
1741Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}).
1742Emacs normally uses Fortran mode for files with extension @samp{.f},
1743@samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and
1744@samp{.f95}. GNU Fortran supports both kinds of format.
1745
1746@menu
1747* Motion: Fortran Motion. Moving point by statements or subprograms.
1748* Indent: Fortran Indent. Indentation commands for Fortran.
1749* Comments: Fortran Comments. Inserting and aligning comments.
1750* Autofill: Fortran Autofill. Auto fill support for Fortran.
1751* Columns: Fortran Columns. Measuring columns for valid Fortran.
1752* Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
1753@end menu
1754
1755@node Fortran Motion
1756@subsection Motion Commands
1757
1758 In addition to the normal commands for moving by and operating on
1759``defuns'' (Fortran subprograms---functions and subroutines, as well as
1760modules for F90 mode), Fortran mode provides special commands to move by
1761statements and other program units.
1762
1763@table @kbd
1764@kindex C-c C-n @r{(Fortran mode)}
1765@findex fortran-next-statement
1766@findex f90-next-statement
1767@item C-c C-n
1768Move to the beginning of the next statement
1769(@code{fortran-next-statement}/@code{f90-next-statement}).
1770
1771@kindex C-c C-p @r{(Fortran mode)}
1772@findex fortran-previous-statement
1773@findex f90-previous-statement
1774@item C-c C-p
1775Move to the beginning of the previous statement
1776(@code{fortran-previous-statement}/@code{f90-previous-statement}).
1777If there is no previous statement (i.e. if called from the first
1778statement in the buffer), move to the start of the buffer.
1779
1780@kindex C-c C-e @r{(F90 mode)}
1781@findex f90-next-block
1782@item C-c C-e
1783Move point forward to the start of the next code block
1784(@code{f90-next-block}). A code block is a subroutine,
1785@code{if}--@code{endif} statement, and so forth. This command exists
1786for F90 mode only, not Fortran mode. With a numeric argument, this
1787moves forward that many blocks.
1788
1789@kindex C-c C-a @r{(F90 mode)}
1790@findex f90-previous-block
1791@item C-c C-a
1792Move point backward to the previous code block
1793(@code{f90-previous-block}). This is like @code{f90-next-block}, but
1794moves backwards.
1795
1796@kindex C-M-n @r{(Fortran mode)}
1797@findex fortran-end-of-block
1798@findex f90-end-of-block
1799@item C-M-n
1800Move to the end of the current code block
1801(@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric
1802agument, move forward that number of blocks. The mark is set before
1803moving point. The F90 mode version of this command checks for
1804consistency of block types and labels (if present), but it does not
1805check the outermost block since that may be incomplete.
1806
1807@kindex C-M-p @r{(Fortran mode)}
1808@findex fortran-beginning-of-block
1809@findex f90-beginning-of-block
1810@item C-M-p
1811Move to the start of the current code block
1812(@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
1813is like @code{fortran-end-of-block}, but moves backwards.
1814@end table
1815
1816@node Fortran Indent
1817@subsection Fortran Indentation
1818
1819 Special commands and features are needed for indenting Fortran code in
1820order to make sure various syntactic entities (line numbers, comment line
1821indicators and continuation line flags) appear in the columns that are
1822required for standard, fixed (or tab) format Fortran.
1823
1824@menu
1825* Commands: ForIndent Commands. Commands for indenting and filling Fortran.
1826* Contline: ForIndent Cont. How continuation lines indent.
1827* Numbers: ForIndent Num. How line numbers auto-indent.
1828* Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
1829* Vars: ForIndent Vars. Variables controlling Fortran indent style.
1830@end menu
1831
1832@node ForIndent Commands
1833@subsubsection Fortran Indentation and Filling Commands
1834
1835@table @kbd
1836@item C-M-j
1837Break the current line at point and set up a continuation line
1838(@code{fortran-split-line}).
1839@item M-^
1840Join this line to the previous line (@code{fortran-join-line}).
1841@item C-M-q
1842Indent all the lines of the subprogram point is in
1843(@code{fortran-indent-subprogram}).
1844@item M-q
1845Fill a comment block or statement.
1846@end table
1847
1848@kindex C-M-q @r{(Fortran mode)}
1849@findex fortran-indent-subprogram
1850 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
1851to reindent all the lines of the Fortran subprogram (function or
1852subroutine) containing point.
1853
1854@kindex C-M-j @r{(Fortran mode)}
1855@findex fortran-split-line
1856 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
1857a line in the appropriate fashion for Fortran. In a non-comment line,
1858the second half becomes a continuation line and is indented
1859accordingly. In a comment line, both halves become separate comment
1860lines.
1861
1862@kindex M-^ @r{(Fortran mode)}
1863@kindex C-c C-d @r{(Fortran mode)}
1864@findex fortran-join-line
1865 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
1866which joins a continuation line back to the previous line, roughly as
1867the inverse of @code{fortran-split-line}. The point must be on a
1868continuation line when this command is invoked.
1869
1870@kindex M-q @r{(Fortran mode)}
1871@kbd{M-q} in Fortran mode fills the comment block or statement that
1872point is in. This removes any excess statement continuations.
1873
1874@node ForIndent Cont
1875@subsubsection Continuation Lines
1876@cindex Fortran continuation lines
1877
1878@vindex fortran-continuation-string
1879 Most Fortran77 compilers allow two ways of writing continuation lines.
1880If the first non-space character on a line is in column 5, then that
1881line is a continuation of the previous line. We call this @dfn{fixed
1882format}. (In GNU Emacs we always count columns from 0; but note that
1883the Fortran standard counts from 1.) The variable
1884@code{fortran-continuation-string} specifies what character to put in
1885column 5. A line that starts with a tab character followed by any digit
1886except @samp{0} is also a continuation line. We call this style of
1887continuation @dfn{tab format}. (Fortran90 introduced ``free format'',
1888with another style of continuation lines).
1889
1890@vindex indent-tabs-mode @r{(Fortran mode)}
1891@vindex fortran-analyze-depth
1892@vindex fortran-tab-mode-default
1893 Fortran mode can use either style of continuation line. When you
1894enter Fortran mode, it tries to deduce the proper continuation style
1895automatically from the buffer contents. It does this by scanning up to
1896@code{fortran-analyze-depth} (default 100) lines from the start of the
1897buffer. The first line that begins with either a tab character or six
1898spaces determines the choice. If the scan fails (for example, if the
1899buffer is new and therefore empty), the value of
1900@code{fortran-tab-mode-default} (@code{nil} for fixed format, and
1901non-@code{nil} for tab format) is used. @samp{/t} in the mode line
1902indicates tab format is selected. Fortran mode sets the value of
1903@code{indent-tabs-mode} accordingly (@pxref{Just Spaces}).
1904
1905 If the text on a line starts with the Fortran continuation marker
1906@samp{$}, or if it begins with any non-whitespace character in column
19075, Fortran mode treats it as a continuation line. When you indent a
1908continuation line with @key{TAB}, it converts the line to the current
1909continuation style. When you split a Fortran statement with
1910@kbd{C-M-j}, the continuation marker on the newline is created according
1911to the continuation style.
1912
1913 The setting of continuation style affects several other aspects of
1914editing in Fortran mode. In fixed format mode, the minimum column
1915number for the body of a statement is 6. Lines inside of Fortran
1916blocks that are indented to larger column numbers always use only the
1917space character for whitespace. In tab format mode, the minimum
1918column number for the statement body is 8, and the whitespace before
1919column 8 must always consist of one tab character.
1920
1921@node ForIndent Num
1922@subsubsection Line Numbers
1923
1924 If a number is the first non-whitespace in the line, Fortran
1925indentation assumes it is a line number and moves it to columns 0
1926through 4. (Columns always count from 0 in GNU Emacs.)
1927
1928@vindex fortran-line-number-indent
1929 Line numbers of four digits or less are normally indented one space.
1930The variable @code{fortran-line-number-indent} controls this; it
1931specifies the maximum indentation a line number can have. The default
1932value of the variable is 1. Fortran mode tries to prevent line number
1933digits passing column 4, reducing the indentation below the specified
1934maximum if necessary. If @code{fortran-line-number-indent} has the
1935value 5, line numbers are right-justified to end in column 4.
1936
1937@vindex fortran-electric-line-number
1938 Simply inserting a line number is enough to indent it according to
1939these rules. As each digit is inserted, the indentation is recomputed.
1940To turn off this feature, set the variable
1941@code{fortran-electric-line-number} to @code{nil}.
1942
1943
1944@node ForIndent Conv
1945@subsubsection Syntactic Conventions
1946
1947 Fortran mode assumes that you follow certain conventions that simplify
1948the task of understanding a Fortran program well enough to indent it
1949properly:
1950
1951@itemize @bullet
1952@item
1953Two nested @samp{do} loops never share a @samp{continue} statement.
1954
1955@item
1956Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
1957and others are written without embedded whitespace or line breaks.
1958
1959Fortran compilers generally ignore whitespace outside of string
1960constants, but Fortran mode does not recognize these keywords if they
1961are not contiguous. Constructs such as @samp{else if} or @samp{end do}
1962are acceptable, but the second word should be on the same line as the
1963first and not on a continuation line.
1964@end itemize
1965
1966@noindent
1967If you fail to follow these conventions, the indentation commands may
1968indent some lines unaesthetically. However, a correct Fortran program
1969retains its meaning when reindented even if the conventions are not
1970followed.
1971
1972@node ForIndent Vars
1973@subsubsection Variables for Fortran Indentation
1974
1975@vindex fortran-do-indent
1976@vindex fortran-if-indent
1977@vindex fortran-structure-indent
1978@vindex fortran-continuation-indent
1979@vindex fortran-check-all-num@dots{}
1980@vindex fortran-minimum-statement-indent@dots{}
1981 Several additional variables control how Fortran indentation works:
1982
1983@table @code
1984@item fortran-do-indent
1985Extra indentation within each level of @samp{do} statement (default 3).
1986
1987@item fortran-if-indent
1988Extra indentation within each level of @samp{if}, @samp{select case}, or
1989@samp{where} statements (default 3).
1990
1991@item fortran-structure-indent
1992Extra indentation within each level of @samp{structure}, @samp{union},
1993@samp{map}, or @samp{interface} statements (default 3).
1994
1995@item fortran-continuation-indent
1996Extra indentation for bodies of continuation lines (default 5).
1997
1998@item fortran-check-all-num-for-matching-do
1999In Fortran77, a numbered @samp{do} statement is ended by any statement
2000with a matching line number. It is common (but not compulsory) to use a
2001@samp{continue} statement for this purpose. If this variable has a
2002non-@code{nil} value, indenting any numbered statement must check for a
2003@samp{do} that ends there. If you always end @samp{do} statements with
2004a @samp{continue} line (or if you use the more modern @samp{enddo}),
2005then you can speed up indentation by setting this variable to
2006@code{nil}. The default is @code{nil}.
2007
2008@item fortran-blink-matching-if
2009If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
2010statement moves the cursor momentarily to the matching @samp{if} (or
2011@samp{do}) statement to show where it is. The default is @code{nil}.
2012
2013@item fortran-minimum-statement-indent-fixed
2014Minimum indentation for Fortran statements when using fixed format
2015continuation line style. Statement bodies are never indented less than
2016this much. The default is 6.
2017
2018@item fortran-minimum-statement-indent-tab
2019Minimum indentation for Fortran statements for tab format continuation line
2020style. Statement bodies are never indented less than this much. The
2021default is 8.
2022@end table
2023
2024The variables controlling the indentation of comments are described in
2025the following section.
2026
2027@node Fortran Comments
2028@subsection Fortran Comments
2029
2030 The usual Emacs comment commands assume that a comment can follow a
2031line of code. In Fortran77, the standard comment syntax requires an
2032entire line to be just a comment. Therefore, Fortran mode replaces the
2033standard Emacs comment commands and defines some new variables.
2034
2035@vindex fortran-comment-line-start
2036 Fortran mode can also handle the Fortran90 comment syntax where comments
2037start with @samp{!} and can follow other text. Because only some Fortran77
2038compilers accept this syntax, Fortran mode will not insert such comments
2039unless you have said in advance to do so. To do this, set the variable
2040@code{fortran-comment-line-start} to @samp{"!"}.
2041
2042@table @kbd
2043@item M-;
2044Align comment or insert new comment (@code{fortran-indent-comment}).
2045
2046@item C-x ;
2047Applies to nonstandard @samp{!} comments only.
2048
2049@item C-c ;
2050Turn all lines of the region into comments, or (with argument) turn them back
2051into real code (@code{fortran-comment-region}).
2052@end table
2053
2054@findex fortran-indent-comment
2055 @kbd{M-;} in Fortran mode is redefined as the command
2056@code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this
2057recognizes any kind of existing comment and aligns its text appropriately;
2058if there is no existing comment, a comment is inserted and aligned. But
2059inserting and aligning comments are not the same in Fortran mode as in
2060other modes.
2061
2062 When a new comment must be inserted, if the current line is blank, a
2063full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
2064comment is inserted if you have said you want to use them. Otherwise a
2065full-line comment is inserted on a new line before the current line.
2066
2067 Nonstandard @samp{!} comments are aligned like comments in other
2068languages, but full-line comments are different. In a standard full-line
2069comment, the comment delimiter itself must always appear in column zero.
2070What can be aligned is the text within the comment. You can choose from
2071three styles of alignment by setting the variable
2072@code{fortran-comment-indent-style} to one of these values:
2073
2074@vindex fortran-comment-indent-style
2075@vindex fortran-comment-line-extra-indent
2076@table @code
2077@item fixed
2078Align the text at a fixed column, which is the sum of
2079@code{fortran-comment-line-extra-indent} and the minimum statement
2080indentation. This is the default.
2081
2082The minimum statement indentation is
2083@code{fortran-minimum-statement-indent-fixed} for fixed format
2084continuation line style and @code{fortran-minimum-statement-indent-tab}
2085for tab format style.
2086
2087@item relative
2088Align the text as if it were a line of code, but with an additional
2089@code{fortran-comment-line-extra-indent} columns of indentation.
2090
2091@item nil
2092Don't move text in full-line comments automatically.
2093@end table
2094
2095@vindex fortran-comment-indent-char
2096 In addition, you can specify the character to be used to indent within
2097full-line comments by setting the variable
2098@code{fortran-comment-indent-char} to the single-character string you want
2099to use.
2100
2101@vindex fortran-directive-re
2102 Compiler directive lines, or preprocessor lines, have much the same
2103appearance as comment lines. It is important, though, that such lines
2104never be indented at all, no matter what the value of
2105@code{fortran-comment-indent-style}. The variable
2106@code{fortran-directive-re} is a regular expression that specifies which
2107lines are directives. Matching lines are never indented, and receive
2108distinctive font-locking.
2109
2110 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
2111you use @samp{!} comments, this command can be used with them. Otherwise
2112it is useless in Fortran mode.
2113
2114@kindex C-c ; @r{(Fortran mode)}
2115@findex fortran-comment-region
2116@vindex fortran-comment-region
2117 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2118lines of the region into comments by inserting the string @samp{C$$$} at
2119the front of each one. With a numeric argument, it turns the region
2120back into live code by deleting @samp{C$$$} from the front of each line
2121in it. The string used for these comments can be controlled by setting
2122the variable @code{fortran-comment-region}. Note that here we have an
2123example of a command and a variable with the same name; these two uses
2124of the name never conflict because in Lisp and in Emacs it is always
2125clear from the context which one is meant.
2126
2127@node Fortran Autofill
2128@subsection Auto Fill in Fortran Mode
2129
2130 Fortran mode has specialized support for Auto Fill mode, which is a
2131minor mode that automatically splits statements as you insert them when
2132they become too wide. Splitting a statement involves making
2133continuation lines using @code{fortran-continuation-string}
2134(@pxref{ForIndent Cont}). This splitting happens when you type
2135@key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation
2136commands. You activate Auto Fill in Fortran mode in the normal way
2137(@pxref{Auto Fill}).
2138
2139@vindex fortran-break-before-delimiters
2140 Auto Fill breaks lines at spaces or delimiters when the lines get
2141longer than the desired width (the value of @code{fill-column}). The
2142delimiters (besides whitespace) that Auto Fill can break at are
2143@samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
2144and @samp{,}. The line break comes after the delimiter if the
2145variable @code{fortran-break-before-delimiters} is @code{nil}.
2146Otherwise (and by default), the break comes before the delimiter.
2147
2148 To enable Auto Fill in all Fortran buffers, add
2149@code{turn-on-auto-fill} to @code{fortran-mode-hook}. @xref{Hooks}.
2150
2151@node Fortran Columns
2152@subsection Checking Columns in Fortran
2153
2154@table @kbd
2155@item C-c C-r
2156Display a ``column ruler'' momentarily above the current line
2157(@code{fortran-column-ruler}).
2158@item C-c C-w
2159Split the current window horizontally temporarily so that it is 72
2160columns wide (@code{fortran-window-create-momentarily}). This may
2161help you avoid making lines longer than the 72-character limit that
2162some Fortran compilers impose.
2163@item C-u C-c C-w
2164Split the current window horizontally so that it is 72 columns wide
2165(@code{fortran-window-create}). You can then continue editing.
2166@item M-x fortran-strip-sequence-nos
2167Delete all text in column 72 and beyond.
2168@end table
2169
2170@kindex C-c C-r @r{(Fortran mode)}
2171@findex fortran-column-ruler
2172 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2173ruler momentarily above the current line. The comment ruler is two lines
2174of text that show you the locations of columns with special significance in
2175Fortran programs. Square brackets show the limits of the columns for line
2176numbers, and curly brackets show the limits of the columns for the
2177statement body. Column numbers appear above them.
2178
2179 Note that the column numbers count from zero, as always in GNU Emacs.
2180As a result, the numbers may be one less than those you are familiar
2181with; but the positions they indicate in the line are standard for
2182Fortran.
2183
2184@vindex fortran-column-ruler-fixed
2185@vindex fortran-column-ruler-tabs
2186 The text used to display the column ruler depends on the value of the
2187variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
2188@code{nil}, then the value of the variable
2189@code{fortran-column-ruler-fixed} is used as the column ruler.
2190Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
2191displayed. By changing these variables, you can change the column ruler
2192display.
2193
2194@kindex C-c C-w @r{(Fortran mode)}
2195@findex fortran-window-create-momentarily
2196 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2197splits the current window horizontally, making a window 72 columns
2198wide, so you can see any lines that are too long. Type a space to
2199restore the normal width.
2200
2201@kindex C-u C-c C-w @r{(Fortran mode)}
2202@findex fortran-window-create
2203 You can also split the window horizontally and continue editing with
2204the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
2205fortran-window-create}). By editing in this window you can
2206immediately see when you make a line too wide to be correct Fortran.
2207
2208@findex fortran-strip-sequence-nos
2209 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2210column 72 and beyond, on all lines in the current buffer. This is the
2211easiest way to get rid of old sequence numbers.
2212
2213@node Fortran Abbrev
2214@subsection Fortran Keyword Abbrevs
2215
2216 Fortran mode provides many built-in abbrevs for common keywords and
2217declarations. These are the same sort of abbrev that you can define
2218yourself. To use them, you must turn on Abbrev mode. @xref{Abbrevs}.
2219
2220 The built-in abbrevs are unusual in one way: they all start with a
2221semicolon. You cannot normally use semicolon in an abbrev, but Fortran
2222mode makes this possible by changing the syntax of semicolon to ``word
2223constituent.''
2224
2225 For example, one built-in Fortran abbrev is @samp{;c} for
2226@samp{continue}. If you insert @samp{;c} and then insert a punctuation
2227character such as a space or a newline, the @samp{;c} expands automatically
2228to @samp{continue}, provided Abbrev mode is enabled.@refill
2229
2230 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2231Fortran abbrevs and what they stand for.
2232
2233@node Asm Mode 1718@node Asm Mode
2234@section Asm Mode 1719@section Asm Mode
2235 1720
diff --git a/man/sending.texi b/man/sending.texi
index 2fbf9a189c7..299787e529c 100644
--- a/man/sending.texi
+++ b/man/sending.texi
@@ -2,7 +2,7 @@
2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
3@c 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 3@c 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Sending Mail, Rmail, Picture, Top 5@node Sending Mail, Rmail, Abbrevs, Top
6@chapter Sending Mail 6@chapter Sending Mail
7@cindex sending mail 7@cindex sending mail
8@cindex mail 8@cindex mail
diff --git a/man/text.texi b/man/text.texi
index 2b70c599b89..cf3d03af4d5 100644
--- a/man/text.texi
+++ b/man/text.texi
@@ -51,6 +51,12 @@ Then the formatting appears on the screen in Emacs while you edit.
51@xref{Formatted Text}. 51@xref{Formatted Text}.
52@end iftex 52@end iftex
53 53
54@cindex ASCII art
55 If you need to edit pictures made out of text characters (commonly
56referred to as ``ASCII art''), use @kbd{M-x edit-picture} to enter
57Picture mode, a special major mode for editing such pictures.
58@inforef{Picture Mode,, emacs-xtra}.
59
54@cindex skeletons 60@cindex skeletons
55@cindex templates 61@cindex templates
56@cindex autotyping 62@cindex autotyping