|
|
1.1 ! root 1: Info file emacs, produced by texinfo-format-buffer -*-Text-*- ! 2: from file emacs.tex ! 3: ! 4: This file documents the GNU Emacs editor. ! 5: ! 6: Copyright (C) 1985, 1986 Richard M. Stallman. ! 7: ! 8: Permission is granted to make and distribute verbatim copies of ! 9: this manual provided the copyright notice and this permission notice ! 10: are preserved on all copies. ! 11: ! 12: Permission is granted to copy and distribute modified versions of this ! 13: manual under the conditions for verbatim copying, provided also that the ! 14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs ! 15: General Public License" are included exactly as in the original, and ! 16: provided that the entire resulting derived work is distributed under the ! 17: terms of a permission notice identical to this one. ! 18: ! 19: Permission is granted to copy and distribute translations of this manual ! 20: into another language, under the above conditions for modified versions, ! 21: except that the sections entitled "The GNU Manifesto", "Distribution" ! 22: and "GNU Emacs General Public License" may be included in a translation ! 23: approved by the author instead of in the original English. ! 24: ! 25: ! 26: File: emacs Node: Mail Format, Prev: Sending Mail, Up: Sending Mail, Next: Mail Headers ! 27: ! 28: The Format of the Mail Buffer ! 29: ============================= ! 30: ! 31: In addition to the "text" or contents, a message has "header ! 32: fields" which say who sent it, when, to whom, why, and so on. Some header ! 33: fields such as the date and sender are created automatically after the ! 34: message is sent. Others, such as the recipient names, must be specified by ! 35: you in order to send the message properly. ! 36: ! 37: Mail mode provides a few commands to help you edit some header fields, ! 38: and some are preinitialized in the buffer automatically at times. You can ! 39: insert or edit any header fields using ordinary editing commands. ! 40: ! 41: The line in the buffer that says ! 42: ! 43: --text follows this line-- ! 44: ! 45: is a special delimiter that separates the headers you have specified from ! 46: the text. Whatever follows this line is the text of the message; the ! 47: headers precede it. The delimiter line itself does not appear in the ! 48: message actually sent. The text used for the delimiter line is controlled ! 49: by the variable `mail-header-separator'. ! 50: ! 51: Here is an example of what the headers and text in the `*mail*' buffer ! 52: might look like. ! 53: ! 54: To: rms@mc ! 55: CC: mly@mc, rg@oz ! 56: Subject: The Emacs Manual ! 57: --Text follows this line-- ! 58: Please ignore this message. ! 59: ! 60: ! 61: File: emacs Node: Mail Headers, Prev: Mail Format, Up: Sending Mail, Next: Mail Mode ! 62: ! 63: Mail Header Fields ! 64: ================== ! 65: ! 66: There are several header fields you can use in the `*mail*' buffer. ! 67: Each header field starts with a field name at the beginning of a line, ! 68: terminated by a colon. It does not matter whether you use upper or lower ! 69: case in the field name. After the colon and optional whitespace comes the ! 70: contents of the field. ! 71: ! 72: `To' ! 73: This field contains the mailing addresses to which the message is ! 74: addressed. ! 75: ! 76: `Subject' ! 77: The contents of the `Subject' field should be a piece of text ! 78: that says what the message is about. The reason `Subject' fields ! 79: are useful is that most mail-reading programs can provide a summary of ! 80: messages, listing the subject of each message but not its text. ! 81: ! 82: `CC' ! 83: This field contains additional mailing addresses to send the message ! 84: to, but whose readers should not regard the message as addressed to ! 85: them. ! 86: ! 87: `BCC' ! 88: This field contains additional mailing addresses to send the message ! 89: to, but which should not appear in the header of the message actually ! 90: sent. ! 91: ! 92: `FCC' ! 93: This field contains the name of one file (in Unix mail file format) to ! 94: which a copy of the message should be appended when the message is ! 95: sent. ! 96: ! 97: `From' ! 98: Use the `From' field to say who you are, when the account you are ! 99: using to send the mail is not your own. The contents of the ! 100: `From' field should be a valid mailing address, since replies ! 101: will normally go there. ! 102: ! 103: `Reply-To' ! 104: Use the `Reply-to' field to direct replies to a different ! 105: address, not your own. There is no difference between `From' and ! 106: `Reply-to' in their effect on where replies go, but they convey a ! 107: different meaning to the human who reads the message. ! 108: ! 109: `In-Reply-To' ! 110: This field contains a piece of text describing a message you are ! 111: replying to. Some mail systems can use this information to correlate ! 112: related pieces of mail. Normally this field is filled in by Rmail ! 113: when you are replying to a message in Rmail, and you never need to ! 114: think about it (*Note Rmail::). ! 115: ! 116: The `To', `CC', `BCC' and `FCC' fields can appear ! 117: any number of times, to specify many places to send the message. ! 118: ! 119: The `To', `CC', and `BCC' fields can have continuation lines. All the ! 120: lines starting with whitespace, following the line on which the field ! 121: starts, are considered part of the field. For example, ! 122: ! 123: To: foo@here, this@there, ! 124: [email protected] ! 125: ! 126: If you have a `~/.mailrc' file, Emacs will scan it for mail aliases ! 127: the first time you try to send mail in an Emacs session. Aliases found ! 128: in the `To', `CC', and `BCC' fields will be expanded where ! 129: appropriate. ! 130: ! 131: If the variable `mail-archive-file-name' is non-`nil', it should be a ! 132: string naming a file; every time you start to edit a message to send, ! 133: an `FCC' field will be put in for that file. Unless you remove the ! 134: `FCC' field, every message will be written into that file when it is ! 135: sent. ! 136: ! 137: ! 138: File: emacs Node: Mail Mode, Prev: Mail Headers, Up: Sending Mail ! 139: ! 140: Mail Mode ! 141: ========= ! 142: ! 143: The major mode used in the `*mail*' buffer is Mail mode, which is ! 144: much like Text mode except that various special commands are provided on ! 145: the `C-c' prefix. These commands all have to do specifically with ! 146: editing or sending the message. ! 147: ! 148: `C-c C-s' ! 149: Send the message, and leave the `*mail*' buffer selected ! 150: (`mail-send'). ! 151: `C-c C-c' ! 152: Send the message, and select some other buffer (`mail-send-and-exit'). ! 153: `C-c C-f C-t' ! 154: Move to the `To' header field, creating one if there is none ! 155: (`mail-to'). ! 156: `C-c C-f C-s' ! 157: Move to the `Subject' header field, creating one if there is ! 158: none (`mail-subject'). ! 159: `C-c C-f C-c' ! 160: Move to the `CC' header field, creating one if there is none ! 161: (`mail-cc'). ! 162: `C-c C-w' ! 163: Insert the file `~/.signature' at the end of the message text ! 164: (`mail-signature'). ! 165: `C-c C-y' ! 166: Yank the selected message from Rmail (`mail-yank-original'). ! 167: This command does nothing unless your command to start sending a ! 168: message was issued with Rmail. ! 169: `C-c C-q' ! 170: Fill all paragraphs of yanked old messages, each individually ! 171: (`mail-fill-yanked-message'). ! 172: ! 173: There are two ways to send the message. `C-c C-s' (`mail-send') ! 174: sends the message and marks the `*mail*' buffer unmodified, but leaves ! 175: that buffer selected so that you can modify the message (perhaps with new ! 176: recipients) and send it again. `C-c C-c' (`mail-send-and-exit') ! 177: sends and then deletes the window (if there is another window) or switches ! 178: to another buffer. It puts the `*mail*' buffer at the lowest priority ! 179: for automatic reselection, since you are finished with using it. This is ! 180: the usual way to send the message. ! 181: ! 182: Mail mode provides some other special commands that are useful for ! 183: editing the headers and text of the message before you send it. There are ! 184: three commands defined to move point to particular header fields, all based ! 185: on the prefix `C-c C-f' (`C-f' is for "field"). They are ! 186: `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c ! 187: C-f C-s' (`mail-subject') for the `Subject' field, and `C-c ! 188: C-f C-c' (`mail-cc') for the `CC' field. These fields have ! 189: special motion commands because they are the most common fields for the ! 190: user to want to edit. ! 191: ! 192: `C-c C-w' (`mail-signature') adds a standard piece text at the end of the ! 193: message to say more about who you are. The text comes from the file ! 194: `.signature' in your home directory. ! 195: ! 196: When mail sending is invoked from the Rmail mail reader using an Rmail ! 197: command, `C-c C-y' can be used inside the `*mail*' buffer to insert the ! 198: text of the message you are replying to. Normally it indents each line of ! 199: that message four spaces and eliminates most header fields. A numeric ! 200: argument specifies the number of spaces to indent. An argument of just ! 201: `C-u' says not to indent at all and not to eliminate anything. `C-c C-y' ! 202: always uses the current message from the `RMAIL' buffer, so you can insert ! 203: several old messages by selecting one in `RMAIL', switching to `*mail*' and ! 204: yanking it, then switching back to `RMAIL' to select another. ! 205: ! 206: After using `C-c C-y', the command `C-c C-q' (`mail-fill-yanked-message') can ! 207: be used to fill the paragraphs of the yanked old message or messages. One ! 208: use of `C-c C-q' fills all such paragraphs, each one separately. ! 209: ! 210: Turning on Mail mode (which `C-x m' does automatically) calls the ! 211: value of `text-mode-hook', if it is not void or `nil', and then calls ! 212: the value of `mail-mode-hook' if that is not void or `nil'. ! 213: ! 214: ! 215: File: emacs Node: Rmail, Prev: Sending Mail, Up: Top, Next: Recursive Edit ! 216: ! 217: Reading Mail with Rmail ! 218: *********************** ! 219: ! 220: Rmail is an Emacs subsystem for reading and disposing of mail that you ! 221: receive. Rmail stores mail messages in files called Rmail files. Reading ! 222: the message in an Rmail file is done in a special major mode, Rmail mode, ! 223: which redefines most letters to run commands for managing mail. To enter ! 224: Rmail, type `M-x rmail'. This reads your primary mail file, merges ! 225: new mail in from your inboxes, displays the first new message, and lets ! 226: you begin reading. ! 227: ! 228: Using Rmail in the simplest fashion, you have one Rmail file `~/RMAIL' ! 229: in which all of your mail is saved. It is called your "primary mail ! 230: file". In more sophisticated usage, you can copy messages into other Rmail ! 231: files and then edit those files with Rmail. ! 232: ! 233: Rmail displays only one message at a time. It is called the "current ! 234: message". Rmail mode's special commands can do such things as move to ! 235: another message, delete the message, copy the message into another file, or ! 236: send a reply. ! 237: ! 238: Within the Rmail file, messages are arranged sequentially in order ! 239: of receipt. They are also assigned consecutive integers as their ! 240: "message numbers". The number of the current message is displayed ! 241: in Rmail's mode line, followed by the total number of messages in the ! 242: file. You can move to a message by specifying its message number ! 243: using the `j' key (*Note Rmail Motion::). ! 244: ! 245: Following the usual conventions of Emacs, changes in an Rmail file become ! 246: permanent only when the file is saved. You can do this with `s' ! 247: (`rmail-save'), which also expunges deleted messages from the file ! 248: first (*Note Rmail Deletion::). To save the file without expunging, use ! 249: `C-x C-s'. Rmail saves the Rmail file spontaneously when moving new ! 250: mail from an inbox file (*Note Rmail Inbox::). ! 251: ! 252: You can exit Rmail with `q' (`rmail-quit'); this expunges and saves the ! 253: Rmail file and then switches to another buffer. But there is no need to ! 254: `exit' formally. If you switch from Rmail to editing in other buffers, and ! 255: never happen to switch back, you have exited. Just make sure to save the ! 256: Rmail file eventually (like any other file you have changed). `C-x s' ! 257: is a good enough way to do this (*Note Saving::). ! 258: ! 259: * Menu: ! 260: ! 261: * Scroll: Rmail Scrolling. Scrolling through a message. ! 262: * Motion: Rmail Motion. Moving to another message. ! 263: * Deletion: Rmail Deletion. Deleting and expunging messages. ! 264: * Inbox: Rmail Inbox. How mail gets into the Rmail file. ! 265: * Files: Rmail Files. Using multiple Rmail files. ! 266: * Output: Rmail Output. Copying message out to files. ! 267: * Labels: Rmail Labels. Classifying messages by labeling them. ! 268: * Summary: Rmail Summary. Summaries show brief info on many messages. ! 269: * Reply: Rmail Reply. Sending replies to messages you are viewing. ! 270: * Editing: Rmail Editing. Editing message text and headers in Rmail. ! 271: * Digest: Rmail Digest. Extracting the messages from a digest message. ! 272: ! 273: ! 274: File: emacs Node: Rmail Scrolling, Prev: Rmail, Up: Rmail, Next: Rmail Motion ! 275: ! 276: Scrolling Within a Message ! 277: ========================== ! 278: ! 279: When Rmail displays a message that does not fit on the screen, it is ! 280: necessary to scroll through it. This could be done with `C-v', `M-v' ! 281: and `M-<', but in Rmail scrolling is so frequent that it deserves to be ! 282: easier to type. ! 283: ! 284: `SPC' ! 285: Scroll forward (`scroll-up'). ! 286: `DEL' ! 287: Scroll backward (`scroll-down'). ! 288: `.' ! 289: Scroll to start of message (`rmail-beginning-of-message'). ! 290: ! 291: Since the most common thing to do while reading a message is to scroll ! 292: through it by screenfuls, Rmail makes SPC and DEL synonyms of ! 293: `C-v' (`scroll-up') and `M-v' (`scroll-down') ! 294: ! 295: The command `.' (`rmail-beginning-of-message') scrolls back to the ! 296: beginning of the selected message. This is not quite the same as `M-<': ! 297: for one thing, it does not set the mark; for another, it resets the buffer ! 298: boundaries to the current message if you have changed them. ! 299: ! 300: ! 301: File: emacs Node: Rmail Motion, Prev: Rmail Scrolling, Up: Rmail, Next: Rmail Deletion ! 302: ! 303: Moving Among Messages ! 304: ===================== ! 305: ! 306: The most basic thing to do with a message is to read it. The way to do ! 307: this in Rmail is to make the message current. You can make any message ! 308: current given its message number using the `j' command, but the usual ! 309: thing to do is to move sequentially through the file, since this is the ! 310: order of receipt of messages. When you enter Rmail, you are positioned at ! 311: the first new message (new messages are those received since the previous ! 312: use of Rmail), or at the last message if there are no new messages this ! 313: time. Move forward to see the other new messages; move backward to ! 314: reexamine old messages. ! 315: ! 316: `n' ! 317: Move to the next nondeleted message, skipping any intervening deleted ! 318: messages (`rmail-next-undeleted-message'). ! 319: `p' ! 320: Move to the previous nondeleted message ! 321: (`rmail-previous-undeleted-message'). ! 322: `M-n' ! 323: Move to the next message, including deleted messages ! 324: (`rmail-next-message'). ! 325: `M-p' ! 326: Move to the previous message, including deleted messages ! 327: (`rmail-previous-message'). ! 328: `j' ! 329: Move to the first message. With argument N, move to ! 330: message number N (`rmail-show-message'). ! 331: `>' ! 332: Move to the last message (`rmail-last-message'). ! 333: ! 334: `M-s REGEXP RET' ! 335: Move to the next message containing a match for REGEXP ! 336: (`rmail-search'). If REGEXP is empty, the last regexp used is ! 337: used again. ! 338: ! 339: `- M-s REGEXP RET' ! 340: Move to the previous message containing a match for REGEXP. ! 341: If REGEXP is empty, the last regexp used is used again. ! 342: ! 343: `n' and `p' are the usual way of moving among messages in Rmail. They ! 344: move through the messages sequentially, but skip over deleted messages, ! 345: which is usually what you want to do. Their command definitions are named ! 346: `rmail-next-undeleted-message' and `rmail-previous-undeleted-message'. If ! 347: you do not want to skip deleted messages---for example, if you want to move ! 348: to a message to undelete it---use the variants `M-n' and `M-p' ! 349: (`rmail-next-message' and `rmail-previous-message'). A numeric argument to ! 350: any of these commands serves as a repeat count. ! 351: ! 352: In Rmail, you can specify a numeric argument by typing the digits. ! 353: It is not necessary to type `C-u' first. ! 354: ! 355: The `M-s' (`rmail-search') command is Rmail's version of search. The ! 356: usual incremental search command `C-s' works in Rmail, but it searches ! 357: only within the current message. The purpose of `M-s' is to search for ! 358: another message. It reads a regular expression (*Note Regexps::) ! 359: nonincrementally, then searches starting at the beginning of the following ! 360: message for a match. The message containing the match is selected. ! 361: ! 362: To search backward in the file for another message, give `M-s' a ! 363: negative argument. In Rmail this can be done with `- M-s'. ! 364: ! 365: It is also possible to search for a message based on labels. ! 366: *Note Rmail Labels::. ! 367: ! 368: To move to a message specified by absolute message number, use `j' ! 369: (`rmail-show-message') with the message number as argument. With no ! 370: argument, `j' selects the first message. `>' (`rmail-last-message') selects ! 371: the last message. ! 372: ! 373: ! 374: File: emacs Node: Rmail Deletion, Prev: Rmail Motion, Up: Rmail, Next: Rmail Inbox ! 375: ! 376: Deleting Messages ! 377: ================= ! 378: ! 379: When you no longer need to keep a message, you can "delete" it. This ! 380: flags it as ignorable, and some Rmail commands will pretend it is no longer ! 381: present; but it still has its place in the Rmail file, and still has its ! 382: message number. ! 383: ! 384: "Expunging" the Rmail file actually removes the deleted messages. ! 385: The remaining messages are renumbered consecutively. Expunging is the only ! 386: action that changes the message number of any message, except for ! 387: undigestifying (*Note Rmail Digest::). ! 388: ! 389: `d' ! 390: Delete the current message, and move to the next nondeleted message ! 391: (`rmail-delete-forward'). ! 392: `C-d' ! 393: Delete the current message, and move to the previous nondeleted ! 394: message (`rmail-delete-backward'). ! 395: `u' ! 396: Undelete the current message, or move back to a deleted message and ! 397: undelete it (`rmail-undelete-previous-message'). ! 398: `x' ! 399: `e' ! 400: Expunge the Rmail file (`rmail-expunge'). These two ! 401: commands are synonyms. ! 402: ! 403: There are two Rmail commands for deleting messages. Both delete the ! 404: current message and select another message. `d' (`rmail-delete-forward') ! 405: moves to the following message, skipping messages already deleted, while ! 406: `C-d' (`rmail-delete-backward') moves to the previous nondeleted message. ! 407: If there is no nondeleted message to move to in the specified direction, ! 408: the message that was just deleted remains current. ! 409: ! 410: To make all the deleted messages finally vanish from the Rmail file, ! 411: type `e' (`rmail-expunge'). Until you do this, you can still "undelete" ! 412: the deleted messages. ! 413: ! 414: To undelete, type ! 415: `u' (`rmail-undelete-previous-message'), which is designed to cancel the ! 416: effect of a `d' command (usually). It undeletes the current message ! 417: if the current message is deleted. Otherwise it moves backward to previous ! 418: messages until a deleted message is found, and undeletes that message. ! 419: ! 420: You can usually undo a `d' with a `u' because the `u' moves back to and ! 421: undeletes the message that the `d' deleted. But this does not work when ! 422: the `d' skips a few already-deleted messages that follow the message being ! 423: deleted; then the `u' command will undelete the last of the messages that ! 424: were skipped. There is no clean way to avoid this problem. However, by ! 425: repeating the `u' command, you can eventually get back to the message that ! 426: you intended to undelete. You can also reach that message with `M-p' ! 427: commands and then type `u'. ! 428: ! 429: A deleted message has the `deleted' attribute, and as a result ! 430: `deleted' appears in the mode line when the current message is ! 431: deleted. In fact, deleting or undeleting a message is nothing more than ! 432: adding or removing this attribute. *Note Rmail Labels::. ! 433: ! 434: ! 435: File: emacs Node: Rmail Inbox, Prev: Rmail Deletion, Up: Rmail, Next: Rmail Files ! 436: ! 437: Rmail Files and Inboxes ! 438: ======================= ! 439: ! 440: Unix places incoming mail for you in a file that we call your "inbox". ! 441: When you start up Rmail, it copies the new messages from your inbox into ! 442: your primary mail file, an Rmail file, which also contains other messages ! 443: saved from previous Rmail sessions. It is in this file that you actually ! 444: read the mail with Rmail. This operation is called "getting new mail". ! 445: It can be repeated at any time using the `g' key in Rmail. The inbox ! 446: file name is `/usr/spool/mail/USERNAME' in Berkeley Unix, ! 447: `/usr/mail/USERNAME' in system V. ! 448: ! 449: There are two reason for having separate Rmail files and inboxes. ! 450: ! 451: 1. The format in which Unix delivers the mail in the inbox is not ! 452: adequate for Rmail mail storage. It has no way to record attributes ! 453: (such as `deleted') or user-specified labels; it has no way to record ! 454: old headers and reformatted headers; it has no way to record cached ! 455: summary line information. ! 456: ! 457: 2. It is very cumbersome to access an inbox file without danger of losing ! 458: mail, because it is necessary to interlock with mail delivery. ! 459: Moreover, different Unix systems use different interlocking ! 460: techniques. The strategy of moving mail out of the inbox once and for ! 461: all into a separate Rmail file avoids the need for interlocking in all ! 462: the rest of Rmail, since only Rmail operates on the Rmail file. ! 463: ! 464: When getting new mail, Rmail first copies the new mail from the inbox ! 465: file to the Rmail file; then it saves the Rmail file; then it deletes the ! 466: inbox file. This way, a system crash may cause duplication of mail between ! 467: the inbox and the Rmail file, but cannot lose mail. ! 468: ! 469: Copying mail from an inbox in the system's mailer directory actually puts ! 470: it in an intermediate file `~/.newmail'. This is because the ! 471: interlocking is done by a C program that copies to another file. ! 472: `~/.newmail' is deleted after mail merging is successful. If there is ! 473: a crash at the wrong time, this file will continue to exist and will be ! 474: used as an inbox the next time you get new mail. ! 475: ! 476: ! 477: File: emacs Node: Rmail Files, Prev: Rmail Inbox, Up: Rmail, Next: Rmail Output ! 478: ! 479: Multiple Mail Files ! 480: =================== ! 481: ! 482: Rmail operates by default on your "primary mail file", which is named ! 483: `~/RMAIL' and receives your incoming mail from your system inbox file. ! 484: But you can also have other mail files and edit them with Rmail. These ! 485: files can receive mail through their own inboxes, or you can move messages ! 486: into them by explicit command in Rmail (*Note Rmail Output::). ! 487: ! 488: `i FILE RET' ! 489: Read FILE into Emacs and run Rmail on it (`rmail-input'). ! 490: ! 491: `M-x set-rmail-inbox-list RET FILES RET' ! 492: Specify inbox file names for current Rmail file to get mail from. ! 493: ! 494: `g' ! 495: Merge new mail from current Rmail file's inboxes ! 496: (`rmail-get-new-mail'). ! 497: ! 498: `C-u g FILE' ! 499: Merge new mail from inbox file FILE. ! 500: ! 501: To run Rmail on a file other than your primary mail file, you may use the ! 502: `i' (`rmail-input') command in Rmail. This visits the file, puts it in ! 503: Rmail mode, and then gets new mail from the file's inboxes if any. ! 504: You can also use `M-x rmail-input' even when not in Rmail. ! 505: ! 506: The file you read with `i' does not have to be in Rmail file format. ! 507: It could also be Unix mail format, or mmdf format; or it could be a mixture ! 508: of all three, as long as each message belongs to one of the three formats. ! 509: Rmail recognizes all three and converts all the messages to proper Rmail ! 510: format before showing you the file. ! 511: ! 512: Each Rmail file can contain a list of inbox file names; you can specify ! 513: this list with `M-x set-rmail-inbox-list RET FILES RET'. The argument can ! 514: contain any number of file names, separated by commas. It can also be ! 515: empty, which specifies that this file should have no inboxes. Once a list ! 516: of inboxes is specified, the Rmail file remembers it permanently until it ! 517: is explicitly changed. ! 518: ! 519: If an Rmail file has inboxes, new mail is merged in from the inboxes when ! 520: the Rmail file is brought into Rmail, and when the `g' (`rmail-get-new-mail') ! 521: command is used. If the Rmail file specifies no inboxes, then no new mail ! 522: is merged in at these times. A special exception is made for your primary ! 523: mail file in using the standard system inbox for it if it does not specify ! 524: any. ! 525: ! 526: To merge mail from a file that is not the usual inbox, give the `g' ! 527: key a numeric argument, as in `C-u g'. Then it reads a file name and ! 528: merges mail from that file. The inbox file is not deleted or changed in ! 529: any way when `g' with an argument is used. This is, therefore, a ! 530: general way of merging one file of messages into another. ! 531: ! 532: ! 533: File: emacs Node: Rmail Output, Prev: Rmail Files, Up: Rmail, Next: Rmail Labels ! 534: ! 535: Copying Messages Out to Files ! 536: ============================= ! 537: ! 538: `o FILE RET' ! 539: Append a copy of the current message to the file FILE, ! 540: writing it in Rmail file format (`rmail-output-to-rmail-file'). ! 541: ! 542: `C-o FILE RET' ! 543: Append a copy of the current message to the file FILE, ! 544: writing it in Unix mail file format (`rmail-output'). ! 545: ! 546: If an Rmail file has no inboxes, how does it get anything in it? By ! 547: explicit `o' commands. ! 548: ! 549: `o' (`rmail-output-to-rmail-file') appends the current message ! 550: in Rmail format to the end of the specified file. This is the best command ! 551: to use to move messages between Rmail files. If the other Rmail file is ! 552: currently visited, the copying is done into the other file's Emacs buffer ! 553: instead. You should eventually save it on disk. ! 554: ! 555: The `C-o' (`rmail-output') command in Rmail appends a copy of the current ! 556: message to a specified file, in Unix mail file format. This is useful for ! 557: moving messages into files to be read by other mail processors that do not ! 558: understand Rmail format. ! 559: ! 560: Copying a message with `o' or `C-o' gives the original copy of the ! 561: message the `filed' attribute, so that `filed' appears in the mode ! 562: line when such a message is current. ! 563: ! 564: Normally you should use only `o' to output messages to other Rmail ! 565: files, never `C-o'. But it is also safe if you always use `C-o', ! 566: never `o'. When a file is visited in Rmail, the last message is ! 567: checked, and if it is in Unix format, the entire file is scanned and all ! 568: Unix-format messages are converted to Rmail format. (The reason for ! 569: checking the last message is that scanning the file is slow and most Rmail ! 570: files have only Rmail format messages.) If you use `C-o' consistently, ! 571: the last message is sure to be in Unix format, so Rmail will convert all ! 572: messages properly. ! 573: ! 574: The case where you might want to use `C-o' always, instead of `o' ! 575: always, is when you or other users want to append mail to the same file ! 576: from other mail processors. Other mail processors probably do not know ! 577: Rmail format but do know Unix format. ! 578: ! 579: In any case, always use `o' to add to an Rmail file that is being ! 580: visited in Rmail. Adding messages with `C-o' to the actual disk file ! 581: will trigger a "simultaneous editing" warning when you ask to save the ! 582: Emacs buffer, and will be lost if you do save. ! 583: ! 584: ! 585: File: emacs Node: Rmail Labels, Prev: Rmail Output, Up: Rmail, Next: Rmail Summary ! 586: ! 587: Labels ! 588: ====== ! 589: ! 590: Each message can have various "labels" assigned to it as a means of ! 591: classification. A label has a name; different names mean different labels. ! 592: Any given label is either present or absent on a particular message. A few ! 593: label names have standard meanings and are given to messages automatically ! 594: by Rmail when appropriate; these special labels are called "attributes". ! 595: All other labels are assigned by the user. ! 596: ! 597: `a LABEL RET' ! 598: Assign the label LABEL to the current message (`rmail-add-label'). ! 599: `k LABEL RET' ! 600: Remove the label LABEL from the current message (`rmail-kill-label'). ! 601: `C-M-n LABELS RET' ! 602: Move to the next message that has one of the labels LABELS ! 603: (`rmail-next-labeled-message'). ! 604: `C-M-p LABELS RET' ! 605: Move to the previous message that has one of the labels LABELS ! 606: (`rmail-previous-labeled-message'). ! 607: `C-M-l LABELS RET' ! 608: Make a summary of all messages containing any of the labels LABELS ! 609: (`rmail-summary-by-labels'). ! 610: ! 611: Specifying an empty string for one these commands means to use the last ! 612: label specified for any of these commands. ! 613: ! 614: The `a' (`rmail-add-label') and `k' (`rmail-kill-label') commands allow ! 615: you to assign or remove any label on the current message. If the LABEL ! 616: argument is empty, it means to assign or remove the same label most ! 617: recently assigned or removed. ! 618: ! 619: Once you have given messages labels to classify them as you wish, there ! 620: are two ways to use the labels: in moving and in summaries. ! 621: ! 622: The command `C-M-n LABELS RET' (`rmail-next-labeled-message') moves to ! 623: the next message that has one of the labels LABELS. LABELS is one or more ! 624: label names, separated by commas. `C-M-p' ! 625: (`rmail-previous-labeled-message') is similar, but moves backwards to ! 626: previous messages. A preceding numeric argument to either one serves as a ! 627: repeat count. ! 628: ! 629: The command `C-M-l LABELS RET' (`rmail-summary-by-labels') displays a ! 630: summary containing only the messages that have at least one of a specified ! 631: set of messages. The argument LABELS is one or more label names, separated ! 632: by commas. *Note Rmail Summary::, for information on summaries. ! 633: ! 634: If the LABELS argument to `C-M-n', `C-M-p' or `C-M-l' is empty, it means ! 635: to use the last set of labels specified for any of these commands. ! 636: ! 637: Some labels such as `deleted' and `filed' have built-in meanings and ! 638: are assigned to or removed from messages automatically at appropriate ! 639: times; these labels are called "attributes". Here is a list of Rmail ! 640: attributes: ! 641: ! 642: `unseen' ! 643: Means the message has never been current. Assigned to messages when ! 644: they come from an inbox file, and removed when a message is made ! 645: current. ! 646: `deleted' ! 647: Means the message is deleted. Assigned by deletion commands and ! 648: removed by undeletion commands (*Note Rmail Deletion::). ! 649: `filed' ! 650: Means the message has been copied to some other file. Assigned by the ! 651: file output commands (*Note Rmail Files::). ! 652: `answered' ! 653: Means you have mailed an answer to the message. Assigned by the `r' ! 654: command (`rmail-reply'). *Note Rmail Reply::. ! 655: `forwarded' ! 656: Means you have forwarded the message to other users. Assigned by the ! 657: `f' command (`rmail-forward'). *Note Rmail Reply::. ! 658: `edited' ! 659: Means you have edited the text of the message within Rmail. ! 660: *Note Rmail Editing::. ! 661: ! 662: All other labels are assigned or removed only by the user, and it is up ! 663: to the user to decide what they mean. ! 664: ! 665: ! 666: File: emacs Node: Rmail Summary, Prev: Rmail Labels, Up: Rmail, Next: Rmail Reply ! 667: ! 668: Summaries ! 669: ========= ! 670: ! 671: A "summary" is a buffer containing one line per message that Rmail ! 672: can make and display to give you an overview of the mail in an Rmail file. ! 673: Each line shows the message number, the sender, the labels, and the ! 674: subject. When the summary buffer is selected, various commands can be used ! 675: to select messages by moving in the summary buffer, or delete or undelete ! 676: messages. ! 677: ! 678: A summary buffer applies to a single Rmail file only; if you are ! 679: editing multiple Rmail files, they have separate summary buffers. The ! 680: summary buffer name is made by appending `-summary' to the Rmail buffer's ! 681: name. Only one summary buffer will be displayed at a time unless you make ! 682: several windows and select the summary buffers by hand. ! 683: ! 684: * Menu: ! 685: ! 686: * Rmail Make Summary:: Making various sorts of summaries. ! 687: * Rmail Summary Edit:: Manipulating messages from the summary. ! 688: ! 689: ! 690: File: emacs Node: Rmail Make Summary, Prev: Rmail Summary, Up: Rmail Summary, Next: Rmail Summary Edit ! 691: ! 692: Making Summaries ! 693: ---------------- ! 694: ! 695: Here are the commands to create a summary for the current Rmail file. ! 696: Summaries do not update automatically; to make an updated summary, you ! 697: must use one of these commands again. ! 698: ! 699: `h' ! 700: `C-M-h' ! 701: Summarize all messages (`rmail-summary'). ! 702: `l LABELS RET' ! 703: `C-M-l LABELS RET' ! 704: Summarize message that have one or more of the specified labels ! 705: (`rmail-summary-by-labels'). ! 706: `C-M-r RCPTS RET' ! 707: Summarize messages that have one or more of the specified recipients ! 708: (`rmail-summary-by-recipients') ! 709: ! 710: The `h' or `C-M-h' (`rmail-summary') command fills the summary buffer ! 711: for the current Rmail file with a summary of all the messages in the file. ! 712: It then displays and selects the summary buffer in another window. ! 713: ! 714: `C-M-l LABELS RET' (`rmail-summary-by-labels') makes a partial summary ! 715: mentioning only the messages that have one or more of the labels LABELS. ! 716: LABELS should contain label names separated by commas. ! 717: ! 718: `C-M-r RCPTS RET' (`rmail-summary-by-recipients') makes a partial summary ! 719: mentioning only the messages that have one or more of the recipients RCPTS. ! 720: RCPTS should contain mailing addresses separated by commas. ! 721: ! 722: Note that there is only one summary buffer for any Rmail file; making one ! 723: kind of summary discards any previously made summary. ! 724: ! 725: ! 726: File: emacs Node: Rmail Summary Edit, Prev: Rmail Make Summary, Up: Rmail Summary ! 727: ! 728: Editing in Summaries ! 729: -------------------- ! 730: ! 731: Summary buffers are given the major mode Rmail Summary mode, which ! 732: provides the following special commands: ! 733: ! 734: `j' ! 735: Select the message described by the line that point is on ! 736: (`rmail-summary-goto-msg'). ! 737: `C-n' ! 738: Move to next line and select its message in Rmail ! 739: (`rmail-summary-next-all'). ! 740: `C-p' ! 741: Move to previous line and select its message ! 742: (`rmail-summary-previous-all'). ! 743: `n' ! 744: Move to next line, skipping lines saying `deleted', and select its ! 745: message (`rmail-summary-next-msg'). ! 746: `p' ! 747: Move to previous line, skipping lines saying `deleted', and select ! 748: its message (`rmail-summary-previous-msg'). ! 749: `d' ! 750: Delete the current line's message, then do like `n' ! 751: (`rmail-summary-delete-forward'). ! 752: `u' ! 753: Undelete and select this message or the previous deleted message in ! 754: the summary (`rmail-summary-undelete'). ! 755: `SPC' ! 756: Scroll the other window (presumably Rmail) forward ! 757: (`rmail-summary-scroll-msg-up'). ! 758: `DEL' ! 759: Scroll the other window backward (`rmail-summary-scroll-msg-down'). ! 760: `x' ! 761: Kill the summary window (`rmail-summary-exit'). ! 762: `q' ! 763: Exit Rmail (`rmail-summary-quit'). ! 764: ! 765: The keys `C-n' and `C-p' are modified in Rmail Summary mode so that in ! 766: addition to moving point in the summary buffer they also cause the line's ! 767: message to become current in the associated Rmail buffer. That buffer is ! 768: also made visible in another window if it is not already so. ! 769: ! 770: `n' and `p' are similar to `C-n' and `C-p', but skip lines that say ! 771: `message deleted'. They are like the `n' and `p' keys of Rmail itself. ! 772: Note, however, that in a partial summary these commands move only among the ! 773: message listed in the summary. ! 774: ! 775: The other Emacs cursor motion commands are not changed in Rmail Summary ! 776: mode, so it is easy to get the point on a line whose message is not ! 777: selected in Rmail. This can also happen if you switch to the Rmail window ! 778: and switch messages there. To get the Rmail buffer back in sync with the ! 779: summary, use the `j' (`rmail-summary-goto-msg') command, which selects ! 780: in Rmail the message of the current summary line. ! 781: ! 782: Deletion and undeletion can also be done from the summary buffer. They ! 783: always work based on where point is located in the summary buffer, ignoring ! 784: which message is selected in Rmail. `d' (`rmail-summary-delete-forward') ! 785: deletes the current line's message, then moves to the next line whose ! 786: message is not deleted and selects that message. The inverse of this is ! 787: `u' (`rmail-summary-undelete'), which moves back (if necessary) to a line ! 788: whose message is deleted, undeletes that message, and selects it in Rmail. ! 789: ! 790: When moving through messages with the summary buffer, it is convenient to ! 791: be able to scroll the message while remaining in the summary window. The ! 792: commands SPC (`rmail-summary-scroll-up') and DEL ! 793: (`rmail-summary-scroll-down') do this. They scroll the message just as ! 794: those same keys do when the Rmail buffer is selected. ! 795: ! 796: When you are finished using the summary, type `x' (`rmail-summary-exit') ! 797: to kill the summary buffer's window. ! 798: ! 799: You can also exit Rmail while in the summary. `q' (`rmail-summary-quit') ! 800: kills the summary window, then saves the Rmail file and switches to another ! 801: buffer. ! 802: ! 803: ! 804: File: emacs Node: Rmail Reply, Prev: Rmail Summary, Up: Rmail, Next: Rmail Editing ! 805: ! 806: Sending Replies ! 807: =============== ! 808: ! 809: Rmail has several commands that use Mail mode to send outgoing mail. ! 810: *Note Sending Mail::, for information on using Mail mode. What are ! 811: documented here are the special commands of Rmail for entering Mail mode. ! 812: Note that the usual keys for sending mail, `C-x m' and `C-x 4 m', are ! 813: available in Rmail mode and work just as they usually do. ! 814: ! 815: `m' ! 816: Send a message (`rmail-mail'). ! 817: `c' ! 818: Continue editing already started outgoing message (`rmail-continue'). ! 819: `r' ! 820: Send a reply to the current Rmail message (`rmail-reply'). ! 821: `f' ! 822: Forward current message to other users (`rmail-forward'). ! 823: ! 824: The most common reason to send a message while in Rmail is to reply to ! 825: the message you are reading. To do this, type `r' (`rmail-reply'). This ! 826: displays the `*mail*' buffer in another window, much like `C-x 4 m', but ! 827: preinitializes the `Subject', `To', `CC' and `In-reply-to' header fields ! 828: based on the message being replied to. The `To' field is given the sender ! 829: of that message, and the `CC' gets all the recipients of that message (but ! 830: recipients that match elements of the list `rmail-dont-reply-to' are ! 831: omitted; by default, this list contains your own mailing address). ! 832: ! 833: Once you have initialized the `*mail*' buffer this way, sending the ! 834: mail goes as usual (*Note Sending Mail::). You can edit the presupplied ! 835: header fields if they are not right for you. ! 836: ! 837: One additional Mail mode command is available when mailing is invoked ! 838: from Rmail: `C-c C-y' (`mail-yank-original') inserts into the outgoing ! 839: message a copy of the current Rmail message; normally this is the message ! 840: you are replying to, but you can also switch to the Rmail buffer, select a ! 841: different message, switch back, and yank new current message. Normally the ! 842: yanked message is indented four spaces and has most header fields deleted ! 843: from it; an argument to `C-c y' specifies the amount to indent, and `C-u ! 844: C-c C-y' does not indent at all and does not delete any header fields. ! 845: ! 846: Another frequent reason to send mail in Rmail is to forward the current ! 847: message to other users. `f' (`rmail-forward') makes this easy by ! 848: preinitializing the `*mail*' buffer with the current message as the text, ! 849: and a subject designating a forwarded message. All you have to do is fill ! 850: in the recipients and send. ! 851: ! 852: The `m' (`rmail-mail') command is used to start editing an outgoing ! 853: message that is not a reply. It leaves the header fields empty. Its only ! 854: difference from `C-x 4 m' is that it makes the Rmail buffer accessible for ! 855: `C-c y', just as `r' does. Thus, `m' can be used to reply to or forward a ! 856: message; it can do anything `r' or `f' can do. ! 857: ! 858: The `c' (`rmail-continue') command resumes editing the `*mail*' buffer, ! 859: to finish editing an outgoing message you were already composing, or to ! 860: alter a message you have sent. ! 861: ! 862: ! 863: File: emacs Node: Rmail Editing, Prev: Rmail Reply, Up: Rmail, Next: Rmail Digest ! 864: ! 865: Editing Within a Message ! 866: ======================== ! 867: ! 868: Rmail mode provides a few special commands for moving within and editing ! 869: the current message. In addition, the usual Emacs commands are available ! 870: (except for a few, such as `C-M-n' and `C-M-h', that are redefined by Rmail for ! 871: other purposes). However, the Rmail buffer is normally read-only, and to ! 872: alter it you must use the Rmail command `w' described below. ! 873: ! 874: `t' ! 875: Toggle display of original headers (`rmail-toggle-headers'). ! 876: `w' ! 877: Edit current message (`rmail-edit-current-message'). ! 878: ! 879: Rmail reformats the header of each message before displaying it. ! 880: Normally this involves deleting most header fields, on the grounds that ! 881: they are not interesting. The variable `rmail-ignored-headers' should ! 882: contain a regexp that matches the header fields to discard in this way. ! 883: The original headers are saved permanently, and to see what they look like, ! 884: use the `t' (`rmail-toggle-headers') command. This discards the reformatted ! 885: headers of the current message and displays it with the original headers. ! 886: Repeating `t' reformats the message again. Selecting the message again ! 887: also reformats. ! 888: ! 889: The Rmail buffer is normally read only, and most of the characters you ! 890: would type to modify it (including most letters) are redefined as Rmail ! 891: commands. This is usually not a problem since it is rare to want to change ! 892: the text of a message. When you do want to do this, the way is to type ! 893: `w' (`rmail-edit-current-message'), which changes from Rmail mode into ! 894: Rmail Edit mode, another major mode which is nearly the same as Text mode. ! 895: The mode line illustrates this change. ! 896: ! 897: In Rmail Edit mode, letters insert themselves as usual and the Rmail ! 898: commands are not available. When you are finished editing the message and ! 899: are ready to go back to Rmail, type `C-c C-c', which switches back to ! 900: Rmail mode. Alternatively, you can return to Rmail mode but cancel all the ! 901: editing that you have done by typing `C-c C-]'. ! 902: ! 903: Entering Rmail Edit mode calls with no arguments the value of the variable ! 904: `text-mode-hook', if that value exists and is not `nil'; then it ! 905: does the same with the variable `rmail-edit-mode-hook'. It adds the ! 906: attribute `edited' to the message. ! 907: ! 908: ! 909: File: emacs Node: Rmail Digest, Prev: Rmail Editing, Up: Rmail ! 910: ! 911: Digest Messages ! 912: =============== ! 913: ! 914: A "digest message" is a message which exists to contain and carry ! 915: several other messages. Digests are used on moderated mailing lists; all ! 916: the messages that arrive for the list during a period of time such as one ! 917: day are put inside a single digest which is then sent to the subscribers. ! 918: Transmitting the single digest uses much less computer time than ! 919: transmitting the individual messages even though the total size is the ! 920: same, because the per-message overhead in network mail transmission is ! 921: considerable. ! 922: ! 923: When you receive a digest message, the most convenient way to read it is ! 924: to "undigestify" it: to turn it back into many individual messages. ! 925: Then you can read and delete the individual messages as it suits you. ! 926: ! 927: To undigestify a message, select it and then type `M-x ! 928: undigestify-rmail-message'. This copies each submessage as a separate ! 929: Rmail message and inserts them all following the digest. The digest ! 930: message itself is flagged as deleted. ! 931: ! 932: ! 933: File: emacs Node: Recursive Edit, Prev: Rmail, Up: Top, Next: Narrowing ! 934: ! 935: Recursive Editing Levels ! 936: ======================== ! 937: ! 938: A "recursive edit" is a situation in which you are using Emacs ! 939: commands to perform arbitrary editing while in the middle of another Emacs ! 940: command. For example, when you type `C-r' inside of a `query-replace', ! 941: you enter a recursive edit in which you can change the current buffer. On ! 942: exiting from the recursive edit, you go back to the `query-replace'. ! 943: ! 944: "Exiting" the recursive edit means returning to the unfinished ! 945: command, which continues execution. For example, exiting the recursive ! 946: edit requested by `C-r' in `query-replace' causes query replacing ! 947: to resume. Exiting is done with `C-M-c' (`exit-recursive-edit'). ! 948: ! 949: You can also "abort" the recursive edit. This is like exiting, but ! 950: also quits the unfinished command immediately. Use the command `C-]' ! 951: (`abort-recursive-edit') for this. *Note Quitting::. ! 952: ! 953: The mode line shows you when you are in a recursive edit by displaying ! 954: square brackets around the parentheses that always surround the major and ! 955: minor mode names. Every window's mode line shows this, in the same way, ! 956: since being in a recursive edit is true of Emacs as a whole rather than ! 957: any particular buffer. ! 958: ! 959: It is possible to be in recursive edits within recursive edits. For ! 960: example, after typing `C-r' in a `query-replace', you might type a ! 961: command that entered the debugger. In such circumstances, two or more sets ! 962: of square brackets appear in the mode line. Exiting the inner recursive ! 963: edit (such as, with the debugger `c' command) would resume the command ! 964: where it called the debugger. After the end of this command, you would be ! 965: able to exit the first recursive edit. Aborting also gets out of only one ! 966: level of recursive edit; it returns immediately to the command level of the ! 967: previous recursive edit. So you could immediately abort that one too. ! 968: ! 969: Alternatively, the command `M-x top-level' aborts all levels of ! 970: recursive edits, returning immediately to the top level command reader. ! 971: ! 972: The text being edited inside the recursive edit need not be the same text ! 973: that you were editing at top level. It depends on what the recursive edit ! 974: is for. If the command that invokes the recursive edit selects a different ! 975: buffer first, that is the buffer you will edit recursively. In any case, ! 976: you can switch buffers within the recursive edit in the normal manner (as ! 977: long as the buffer-switching keys have not been rebound). You could ! 978: probably do all the rest of your editing inside the recursive edit, ! 979: visiting files and all. But this could have surprising effects (such as ! 980: stack overflow) from time to time. So remember to exit or abort the ! 981: recursive edit when you no longer need it. ! 982: ! 983: In general, GNU Emacs tries to avoid using recursive edits. It is ! 984: usually preferable to allow the user to switch among the possible editing ! 985: modes in any order he likes. With recursive edits, the only way to get to ! 986: another state is to go "back" to the state that the recursive edit was ! 987: invoked from. ! 988: ! 989: ! 990: File: emacs Node: Narrowing, Prev: Recursive Edit, Up: Top, Next: Sorting ! 991: ! 992: Narrowing ! 993: ========= ! 994: ! 995: "Narrowing" means focusing in on some portion of the buffer, making ! 996: the rest temporarily invisible and inaccessible. Cancelling the narrowing, ! 997: and making the entire buffer once again visible, is called "widening". ! 998: The amount of narrowing in effect in a buffer at any time is called the ! 999: buffer's "restriction". ! 1000: ! 1001: `C-x n' ! 1002: Narrow down to between point and mark (`narrow-to-region'). ! 1003: `C-x w' ! 1004: Widen to make the entire buffer visible again (`widen'). ! 1005: ! 1006: When you have narrowed down to a part of the buffer, that part appears to ! 1007: be all there is. You can't see the rest, you can't move into it (motion ! 1008: commands won't go outside the visible part), you can't change it in any ! 1009: way. However, it is not gone, and if you save the file all the invisible ! 1010: text will be saved. In addition to sometimes making it easier to ! 1011: concentrate on a single subroutine or paragraph by eliminating clutter, ! 1012: narrowing can be used to restrict the range of operation of a replace ! 1013: command or repeating keyboard macro. The word `Narrow' appears in the ! 1014: mode line whenever narrowing is in effect. ! 1015: ! 1016: The primary narrowing command is `C-x n' (`narrow-to-region'). ! 1017: It sets the current buffer's restrictions so that the text in the current ! 1018: region remains visible but all text before the region or after the region ! 1019: is invisible. Point and mark do not change. ! 1020: ! 1021: Because narrowing can easily confuse users who do not understand it, ! 1022: `narrow-to-region' is normally a disabled command. Attempting to use ! 1023: this command asks for confirmation and gives you the option of enabling it; ! 1024: once you enable the command, confirmation will no longer be required for ! 1025: it. *Note Disabling::. ! 1026: ! 1027: The way to undo narrowing is to widen with `C-x w' (`widen'). ! 1028: This makes all text in the buffer accessible again. ! 1029: ! 1030: You can get information on what part of the buffer you are narrowed down ! 1031: to using the `C-x =' command. *Note Position Info::. ! 1032: ! 1033: ! 1034: File: emacs Node: Sorting, Prev: Narrowing, Up: Top, Next: Shell ! 1035: ! 1036: Sorting Text ! 1037: ============ ! 1038: ! 1039: Emacs provides several commands for sorting text in the buffer. All ! 1040: operate on the contents of the region (the text between point and the ! 1041: mark). They divide the text of the region into many "sort records", ! 1042: identify a "sort key" for each record, and then reorder the records ! 1043: into the order determined by the sort keys. The records are ordered so ! 1044: that their keys are in alphabetical order, or, for numeric sorting, in ! 1045: numeric order. In alphabetic sorting, all upper case letters `A' through ! 1046: `Z' come before lower case `a', in accord with the ASCII character ! 1047: sequence. ! 1048: ! 1049: The various sort commands differ in how they divide the text into sort ! 1050: records and in which part of each record is used as the sort key. Most of ! 1051: the commands make each line a separate sort record, but some commands use ! 1052: paragraphs or pages as sort records. Most of the sort commands use each ! 1053: entire sort record as its own sort key, but some use only a portion of the ! 1054: record as the sort key. ! 1055: ! 1056: `M-x sort-lines' ! 1057: Divide the region into lines, and sort by comparing the entire ! 1058: text of a line. A prefix argument means sort into descending order. ! 1059: ! 1060: `M-x sort-paragraphs' ! 1061: Divide the region into paragraphs, and sort by comparing the entire ! 1062: text of a paragraph (except for leading blank lines). A prefix ! 1063: argument means sort into descending order. ! 1064: ! 1065: `M-x sort-pages' ! 1066: Divide the region into pages, and sort by comparing the entire ! 1067: text of a page (except for leading blank lines). A prefix ! 1068: argument means sort into descending order. ! 1069: ! 1070: `M-x sort-fields' ! 1071: Divide the region into lines, and sort by comparing the contents of ! 1072: one field in each line. Fields are defined as separated by ! 1073: whitespace, so the first run of consecutive non-whitespace characters ! 1074: in a line constitutes field 1, the second such run constitutes field ! 1075: 2, etc. ! 1076: ! 1077: You specify which field to sort by with a numeric argument: 1 to sort ! 1078: by field 1, etc. A negative argument means sort into descending ! 1079: order. Thus, minus 2 means sort by field 2 in reverse-alphabetical ! 1080: order. ! 1081: ! 1082: `M-x sort-numeric-fields' ! 1083: Like `M-x sort-fields' except the specified field is converted ! 1084: to a number for each line, and the numbers are compared. `10' ! 1085: comes before `2' when considered as text, but after it when ! 1086: considered as a number. ! 1087: ! 1088: `M-x sort-columns' ! 1089: Like `M-x sort-fields' except that the text within each line ! 1090: used for comparison comes from a fixed range of columns. See below ! 1091: for an explanation. ! 1092: ! 1093: For example, if the buffer contains ! 1094: ! 1095: On systems where clash detection (locking of files being edited) is ! 1096: implemented, Emacs also checks the first time you modify a buffer ! 1097: whether the file has changed on disk since it was last visited or ! 1098: saved. If it has, you are asked to confirm that you want to change ! 1099: the buffer. ! 1100: ! 1101: then if you apply `M-x sort-lines' to the entire buffer you get ! 1102: ! 1103: On systems where clash detection (locking of files being edited) is ! 1104: implemented, Emacs also checks the first time you modify a buffer ! 1105: saved. If it has, you are asked to confirm that you want to change ! 1106: the buffer. ! 1107: whether the file has changed on disk since it was last visited or ! 1108: ! 1109: where the upper case `O' comes before all lower case letters. If you apply ! 1110: instead `C-u 2 M-x sort-fields' you get ! 1111: ! 1112: implemented, Emacs also checks the first time you modify a buffer ! 1113: saved. If it has, you are asked to confirm that you want to change ! 1114: the buffer. ! 1115: On systems where clash detection (locking of files being edited) is ! 1116: whether the file has changed on disk since it was last visited or ! 1117: ! 1118: where the sort keys were `Emacs', `If', `buffer', `systems' and `the'. ! 1119: ! 1120: `M-x sort-columns' requires more explanation. You specify the ! 1121: columns by putting point at one of the columns and the mark at the other ! 1122: column. Because this means you cannot put point or the mark at the ! 1123: beginning of the first line to sort, this command uses an unusual ! 1124: definition of `region': all of the line point is in is considered part of ! 1125: the region, and so is all of the line the mark is in. ! 1126: ! 1127: For example, to sort a table by information found in columns 10 to 15, ! 1128: you could put the mark on column 10 in the first line of the table, and ! 1129: point on column 15 in the last line of the table, and then use this command. ! 1130: Or you could put the mark on column 15 in the first line and point on ! 1131: column 10 in the last line. ! 1132: ! 1133: This can be thought of as sorting the rectangle specified by point and ! 1134: the mark, except that the text on each line to the left or right of the ! 1135: rectangle moves along with the text inside the rectangle. ! 1136: *Note Rectangles::. ! 1137: ! 1138:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.