diff options
| author | Karoly Lorentey | 2006-03-22 15:16:06 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2006-03-22 15:16:06 +0000 |
| commit | d4717700cc0b7af6197c19e22bd912e3b1ed67ee (patch) | |
| tree | 4e2a630584b23f670aff57a512a8f2d8182e39c4 /man | |
| parent | f1be5774242454844bf21fbf32e0f6541e2add34 (diff) | |
| parent | d63cd76657e12b92a5d7736a15bc9b97a7f9990e (diff) | |
| download | emacs-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/ChangeLog | 91 | ||||
| -rw-r--r-- | man/Makefile.in | 1 | ||||
| -rw-r--r-- | man/abbrevs.texi | 2 | ||||
| -rw-r--r-- | man/emacs-xtra.texi | 1183 | ||||
| -rw-r--r-- | man/emacs.texi | 37 | ||||
| -rw-r--r-- | man/files.texi | 135 | ||||
| -rw-r--r-- | man/gnus.texi | 2 | ||||
| -rw-r--r-- | man/help.texi | 20 | ||||
| -rw-r--r-- | man/maintaining.texi | 388 | ||||
| -rw-r--r-- | man/makefile.w32-in | 1 | ||||
| -rw-r--r-- | man/mh-e.texi | 284 | ||||
| -rw-r--r-- | man/org.texi | 2 | ||||
| -rw-r--r-- | man/picture.texi | 277 | ||||
| -rw-r--r-- | man/programs.texi | 519 | ||||
| -rw-r--r-- | man/sending.texi | 2 | ||||
| -rw-r--r-- | man/text.texi | 6 |
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 @@ | |||
| 1 | 2006-03-21 Bill Wohler <wohler@newt.com> | ||
| 2 | |||
| 3 | * mh-e.texi (Folders): Various edits. | ||
| 4 | |||
| 5 | 2006-03-20 Romain Francoise <romain@orebokech.com> | ||
| 6 | |||
| 7 | * gnus.texi (Mail Folders): Grammar fix. | ||
| 8 | |||
| 9 | 2006-03-21 Juanma Barranquero <lekktu@gmail.com> | ||
| 10 | |||
| 11 | * files.texi (VC Dired Mode): Remove misplaced brackets. | ||
| 12 | |||
| 13 | 2006-03-21 Andre Spiegel <spiegel@gnu.org> | ||
| 14 | |||
| 15 | * files.texi: Various updates and clarifications in the VC | ||
| 16 | chapter. | ||
| 17 | |||
| 18 | 2006-03-19 Luc Teirlinck <teirllm@auburn.edu> | ||
| 19 | |||
| 20 | * help.texi (Help Mode): Document "C-c C-c". | ||
| 21 | |||
| 22 | 2006-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 | |||
| 29 | 2006-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 | |||
| 37 | 2006-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 | |||
| 42 | 2006-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 | |||
| 63 | 2006-03-15 Carsten Dominik <dominik@science.uva.nl> | ||
| 64 | |||
| 65 | * org.texi: Version number change only. | ||
| 66 | |||
| 1 | 2006-03-14 Bill Wohler <wohler@newt.com> | 67 | 2006-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 | ||
| 74 | 2006-03-06 Bill Wohler <wohler@newt.com> | 140 | 2006-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 | ||
| 80 | 2006-03-03 Reiner Steib <Reiner.Steib@gmx.de> | 147 | 2006-03-03 Reiner Steib <Reiner.Steib@gmx.de> |
| 81 | 148 | ||
| @@ -83,12 +150,12 @@ | |||
| 83 | 150 | ||
| 84 | 2006-03-01 Carsten Dominik <dominik@science.uva.nl> | 151 | 2006-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 | ||
| 94 | 2006-02-28 Andre Spiegel <spiegel@gnu.org> | 161 | 2006-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 | ||
| 160 | 2006-02-21 Nick Roberts <nickrob@snap.net.nz> | 227 | 2006-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 | ||
| 938 | 2005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> | 1005 | 2005-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}, | |||
| 1222 | If one of these functions decides that it applies to a certain date, | 1227 | If one of these functions decides that it applies to a certain date, |
| 1223 | it returns a value that contains @var{mark}. | 1228 | it 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 | ||
| 1236 | modify the same program in two different directions. To recover from | ||
| 1237 | this confusion, you need to merge the two versions. Emerge makes this | ||
| 1238 | easier. For other ways to compare files, see @ref{Comparing Files,,, | ||
| 1239 | emacs, the Emacs Manual} and @ref{Top, Ediff,, ediff, The Ediff | ||
| 1240 | Manual}. | ||
| 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 | ||
| 1263 | Merge two specified files. | ||
| 1264 | |||
| 1265 | @item M-x emerge-files-with-ancestor | ||
| 1266 | @findex emerge-files-with-ancestor | ||
| 1267 | Merge two specified files, with reference to a common ancestor. | ||
| 1268 | |||
| 1269 | @item M-x emerge-buffers | ||
| 1270 | @findex emerge-buffers | ||
| 1271 | Merge two buffers. | ||
| 1272 | |||
| 1273 | @item M-x emerge-buffers-with-ancestor | ||
| 1274 | @findex emerge-buffers-with-ancestor | ||
| 1275 | Merge two buffers with reference to a common ancestor in a third | ||
| 1276 | buffer. | ||
| 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 | ||
| 1282 | comparison in three buffers: one for each input text (the @dfn{A buffer} | ||
| 1283 | and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging | ||
| 1284 | takes place. The merge buffer shows the full merged text, not just the | ||
| 1285 | differences. Wherever the two input texts differ, you can choose which | ||
| 1286 | one of them to include in the merge buffer. | ||
| 1287 | |||
| 1288 | The Emerge commands that take input from existing buffers use only | ||
| 1289 | the 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 | ||
| 1294 | be merged were both derived, Emerge can use it to guess which | ||
| 1295 | alternative is right. Wherever one current version agrees with the | ||
| 1296 | ancestor, Emerge presumes that the other current version is a deliberate | ||
| 1297 | change which should be kept in the merged version. Use the | ||
| 1298 | @samp{with-ancestor} commands if you want to specify a common ancestor | ||
| 1299 | text. These commands read three file or buffer names---variant A, | ||
| 1300 | variant B, and the common ancestor. | ||
| 1301 | |||
| 1302 | After the comparison is done and the buffers are prepared, the | ||
| 1303 | interactive merging starts. You control the merging by typing special | ||
| 1304 | @dfn{merge commands} in the merge buffer (@pxref{Merge Commands}). | ||
| 1305 | For each run of differences between the input texts, you can choose | ||
| 1306 | which one of them to keep, or edit them both together. | ||
| 1307 | |||
| 1308 | The merge buffer uses a special major mode, Emerge mode, with commands | ||
| 1309 | for making these choices. But you can also edit the buffer with | ||
| 1310 | ordinary Emacs commands. | ||
| 1311 | |||
| 1312 | At any given time, the attention of Emerge is focused on one | ||
| 1313 | particular difference, called the @dfn{selected} difference. This | ||
| 1314 | difference is marked off in the three buffers like this: | ||
| 1315 | |||
| 1316 | @example | ||
| 1317 | vvvvvvvvvvvvvvvvvvvv | ||
| 1318 | @var{text that differs} | ||
| 1319 | ^^^^^^^^^^^^^^^^^^^^ | ||
| 1320 | @end example | ||
| 1321 | |||
| 1322 | @noindent | ||
| 1323 | Emerge numbers all the differences sequentially and the mode | ||
| 1324 | line always shows the number of the selected difference. | ||
| 1325 | |||
| 1326 | Normally, the merge buffer starts out with the A version of the text. | ||
| 1327 | But when the A version of a difference agrees with the common ancestor, | ||
| 1328 | then the B version is initially preferred for that difference. | ||
| 1329 | |||
| 1330 | Emerge leaves the merged text in the merge buffer when you exit. At | ||
| 1331 | that point, you can save it in a file with @kbd{C-x C-w}. If you give a | ||
| 1332 | numeric argument to @code{emerge-files} or | ||
| 1333 | @code{emerge-files-with-ancestor}, it reads the name of the output file | ||
| 1334 | using the minibuffer. (This is the last file name those commands read.) | ||
| 1335 | Then 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 | ||
| 1338 | exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not | ||
| 1339 | save 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 | ||
| 1345 | and Edit mode. In Fast mode, basic merge commands are single | ||
| 1346 | characters, but ordinary Emacs commands are disabled. This is | ||
| 1347 | convenient if you use only merge commands. In Edit mode, all merge | ||
| 1348 | commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs | ||
| 1349 | commands are also available. This allows editing the merge buffer, but | ||
| 1350 | slows down Emerge operations. | ||
| 1351 | |||
| 1352 | Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to | ||
| 1353 | Fast mode. The mode line indicates Edit and Fast modes with @samp{E} | ||
| 1354 | and @samp{F}. | ||
| 1355 | |||
| 1356 | Emerge has two additional submodes that affect how particular merge | ||
| 1357 | commands work: Auto Advance mode and Skip Prefers mode. | ||
| 1358 | |||
| 1359 | If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands | ||
| 1360 | advance to the next difference. This lets you go through the merge | ||
| 1361 | faster as long as you simply choose one of the alternatives from the | ||
| 1362 | input. 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 | ||
| 1365 | skip over differences in states prefer-A and prefer-B (@pxref{State of | ||
| 1366 | Difference}). Thus you see only differences for which neither version | ||
| 1367 | is 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 | ||
| 1373 | clear Auto Advance mode. Use @kbd{s s} | ||
| 1374 | (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode. | ||
| 1375 | These commands turn on the mode with a positive argument, turns it off | ||
| 1376 | with 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 | ||
| 1386 | The difference is showing the A version. The @kbd{a} command always | ||
| 1387 | produces this state; the mode line indicates it with @samp{A}. | ||
| 1388 | |||
| 1389 | @item B | ||
| 1390 | The difference is showing the B version. The @kbd{b} command always | ||
| 1391 | produces this state; the mode line indicates it with @samp{B}. | ||
| 1392 | |||
| 1393 | @item default-A | ||
| 1394 | @itemx default-B | ||
| 1395 | The difference is showing the A or the B state by default, because you | ||
| 1396 | haven'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 | ||
| 1398 | which one alternative is ``preferred'' (see below). | ||
| 1399 | |||
| 1400 | When you select a difference, its state changes from default-A or | ||
| 1401 | default-B to plain A or B. Thus, the selected difference never has | ||
| 1402 | state default-A or default-B, and these states are never displayed in | ||
| 1403 | the mode line. | ||
| 1404 | |||
| 1405 | The command @kbd{d a} chooses default-A as the default state, and @kbd{d | ||
| 1406 | b} chooses default-B. This chosen default applies to all differences | ||
| 1407 | which you haven't ever selected and for which no alternative is preferred. | ||
| 1408 | If you are moving through the merge sequentially, the differences you | ||
| 1409 | haven't selected are those following the selected one. Thus, while | ||
| 1410 | moving sequentially, you can effectively make the A version the default | ||
| 1411 | for some sections of the merge buffer and the B version the default for | ||
| 1412 | others by using @kbd{d a} and @kbd{d b} between sections. | ||
| 1413 | |||
| 1414 | @item prefer-A | ||
| 1415 | @itemx prefer-B | ||
| 1416 | The difference is showing the A or B state because it is | ||
| 1417 | @dfn{preferred}. This means that you haven't made an explicit choice, | ||
| 1418 | but one alternative seems likely to be right because the other | ||
| 1419 | alternative agrees with the common ancestor. Thus, where the A buffer | ||
| 1420 | agrees with the common ancestor, the B version is preferred, because | ||
| 1421 | chances are it is the one that was actually changed. | ||
| 1422 | |||
| 1423 | These two states are displayed in the mode line as @samp{A*} and @samp{B*}. | ||
| 1424 | |||
| 1425 | @item combined | ||
| 1426 | The difference is showing a combination of the A and B states, as a | ||
| 1427 | result of the @kbd{x c} or @kbd{x C} commands. | ||
| 1428 | |||
| 1429 | Once a difference is in this state, the @kbd{a} and @kbd{b} commands | ||
| 1430 | don't do anything to it unless you give them a numeric argument. | ||
| 1431 | |||
| 1432 | The 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 | ||
| 1439 | with @kbd{C-c C-c}: | ||
| 1440 | |||
| 1441 | @table @kbd | ||
| 1442 | @item p | ||
| 1443 | Select the previous difference. | ||
| 1444 | |||
| 1445 | @item n | ||
| 1446 | Select the next difference. | ||
| 1447 | |||
| 1448 | @item a | ||
| 1449 | Choose the A version of this difference. | ||
| 1450 | |||
| 1451 | @item b | ||
| 1452 | Choose the B version of this difference. | ||
| 1453 | |||
| 1454 | @item C-u @var{n} j | ||
| 1455 | Select difference number @var{n}. | ||
| 1456 | |||
| 1457 | @item . | ||
| 1458 | Select the difference containing point. You can use this command in the | ||
| 1459 | merge buffer or in the A or B buffer. | ||
| 1460 | |||
| 1461 | @item q | ||
| 1462 | Quit---finish the merge. | ||
| 1463 | |||
| 1464 | @item C-] | ||
| 1465 | Abort---exit merging and do not save the output. | ||
| 1466 | |||
| 1467 | @item f | ||
| 1468 | Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.) | ||
| 1469 | |||
| 1470 | @item e | ||
| 1471 | Go into Edit mode. | ||
| 1472 | |||
| 1473 | @item l | ||
| 1474 | Recenter (like @kbd{C-l}) all three windows. | ||
| 1475 | |||
| 1476 | @item - | ||
| 1477 | Specify part of a prefix numeric argument. | ||
| 1478 | |||
| 1479 | @item @var{digit} | ||
| 1480 | Also specify part of a prefix numeric argument. | ||
| 1481 | |||
| 1482 | @item d a | ||
| 1483 | Choose the A version as the default from here down in | ||
| 1484 | the merge buffer. | ||
| 1485 | |||
| 1486 | @item d b | ||
| 1487 | Choose the B version as the default from here down in | ||
| 1488 | the merge buffer. | ||
| 1489 | |||
| 1490 | @item c a | ||
| 1491 | Copy the A version of this difference into the kill ring. | ||
| 1492 | |||
| 1493 | @item c b | ||
| 1494 | Copy the B version of this difference into the kill ring. | ||
| 1495 | |||
| 1496 | @item i a | ||
| 1497 | Insert the A version of this difference at point. | ||
| 1498 | |||
| 1499 | @item i b | ||
| 1500 | Insert the B version of this difference at point. | ||
| 1501 | |||
| 1502 | @item m | ||
| 1503 | Put point and mark around the difference. | ||
| 1504 | |||
| 1505 | @item ^ | ||
| 1506 | Scroll all three windows down (like @kbd{M-v}). | ||
| 1507 | |||
| 1508 | @item v | ||
| 1509 | Scroll all three windows up (like @kbd{C-v}). | ||
| 1510 | |||
| 1511 | @item < | ||
| 1512 | Scroll all three windows left (like @kbd{C-x <}). | ||
| 1513 | |||
| 1514 | @item > | ||
| 1515 | Scroll all three windows right (like @kbd{C-x >}). | ||
| 1516 | |||
| 1517 | @item | | ||
| 1518 | Reset horizontal scroll on all three windows. | ||
| 1519 | |||
| 1520 | @item x 1 | ||
| 1521 | Shrink the merge window to one line. (Use @kbd{C-u l} to restore it | ||
| 1522 | to full size.) | ||
| 1523 | |||
| 1524 | @item x c | ||
| 1525 | Combine the two versions of this difference (@pxref{Combining in | ||
| 1526 | Emerge}). | ||
| 1527 | |||
| 1528 | @item x f | ||
| 1529 | Show the names of the files/buffers Emerge is operating on, in a Help | ||
| 1530 | window. (Use @kbd{C-u l} to restore windows.) | ||
| 1531 | |||
| 1532 | @item x j | ||
| 1533 | Join this difference with the following one. | ||
| 1534 | (@kbd{C-u x j} joins this difference with the previous one.) | ||
| 1535 | |||
| 1536 | @item x s | ||
| 1537 | Split this difference into two differences. Before you use this | ||
| 1538 | command, position point in each of the three buffers at the place where | ||
| 1539 | you want to split the difference. | ||
| 1540 | |||
| 1541 | @item x t | ||
| 1542 | Trim identical lines off the top and bottom of the difference. | ||
| 1543 | Such lines occur when the A and B versions are | ||
| 1544 | identical 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 | ||
| 1551 | the results into the output file if you specified one. It restores the | ||
| 1552 | A and B buffers to their proper contents, or kills them if they were | ||
| 1553 | created by Emerge and you haven't changed them. It also disables the | ||
| 1554 | Emerge commands in the merge buffer, since executing them later could | ||
| 1555 | damage the contents of the various buffers. | ||
| 1556 | |||
| 1557 | @kbd{C-]} aborts the merge. This means exiting without writing the | ||
| 1558 | output file. If you didn't specify an output file, then there is no | ||
| 1559 | real difference between aborting and finishing the merge. | ||
| 1560 | |||
| 1561 | If the Emerge command was called from another Lisp program, then its | ||
| 1562 | return value is @code{t} for successful completion, or @code{nil} if you | ||
| 1563 | abort. | ||
| 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 | ||
| 1569 | difference. To do this, use @kbd{x c}, which edits the merge buffer | ||
| 1570 | like 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 | ||
| 1584 | While this example shows C preprocessor conditionals delimiting the two | ||
| 1585 | alternative versions, you can specify the strings to use by setting | ||
| 1586 | the variable @code{emerge-combine-versions-template} to a string of your | ||
| 1587 | choice. 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 | ||
| 1589 | produces 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. | ||
| 1601 | Emerge modifies them temporarily, but ultimately puts them back the way | ||
| 1602 | they were. | ||
| 1603 | |||
| 1604 | You can have any number of merges going at once---just don't use any one | ||
| 1605 | buffer as input to more than one merge at once, since the temporary | ||
| 1606 | changes 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 | ||
| 1609 | files fully. Emacs can't do anything else until @code{diff} finishes. | ||
| 1610 | Perhaps in the future someone will change Emerge to do the comparison in | ||
| 1611 | the background when the input files are large---then you could keep on | ||
| 1612 | doing other things with Emacs until Emerge is ready to accept | ||
| 1613 | commands. | ||
| 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 | ||
| 1626 | of the division of a register into fields, as a comment in a program), | ||
| 1627 | use 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 | ||
| 1630 | text, according to which the text characters lie studded on an area that | ||
| 1631 | stretches infinitely far to the right and downward. The concept of the end | ||
| 1632 | of a line does not exist in this model; the most you can say is where the | ||
| 1633 | last nonblank character on the line is found. | ||
| 1634 | |||
| 1635 | Of course, Emacs really always considers text as a sequence of | ||
| 1636 | characters, and lines really do have ends. But Picture mode replaces | ||
| 1637 | the most frequently-used commands with variants that simulate the | ||
| 1638 | quarter-plane model of text. They do this by inserting spaces or by | ||
| 1639 | converting tabs to spaces. | ||
| 1640 | |||
| 1641 | Most of the basic editing commands of Emacs are redefined by Picture mode | ||
| 1642 | to do essentially the same thing but in a quarter-plane way. In addition, | ||
| 1643 | Picture mode defines various keys starting with the @kbd{C-c} prefix to | ||
| 1644 | run special picture editing commands. | ||
| 1645 | |||
| 1646 | One of these keys, @kbd{C-c C-c}, is particularly important. Often a | ||
| 1647 | picture is part of a larger file that is usually edited in some other | ||
| 1648 | major mode. @kbd{M-x edit-picture} records the name of the previous | ||
| 1649 | major 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} | ||
| 1651 | also deletes spaces from the ends of lines, unless given a numeric | ||
| 1652 | argument. | ||
| 1653 | |||
| 1654 | The special commands of Picture mode all work in other modes (provided | ||
| 1655 | the @file{picture} library is loaded), but are not bound to keys except | ||
| 1656 | in Picture mode. The descriptions below talk of moving ``one column'' | ||
| 1657 | and so on, but all the picture mode commands handle numeric arguments as | ||
| 1658 | their normal equivalents do. | ||
| 1659 | |||
| 1660 | @vindex picture-mode-hook | ||
| 1661 | Turning on Picture mode runs the hook @code{picture-mode-hook}. | ||
| 1662 | Additional 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 | ||
| 1683 | do it in a quarter-plane style. For example, @kbd{C-f} is rebound to | ||
| 1684 | run @code{picture-forward-column}, a command which moves point one | ||
| 1685 | column to the right, inserting a space if necessary so that the actual | ||
| 1686 | end of the line makes no difference. @kbd{C-b} is rebound to run | ||
| 1687 | @code{picture-backward-column}, which always moves point left one | ||
| 1688 | column, 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 | ||
| 1691 | as 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 | ||
| 1693 | nonblank character on the line. There is no need to change @kbd{C-a}, | ||
| 1694 | as the choice of screen model does not affect beginnings of | ||
| 1695 | lines. | ||
| 1696 | |||
| 1697 | @findex picture-newline | ||
| 1698 | Insertion of text is adapted to the quarter-plane screen model | ||
| 1699 | through the use of Overwrite mode (@pxref{Minor Modes,,, emacs, the | ||
| 1700 | Emacs Manual}.) Self-inserting characters replace existing text, | ||
| 1701 | column by column, rather than pushing existing text to the right. | ||
| 1702 | @key{RET} runs @code{picture-newline}, which just moves to the | ||
| 1703 | beginning of the following line so that new text will replace that | ||
| 1704 | line. | ||
| 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, | ||
| 1710 | instead erase text (replacing it with spaces). @key{DEL} | ||
| 1711 | (@code{picture-backward-clear-column}) replaces the preceding | ||
| 1712 | character with a space rather than removing it; this moves point | ||
| 1713 | backwards. @kbd{C-d} (@code{picture-clear-column}) replaces the next | ||
| 1714 | character or characters with spaces, but does not move point. (If you | ||
| 1715 | want to clear characters to spaces and move forward over them, use | ||
| 1716 | @key{SPC}.) @kbd{C-k} (@code{picture-clear-line}) really kills the | ||
| 1717 | contents 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 | ||
| 1722 | line; it never splits a line. @kbd{C-M-o} (@code{split-line}) makes | ||
| 1723 | sense in Picture mode, so it is not changed. @kbd{C-j} | ||
| 1724 | (@code{picture-duplicate-line}) inserts another line with the same | ||
| 1725 | contents 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 | ||
| 1730 | modes), or one of the picture rectangle commands (@pxref{Rectangles in | ||
| 1731 | Picture}). | ||
| 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 | ||
| 1753 | point, there is no essential restriction on how point should be moved. | ||
| 1754 | Normally point moves right, but you can specify any of the eight | ||
| 1755 | orthogonal or diagonal directions for motion after a ``self-inserting'' | ||
| 1756 | character. This is useful for drawing lines in the buffer. | ||
| 1757 | |||
| 1758 | @table @kbd | ||
| 1759 | @item C-c < | ||
| 1760 | @itemx C-c @key{LEFT} | ||
| 1761 | Move left after insertion (@code{picture-movement-left}). | ||
| 1762 | @item C-c > | ||
| 1763 | @itemx C-c @key{RIGHT} | ||
| 1764 | Move right after insertion (@code{picture-movement-right}). | ||
| 1765 | @item C-c ^ | ||
| 1766 | @itemx C-c @key{UP} | ||
| 1767 | Move up after insertion (@code{picture-movement-up}). | ||
| 1768 | @item C-c . | ||
| 1769 | @itemx C-c @key{DOWN} | ||
| 1770 | Move down after insertion (@code{picture-movement-down}). | ||
| 1771 | @item C-c ` | ||
| 1772 | @itemx C-c @key{HOME} | ||
| 1773 | Move up and left (``northwest'') after insertion (@code{picture-movement-nw}). | ||
| 1774 | @item C-c ' | ||
| 1775 | @itemx C-c @key{PAGEUP} | ||
| 1776 | Move up and right (``northeast'') after insertion | ||
| 1777 | (@code{picture-movement-ne}). | ||
| 1778 | @item C-c / | ||
| 1779 | @itemx C-c @key{END} | ||
| 1780 | Move down and left (``southwest'') after insertion | ||
| 1781 | @*(@code{picture-movement-sw}). | ||
| 1782 | @item C-c \ | ||
| 1783 | @itemx C-c @key{PAGEDOWN} | ||
| 1784 | Move 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 | ||
| 1793 | direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the | ||
| 1794 | same direction as motion after ``insertion'' currently does, while @kbd{C-c | ||
| 1795 | C-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. | ||
| 1805 | With no argument, it moves to a point underneath the next | ||
| 1806 | ``interesting'' character that follows whitespace in the previous | ||
| 1807 | nonblank line. ``Next'' here means ``appearing at a horizontal position | ||
| 1808 | greater 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 | ||
| 1810 | character in the current line. @kbd{M-@key{TAB}} does not change the | ||
| 1811 | text; it only moves point. ``Interesting'' characters are defined by | ||
| 1812 | the variable @code{picture-tab-chars}, which should define a set of | ||
| 1813 | characters. The syntax for this variable is like the syntax used inside | ||
| 1814 | of @samp{[@dots{}]} in a regular expression---but without the @samp{[} | ||
| 1815 | and 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 | ||
| 1819 | current 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 | ||
| 1821 | argument 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 | ||
| 1826 | together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}). | ||
| 1827 | This command sets the tab stops to the positions which @kbd{M-@key{TAB}} | ||
| 1828 | would consider significant in the current line. The use of this command, | ||
| 1829 | together 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 | ||
| 1833 | pictures. For example, this prevents @kbd{C-x @key{TAB}} from messing | ||
| 1834 | up 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 | ||
| 1843 | the text in ways that fit with the quarter-plane model. The standard | ||
| 1844 | rectangle commands may also be useful. @xref{Rectangles,,, emacs, the | ||
| 1845 | Emacs Manual}. | ||
| 1846 | |||
| 1847 | @table @kbd | ||
| 1848 | @item C-c C-k | ||
| 1849 | Clear out the region-rectangle with spaces | ||
| 1850 | (@code{picture-clear-rectangle}). With argument, delete the text. | ||
| 1851 | @item C-c C-w @var{r} | ||
| 1852 | Similar, but save rectangle contents in register @var{r} first | ||
| 1853 | (@code{picture-clear-rectangle-to-register}). | ||
| 1854 | @item C-c C-y | ||
| 1855 | Copy last killed rectangle into the buffer by overwriting, with upper | ||
| 1856 | left corner at point (@code{picture-yank-rectangle}). With argument, | ||
| 1857 | insert instead. | ||
| 1858 | @item C-c C-x @var{r} | ||
| 1859 | Similar, 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 | ||
| 1870 | rectangle commands in that they normally clear the rectangle instead of | ||
| 1871 | deleting it; this is analogous with the way @kbd{C-d} is changed in Picture | ||
| 1872 | mode. | ||
| 1873 | |||
| 1874 | However, deletion of rectangles can be useful in Picture mode, so | ||
| 1875 | these commands delete the rectangle if given a numeric argument. | ||
| 1876 | @kbd{C-c C-k} either with or without a numeric argument saves the | ||
| 1877 | rectangle 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 | ||
| 1884 | standard ones in that they overwrite instead of inserting. This is | ||
| 1885 | the same way that Picture mode insertion of other text differs from | ||
| 1886 | other 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 | ||
| 1889 | likewise 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 | ||
| 1897 | and subprograms, and indentation commands that understand Fortran | ||
| 1898 | conventions of nesting, line numbers and continuation statements. | ||
| 1899 | Fortran mode has support for Auto Fill mode that breaks long lines into | ||
| 1900 | proper Fortran continuation lines. | ||
| 1901 | |||
| 1902 | Special commands for comments are provided because Fortran comments | ||
| 1903 | are unlike those of other languages. Built-in abbrevs optionally save | ||
| 1904 | typing when you insert Fortran keywords. | ||
| 1905 | |||
| 1906 | Use @kbd{M-x fortran-mode} to switch to this major mode. This | ||
| 1907 | command runs the hook @code{fortran-mode-hook}. @xref{Hooks,,, emacs, | ||
| 1908 | the 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 | ||
| 1915 | Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}). | ||
| 1916 | Emacs 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 | ||
| 1934 | modules for F90 mode), Fortran mode provides special commands to move by | ||
| 1935 | statements 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 | ||
| 1942 | Move 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 | ||
| 1949 | Move to the beginning of the previous statement | ||
| 1950 | (@code{fortran-previous-statement}/@code{f90-previous-statement}). | ||
| 1951 | If there is no previous statement (i.e. if called from the first | ||
| 1952 | statement 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 | ||
| 1957 | Move 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 | ||
| 1960 | for F90 mode only, not Fortran mode. With a numeric argument, this | ||
| 1961 | moves 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 | ||
| 1966 | Move point backward to the previous code block | ||
| 1967 | (@code{f90-previous-block}). This is like @code{f90-next-block}, but | ||
| 1968 | moves 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 | ||
| 1974 | Move to the end of the current code block | ||
| 1975 | (@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric | ||
| 1976 | agument, move forward that number of blocks. The mark is set before | ||
| 1977 | moving point. The F90 mode version of this command checks for | ||
| 1978 | consistency of block types and labels (if present), but it does not | ||
| 1979 | check 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 | ||
| 1985 | Move to the start of the current code block | ||
| 1986 | (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This | ||
| 1987 | is 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 | ||
| 1994 | order to make sure various syntactic entities (line numbers, comment line | ||
| 1995 | indicators and continuation line flags) appear in the columns that are | ||
| 1996 | required 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 | ||
| 2011 | Break the current line at point and set up a continuation line | ||
| 2012 | (@code{fortran-split-line}). | ||
| 2013 | @item M-^ | ||
| 2014 | Join this line to the previous line (@code{fortran-join-line}). | ||
| 2015 | @item C-M-q | ||
| 2016 | Indent all the lines of the subprogram point is in | ||
| 2017 | (@code{fortran-indent-subprogram}). | ||
| 2018 | @item M-q | ||
| 2019 | Fill 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 | ||
| 2025 | to reindent all the lines of the Fortran subprogram (function or | ||
| 2026 | subroutine) 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 | ||
| 2031 | a line in the appropriate fashion for Fortran. In a non-comment line, | ||
| 2032 | the second half becomes a continuation line and is indented | ||
| 2033 | accordingly. In a comment line, both halves become separate comment | ||
| 2034 | lines. | ||
| 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}, | ||
| 2040 | which joins a continuation line back to the previous line, roughly as | ||
| 2041 | the inverse of @code{fortran-split-line}. The point must be on a | ||
| 2042 | continuation 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 | ||
| 2046 | point 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. | ||
| 2054 | If the first non-space character on a line is in column 5, then that | ||
| 2055 | line is a continuation of the previous line. We call this @dfn{fixed | ||
| 2056 | format}. (In GNU Emacs we always count columns from 0; but note that | ||
| 2057 | the Fortran standard counts from 1.) The variable | ||
| 2058 | @code{fortran-continuation-string} specifies what character to put in | ||
| 2059 | column 5. A line that starts with a tab character followed by any digit | ||
| 2060 | except @samp{0} is also a continuation line. We call this style of | ||
| 2061 | continuation @dfn{tab format}. (Fortran90 introduced ``free format'', | ||
| 2062 | with 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 | ||
| 2068 | enter Fortran mode, it tries to deduce the proper continuation style | ||
| 2069 | automatically from the buffer contents. It does this by scanning up to | ||
| 2070 | @code{fortran-analyze-depth} (default 100) lines from the start of the | ||
| 2071 | buffer. The first line that begins with either a tab character or six | ||
| 2072 | spaces determines the choice. If the scan fails (for example, if the | ||
| 2073 | buffer is new and therefore empty), the value of | ||
| 2074 | @code{fortran-tab-mode-default} (@code{nil} for fixed format, and | ||
| 2075 | non-@code{nil} for tab format) is used. @samp{/t} in the mode line | ||
| 2076 | indicates 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 | ||
| 2081 | 5, Fortran mode treats it as a continuation line. When you indent a | ||
| 2082 | continuation line with @key{TAB}, it converts the line to the current | ||
| 2083 | continuation style. When you split a Fortran statement with | ||
| 2084 | @kbd{C-M-j}, the continuation marker on the newline is created according | ||
| 2085 | to the continuation style. | ||
| 2086 | |||
| 2087 | The setting of continuation style affects several other aspects of | ||
| 2088 | editing in Fortran mode. In fixed format mode, the minimum column | ||
| 2089 | number for the body of a statement is 6. Lines inside of Fortran | ||
| 2090 | blocks that are indented to larger column numbers always use only the | ||
| 2091 | space character for whitespace. In tab format mode, the minimum | ||
| 2092 | column number for the statement body is 8, and the whitespace before | ||
| 2093 | column 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 | ||
| 2099 | indentation assumes it is a line number and moves it to columns 0 | ||
| 2100 | through 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. | ||
| 2104 | The variable @code{fortran-line-number-indent} controls this; it | ||
| 2105 | specifies the maximum indentation a line number can have. The default | ||
| 2106 | value of the variable is 1. Fortran mode tries to prevent line number | ||
| 2107 | digits passing column 4, reducing the indentation below the specified | ||
| 2108 | maximum if necessary. If @code{fortran-line-number-indent} has the | ||
| 2109 | value 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 | ||
| 2113 | these rules. As each digit is inserted, the indentation is recomputed. | ||
| 2114 | To 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 | ||
| 2122 | the task of understanding a Fortran program well enough to indent it | ||
| 2123 | properly: | ||
| 2124 | |||
| 2125 | @itemize @bullet | ||
| 2126 | @item | ||
| 2127 | Two nested @samp{do} loops never share a @samp{continue} statement. | ||
| 2128 | |||
| 2129 | @item | ||
| 2130 | Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do} | ||
| 2131 | and others are written without embedded whitespace or line breaks. | ||
| 2132 | |||
| 2133 | Fortran compilers generally ignore whitespace outside of string | ||
| 2134 | constants, but Fortran mode does not recognize these keywords if they | ||
| 2135 | are not contiguous. Constructs such as @samp{else if} or @samp{end do} | ||
| 2136 | are acceptable, but the second word should be on the same line as the | ||
| 2137 | first and not on a continuation line. | ||
| 2138 | @end itemize | ||
| 2139 | |||
| 2140 | @noindent | ||
| 2141 | If you fail to follow these conventions, the indentation commands may | ||
| 2142 | indent some lines unaesthetically. However, a correct Fortran program | ||
| 2143 | retains its meaning when reindented even if the conventions are not | ||
| 2144 | followed. | ||
| 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 | ||
| 2159 | Extra indentation within each level of @samp{do} statement (default 3). | ||
| 2160 | |||
| 2161 | @item fortran-if-indent | ||
| 2162 | Extra indentation within each level of @samp{if}, @samp{select case}, or | ||
| 2163 | @samp{where} statements (default 3). | ||
| 2164 | |||
| 2165 | @item fortran-structure-indent | ||
| 2166 | Extra indentation within each level of @samp{structure}, @samp{union}, | ||
| 2167 | @samp{map}, or @samp{interface} statements (default 3). | ||
| 2168 | |||
| 2169 | @item fortran-continuation-indent | ||
| 2170 | Extra indentation for bodies of continuation lines (default 5). | ||
| 2171 | |||
| 2172 | @item fortran-check-all-num-for-matching-do | ||
| 2173 | In Fortran77, a numbered @samp{do} statement is ended by any statement | ||
| 2174 | with 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 | ||
| 2176 | non-@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 | ||
| 2178 | a @samp{continue} line (or if you use the more modern @samp{enddo}), | ||
| 2179 | then 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 | ||
| 2183 | If this is @code{t}, indenting an @samp{endif} (or @samp{enddo} | ||
| 2184 | statement 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 | ||
| 2188 | Minimum indentation for Fortran statements when using fixed format | ||
| 2189 | continuation line style. Statement bodies are never indented less than | ||
| 2190 | this much. The default is 6. | ||
| 2191 | |||
| 2192 | @item fortran-minimum-statement-indent-tab | ||
| 2193 | Minimum indentation for Fortran statements for tab format continuation line | ||
| 2194 | style. Statement bodies are never indented less than this much. The | ||
| 2195 | default is 8. | ||
| 2196 | @end table | ||
| 2197 | |||
| 2198 | The variables controlling the indentation of comments are described in | ||
| 2199 | the 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 | ||
| 2205 | line of code. In Fortran77, the standard comment syntax requires an | ||
| 2206 | entire line to be just a comment. Therefore, Fortran mode replaces the | ||
| 2207 | standard 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 | ||
| 2211 | start with @samp{!} and can follow other text. Because only some Fortran77 | ||
| 2212 | compilers accept this syntax, Fortran mode will not insert such comments | ||
| 2213 | unless 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-; | ||
| 2218 | Align comment or insert new comment (@code{fortran-indent-comment}). | ||
| 2219 | |||
| 2220 | @item C-x ; | ||
| 2221 | Applies to nonstandard @samp{!} comments only. | ||
| 2222 | |||
| 2223 | @item C-c ; | ||
| 2224 | Turn all lines of the region into comments, or (with argument) turn them back | ||
| 2225 | into 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 | ||
| 2231 | recognizes any kind of existing comment and aligns its text appropriately; | ||
| 2232 | if there is no existing comment, a comment is inserted and aligned. But | ||
| 2233 | inserting and aligning comments are not the same in Fortran mode as in | ||
| 2234 | other modes. | ||
| 2235 | |||
| 2236 | When a new comment must be inserted, if the current line is blank, a | ||
| 2237 | full-line comment is inserted. On a non-blank line, a nonstandard @samp{!} | ||
| 2238 | comment is inserted if you have said you want to use them. Otherwise a | ||
| 2239 | full-line comment is inserted on a new line before the current line. | ||
| 2240 | |||
| 2241 | Nonstandard @samp{!} comments are aligned like comments in other | ||
| 2242 | languages, but full-line comments are different. In a standard full-line | ||
| 2243 | comment, the comment delimiter itself must always appear in column zero. | ||
| 2244 | What can be aligned is the text within the comment. You can choose from | ||
| 2245 | three 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 | ||
| 2252 | Align the text at a fixed column, which is the sum of | ||
| 2253 | @code{fortran-comment-line-extra-indent} and the minimum statement | ||
| 2254 | indentation. This is the default. | ||
| 2255 | |||
| 2256 | The minimum statement indentation is | ||
| 2257 | @code{fortran-minimum-statement-indent-fixed} for fixed format | ||
| 2258 | continuation line style and @code{fortran-minimum-statement-indent-tab} | ||
| 2259 | for tab format style. | ||
| 2260 | |||
| 2261 | @item relative | ||
| 2262 | Align 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 | ||
| 2266 | Don'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 | ||
| 2271 | full-line comments by setting the variable | ||
| 2272 | @code{fortran-comment-indent-char} to the single-character string you want | ||
| 2273 | to use. | ||
| 2274 | |||
| 2275 | @vindex fortran-directive-re | ||
| 2276 | Compiler directive lines, or preprocessor lines, have much the same | ||
| 2277 | appearance as comment lines. It is important, though, that such lines | ||
| 2278 | never 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 | ||
| 2281 | lines are directives. Matching lines are never indented, and receive | ||
| 2282 | distinctive font-locking. | ||
| 2283 | |||
| 2284 | The normal Emacs comment command @kbd{C-x ;} has not been redefined. If | ||
| 2285 | you use @samp{!} comments, this command can be used with them. Otherwise | ||
| 2286 | it 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 | ||
| 2292 | lines of the region into comments by inserting the string @samp{C$$$} at | ||
| 2293 | the front of each one. With a numeric argument, it turns the region | ||
| 2294 | back into live code by deleting @samp{C$$$} from the front of each line | ||
| 2295 | in it. The string used for these comments can be controlled by setting | ||
| 2296 | the variable @code{fortran-comment-region}. Note that here we have an | ||
| 2297 | example of a command and a variable with the same name; these two uses | ||
| 2298 | of the name never conflict because in Lisp and in Emacs it is always | ||
| 2299 | clear 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 | ||
| 2305 | minor mode that automatically splits statements as you insert them | ||
| 2306 | when they become too wide. Splitting a statement involves making | ||
| 2307 | continuation 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 | ||
| 2310 | indentation commands. You activate Auto Fill in Fortran mode in the | ||
| 2311 | normal 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 | ||
| 2315 | longer than the desired width (the value of @code{fill-column}). The | ||
| 2316 | delimiters (besides whitespace) that Auto Fill can break at are | ||
| 2317 | @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>}, | ||
| 2318 | and @samp{,}. The line break comes after the delimiter if the | ||
| 2319 | variable @code{fortran-break-before-delimiters} is @code{nil}. | ||
| 2320 | Otherwise (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,,, | ||
| 2324 | emacs, the Emacs Manual}. | ||
| 2325 | |||
| 2326 | @node Fortran Columns | ||
| 2327 | @section Checking Columns in Fortran | ||
| 2328 | |||
| 2329 | @table @kbd | ||
| 2330 | @item C-c C-r | ||
| 2331 | Display a ``column ruler'' momentarily above the current line | ||
| 2332 | (@code{fortran-column-ruler}). | ||
| 2333 | @item C-c C-w | ||
| 2334 | Split the current window horizontally temporarily so that it is 72 | ||
| 2335 | columns wide (@code{fortran-window-create-momentarily}). This may | ||
| 2336 | help you avoid making lines longer than the 72-character limit that | ||
| 2337 | some Fortran compilers impose. | ||
| 2338 | @item C-u C-c C-w | ||
| 2339 | Split 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 | ||
| 2342 | Delete 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 | ||
| 2348 | ruler momentarily above the current line. The comment ruler is two lines | ||
| 2349 | of text that show you the locations of columns with special significance in | ||
| 2350 | Fortran programs. Square brackets show the limits of the columns for line | ||
| 2351 | numbers, and curly brackets show the limits of the columns for the | ||
| 2352 | statement body. Column numbers appear above them. | ||
| 2353 | |||
| 2354 | Note that the column numbers count from zero, as always in GNU Emacs. | ||
| 2355 | As a result, the numbers may be one less than those you are familiar | ||
| 2356 | with; but the positions they indicate in the line are standard for | ||
| 2357 | Fortran. | ||
| 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 | ||
| 2362 | variable @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. | ||
| 2365 | Otherwise, the value of the variable @code{fortran-column-ruler-tab} is | ||
| 2366 | displayed. By changing these variables, you can change the column ruler | ||
| 2367 | display. | ||
| 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 | ||
| 2372 | splits the current window horizontally, making a window 72 columns | ||
| 2373 | wide, so you can see any lines that are too long. Type a space to | ||
| 2374 | restore 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 | ||
| 2379 | the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x | ||
| 2380 | fortran-window-create}). By editing in this window you can | ||
| 2381 | immediately 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 | ||
| 2385 | column 72 and beyond, on all lines in the current buffer. This is the | ||
| 2386 | easiest 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 | ||
| 2392 | declarations. These are the same sort of abbrev that you can define | ||
| 2393 | yourself. 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 | ||
| 2397 | semicolon. You cannot normally use semicolon in an abbrev, but Fortran | ||
| 2398 | mode makes this possible by changing the syntax of semicolon to ``word | ||
| 2399 | constituent.'' | ||
| 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 | ||
| 2403 | character such as a space or a newline, the @samp{;c} expands automatically | ||
| 2404 | to @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 | ||
| 2407 | Fortran 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 | |||
| 103 | Outline Mode | 103 | Outline Mode |
| 104 | @TeX{} Mode | 104 | @TeX{} Mode |
| 105 | Formatted Text | 105 | Formatted Text |
| 106 | Fortran Mode | ||
| 107 | Fortran Indentation | ||
| 108 | Shell Command History | 106 | Shell Command History |
| 109 | 107 | ||
| 110 | The ones for Dired and Rmail have had the items turned into :: items | 108 | The 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 | ||
| 531 | Top-Level Definitions, or Defuns | 526 | Top-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 | ||
| 575 | Fortran 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 | |||
| 584 | Compiling and Testing Programs | 570 | Compiling 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 | ||
| 620 | Tags Tables | 605 | Tags 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 | ||
| 630 | Merging 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 | |||
| 643 | Abbrevs | 615 | Abbrevs |
| 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 | ||
| 653 | Editing 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 | |||
| 661 | Sending Mail | 625 | Sending 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. | |||
| 1290 | VC compensates for certain features missing in SCCS (snapshots, for | 1290 | VC compensates for certain features missing in SCCS (snapshots, for |
| 1291 | example) by implementing them itself, but some other VC features, such | 1291 | example) by implementing them itself, but some other VC features, such |
| 1292 | as multiple branches, are not available with SCCS. Since SCCS is | 1292 | as multiple branches, are not available with SCCS. Since SCCS is |
| 1293 | non-free, not respecting its users freedom,d, you should not use it; | 1293 | non-free, not respecting its users freedom, you should not use it; |
| 1294 | use its free replacement CSSC instead. But you should use CSSC only | 1294 | use its free replacement CSSC instead. But you should use CSSC only |
| 1295 | if for some reason you cannot use RCS, or one of the higher-level | 1295 | if for some reason you cannot use RCS, or one of the higher-level |
| 1296 | systems such as CVS or GNU Arch. | 1296 | systems such as CVS or GNU Arch. |
| @@ -1611,8 +1611,8 @@ Examine version @var{version} of the visited file, in a buffer of its | |||
| 1611 | own. | 1611 | own. |
| 1612 | 1612 | ||
| 1613 | @item C-x v = | 1613 | @item C-x v = |
| 1614 | Compare the current buffer contents with the latest checked-in version | 1614 | Compare the current buffer contents with the master version from which |
| 1615 | of the file. | 1615 | you 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} |
| 1618 | Compare the specified two versions of @var{file}. | 1618 | Compare 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, |
| 1636 | with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =} | 1636 | with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =} |
| 1637 | compares the current buffer contents (saving them in the file if | 1637 | compares the current buffer contents (saving them in the file if |
| 1638 | necessary) with the last checked-in version of the file. @kbd{C-u C-x | 1638 | necessary) with the master version from which you started editing the |
| 1639 | v =}, with a numeric argument, reads a file name and two version | 1639 | file (this is not necessarily the latest version of the file). |
| 1640 | numbers, 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 |
| 1641 | forms display the output in a special buffer in another window. | 1641 | version numbers, then compares those versions of the specified file. |
| 1642 | Both 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 |
| 1644 | specifies the current contents of the work file (which may be different | 1645 | specifies 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 |
| 1673 | per-line version information and using colors to enhance the visual | 1674 | per-line version information and using colors to enhance the visual |
| 1674 | appearance, with the command @kbd{M-x vc-annotate}. | 1675 | appearance, with the command @kbd{M-x vc-annotate}. |
| 1675 | It creates a new buffer (the ``annotate buffer'') displaying the | 1676 | It creates a new buffer (the ``annotate buffer'') displaying the |
| @@ -1720,7 +1721,7 @@ line. | |||
| 1720 | @item W | 1721 | @item W |
| 1721 | Annotate the workfile version--the one you are editing. If you used | 1722 | Annotate 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 |
| 1723 | return to the latest version. | 1724 | return 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 |
| 1843 | Revert the buffer and the file to the last checked-in version. | 1844 | Revert the buffer and the file to the version from which you started |
| 1845 | editing the file. | ||
| 1844 | 1846 | ||
| 1845 | @item C-x v c | 1847 | @item C-x v c |
| 1846 | Remove the last-entered change from the master for the visited file. | 1848 | Remove 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 |
| 1853 | last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}). | 1855 | version from which you started editing the file, use @kbd{C-x v u} |
| 1854 | This 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 |
| 1855 | the file again before you change it again. @kbd{C-x v u} requires | 1857 | is in use, you must first lock the file again before you change it |
| 1856 | confirmation, unless it sees that you haven't made any changes since the | 1858 | again. @kbd{C-x v u} requires confirmation, unless it sees that you |
| 1857 | last checked-in version. | 1859 | haven'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 |
| 1860 | then decide not to change it. | 1862 | then 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 |
| 1866 | most recent checked-in version. @kbd{C-x v c} also offers to revert | 1868 | most recent checked-in version, but only if your work file corresponds |
| 1867 | your work file and buffer to the previous version (the one that precedes | 1869 | to that version---you cannot use @kbd{C-x v c} to cancel a version |
| 1868 | the version that is deleted). | 1870 | that is not the latest on its branch. @kbd{C-x v c} also offers to |
| 1871 | revert your work file and buffer to the previous version (the one that | ||
| 1872 | precedes 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 |
| 1871 | the file. The no-revert option is useful when you have checked in a | 1875 | the 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, | |||
| 1963 | have also been checked in to the repository---you need to merge them | 1967 | have also been checked in to the repository---you need to merge them |
| 1964 | with the work file before you can check it in. | 1968 | with 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 | ||
| 1973 | only contact it when the variable @code{vc-stay-local} (or | ||
| 1974 | @code{vc-cvs-stay-local}) is nil (@pxref{CVS Options}). This is | ||
| 1975 | because access to the repository may be slow, or you may be working | ||
| 1976 | offline and not have access to the repository at all. As a | ||
| 1977 | consequence, VC would not be able to tell you that @samp{file3.c} is | ||
| 1978 | in the ``merge'' state; you would learn that only when you try to | ||
| 1979 | check-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 | ||
| 1983 | consistently whenever it arises. In VC, you'll simply get prompted to | ||
| 1984 | merge the remote changes into your work file first. The benefits of | ||
| 1985 | less network communication usually outweigh the disadvantage of not | ||
| 1986 | seeing 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), |
| 1968 | it omits some that should never contain any files under version control. | 1990 | it omits some that should never contain any files under version control. |
| @@ -2420,12 +2442,16 @@ or a snapshot against a named version. | |||
| 2420 | support. They use RCS's native facilities for this, so | 2442 | support. They use RCS's native facilities for this, so |
| 2421 | snapshots made using RCS through VC are visible even when you bypass VC. | 2443 | snapshots 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 | ||
| 2446 | mechanism 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 |
| 2425 | name/file/version-number triples. These snapshots are visible only | 2451 | name/file/version-number triples. These snapshots are visible only |
| 2426 | through VC. | 2452 | through 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 |
| 2431 | files are checked in and not locked when you make a snapshot. | 2457 | files 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 | |||
| 2479 | most recent entry in the change log file. | 2505 | most recent entry in the change log file. |
| 2480 | (@code{vc-update-change-log}). | 2506 | (@code{vc-update-change-log}). |
| 2481 | 2507 | ||
| 2482 | This command works with RCS or CVS only, not with SCCS. | 2508 | This command works with RCS or CVS only, not with any of the other |
| 2483 | 2509 | back 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 |
| 2487 | As above, but only find entries for the current buffer's file. | 2512 | As 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 | |||
| 2620 | snapshot thus modified may not completely work (@pxref{Snapshot | 2645 | snapshot thus modified may not completely work (@pxref{Snapshot |
| 2621 | Caveats}). | 2646 | Caveats}). |
| 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 |
| 2624 | repositories. After issuing @code{vc-rename-file}, use @kbd{C-x v v} | 2649 | repositories. After issuing @code{vc-rename-file}, use @kbd{C-x v v} |
| 2625 | on the original and renamed buffers and provide the necessary edit | 2650 | on the original and renamed buffers and provide the necessary edit |
| 2626 | log. | 2651 | log. |
| @@ -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 |
| 2635 | directly into working files. Certain special strings called | 2660 | directly 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 |
| 2637 | number of that version. | 2662 | number of that version, the name of the user who created it, and other |
| 2638 | 2663 | relevant information. All of the back ends that VC supports have such | |
| 2639 | @c ??? How does this relate to CVS? | 2664 | a 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. |
| 2642 | files, Emacs can use them to determine the current version and the | 2667 | The exception is RCS---with RCS, version headers are sometimes more |
| 2643 | locking state of the files. This is more reliable than referring to the | 2668 | reliable than the master file to determine which version of the file |
| 2644 | master files, which is done when there are no version headers. Note | 2669 | you are editing. Note that in a multi-branch environment, version |
| 2645 | that in a multi-branch environment, version headers are necessary to | 2670 | headers are necessary to make VC behave correctly (@pxref{Multi-User |
| 2646 | make VC behave correctly (@pxref{Multi-User Branching}). | 2671 | Branching}). |
| 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), |
| 2650 | Emacs searches for headers to determine the version number you are | 2675 | Emacs searches for headers to determine the version number you are |
| 2651 | editing. Setting it to @code{nil} disables this feature. | 2676 | editing. Setting it to @code{nil} disables this feature. |
| 2652 | 2677 | ||
| 2678 | Note that although CVS uses the same kind of version headers as RCS | ||
| 2679 | does, VC never searches for these headers if you are using CVS, | ||
| 2680 | regardless 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 | |||
| 2872 | intend to change the file. See the CVS documentation for details on | 2901 | intend to change the file. See the CVS documentation for details on |
| 2873 | using the watch feature. | 2902 | using 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 |
| 2878 | network interactions to a minimum. This is controlled by the variable | 2908 | network 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, |
| 2880 | only 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 |
| 2881 | state (and possibly information returned by previous CVS commands). One | 2911 | ends that support it, including CVS. In the following, we will talk |
| 2882 | consequence of this is that when you have modified a file, and somebody | 2912 | only about @code{vc-cvs-stay-local}, but everything applies to |
| 2883 | else has already checked in other changes to the file, you are not | 2913 | @code{vc-stay-local} as well. |
| 2884 | notified of it until you actually try to commit. (But you can try to | ||
| 2885 | pick 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 | 2915 | If @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}, | 2916 | only the entry in the local CVS subdirectory to determine the file's |
| 2890 | should be a string specifying switches to pass to CVS for all CVS | 2917 | state (and possibly information returned by previous CVS commands). |
| 2891 | operations. | 2918 | One consequence of this is that when you have modified a file, and |
| 2919 | somebody else has already checked in other changes to the file, you | ||
| 2920 | are not notified of it until you actually try to commit. (But you can | ||
| 2921 | try 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 |
| 2894 | version backups, so that simple diff and revert operations are | 2925 | version backups, so that simple diff and revert operations are |
| @@ -2903,6 +2934,12 @@ repositories. It also does not make any version backups. | |||
| 2903 | that is matched against the repository host name; VC then stays local | 2934 | that is matched against the repository host name; VC then stays local |
| 2904 | only for repositories from hosts that match the pattern. | 2935 | only 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 | ||
| 2939 | operations in the variable @code{vc-cvs-global-switches}. These | ||
| 2940 | switches are inserted immediately after the @code{cvs} command, before | ||
| 2941 | the 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 | |||
| 3037 | mode provides commands to resolve conflicts by selecting specific | 3074 | mode provides commands to resolve conflicts by selecting specific |
| 3038 | changes. | 3075 | changes. |
| 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 |
| 3041 | convenient facilities for merging two similar files. | 3078 | provides 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} | |||
| 15293 | servers have the property that you may backup them using @code{tar} or | 15293 | servers have the property that you may backup them using @code{tar} or |
| 15294 | similar, and later be able to restore them into Gnus (by adding the | 15294 | similar, and later be able to restore them into Gnus (by adding the |
| 15295 | proper @code{nnfolder} server) and have all your marks be preserved. | 15295 | proper @code{nnfolder} server) and have all your marks be preserved. |
| 15296 | Marks for a group is usually stored in a file named as the mbox file | 15296 | Marks for a group are usually stored in a file named as the mbox file |
| 15297 | with @code{.mrk} concatenated to it (but see | 15297 | with @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} |
| 15299 | directory. Individual @code{nnfolder} groups are also possible to | 15299 | directory. 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 |
| 484 | Follow a cross reference that you click on. | 484 | Follow a cross reference that you click on. |
| 485 | @item C-c C-c | ||
| 486 | Show 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}), |
| 488 | variable name (@pxref{Variables}) appears in the documentation, it | 490 | variable name (@pxref{Variables}), or face name (@pxref{Faces}) appears |
| 489 | normally appears inside paired single-quotes. You can click on the | 491 | in the documentation, it normally appears inside paired single-quotes. |
| 490 | name with @kbd{Mouse-1} or @kbd{Mouse-2}, or move point there and type | 492 | You 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 | 493 | point there and type @key{RET}, to view the documentation of that |
| 492 | @kbd{C-c C-b} to retrace your steps. | 494 | command, 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 | |||
| 510 | next cross reference. Use @kbd{S-@key{TAB}} to move point up to the | 512 | next cross reference. Use @kbd{S-@key{TAB}} to move point up to the |
| 511 | previous cross reference (@code{help-previous-ref}). | 513 | previous cross reference (@code{help-previous-ref}). |
| 512 | 514 | ||
| 515 | To view all documentation about a symbol, whether quoted or not, move | ||
| 516 | point over the symbol and type @kbd{C-c C-c} | ||
| 517 | (@code{help-follow-symbol}). This shows all available documentation | ||
| 518 | about the symbol as a variable, function or face. Just like for | ||
| 519 | quoted 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 |
| 847 | name in the buffer. @xref{Symbol Completion}. | 846 | name 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 | ||
| 855 | modify the same program in two different directions. To recover from | ||
| 856 | this confusion, you need to merge the two versions. Emerge makes this | ||
| 857 | easier. See also @ref{Comparing Files}, for other ways to compare | ||
| 858 | files, 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 | ||
| 881 | Merge two specified files. | ||
| 882 | |||
| 883 | @item M-x emerge-files-with-ancestor | ||
| 884 | @findex emerge-files-with-ancestor | ||
| 885 | Merge two specified files, with reference to a common ancestor. | ||
| 886 | |||
| 887 | @item M-x emerge-buffers | ||
| 888 | @findex emerge-buffers | ||
| 889 | Merge two buffers. | ||
| 890 | |||
| 891 | @item M-x emerge-buffers-with-ancestor | ||
| 892 | @findex emerge-buffers-with-ancestor | ||
| 893 | Merge two buffers with reference to a common ancestor in a third | ||
| 894 | buffer. | ||
| 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 | ||
| 900 | comparison in three buffers: one for each input text (the @dfn{A buffer} | ||
| 901 | and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging | ||
| 902 | takes place. The merge buffer shows the full merged text, not just the | ||
| 903 | differences. Wherever the two input texts differ, you can choose which | ||
| 904 | one of them to include in the merge buffer. | ||
| 905 | |||
| 906 | The Emerge commands that take input from existing buffers use only the | ||
| 907 | accessible 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 | ||
| 911 | be merged were both derived, Emerge can use it to guess which | ||
| 912 | alternative is right. Wherever one current version agrees with the | ||
| 913 | ancestor, Emerge presumes that the other current version is a deliberate | ||
| 914 | change which should be kept in the merged version. Use the | ||
| 915 | @samp{with-ancestor} commands if you want to specify a common ancestor | ||
| 916 | text. These commands read three file or buffer names---variant A, | ||
| 917 | variant B, and the common ancestor. | ||
| 918 | |||
| 919 | After the comparison is done and the buffers are prepared, the | ||
| 920 | interactive merging starts. You control the merging by typing special | ||
| 921 | @dfn{merge commands} in the merge buffer (@pxref{Merge Commands}). | ||
| 922 | For each run of differences between the input texts, you can choose | ||
| 923 | which one of them to keep, or edit them both together. | ||
| 924 | |||
| 925 | The merge buffer uses a special major mode, Emerge mode, with commands | ||
| 926 | for making these choices. But you can also edit the buffer with | ||
| 927 | ordinary Emacs commands. | ||
| 928 | |||
| 929 | At any given time, the attention of Emerge is focused on one | ||
| 930 | particular difference, called the @dfn{selected} difference. This | ||
| 931 | difference is marked off in the three buffers like this: | ||
| 932 | |||
| 933 | @example | ||
| 934 | vvvvvvvvvvvvvvvvvvvv | ||
| 935 | @var{text that differs} | ||
| 936 | ^^^^^^^^^^^^^^^^^^^^ | ||
| 937 | @end example | ||
| 938 | |||
| 939 | @noindent | ||
| 940 | Emerge numbers all the differences sequentially and the mode | ||
| 941 | line always shows the number of the selected difference. | ||
| 942 | |||
| 943 | Normally, the merge buffer starts out with the A version of the text. | ||
| 944 | But when the A version of a difference agrees with the common ancestor, | ||
| 945 | then the B version is initially preferred for that difference. | ||
| 946 | |||
| 947 | Emerge leaves the merged text in the merge buffer when you exit. At | ||
| 948 | that point, you can save it in a file with @kbd{C-x C-w}. If you give a | ||
| 949 | numeric argument to @code{emerge-files} or | ||
| 950 | @code{emerge-files-with-ancestor}, it reads the name of the output file | ||
| 951 | using the minibuffer. (This is the last file name those commands read.) | ||
| 952 | Then 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 | ||
| 955 | exit. If you abort Emerge with @kbd{C-]}, the Emerge command does not | ||
| 956 | save 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 | ||
| 962 | and Edit mode. In Fast mode, basic merge commands are single | ||
| 963 | characters, but ordinary Emacs commands are disabled. This is | ||
| 964 | convenient if you use only merge commands. In Edit mode, all merge | ||
| 965 | commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs | ||
| 966 | commands are also available. This allows editing the merge buffer, but | ||
| 967 | slows down Emerge operations. | ||
| 968 | |||
| 969 | Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to | ||
| 970 | Fast mode. The mode line indicates Edit and Fast modes with @samp{E} | ||
| 971 | and @samp{F}. | ||
| 972 | |||
| 973 | Emerge has two additional submodes that affect how particular merge | ||
| 974 | commands work: Auto Advance mode and Skip Prefers mode. | ||
| 975 | |||
| 976 | If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands | ||
| 977 | advance to the next difference. This lets you go through the merge | ||
| 978 | faster as long as you simply choose one of the alternatives from the | ||
| 979 | input. 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 | ||
| 982 | skip over differences in states prefer-A and prefer-B (@pxref{State of | ||
| 983 | Difference}). Thus you see only differences for which neither version | ||
| 984 | is 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 | ||
| 990 | clear Auto Advance mode. Use @kbd{s s} | ||
| 991 | (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode. | ||
| 992 | These commands turn on the mode with a positive argument, turns it off | ||
| 993 | with 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 | ||
| 1003 | The difference is showing the A version. The @kbd{a} command always | ||
| 1004 | produces this state; the mode line indicates it with @samp{A}. | ||
| 1005 | |||
| 1006 | @item B | ||
| 1007 | The difference is showing the B version. The @kbd{b} command always | ||
| 1008 | produces this state; the mode line indicates it with @samp{B}. | ||
| 1009 | |||
| 1010 | @item default-A | ||
| 1011 | @itemx default-B | ||
| 1012 | The difference is showing the A or the B state by default, because you | ||
| 1013 | haven'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 | ||
| 1015 | which one alternative is ``preferred'' (see below). | ||
| 1016 | |||
| 1017 | When you select a difference, its state changes from default-A or | ||
| 1018 | default-B to plain A or B. Thus, the selected difference never has | ||
| 1019 | state default-A or default-B, and these states are never displayed in | ||
| 1020 | the mode line. | ||
| 1021 | |||
| 1022 | The command @kbd{d a} chooses default-A as the default state, and @kbd{d | ||
| 1023 | b} chooses default-B. This chosen default applies to all differences | ||
| 1024 | which you haven't ever selected and for which no alternative is preferred. | ||
| 1025 | If you are moving through the merge sequentially, the differences you | ||
| 1026 | haven't selected are those following the selected one. Thus, while | ||
| 1027 | moving sequentially, you can effectively make the A version the default | ||
| 1028 | for some sections of the merge buffer and the B version the default for | ||
| 1029 | others by using @kbd{d a} and @kbd{d b} between sections. | ||
| 1030 | |||
| 1031 | @item prefer-A | ||
| 1032 | @itemx prefer-B | ||
| 1033 | The difference is showing the A or B state because it is | ||
| 1034 | @dfn{preferred}. This means that you haven't made an explicit choice, | ||
| 1035 | but one alternative seems likely to be right because the other | ||
| 1036 | alternative agrees with the common ancestor. Thus, where the A buffer | ||
| 1037 | agrees with the common ancestor, the B version is preferred, because | ||
| 1038 | chances are it is the one that was actually changed. | ||
| 1039 | |||
| 1040 | These two states are displayed in the mode line as @samp{A*} and @samp{B*}. | ||
| 1041 | |||
| 1042 | @item combined | ||
| 1043 | The difference is showing a combination of the A and B states, as a | ||
| 1044 | result of the @kbd{x c} or @kbd{x C} commands. | ||
| 1045 | |||
| 1046 | Once a difference is in this state, the @kbd{a} and @kbd{b} commands | ||
| 1047 | don't do anything to it unless you give them a numeric argument. | ||
| 1048 | |||
| 1049 | The 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 | ||
| 1056 | with @kbd{C-c C-c}: | ||
| 1057 | |||
| 1058 | @table @kbd | ||
| 1059 | @item p | ||
| 1060 | Select the previous difference. | ||
| 1061 | |||
| 1062 | @item n | ||
| 1063 | Select the next difference. | ||
| 1064 | |||
| 1065 | @item a | ||
| 1066 | Choose the A version of this difference. | ||
| 1067 | |||
| 1068 | @item b | ||
| 1069 | Choose the B version of this difference. | ||
| 1070 | |||
| 1071 | @item C-u @var{n} j | ||
| 1072 | Select difference number @var{n}. | ||
| 1073 | |||
| 1074 | @item . | ||
| 1075 | Select the difference containing point. You can use this command in the | ||
| 1076 | merge buffer or in the A or B buffer. | ||
| 1077 | |||
| 1078 | @item q | ||
| 1079 | Quit---finish the merge. | ||
| 1080 | |||
| 1081 | @item C-] | ||
| 1082 | Abort---exit merging and do not save the output. | ||
| 1083 | |||
| 1084 | @item f | ||
| 1085 | Go into Fast mode. (In Edit mode, this is actually @kbd{C-c C-c f}.) | ||
| 1086 | |||
| 1087 | @item e | ||
| 1088 | Go into Edit mode. | ||
| 1089 | |||
| 1090 | @item l | ||
| 1091 | Recenter (like @kbd{C-l}) all three windows. | ||
| 1092 | |||
| 1093 | @item - | ||
| 1094 | Specify part of a prefix numeric argument. | ||
| 1095 | |||
| 1096 | @item @var{digit} | ||
| 1097 | Also specify part of a prefix numeric argument. | ||
| 1098 | |||
| 1099 | @item d a | ||
| 1100 | Choose the A version as the default from here down in | ||
| 1101 | the merge buffer. | ||
| 1102 | |||
| 1103 | @item d b | ||
| 1104 | Choose the B version as the default from here down in | ||
| 1105 | the merge buffer. | ||
| 1106 | |||
| 1107 | @item c a | ||
| 1108 | Copy the A version of this difference into the kill ring. | ||
| 1109 | |||
| 1110 | @item c b | ||
| 1111 | Copy the B version of this difference into the kill ring. | ||
| 1112 | |||
| 1113 | @item i a | ||
| 1114 | Insert the A version of this difference at point. | ||
| 1115 | |||
| 1116 | @item i b | ||
| 1117 | Insert the B version of this difference at point. | ||
| 1118 | |||
| 1119 | @item m | ||
| 1120 | Put point and mark around the difference. | ||
| 1121 | |||
| 1122 | @item ^ | ||
| 1123 | Scroll all three windows down (like @kbd{M-v}). | ||
| 1124 | |||
| 1125 | @item v | ||
| 1126 | Scroll all three windows up (like @kbd{C-v}). | ||
| 1127 | |||
| 1128 | @item < | ||
| 1129 | Scroll all three windows left (like @kbd{C-x <}). | ||
| 1130 | |||
| 1131 | @item > | ||
| 1132 | Scroll all three windows right (like @kbd{C-x >}). | ||
| 1133 | |||
| 1134 | @item | | ||
| 1135 | Reset horizontal scroll on all three windows. | ||
| 1136 | |||
| 1137 | @item x 1 | ||
| 1138 | Shrink the merge window to one line. (Use @kbd{C-u l} to restore it | ||
| 1139 | to full size.) | ||
| 1140 | |||
| 1141 | @item x c | ||
| 1142 | Combine the two versions of this difference (@pxref{Combining in | ||
| 1143 | Emerge}). | ||
| 1144 | |||
| 1145 | @item x f | ||
| 1146 | Show the names of the files/buffers Emerge is operating on, in a Help | ||
| 1147 | window. (Use @kbd{C-u l} to restore windows.) | ||
| 1148 | |||
| 1149 | @item x j | ||
| 1150 | Join this difference with the following one. | ||
| 1151 | (@kbd{C-u x j} joins this difference with the previous one.) | ||
| 1152 | |||
| 1153 | @item x s | ||
| 1154 | Split this difference into two differences. Before you use this | ||
| 1155 | command, position point in each of the three buffers at the place where | ||
| 1156 | you want to split the difference. | ||
| 1157 | |||
| 1158 | @item x t | ||
| 1159 | Trim identical lines off the top and bottom of the difference. | ||
| 1160 | Such lines occur when the A and B versions are | ||
| 1161 | identical 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 | ||
| 1168 | the results into the output file if you specified one. It restores the | ||
| 1169 | A and B buffers to their proper contents, or kills them if they were | ||
| 1170 | created by Emerge and you haven't changed them. It also disables the | ||
| 1171 | Emerge commands in the merge buffer, since executing them later could | ||
| 1172 | damage the contents of the various buffers. | ||
| 1173 | |||
| 1174 | @kbd{C-]} aborts the merge. This means exiting without writing the | ||
| 1175 | output file. If you didn't specify an output file, then there is no | ||
| 1176 | real difference between aborting and finishing the merge. | ||
| 1177 | |||
| 1178 | If the Emerge command was called from another Lisp program, then its | ||
| 1179 | return value is @code{t} for successful completion, or @code{nil} if you | ||
| 1180 | abort. | ||
| 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 | ||
| 1186 | difference. To do this, use @kbd{x c}, which edits the merge buffer | ||
| 1187 | like 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 | ||
| 1201 | While this example shows C preprocessor conditionals delimiting the two | ||
| 1202 | alternative versions, you can specify the strings to use by setting | ||
| 1203 | the variable @code{emerge-combine-versions-template} to a string of your | ||
| 1204 | choice. 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 | ||
| 1206 | produces 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. | ||
| 1218 | Emerge modifies them temporarily, but ultimately puts them back the way | ||
| 1219 | they were. | ||
| 1220 | |||
| 1221 | You can have any number of merges going at once---just don't use any one | ||
| 1222 | buffer as input to more than one merge at once, since the temporary | ||
| 1223 | changes 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 | ||
| 1226 | files fully. Emacs can't do anything else until @code{diff} finishes. | ||
| 1227 | Perhaps in the future someone will change Emerge to do the comparison in | ||
| 1228 | the background when the input files are large---then you could keep on | ||
| 1229 | doing other things with Emacs until Emerge is ready to accept | ||
| 1230 | commands. | ||
| 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 |
| 24 | This is version @value{VERSION}@value{EDITION} of @cite{The MH-E | 24 | This is version @value{VERSION}@value{EDITION} of @cite{The MH-E |
| 25 | Manual}, last updated @value{UPDATED} | 25 | Manual}, last updated @value{UPDATED}. |
| 26 | 26 | ||
| 27 | Copyright @copyright{} 1995, | 27 | Copyright @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 | ||
| 671 | Let's start our tour by sending ourselves a message which we can later | 674 | Let's start our tour by sending ourselves a message which we can later |
| 672 | read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program | 675 | read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program |
| 673 | to send messages. You will be prompted in the minibuffer by | 676 | to send messages. Your message appears in an Emacs buffer whose |
| 674 | @samp{To:}. Enter your login name. The next prompt is @samp{Cc:}. Hit | 677 | mode@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 | 678 | particular type of text.} is MH-Letter. |
| 676 | @samp{Subject:} prompt, enter @kbd{Test} or anything else that comes | ||
| 677 | to mind. | ||
| 678 | 679 | ||
| 679 | @cindex MH-Letter mode | 680 | Enter 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 | 682 | carbon copies are to be sent, and on to the @samp{Subject:} field. |
| 683 | Enter @kbd{Test} or anything else that comes to mind. | ||
| 682 | 684 | ||
| 683 | Once you've specified the recipients and subject, your message appears | 685 | Press @key{TAB} again to move the cursor to the body of the message. |
| 684 | in an Emacs buffer whose mode@footnote{A @dfn{mode} changes Emacs to | 686 | Enter some text, using normal Emacs commands. You should now have |
| 685 | make it easier to edit a particular type of text.} is MH-Letter. Enter | 687 | something like this@footnote{If you're running Emacs under the X |
| 686 | some text in the body of the message, using normal Emacs commands. You | 688 | Window System, then you would also see a menu bar and a tool bar. I've |
| 687 | should now have something like this@footnote{If you're running Emacs | 689 | left out the menu bar and tool bar in all of the example screens.}: |
| 688 | under the X Window System, then you would also see a menu bar. Under | ||
| 689 | Emacs 21, you would also see a tool bar. I've left out the menu bar and | ||
| 690 | tool 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)------------------------- |
| 701 | To: wohler | 700 | To: wohler |
| 702 | cc: | 701 | cc: |
| 703 | Subject: Test | 702 | Subject: Test |
| 703 | X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | ||
| 704 | -------- | 704 | -------- |
| 705 | This is a test message to get the wheels churning...# | 705 | This 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 | 709 | Type 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)--------- |
| 784 | To: wohler | 784 | To: wohler |
| 785 | Subject: Test | 785 | Subject: Test |
| 786 | Date: Wed, 24 Aug 1994 13:01:13 -0700 | 786 | X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 |
| 787 | Date: Fri, 17 Mar 2006 10:49:11 -0800 | ||
| 787 | From: Bill Wohler <wohler@@stop.mail-abuse.org> | 788 | From: Bill Wohler <wohler@@stop.mail-abuse.org> |
| 788 | 789 | ||
| 789 | This is a test message to get the wheels churning... | 790 | This 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 | |||
| 816 | test message and type @kbd{r}. You are prompted in the minibuffer with | 815 | test 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 |
| 818 | to the original sender only, to the sender and primary recipients, or | 817 | to the original sender only, to the sender and primary recipients, or |
| 819 | to the sender and all recipients. If you simply hit @key{RET}, you'll | 818 | to the sender and all recipients. You can press @key{TAB} to see these |
| 820 | reply only to the sender. Hit @key{RET} now. | 819 | choices. If you simply press @key{RET}, you'll reply only to the |
| 820 | sender. Press @key{RET} now. | ||
| 821 | 821 | ||
| 822 | You'll find yourself in an Emacs buffer similar to that when you were | 822 | You'll find yourself in an Emacs buffer similar to that when you were |
| 823 | sending the original message, like this: | 823 | sending the original message, like this: |
| 824 | 824 | ||
| 825 | @cartouche | 825 | @cartouche |
| 826 | @smallexample | 826 | @smallexample |
| 827 | To: wohler | 827 | To: |
| 828 | Subject: Re: Test | 828 | cc: |
| 829 | In-reply-to: Bill Wohler's message of Wed, 24 Aug 1994 13:01:13 -0700 | 829 | Subject: Re: Test |
| 830 | <199408242001.NAA00505@@stop.mail-abuse.org> | 830 | In-reply-to: <31054.1142621351@@stop.mail-abuse.org> |
| 831 | References: <31054.1142621351@@stop.mail-abuse.org> | ||
| 832 | Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org> | ||
| 833 | message dated "Fri, 17 Mar 2006 10:49:11 -0800." | ||
| 834 | X-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)---------------------------------- |
| 835 | To: wohler | 839 | To: wohler |
| 836 | Subject: Test | 840 | Subject: Test |
| 837 | Date: Wed, 24 Aug 1994 13:01:13 -0700 | 841 | X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 |
| 842 | Date: Fri, 17 Mar 2006 10:49:11 -0800 | ||
| 838 | From: Bill Wohler <wohler@@stop.mail-abuse.org> | 843 | From: Bill Wohler <wohler@@stop.mail-abuse.org> |
| 839 | 844 | ||
| 840 | This is a test message to get the wheels churning... | 845 | This 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)---------------------------- |
| 843 | Composing a reply...done | 848 | Type 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 | ||
| 2298 | Attachments in MH-E are indicated by @dfn{buttons} like this: | 2303 | Attachments 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 | |||
| 2488 | part. However, if there is an HTML body part that is an attachment, | 2493 | part. However, if there is an HTML body part that is an attachment, |
| 2489 | then you'll see a button like this: | 2494 | then 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 | ||
| 2495 | To see how to read the contents of this body part, see @ref{Viewing | 2500 | To see how to read the contents of this body part, see @ref{Viewing |
| 2496 | Attachments}. | 2501 | Attachments}. |
| @@ -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 |
| 3493 | numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if | 3498 | numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if |
| 3494 | you want to process refiles or deletes first and then either run | 3499 | you 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. |
| 3496 | lost. | ||
| 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 | ||
| 3550 | When you use @kbd{t} to toggle between show mode and scan mode, the | 3554 | When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder |
| 3551 | MH-Show buffer is hidden and the MH-Folder buffer is left alone. | 3555 | mode, the MH-Show buffer is hidden and the MH-Folder buffer is left |
| 3552 | Setting @code{mh-recenter-summary-flag} to a non-@code{nil} value | 3556 | alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil} |
| 3553 | causes the toggle to display as many scan lines as possible, with the | 3557 | value causes the toggle to display as many scan lines as possible, |
| 3554 | cursor at the middle. The effect of @code{mh-recenter-summary-flag} is | 3558 | with the cursor at the middle. The effect of |
| 3555 | rather useful, but it can be annoying on a slow network connection. | 3559 | @code{mh-recenter-summary-flag} is rather useful, but it can be |
| 3560 | annoying 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 | |||
| 3578 | using @kbd{F s} (@code{mh-search}). @xref{Searching}. | 3583 | using @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 | ||
| 3591 | If you use a program such as @command{procmail} to use | 3594 | If you use a program such as @command{procmail} to file your incoming |
| 3592 | @command{rcvstore} to file your incoming mail automatically, you can | 3595 | mail automatically, you can display new, unseen, messages using the |
| 3593 | display new, unseen, messages using the command @kbd{F n} | 3596 | command @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 |
| 3595 | sequence from the folders in @code{mh-new-messages-folders} are | 3598 | @code{mh-new-messages-folders} are listed. However, this list of |
| 3596 | listed. However, this list of folders can be overridden with a prefix | 3599 | folders can be overridden with a prefix argument: with a prefix |
| 3597 | argument: with a prefix argument, enter a space-separated list of | 3600 | argument, enter a space-separated list of folders, or nothing to |
| 3598 | folders, or nothing to search all folders. | 3601 | search 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 |
| 3684 | Use this hook with care. If there is a bug in your hook which returns | 3687 | Use 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. | |||
| 4050 | When you reply to a message, you are first prompted with @samp{Reply | 4053 | When you reply to a message, you are first prompted with @samp{Reply |
| 4051 | to whom?}. You have several choices here. | 4054 | to 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.} | 4064 | The person who sent the message. This is the default, so @key{RET} is |
| 4062 | 4065 | sufficient. | |
| 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 | 4069 | Replies to the sender, plus all recipients in the @samp{To:} header field. |
| 4070 | @c ------------------------- | ||
| 4071 | @item @kbd{cc}@*@kbd{all} | ||
| 4072 | @tab | ||
| 4073 | Forms a reply to the addresses in the @samp{Mail-Followup-To:} header | ||
| 4074 | field if one exists; otherwise forms a reply to the sender, plus all | ||
| 4075 | recipients. | ||
| 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 | ||
| 4071 | Depending on your answer, @command{repl}@footnote{See the section | 4083 | Depending 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 |
| 4073 | the MH book.} is given a different argument to form your reply. | 4085 | the MH book.} is given a different argument to form your reply. |
| 4074 | Specifically, a choice of @kbd{from} or none at all runs @samp{repl | 4086 | Specifically, 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, |
| 4076 | either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. | 4088 | either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you |
| 4077 | 4089 | find that most of the time you specify one of these choices when you | |
| 4090 | reply 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 | ||
| 4093 | the 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 | ||
| 4084 | Two windows are then created. One window contains the message to which | 4103 | Two windows are then created. One window contains the message to which |
| 4085 | you are replying in an MH-Show buffer. Your draft, in MH-Letter mode | 4104 | you 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 |
| 4106 | was not one that you expected, check the things that affect the | ||
| 4107 | behavior of @command{repl} which include the @samp{repl:} profile | ||
| 4108 | component and the @file{replcomps} and @file{replgroupcomps} files. | ||
| 4087 | 4109 | ||
| 4088 | If you supply a prefix argument (as in @kbd{C-u r}), the message you | 4110 | If you supply a prefix argument (as in @kbd{C-u r}), the message you |
| 4089 | are replying to is inserted in your reply after having first been run | 4111 | are 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}. | |||
| 4110 | If you wish to customize the header or other parts of the reply draft, | 4132 | If you wish to customize the header or other parts of the reply draft, |
| 4111 | please see @command{repl}(1) and @code{mh-format}(5). | 4133 | please see @command{repl}(1) and @code{mh-format}(5). |
| 4112 | 4134 | ||
| 4113 | @vindex mh-reply-default-reply-to | ||
| 4114 | |||
| 4115 | The @code{mh-reply-default-reply-to} option is set to @samp{Prompt} by | ||
| 4116 | default so that you are prompted for the recipient of a reply. If you | ||
| 4117 | find that most of the time that you specify @kbd{cc} when you reply to | ||
| 4118 | a message, set this option to @samp{cc}. Other choices include | ||
| 4119 | @samp{from}, @samp{to}, or @samp{all}. You can always edit the | ||
| 4120 | recipients 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 | |||
| 4781 | Letter}). For example, let's assume you have the following in your | 4794 | Letter}). For example, let's assume you have the following in your |
| 4782 | draft: | 4795 | draft: |
| 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 \ |
| 4787 | not sure yet whether I'm completely satisfied with my setup, but \ | 4800 | not sure yet whether I'm completely satisfied with my setup, but \ |
| 4788 | it's worked okay for me so far. | 4801 | it's worked okay for me so far. |
| 4789 | @end group | 4802 | @end group |
| 4790 | @end example | 4803 | @end smallexample |
| 4791 | 4804 | ||
| 4792 | Running @kbd{M-q} on this paragraph produces: | 4805 | Running @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 | |||
| 4812 | replies. For example, if this command was used when point was after | 4825 | replies. For example, if this command was used when point was after |
| 4813 | the first period in the paragraph above, the result would be this: | 4826 | the 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 | |||
| 4839 | you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> }) | 4852 | you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> }) |
| 4840 | before each line. | 4853 | before each line. |
| 4841 | 4854 | ||
| 4842 | @example | 4855 | @smallexample |
| 4843 | @group | 4856 | @group |
| 4844 | Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote: | 4857 | Michael 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)--------------- |
| 5322 | To: wohler | 5335 | To: wohler |
| 5323 | cc: | 5336 | cc: |
| 5324 | Subject: Test of MIME | 5337 | Subject: 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" |
| 5329 | disposition=inline description="SETI@@home logo"> | 5342 | disposition=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. | |||
| 5355 | To: wohler | 5368 | To: wohler |
| 5356 | cc: | 5369 | cc: |
| 5357 | Subject: Test of MIME | 5370 | Subject: Test of MIME |
| 5371 | X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | ||
| 5358 | MIME-Version: 1.0 | 5372 | MIME-Version: 1.0 |
| 5359 | Content-Type: multipart/mixed; boundary="=-=-=" | 5373 | Content-Type: multipart/mixed; boundary="=-=-=" |
| 5360 | -------- | 5374 | -------- |
| @@ -5369,8 +5383,8 @@ Content-Disposition: inline; filename=setiathome.xpm | |||
| 5369 | Content-Transfer-Encoding: base64 | 5383 | Content-Transfer-Encoding: base64 |
| 5370 | Content-Description: SETI@@home logo | 5384 | Content-Description: SETI@@home logo |
| 5371 | 5385 | ||
| 5372 | LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2NCAy | 5386 | LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2N |
| 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. | |||
| 5447 | The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign}) | 5461 | The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign}) |
| 5448 | inserts the following tag: | 5462 | inserts 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 | ||
| 5454 | This is used to sign your message digitally. Likewise, the command | 5468 | This 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 |
| 5456 | following tag: | 5470 | following 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 | ||
| 5462 | This is used to encrypt your message. Finally, the command @kbd{C-c | 5476 | This is used to encrypt your message. Finally, the command @kbd{C-c |
| 5463 | C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the | 5477 | C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the |
| 5464 | following tag: | 5478 | following 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 | |||
| 5703 | your aliases. You might use uppercase for mailing lists and lowercase | 5717 | your aliases. You might use uppercase for mailing lists and lowercase |
| 5704 | for people. For example, you might have: | 5718 | for people. For example, you might have: |
| 5705 | 5719 | ||
| 5706 | @example | 5720 | @smallexample |
| 5707 | mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org> | 5721 | mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org> |
| 5708 | MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org> | 5722 | MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org> |
| 5709 | @end example | 5723 | @end smallexample |
| 5710 | 5724 | ||
| 5711 | When this option is turned off, if you were to type @kbd{M} in the | 5725 | When 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 | ||
| 5768 | For example, consider the following password file entry: | 5782 | For example, consider the following password file entry: |
| 5769 | 5783 | ||
| 5770 | @example | 5784 | @smallexample |
| 5771 | psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh | 5785 | psg: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 | |||
| 5839 | might use prefixes for locales, jobs, or activities. For example, I | 5853 | might use prefixes for locales, jobs, or activities. For example, I |
| 5840 | have: | 5854 | have: |
| 5841 | 5855 | ||
| 5842 | @example | 5856 | @smallexample |
| 5857 | @group | ||
| 5843 | ; Work | 5858 | ; Work |
| 5844 | attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com> | 5859 | attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com> |
| 5845 | isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com> | 5860 | isharp.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 |
| 5852 | ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com> | 5867 | ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com> |
| 5853 | ... | 5868 | ... |
| 5854 | @end example | 5869 | @end group |
| 5870 | @end smallexample | ||
| 5855 | 5871 | ||
| 5856 | Using prefixes instead of postfixes helps you explore aliases during | 5872 | Using prefixes instead of postfixes helps you explore aliases during |
| 5857 | completion. If you forget the name of an old dive buddy, you can enter | 5873 | completion. 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 |
| 6569 | From: # | 6585 | From: |
| 6570 | To: | 6586 | To: |
| 6571 | Cc: | 6587 | Cc: |
| 6572 | Date: | 6588 | Date: |
| 6573 | Subject: | 6589 | Subject: |
| 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----------------------------- | 6601 | Type 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 | |||
| 8280 | format places a @samp{+} after the message number for the current | 8296 | format places a @samp{+} after the message number for the current |
| 8281 | message according to MH; it also uses that column for notations. | 8297 | message 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 | ||
| 8305 | Now, in order to get rid of the @samp{Cursor not pointing to message} | 8321 | Now, in order to get rid of the @samp{Cursor not pointing to message} |
| 8306 | message, you need to tell MH-E how to access the message number. You | 8322 | message, 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 | ||
| 8318 | In order to get the next and previous commands working, add this. | 8334 | In 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 | ||
| 8326 | Note that the current message isn't marked with a @samp{+} when moving | 8342 | Note that the current message isn't marked with a @samp{+} when moving |
| 8327 | between the next and previous messages. Here is the code required to | 8343 | between 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 | ||
| 8338 | Finally, add the following to delete and refile messages. | 8354 | Finally, 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 | ||
| 8348 | This is just a bare minimum; it's best to adjust all of the regular | 8364 | This is just a bare minimum; it's best to adjust all of the regular |
| 8349 | expressions to ensure that MH-E and highlighting perform well. | 8365 | expressions 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 |
| 8440 | profile: | 8456 | profile: |
| 8441 | 8457 | ||
| 8442 | @example | 8458 | @smallexample |
| 8443 | Unseen-Sequence: unseen | 8459 | Unseen-Sequence: unseen |
| 8444 | @end example | 8460 | @end smallexample |
| 8445 | 8461 | ||
| 8446 | Now view your new messages with the speedbar (@pxref{Speedbar}) or with | 8462 | Now 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 | |||
| 8489 | to the GnuCash mailing list, substitute one to which you are | 8505 | to the GnuCash mailing list, substitute one to which you are |
| 8490 | subscribed. | 8506 | subscribed. |
| 8491 | 8507 | ||
| 8492 | @example | 8508 | @smallexample |
| 8493 | MAILDIR=$HOME/`mhparam Path` | 8509 | MAILDIR=$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 |
| 8498 | gnucash.spool | 8514 | gnucash.spool |
| 8499 | @end example | 8515 | @end smallexample |
| 8500 | 8516 | ||
| 8501 | Wait for some messages to appear in @file{gnucash.spool} and run Gnus | 8517 | Wait for some messages to appear in @file{gnucash.spool} and run Gnus |
| 8502 | with @kbd{M-x gnus @key{RET}}. To view the folder created in the | 8518 | with @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 | ||
| 12 | of the division of a register into fields, as a comment in a program), | ||
| 13 | use 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 | ||
| 16 | text, according to which the text characters lie studded on an area that | ||
| 17 | stretches infinitely far to the right and downward. The concept of the end | ||
| 18 | of a line does not exist in this model; the most you can say is where the | ||
| 19 | last nonblank character on the line is found. | ||
| 20 | |||
| 21 | Of course, Emacs really always considers text as a sequence of | ||
| 22 | characters, and lines really do have ends. But Picture mode replaces | ||
| 23 | the most frequently-used commands with variants that simulate the | ||
| 24 | quarter-plane model of text. They do this by inserting spaces or by | ||
| 25 | converting tabs to spaces. | ||
| 26 | |||
| 27 | Most of the basic editing commands of Emacs are redefined by Picture mode | ||
| 28 | to do essentially the same thing but in a quarter-plane way. In addition, | ||
| 29 | Picture mode defines various keys starting with the @kbd{C-c} prefix to | ||
| 30 | run special picture editing commands. | ||
| 31 | |||
| 32 | One of these keys, @kbd{C-c C-c}, is particularly important. Often a | ||
| 33 | picture is part of a larger file that is usually edited in some other | ||
| 34 | major mode. @kbd{M-x edit-picture} records the name of the previous | ||
| 35 | major 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} | ||
| 37 | also deletes spaces from the ends of lines, unless given a numeric | ||
| 38 | argument. | ||
| 39 | |||
| 40 | The special commands of Picture mode all work in other modes (provided | ||
| 41 | the @file{picture} library is loaded), but are not bound to keys except | ||
| 42 | in Picture mode. The descriptions below talk of moving ``one column'' | ||
| 43 | and so on, but all the picture mode commands handle numeric arguments as | ||
| 44 | their 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 | ||
| 49 | in @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 | ||
| 69 | do it in a quarter-plane style. For example, @kbd{C-f} is rebound to | ||
| 70 | run @code{picture-forward-column}, a command which moves point one | ||
| 71 | column to the right, inserting a space if necessary so that the actual | ||
| 72 | end of the line makes no difference. @kbd{C-b} is rebound to run | ||
| 73 | @code{picture-backward-column}, which always moves point left one | ||
| 74 | column, 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 | ||
| 77 | as 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 | ||
| 79 | nonblank character on the line. There is no need to change @kbd{C-a}, | ||
| 80 | as the choice of screen model does not affect beginnings of | ||
| 81 | lines. | ||
| 82 | |||
| 83 | @findex picture-newline | ||
| 84 | Insertion of text is adapted to the quarter-plane screen model through | ||
| 85 | the use of Overwrite mode (@pxref{Minor Modes}). Self-inserting characters | ||
| 86 | replace existing text, column by column, rather than pushing existing text | ||
| 87 | to the right. @key{RET} runs @code{picture-newline}, which just moves to | ||
| 88 | the beginning of the following line so that new text will replace that | ||
| 89 | line. | ||
| 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, | ||
| 95 | instead erase text (replacing it with spaces). @key{DEL} | ||
| 96 | (@code{picture-backward-clear-column}) replaces the preceding | ||
| 97 | character with a space rather than removing it; this moves point | ||
| 98 | backwards. @kbd{C-d} (@code{picture-clear-column}) replaces the next | ||
| 99 | character or characters with spaces, but does not move point. (If you | ||
| 100 | want to clear characters to spaces and move forward over them, use | ||
| 101 | @key{SPC}.) @kbd{C-k} (@code{picture-clear-line}) really kills the | ||
| 102 | contents 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 | ||
| 107 | line; it never splits a line. @kbd{C-M-o} (@code{split-line}) makes | ||
| 108 | sense in Picture mode, so it is not changed. @kbd{C-j} | ||
| 109 | (@code{picture-duplicate-line}) inserts another line with the same | ||
| 110 | contents 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 | ||
| 115 | modes), or one of the picture rectangle commands (@pxref{Rectangles in | ||
| 116 | Picture}). | ||
| 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 | ||
| 138 | point, there is no essential restriction on how point should be moved. | ||
| 139 | Normally point moves right, but you can specify any of the eight | ||
| 140 | orthogonal or diagonal directions for motion after a ``self-inserting'' | ||
| 141 | character. This is useful for drawing lines in the buffer. | ||
| 142 | |||
| 143 | @table @kbd | ||
| 144 | @item C-c < | ||
| 145 | @itemx C-c @key{LEFT} | ||
| 146 | Move left after insertion (@code{picture-movement-left}). | ||
| 147 | @item C-c > | ||
| 148 | @itemx C-c @key{RIGHT} | ||
| 149 | Move right after insertion (@code{picture-movement-right}). | ||
| 150 | @item C-c ^ | ||
| 151 | @itemx C-c @key{UP} | ||
| 152 | Move up after insertion (@code{picture-movement-up}). | ||
| 153 | @item C-c . | ||
| 154 | @itemx C-c @key{DOWN} | ||
| 155 | Move down after insertion (@code{picture-movement-down}). | ||
| 156 | @item C-c ` | ||
| 157 | @itemx C-c @key{HOME} | ||
| 158 | Move up and left (``northwest'') after insertion (@code{picture-movement-nw}). | ||
| 159 | @item C-c ' | ||
| 160 | @itemx C-c @key{PAGEUP} | ||
| 161 | Move up and right (``northeast'') after insertion | ||
| 162 | (@code{picture-movement-ne}). | ||
| 163 | @item C-c / | ||
| 164 | @itemx C-c @key{END} | ||
| 165 | Move down and left (``southwest'') after insertion | ||
| 166 | @*(@code{picture-movement-sw}). | ||
| 167 | @item C-c \ | ||
| 168 | @itemx C-c @key{PAGEDOWN} | ||
| 169 | Move 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 | ||
| 178 | direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the | ||
| 179 | same direction as motion after ``insertion'' currently does, while @kbd{C-c | ||
| 180 | C-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. | ||
| 190 | With no argument, it moves to a point underneath the next | ||
| 191 | ``interesting'' character that follows whitespace in the previous | ||
| 192 | nonblank line. ``Next'' here means ``appearing at a horizontal position | ||
| 193 | greater 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 | ||
| 195 | character in the current line. @kbd{M-@key{TAB}} does not change the | ||
| 196 | text; it only moves point. ``Interesting'' characters are defined by | ||
| 197 | the variable @code{picture-tab-chars}, which should define a set of | ||
| 198 | characters. The syntax for this variable is like the syntax used inside | ||
| 199 | of @samp{[@dots{}]} in a regular expression---but without the @samp{[} | ||
| 200 | and 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 | ||
| 204 | current 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 | ||
| 206 | argument 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 | ||
| 211 | together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}). | ||
| 212 | This command sets the tab stops to the positions which @kbd{M-@key{TAB}} | ||
| 213 | would consider significant in the current line. The use of this command, | ||
| 214 | together 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 | ||
| 218 | pictures. For example, this prevents @kbd{C-x @key{TAB}} from messing | ||
| 219 | up 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 | ||
| 228 | text in ways that fit with the quarter-plane model. The standard rectangle | ||
| 229 | commands may also be useful (@pxref{Rectangles}). | ||
| 230 | |||
| 231 | @table @kbd | ||
| 232 | @item C-c C-k | ||
| 233 | Clear out the region-rectangle with spaces | ||
| 234 | (@code{picture-clear-rectangle}). With argument, delete the text. | ||
| 235 | @item C-c C-w @var{r} | ||
| 236 | Similar, but save rectangle contents in register @var{r} first | ||
| 237 | (@code{picture-clear-rectangle-to-register}). | ||
| 238 | @item C-c C-y | ||
| 239 | Copy last killed rectangle into the buffer by overwriting, with upper | ||
| 240 | left corner at point (@code{picture-yank-rectangle}). With argument, | ||
| 241 | insert instead. | ||
| 242 | @item C-c C-x @var{r} | ||
| 243 | Similar, 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 | ||
| 254 | rectangle commands in that they normally clear the rectangle instead of | ||
| 255 | deleting it; this is analogous with the way @kbd{C-d} is changed in Picture | ||
| 256 | mode. | ||
| 257 | |||
| 258 | However, deletion of rectangles can be useful in Picture mode, so | ||
| 259 | these commands delete the rectangle if given a numeric argument. | ||
| 260 | @kbd{C-c C-k} either with or without a numeric argument saves the | ||
| 261 | rectangle 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 | ||
| 268 | standard ones in that they overwrite instead of inserting. This is | ||
| 269 | the same way that Picture mode insertion of other text differs from | ||
| 270 | other 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 | ||
| 273 | likewise 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 |
| 110 | Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL/Pike/AWK | 109 | Mode, 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 |
| 112 | mode, @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 | |||
| 1715 | names. | 1715 | names. |
| 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 | ||
| 1724 | and subprograms, and indentation commands that understand Fortran | ||
| 1725 | conventions of nesting, line numbers and continuation statements. | ||
| 1726 | Fortran mode has support for Auto Fill mode that breaks long lines into | ||
| 1727 | proper Fortran continuation lines. | ||
| 1728 | |||
| 1729 | Special commands for comments are provided because Fortran comments | ||
| 1730 | are unlike those of other languages. Built-in abbrevs optionally save | ||
| 1731 | typing when you insert Fortran keywords. | ||
| 1732 | |||
| 1733 | Use @kbd{M-x fortran-mode} to switch to this major mode. This command | ||
| 1734 | runs 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 | ||
| 1741 | Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}). | ||
| 1742 | Emacs 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 | ||
| 1760 | modules for F90 mode), Fortran mode provides special commands to move by | ||
| 1761 | statements 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 | ||
| 1768 | Move 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 | ||
| 1775 | Move to the beginning of the previous statement | ||
| 1776 | (@code{fortran-previous-statement}/@code{f90-previous-statement}). | ||
| 1777 | If there is no previous statement (i.e. if called from the first | ||
| 1778 | statement 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 | ||
| 1783 | Move 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 | ||
| 1786 | for F90 mode only, not Fortran mode. With a numeric argument, this | ||
| 1787 | moves 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 | ||
| 1792 | Move point backward to the previous code block | ||
| 1793 | (@code{f90-previous-block}). This is like @code{f90-next-block}, but | ||
| 1794 | moves 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 | ||
| 1800 | Move to the end of the current code block | ||
| 1801 | (@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric | ||
| 1802 | agument, move forward that number of blocks. The mark is set before | ||
| 1803 | moving point. The F90 mode version of this command checks for | ||
| 1804 | consistency of block types and labels (if present), but it does not | ||
| 1805 | check 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 | ||
| 1811 | Move to the start of the current code block | ||
| 1812 | (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This | ||
| 1813 | is 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 | ||
| 1820 | order to make sure various syntactic entities (line numbers, comment line | ||
| 1821 | indicators and continuation line flags) appear in the columns that are | ||
| 1822 | required 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 | ||
| 1837 | Break the current line at point and set up a continuation line | ||
| 1838 | (@code{fortran-split-line}). | ||
| 1839 | @item M-^ | ||
| 1840 | Join this line to the previous line (@code{fortran-join-line}). | ||
| 1841 | @item C-M-q | ||
| 1842 | Indent all the lines of the subprogram point is in | ||
| 1843 | (@code{fortran-indent-subprogram}). | ||
| 1844 | @item M-q | ||
| 1845 | Fill 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 | ||
| 1851 | to reindent all the lines of the Fortran subprogram (function or | ||
| 1852 | subroutine) 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 | ||
| 1857 | a line in the appropriate fashion for Fortran. In a non-comment line, | ||
| 1858 | the second half becomes a continuation line and is indented | ||
| 1859 | accordingly. In a comment line, both halves become separate comment | ||
| 1860 | lines. | ||
| 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}, | ||
| 1866 | which joins a continuation line back to the previous line, roughly as | ||
| 1867 | the inverse of @code{fortran-split-line}. The point must be on a | ||
| 1868 | continuation 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 | ||
| 1872 | point 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. | ||
| 1880 | If the first non-space character on a line is in column 5, then that | ||
| 1881 | line is a continuation of the previous line. We call this @dfn{fixed | ||
| 1882 | format}. (In GNU Emacs we always count columns from 0; but note that | ||
| 1883 | the Fortran standard counts from 1.) The variable | ||
| 1884 | @code{fortran-continuation-string} specifies what character to put in | ||
| 1885 | column 5. A line that starts with a tab character followed by any digit | ||
| 1886 | except @samp{0} is also a continuation line. We call this style of | ||
| 1887 | continuation @dfn{tab format}. (Fortran90 introduced ``free format'', | ||
| 1888 | with 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 | ||
| 1894 | enter Fortran mode, it tries to deduce the proper continuation style | ||
| 1895 | automatically from the buffer contents. It does this by scanning up to | ||
| 1896 | @code{fortran-analyze-depth} (default 100) lines from the start of the | ||
| 1897 | buffer. The first line that begins with either a tab character or six | ||
| 1898 | spaces determines the choice. If the scan fails (for example, if the | ||
| 1899 | buffer is new and therefore empty), the value of | ||
| 1900 | @code{fortran-tab-mode-default} (@code{nil} for fixed format, and | ||
| 1901 | non-@code{nil} for tab format) is used. @samp{/t} in the mode line | ||
| 1902 | indicates 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 | ||
| 1907 | 5, Fortran mode treats it as a continuation line. When you indent a | ||
| 1908 | continuation line with @key{TAB}, it converts the line to the current | ||
| 1909 | continuation style. When you split a Fortran statement with | ||
| 1910 | @kbd{C-M-j}, the continuation marker on the newline is created according | ||
| 1911 | to the continuation style. | ||
| 1912 | |||
| 1913 | The setting of continuation style affects several other aspects of | ||
| 1914 | editing in Fortran mode. In fixed format mode, the minimum column | ||
| 1915 | number for the body of a statement is 6. Lines inside of Fortran | ||
| 1916 | blocks that are indented to larger column numbers always use only the | ||
| 1917 | space character for whitespace. In tab format mode, the minimum | ||
| 1918 | column number for the statement body is 8, and the whitespace before | ||
| 1919 | column 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 | ||
| 1925 | indentation assumes it is a line number and moves it to columns 0 | ||
| 1926 | through 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. | ||
| 1930 | The variable @code{fortran-line-number-indent} controls this; it | ||
| 1931 | specifies the maximum indentation a line number can have. The default | ||
| 1932 | value of the variable is 1. Fortran mode tries to prevent line number | ||
| 1933 | digits passing column 4, reducing the indentation below the specified | ||
| 1934 | maximum if necessary. If @code{fortran-line-number-indent} has the | ||
| 1935 | value 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 | ||
| 1939 | these rules. As each digit is inserted, the indentation is recomputed. | ||
| 1940 | To 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 | ||
| 1948 | the task of understanding a Fortran program well enough to indent it | ||
| 1949 | properly: | ||
| 1950 | |||
| 1951 | @itemize @bullet | ||
| 1952 | @item | ||
| 1953 | Two nested @samp{do} loops never share a @samp{continue} statement. | ||
| 1954 | |||
| 1955 | @item | ||
| 1956 | Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do} | ||
| 1957 | and others are written without embedded whitespace or line breaks. | ||
| 1958 | |||
| 1959 | Fortran compilers generally ignore whitespace outside of string | ||
| 1960 | constants, but Fortran mode does not recognize these keywords if they | ||
| 1961 | are not contiguous. Constructs such as @samp{else if} or @samp{end do} | ||
| 1962 | are acceptable, but the second word should be on the same line as the | ||
| 1963 | first and not on a continuation line. | ||
| 1964 | @end itemize | ||
| 1965 | |||
| 1966 | @noindent | ||
| 1967 | If you fail to follow these conventions, the indentation commands may | ||
| 1968 | indent some lines unaesthetically. However, a correct Fortran program | ||
| 1969 | retains its meaning when reindented even if the conventions are not | ||
| 1970 | followed. | ||
| 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 | ||
| 1985 | Extra indentation within each level of @samp{do} statement (default 3). | ||
| 1986 | |||
| 1987 | @item fortran-if-indent | ||
| 1988 | Extra indentation within each level of @samp{if}, @samp{select case}, or | ||
| 1989 | @samp{where} statements (default 3). | ||
| 1990 | |||
| 1991 | @item fortran-structure-indent | ||
| 1992 | Extra indentation within each level of @samp{structure}, @samp{union}, | ||
| 1993 | @samp{map}, or @samp{interface} statements (default 3). | ||
| 1994 | |||
| 1995 | @item fortran-continuation-indent | ||
| 1996 | Extra indentation for bodies of continuation lines (default 5). | ||
| 1997 | |||
| 1998 | @item fortran-check-all-num-for-matching-do | ||
| 1999 | In Fortran77, a numbered @samp{do} statement is ended by any statement | ||
| 2000 | with 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 | ||
| 2002 | non-@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 | ||
| 2004 | a @samp{continue} line (or if you use the more modern @samp{enddo}), | ||
| 2005 | then 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 | ||
| 2009 | If this is @code{t}, indenting an @samp{endif} (or @samp{enddo} | ||
| 2010 | statement 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 | ||
| 2014 | Minimum indentation for Fortran statements when using fixed format | ||
| 2015 | continuation line style. Statement bodies are never indented less than | ||
| 2016 | this much. The default is 6. | ||
| 2017 | |||
| 2018 | @item fortran-minimum-statement-indent-tab | ||
| 2019 | Minimum indentation for Fortran statements for tab format continuation line | ||
| 2020 | style. Statement bodies are never indented less than this much. The | ||
| 2021 | default is 8. | ||
| 2022 | @end table | ||
| 2023 | |||
| 2024 | The variables controlling the indentation of comments are described in | ||
| 2025 | the 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 | ||
| 2031 | line of code. In Fortran77, the standard comment syntax requires an | ||
| 2032 | entire line to be just a comment. Therefore, Fortran mode replaces the | ||
| 2033 | standard 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 | ||
| 2037 | start with @samp{!} and can follow other text. Because only some Fortran77 | ||
| 2038 | compilers accept this syntax, Fortran mode will not insert such comments | ||
| 2039 | unless 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-; | ||
| 2044 | Align comment or insert new comment (@code{fortran-indent-comment}). | ||
| 2045 | |||
| 2046 | @item C-x ; | ||
| 2047 | Applies to nonstandard @samp{!} comments only. | ||
| 2048 | |||
| 2049 | @item C-c ; | ||
| 2050 | Turn all lines of the region into comments, or (with argument) turn them back | ||
| 2051 | into 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 | ||
| 2057 | recognizes any kind of existing comment and aligns its text appropriately; | ||
| 2058 | if there is no existing comment, a comment is inserted and aligned. But | ||
| 2059 | inserting and aligning comments are not the same in Fortran mode as in | ||
| 2060 | other modes. | ||
| 2061 | |||
| 2062 | When a new comment must be inserted, if the current line is blank, a | ||
| 2063 | full-line comment is inserted. On a non-blank line, a nonstandard @samp{!} | ||
| 2064 | comment is inserted if you have said you want to use them. Otherwise a | ||
| 2065 | full-line comment is inserted on a new line before the current line. | ||
| 2066 | |||
| 2067 | Nonstandard @samp{!} comments are aligned like comments in other | ||
| 2068 | languages, but full-line comments are different. In a standard full-line | ||
| 2069 | comment, the comment delimiter itself must always appear in column zero. | ||
| 2070 | What can be aligned is the text within the comment. You can choose from | ||
| 2071 | three 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 | ||
| 2078 | Align the text at a fixed column, which is the sum of | ||
| 2079 | @code{fortran-comment-line-extra-indent} and the minimum statement | ||
| 2080 | indentation. This is the default. | ||
| 2081 | |||
| 2082 | The minimum statement indentation is | ||
| 2083 | @code{fortran-minimum-statement-indent-fixed} for fixed format | ||
| 2084 | continuation line style and @code{fortran-minimum-statement-indent-tab} | ||
| 2085 | for tab format style. | ||
| 2086 | |||
| 2087 | @item relative | ||
| 2088 | Align 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 | ||
| 2092 | Don'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 | ||
| 2097 | full-line comments by setting the variable | ||
| 2098 | @code{fortran-comment-indent-char} to the single-character string you want | ||
| 2099 | to use. | ||
| 2100 | |||
| 2101 | @vindex fortran-directive-re | ||
| 2102 | Compiler directive lines, or preprocessor lines, have much the same | ||
| 2103 | appearance as comment lines. It is important, though, that such lines | ||
| 2104 | never 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 | ||
| 2107 | lines are directives. Matching lines are never indented, and receive | ||
| 2108 | distinctive font-locking. | ||
| 2109 | |||
| 2110 | The normal Emacs comment command @kbd{C-x ;} has not been redefined. If | ||
| 2111 | you use @samp{!} comments, this command can be used with them. Otherwise | ||
| 2112 | it 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 | ||
| 2118 | lines of the region into comments by inserting the string @samp{C$$$} at | ||
| 2119 | the front of each one. With a numeric argument, it turns the region | ||
| 2120 | back into live code by deleting @samp{C$$$} from the front of each line | ||
| 2121 | in it. The string used for these comments can be controlled by setting | ||
| 2122 | the variable @code{fortran-comment-region}. Note that here we have an | ||
| 2123 | example of a command and a variable with the same name; these two uses | ||
| 2124 | of the name never conflict because in Lisp and in Emacs it is always | ||
| 2125 | clear 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 | ||
| 2131 | minor mode that automatically splits statements as you insert them when | ||
| 2132 | they become too wide. Splitting a statement involves making | ||
| 2133 | continuation 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 | ||
| 2136 | commands. 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 | ||
| 2141 | longer than the desired width (the value of @code{fill-column}). The | ||
| 2142 | delimiters (besides whitespace) that Auto Fill can break at are | ||
| 2143 | @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>}, | ||
| 2144 | and @samp{,}. The line break comes after the delimiter if the | ||
| 2145 | variable @code{fortran-break-before-delimiters} is @code{nil}. | ||
| 2146 | Otherwise (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 | ||
| 2156 | Display a ``column ruler'' momentarily above the current line | ||
| 2157 | (@code{fortran-column-ruler}). | ||
| 2158 | @item C-c C-w | ||
| 2159 | Split the current window horizontally temporarily so that it is 72 | ||
| 2160 | columns wide (@code{fortran-window-create-momentarily}). This may | ||
| 2161 | help you avoid making lines longer than the 72-character limit that | ||
| 2162 | some Fortran compilers impose. | ||
| 2163 | @item C-u C-c C-w | ||
| 2164 | Split 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 | ||
| 2167 | Delete 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 | ||
| 2173 | ruler momentarily above the current line. The comment ruler is two lines | ||
| 2174 | of text that show you the locations of columns with special significance in | ||
| 2175 | Fortran programs. Square brackets show the limits of the columns for line | ||
| 2176 | numbers, and curly brackets show the limits of the columns for the | ||
| 2177 | statement body. Column numbers appear above them. | ||
| 2178 | |||
| 2179 | Note that the column numbers count from zero, as always in GNU Emacs. | ||
| 2180 | As a result, the numbers may be one less than those you are familiar | ||
| 2181 | with; but the positions they indicate in the line are standard for | ||
| 2182 | Fortran. | ||
| 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 | ||
| 2187 | variable @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. | ||
| 2190 | Otherwise, the value of the variable @code{fortran-column-ruler-tab} is | ||
| 2191 | displayed. By changing these variables, you can change the column ruler | ||
| 2192 | display. | ||
| 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 | ||
| 2197 | splits the current window horizontally, making a window 72 columns | ||
| 2198 | wide, so you can see any lines that are too long. Type a space to | ||
| 2199 | restore 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 | ||
| 2204 | the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x | ||
| 2205 | fortran-window-create}). By editing in this window you can | ||
| 2206 | immediately 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 | ||
| 2210 | column 72 and beyond, on all lines in the current buffer. This is the | ||
| 2211 | easiest 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 | ||
| 2217 | declarations. These are the same sort of abbrev that you can define | ||
| 2218 | yourself. 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 | ||
| 2221 | semicolon. You cannot normally use semicolon in an abbrev, but Fortran | ||
| 2222 | mode makes this possible by changing the syntax of semicolon to ``word | ||
| 2223 | constituent.'' | ||
| 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 | ||
| 2227 | character such as a space or a newline, the @samp{;c} expands automatically | ||
| 2228 | to @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 | ||
| 2231 | Fortran 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 | ||
| 56 | referred to as ``ASCII art''), use @kbd{M-x edit-picture} to enter | ||
| 57 | Picture 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 |