|
|
BSD 4.3reno
[ emh.doc - Fri Oct 7 11:26:35 1983 - another interface to MH - /mtr ]
The emh package is yet another emacs-based interface to the Rand MH
system. The notion behind emh is that you never wait for a command
to finish -- you tell emh to start a command, and then at a later
time, emh will tell you what happened. Further, emh doesn't try
to make emacs into a powerful environment to access MH. Instead,
emh adds some basic front-end facilities for MH that allows you do
simple things with mail while running emacs. In short, the emh
philosophy is to provide a fast mail handling capacity that doesn't
slow down your other editing tasks. This gives emh a much
different "feel" than Brien Reid's MHE package.
Getting Started
emh is composed of a few MLisp files that get loaded in when you
need them. If you have the directory where these files are kept in
your $EPATH envariable, then you can use
ESC-X load emh.ml
to load the bootstrap in. If you don't have this directory in your
$EPATH envariable, then you can use the "emh" shell script. This
script defines your $EPATH envariable appropriately, and then
invokes emacs, telling it to load the emh.ml file.
Command style
All emh commands do not prompt you for arguments when invoked from
the keyboard. However if you want to be asked for additional
arguments, you can use the ^U- prefix. For example, by default
^X-r will read mail from your +inbox folder. By using ^U-^X-r, you
will be asked which folder should be used to read mail from.
Most emh commands do not take effect immediately. Instead, they
start a background process, and report back when that process
finishes. This allows you to continue doing other editing work.
When emh reports on the status of a completed activity, it pops up
a new window on your screen. To prevent confusion, you will never
be placed in this window. Instead, the context will remain the
window that you were using when the process terminated.
Buffers
The buffers that emh creates for your use come in several
varieties. You can determine what the rules are for using a buffer
by looking at its mode-string. This is displayed in the mode-line
for each window. Further, the mode-line may contain additional
information for you.
Listings
mode: (emh)
buffers: MH help, all scan listings, all message listings
comments: In emh mode, there is a special keymap interpreting
your commands. The commands available to you are described in
the "emh mode commands" section. When you enter a keystroke
in such a buffer, the command that gets invoked uses the
folder associated with the buffer for its execution context.
Folder List
mode: (Normal)
buffers: MH folders
comments: This buffer contains the results of the list
folders command. There is no special interpretation of its
contents.
Message Drafts
mode: usually (Text)
buffers: all compose, forward, and reply drafts
comments: After mh has built a draft buffer for you, you edit
the message draft. You can automatically have these buffers
created in a special mode (see the "Customization" section).
^X-^S is bound in these buffers to send the draft.
Process Handling
mode: (status: "condition"), "condition" is usually Running
or Exited
buffers: any buffer that emh is using to run an asynchronous
command
comments: You never edit anything in these buffers. They are
manipulated solely by emh.
Top level commands
The emh package provides three commands that are defined globally
for you.
Listing Folders
Keystrokes: ^X-f
Arguments: By default, all of your folders are listed. If
you use the ^U- prefix, then you will be asked to supply
options for the MH folders command.
Function: A listing of all of your MH folders is started. When
the folder listing is completed, it will appear on your
screen.
Reading Mail
Keystrokes: ^X-r
Arguments: By default, your +inbox folder is consulted. If
you use the ^U- prefix, then you will be asked which folder
should be used.
Function: If you have already started to read mail from this
folder, then the scan listing generated appears on the screen
and you are placed in this context. If not, then a scan
listing is started. When the scan listing is completed, it
will appear on your screen. To perform actions in the context
of this folder, place the cursor in this window. [N.B.: This
command does incorporate mail from your maildrop. Use the
incorporate mail command for that.]
Incorporate Mail
Keystrokes: ^X-i
Arguments: By default mail is incorporated from your MH
maildrop to your +inbox folder. If you use the ^U- prefix,
then you will be asked to specify the folder that should be
used, and the maildrop that should be used (such as a packed
file).
Function: The inc command is started. When inc finishes, if
there was mail to incorporate then a new scan listing is
started. Otherwise a process buffer summarizing the results
of inc's execution appears on the screen.
Sending Mail
Keystrokes: ^X-m
Arguments: By default, your components file is used as the
skeleton for the message draft. If you use the ^U- prefix,
then you will be asked which file should be used.
Function: A draft buffer is created and appears on the
screen. [N.B.: Unlike every other emh command, this command
will place you into the buffer IMMEDIATELY.] You now edit the
message draft in any fashion you wish. When you are ready to
send the draft, use ^X-^S. This makes the draft buffer
disappear from the screen. The posting process for the
message draft is now started. When the posting process has
finished, a process buffer summarizing the results of the
posting appears on the screen. If the message draft was
successfully posted, the draft buffer is removed. Otherwise,
the message draft is NOT removed. You can fix the problems,
and try again (using ^X-^S). Inside the process buffer, ^X-@
is bound to a function that will make the message draft appear
on your screen.
emh mode commands
When you are in a buffer in emh mode, a special keymap is used.
Only the printing-characters is affected, the bindings of the
control-characters default to the global keymap. Most printing
characters are bound to "illegal-operation", which means that emacs
will beep at you if you use them. The commands available in emh
mode allow you to handle messages within an individual folder.
Most of the commands reference the current message. The current
message is denoted in the folder's scan listing as having a '+'
after the message number. As you would expect the previous message
is the one on the line directly above the current message, and the
next message is the one on the line directly below the current
message. To change the current message, use the usual emacs cursor
motion commands (^N and ^P) and then invoke an mhe mode command.
When the command finishes, the '+' will be updated. Only two
mhe mode commands do not update the current message, the delete and
move message commands.
Display [Current, Next, Previous] Message
Keystrokes: s (also S) for cur message, n (also N or ^F) for
next message, p (also P or ^B or ^H) for prev message
Arguments: By default, no special arguments are given to
show. If you use the ^U- prefix, then you will be asked to
supply options for the MH show command.
Function: A listing of the current (or next, or prev) message
is started. When the listing is completed, it will appear on
your screen.
Compose Message
Keystrokes: c (also C)
Comments: This is identical to the send mail command.
Forward Current Message
Keystrokes: f (also F)
Arguments: By default, no special arguments are given to
forw. If you use the ^U -prefix, then you will be asked to
supply options for the MH forw command. This is useful if you
wish to forward more than one message in the message draft.
You can give a message list as the additional arguments to
forw.
Function: A draft buffer for the current message is prepared
in forwarding format. When the message draft is completed,
it will appear on your screen. You then edit the draft buffer
and use ^X-^S to send the message draft. Inside the draft
buffer, ^X-@ is bound to a function that will make the message
being forwarded appear on your screen.
Reply to Current Message
Keystrokes: r (also R)
Arguments: By default, no special arguments are given to
repl. If you use the ^U -prefix, then you will be asked to
supply options for the MH repl command.
Function: A draft buffer for the current message is prepared
in reply format. When the message draft is completed,
it will appear on your screen. You then edit the draft buffer
and use ^X-^S to send the message draft. Inside the draft
buffer, ^X-@ is bound to a function that will make the message
being forwarded appear on your screen.
Delete Current Message
Keystrokes: d (also D)
Arguments: By default, no special arguments are given to rmm.
If you use the ^U -prefix, then you will be asked to supply
options for the MH rmm command.
Function: The scan listing for the current folder is updated.
If the current folder is read-only, then nothing else happens.
Otherwise, the rmm command is started. When rmm finishes, if
it was successful, nothing happens. Otherwise, a process
buffer summarizing the results of rmm's execution appears on
the screen.
Move Current Message
Keystrokes: m (also M)
Arguments: You are prompted for the name of the destination
folder. By default, no special arguments are given to file.
If you use the ^U- prefix, then you will be asked to supply
options for the MH file command.
Function: The scan listing for the current folder is updated.
The file command is started (if the current folder is
read-only, then -link is used, otherwise -nolink is used).
When file finishes, if it was successful, nothing happens,
Otherwise a process buffer summarizing the results of file's
execution appears on the screen.
Incorporate New Mail
Keystrokes: i (also I)
Comments: This is identical to the incorporate mail command.
Display Help
Keystrokes: ? (also h or H)
Arguments: none
Function: A buffer summarizing the top level and emh mode
commands appears on your screen.
Customization
At present, the emh package contains two hooks for user
customization.
Loading Customizations
When emh is loaded, emacs will look for a file called
"emh-custom.ml" and try to load its contents. This is done
after everything has been set-up, just at the end of emh's
initialization.
Automode for Message Drafts
When a draft buffer has been built, but before it appears on
your screen, emh will see if a variable called
"&mh-draft-automode" exists. If so, the contents of this
variable is executed. If not, then the default text-mode is
invoked. Hence, if you have a text mode that you like to use
on message drafts, you can have emh invoke this mode for you
in the context of the draft buffer. Including something like
(declare-global &mh-draft-automode)
(setq &mh-draft-automode "(my-text-mode)")
(autoload "my-text-mode" "my-text-mode.ml")
in your emh-custom.ml file would place each draft buffer in
my-text mode.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.