.\" @(#)$Id: prompter.rf,v 1.8 1992/05/12 22:23:34 jromine Exp $
prompter \- prompting editor front-end for MH
\%[\-erase\ chr]
\%[\-kill\ chr]
\%[\-prepend] \%[\-noprepend]
\%[\-rapid] \%[\-norapid]
\%[\-doteof] \%[\-nodoteof]
This program is normally not invoked directly by users
but takes the place of an editor and acts as an editor front\-end.
It operates on an 822\-style message draft skeleton specified by file,
normally provided by \fIcomp\fR, \fIdist\fR, \fIforw\fR, or \fIrepl\fR.

\fIPrompter\fR is an editor which allows rapid composition of
It is particularly useful to network and low\-speed
(less than 2400 baud) users of \fIMH\fR.
It is an \fIMH\fR program in that
it can have its own profile entry with switches,
but it is not invoked directly by the user.
The commands \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR
invoke \fIprompter\fR as an editor,
either when invoked with `\-editor\ prompter',
or by the profile entry \*(lqEditor:\ prompter\*(rq,
or when given the command `edit\ prompter' at \*(lqWhat now?\*(rq level.

For each empty component \fIprompter\fR finds in the draft,
the user is prompted for a response;
A <RETURN> will cause the whole component to be left out.
a `\\' preceding a <RETURN> will continue the response on the next line,
allowing for multiline components.
Continuation lines \fBmust\fR begin with a space or tab.

Each non\-empty component is copied to the draft and displayed on the

The start of the message body is denoted by a blank line or a line of dashes.
If the body is non\-empty, the prompt, which isn't written to the file, is

    \*(lq--------Enter additional text\*(rq,

or (if `\-prepend' was given)

    \*(lq--------Enter initial text\*(rq.

Message\-body typing is terminated with an end\-of\-file (usually CTRL\-D).
With the `\-doteof' switch, a period on a line all by itself also signifies
At this point control is returned to the calling program,
where the user is asked \*(lqWhat now?\*(rq.
See \fIwhatnow\fR for the valid options to this query.

By using the `\-prepend' switch, the user can add type\-in to the beginning
of the message body and have the rest of the body follow.
This is useful for the \fIforw\fR command.

By using the `\-rapid' switch,
if the draft already contains text in the message\-body,
it is not displayed on the user's terminal.
This is useful for low\-speed terminals.

The line editing characters for kill and erase may be
specified by the user via the arguments `\-kill\ chr' and `\-erase\ chr',
where chr may be a character; or `\\nnn', where \*(lqnnn\*(rq is the
octal value for the character.

An interrupt (usually CTRL\-C) during component typing will abort
\fIprompter\fR and the \fIMH\fR command that invoked it.
An interrupt during message\-body typing is equivalent to CTRL\-D,
for historical reasons.
This means that \fIprompter\fR should finish up and exit.

The first non\-flag argument to \fIprompter\fR
is taken as the name of the draft file, and
subsequent non\-flag arguments are ignored.
.\" (\fIRepl\fR invokes editors with two file arguments:
.\" the draft file name and the replied\-to message file name.)
^$HOME/\&.mh\(ruprofile~^The user profile
^/tmp/prompter*~^Temporary copy of message
prompter\-next:	To name the editor to be used on exit from \fIprompter\fR
^Msg\-Protect:~^To set mode when creating a new draft
comp(1), dist(1), forw(1), repl(1), whatnow(1)
The `\-rapid' option is particularly useful with \fIforw\fP, and
`\-noprepend' is useful with \fIcomp\ \-use\fP.

The user may wish to link \fIprompter\fR under several names
(e.g., \*(lqrapid\*(rq) and give appropriate switches
in the profile entries under these names (e.g., \*(lqrapid: -rapid\*(rq).
This facilitates invoking prompter differently for 
different \fIMH\fP commands (e.g., \*(lqforw: -editor rapid\*(rq).
\fIPrompter\fR uses \fIstdio\fR\0(3), so it will lose if you edit files
with nulls in them.