|
|
1.1 ! root 1: [ emh.doc - Fri Oct 7 11:26:35 1983 - another interface to MH - /mtr ] ! 2: ! 3: ! 4: The emh package is yet another emacs-based interface to the Rand MH ! 5: system. The notion behind emh is that you never wait for a command ! 6: to finish -- you tell emh to start a command, and then at a later ! 7: time, emh will tell you what happened. Further, emh doesn't try ! 8: to make emacs into a powerful environment to access MH. Instead, ! 9: emh adds some basic front-end facilities for MH that allows you do ! 10: simple things with mail while running emacs. In short, the emh ! 11: philosophy is to provide a fast mail handling capacity that doesn't ! 12: slow down your other editing tasks. This gives emh a much ! 13: different "feel" than Brien Reid's MHE package. ! 14: ! 15: ! 16: Getting Started ! 17: ! 18: emh is composed of a few MLisp files that get loaded in when you ! 19: need them. If you have the directory where these files are kept in ! 20: your $EPATH envariable, then you can use ! 21: ! 22: ESC-X load emh.ml ! 23: ! 24: to load the bootstrap in. If you don't have this directory in your ! 25: $EPATH envariable, then you can use the "emh" shell script. This ! 26: script defines your $EPATH envariable appropriately, and then ! 27: invokes emacs, telling it to load the emh.ml file. ! 28: ! 29: ! 30: Command style ! 31: ! 32: All emh commands do not prompt you for arguments when invoked from ! 33: the keyboard. However if you want to be asked for additional ! 34: arguments, you can use the ^U- prefix. For example, by default ! 35: ^X-r will read mail from your +inbox folder. By using ^U-^X-r, you ! 36: will be asked which folder should be used to read mail from. ! 37: ! 38: Most emh commands do not take effect immediately. Instead, they ! 39: start a background process, and report back when that process ! 40: finishes. This allows you to continue doing other editing work. ! 41: When emh reports on the status of a completed activity, it pops up ! 42: a new window on your screen. To prevent confusion, you will never ! 43: be placed in this window. Instead, the context will remain the ! 44: window that you were using when the process terminated. ! 45: ! 46: ! 47: Buffers ! 48: ! 49: The buffers that emh creates for your use come in several ! 50: varieties. You can determine what the rules are for using a buffer ! 51: by looking at its mode-string. This is displayed in the mode-line ! 52: for each window. Further, the mode-line may contain additional ! 53: information for you. ! 54: ! 55: Listings ! 56: ! 57: mode: (emh) ! 58: ! 59: buffers: MH help, all scan listings, all message listings ! 60: ! 61: comments: In emh mode, there is a special keymap interpreting ! 62: your commands. The commands available to you are described in ! 63: the "emh mode commands" section. When you enter a keystroke ! 64: in such a buffer, the command that gets invoked uses the ! 65: folder associated with the buffer for its execution context. ! 66: ! 67: Folder List ! 68: ! 69: mode: (Normal) ! 70: ! 71: buffers: MH folders ! 72: ! 73: comments: This buffer contains the results of the list ! 74: folders command. There is no special interpretation of its ! 75: contents. ! 76: ! 77: Message Drafts ! 78: ! 79: mode: usually (Text) ! 80: ! 81: buffers: all compose, forward, and reply drafts ! 82: ! 83: comments: After mh has built a draft buffer for you, you edit ! 84: the message draft. You can automatically have these buffers ! 85: created in a special mode (see the "Customization" section). ! 86: ^X-^S is bound in these buffers to send the draft. ! 87: ! 88: Process Handling ! 89: ! 90: mode: (status: "condition"), "condition" is usually Running ! 91: or Exited ! 92: ! 93: buffers: any buffer that emh is using to run an asynchronous ! 94: command ! 95: ! 96: comments: You never edit anything in these buffers. They are ! 97: manipulated solely by emh. ! 98: ! 99: ! 100: Top level commands ! 101: ! 102: The emh package provides three commands that are defined globally ! 103: for you. ! 104: ! 105: Listing Folders ! 106: ! 107: Keystrokes: ^X-f ! 108: ! 109: Arguments: By default, all of your folders are listed. If ! 110: you use the ^U- prefix, then you will be asked to supply ! 111: options for the MH folders command. ! 112: ! 113: Function: A listing of all of your MH folders is started. When ! 114: the folder listing is completed, it will appear on your ! 115: screen. ! 116: ! 117: Reading Mail ! 118: ! 119: Keystrokes: ^X-r ! 120: ! 121: Arguments: By default, your +inbox folder is consulted. If ! 122: you use the ^U- prefix, then you will be asked which folder ! 123: should be used. ! 124: ! 125: Function: If you have already started to read mail from this ! 126: folder, then the scan listing generated appears on the screen ! 127: and you are placed in this context. If not, then a scan ! 128: listing is started. When the scan listing is completed, it ! 129: will appear on your screen. To perform actions in the context ! 130: of this folder, place the cursor in this window. [N.B.: This ! 131: command does incorporate mail from your maildrop. Use the ! 132: incorporate mail command for that.] ! 133: ! 134: Incorporate Mail ! 135: ! 136: Keystrokes: ^X-i ! 137: ! 138: Arguments: By default mail is incorporated from your MH ! 139: maildrop to your +inbox folder. If you use the ^U- prefix, ! 140: then you will be asked to specify the folder that should be ! 141: used, and the maildrop that should be used (such as a packed ! 142: file). ! 143: ! 144: Function: The inc command is started. When inc finishes, if ! 145: there was mail to incorporate then a new scan listing is ! 146: started. Otherwise a process buffer summarizing the results ! 147: of inc's execution appears on the screen. ! 148: ! 149: Sending Mail ! 150: ! 151: Keystrokes: ^X-m ! 152: ! 153: Arguments: By default, your components file is used as the ! 154: skeleton for the message draft. If you use the ^U- prefix, ! 155: then you will be asked which file should be used. ! 156: ! 157: Function: A draft buffer is created and appears on the ! 158: screen. [N.B.: Unlike every other emh command, this command ! 159: will place you into the buffer IMMEDIATELY.] You now edit the ! 160: message draft in any fashion you wish. When you are ready to ! 161: send the draft, use ^X-^S. This makes the draft buffer ! 162: disappear from the screen. The posting process for the ! 163: message draft is now started. When the posting process has ! 164: finished, a process buffer summarizing the results of the ! 165: posting appears on the screen. If the message draft was ! 166: successfully posted, the draft buffer is removed. Otherwise, ! 167: the message draft is NOT removed. You can fix the problems, ! 168: and try again (using ^X-^S). Inside the process buffer, ^X-@ ! 169: is bound to a function that will make the message draft appear ! 170: on your screen. ! 171: ! 172: ! 173: emh mode commands ! 174: ! 175: When you are in a buffer in emh mode, a special keymap is used. ! 176: Only the printing-characters is affected, the bindings of the ! 177: control-characters default to the global keymap. Most printing ! 178: characters are bound to "illegal-operation", which means that emacs ! 179: will beep at you if you use them. The commands available in emh ! 180: mode allow you to handle messages within an individual folder. ! 181: ! 182: Most of the commands reference the current message. The current ! 183: message is denoted in the folder's scan listing as having a '+' ! 184: after the message number. As you would expect the previous message ! 185: is the one on the line directly above the current message, and the ! 186: next message is the one on the line directly below the current ! 187: message. To change the current message, use the usual emacs cursor ! 188: motion commands (^N and ^P) and then invoke an mhe mode command. ! 189: When the command finishes, the '+' will be updated. Only two ! 190: mhe mode commands do not update the current message, the delete and ! 191: move message commands. ! 192: ! 193: Display [Current, Next, Previous] Message ! 194: ! 195: Keystrokes: s (also S) for cur message, n (also N or ^F) for ! 196: next message, p (also P or ^B or ^H) for prev message ! 197: ! 198: Arguments: By default, no special arguments are given to ! 199: show. If you use the ^U- prefix, then you will be asked to ! 200: supply options for the MH show command. ! 201: ! 202: Function: A listing of the current (or next, or prev) message ! 203: is started. When the listing is completed, it will appear on ! 204: your screen. ! 205: ! 206: Compose Message ! 207: ! 208: Keystrokes: c (also C) ! 209: ! 210: Comments: This is identical to the send mail command. ! 211: ! 212: Forward Current Message ! 213: ! 214: Keystrokes: f (also F) ! 215: ! 216: Arguments: By default, no special arguments are given to ! 217: forw. If you use the ^U -prefix, then you will be asked to ! 218: supply options for the MH forw command. This is useful if you ! 219: wish to forward more than one message in the message draft. ! 220: You can give a message list as the additional arguments to ! 221: forw. ! 222: ! 223: Function: A draft buffer for the current message is prepared ! 224: in forwarding format. When the message draft is completed, ! 225: it will appear on your screen. You then edit the draft buffer ! 226: and use ^X-^S to send the message draft. Inside the draft ! 227: buffer, ^X-@ is bound to a function that will make the message ! 228: being forwarded appear on your screen. ! 229: ! 230: Reply to Current Message ! 231: ! 232: Keystrokes: r (also R) ! 233: ! 234: Arguments: By default, no special arguments are given to ! 235: repl. If you use the ^U -prefix, then you will be asked to ! 236: supply options for the MH repl command. ! 237: ! 238: Function: A draft buffer for the current message is prepared ! 239: in reply format. When the message draft is completed, ! 240: it will appear on your screen. You then edit the draft buffer ! 241: and use ^X-^S to send the message draft. Inside the draft ! 242: buffer, ^X-@ is bound to a function that will make the message ! 243: being forwarded appear on your screen. ! 244: ! 245: Delete Current Message ! 246: ! 247: Keystrokes: d (also D) ! 248: ! 249: Arguments: By default, no special arguments are given to rmm. ! 250: If you use the ^U -prefix, then you will be asked to supply ! 251: options for the MH rmm command. ! 252: ! 253: Function: The scan listing for the current folder is updated. ! 254: If the current folder is read-only, then nothing else happens. ! 255: Otherwise, the rmm command is started. When rmm finishes, if ! 256: it was successful, nothing happens. Otherwise, a process ! 257: buffer summarizing the results of rmm's execution appears on ! 258: the screen. ! 259: ! 260: Move Current Message ! 261: ! 262: Keystrokes: m (also M) ! 263: ! 264: Arguments: You are prompted for the name of the destination ! 265: folder. By default, no special arguments are given to file. ! 266: If you use the ^U- prefix, then you will be asked to supply ! 267: options for the MH file command. ! 268: ! 269: Function: The scan listing for the current folder is updated. ! 270: The file command is started (if the current folder is ! 271: read-only, then -link is used, otherwise -nolink is used). ! 272: When file finishes, if it was successful, nothing happens, ! 273: Otherwise a process buffer summarizing the results of file's ! 274: execution appears on the screen. ! 275: ! 276: Incorporate New Mail ! 277: ! 278: Keystrokes: i (also I) ! 279: ! 280: Comments: This is identical to the incorporate mail command. ! 281: ! 282: Display Help ! 283: ! 284: Keystrokes: ? (also h or H) ! 285: ! 286: Arguments: none ! 287: ! 288: Function: A buffer summarizing the top level and emh mode ! 289: commands appears on your screen. ! 290: ! 291: ! 292: Customization ! 293: ! 294: At present, the emh package contains two hooks for user ! 295: customization. ! 296: ! 297: Loading Customizations ! 298: ! 299: When emh is loaded, emacs will look for a file called ! 300: "emh-custom.ml" and try to load its contents. This is done ! 301: after everything has been set-up, just at the end of emh's ! 302: initialization. ! 303: ! 304: Automode for Message Drafts ! 305: ! 306: When a draft buffer has been built, but before it appears on ! 307: your screen, emh will see if a variable called ! 308: "&mh-draft-automode" exists. If so, the contents of this ! 309: variable is executed. If not, then the default text-mode is ! 310: invoked. Hence, if you have a text mode that you like to use ! 311: on message drafts, you can have emh invoke this mode for you ! 312: in the context of the draft buffer. Including something like ! 313: ! 314: (declare-global &mh-draft-automode) ! 315: (setq &mh-draft-automode "(my-text-mode)") ! 316: (autoload "my-text-mode" "my-text-mode.ml") ! 317: ! 318: in your emh-custom.ml file would place each draft buffer in ! 319: my-text mode.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.