mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages |
mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages
repl -editor mha-mhedit
mha-mhedit nicely formats MIME messages for use with MH/nmh's repl(1)
command.
A big deficiency with MH/nmh's repl
is that it is not MIME aware,
or more technically, repl filters are not MIME aware. Consequently,
if replying to a multipart, non-plain text message, and your repl
filter includes the body of the message being replied to, all the
MIME formatting is included, which can be messing for binary data,
like images, and for quoted-printable text.
mha-mhedit is designed to be used as the repl
editor:
repl -editor mha-mhedit
mha-mhedit is designed to functional transparently. mha-mhedit formats and quotes the reply-to message body for editing in the message draft. After the formatting is complete, mha-mhedit invokes your regular editor for final composition.
mha-mhedit does its job by using MHonArc, <http://www.mhonarc.org>, with a specially crafted MHonArc resource file, and by using a text-based HTML viewer, like w3m, <http://w3m.sourceforge.net/>. Of course, a tool can be developed that does not depend on these types of tools, but I did not feel like developing one and these work well for what I wanted.
mha-mhedit can be invoke by default when using repl
by
having the following in your .mh_profile
:
repl: -editor mha-mhedit
However, since using mha-mhedit adds some extra initial overhead before your regular editor is invoked, you may choose to define a shell alias instead:
(t)csh: alias mrepl repl -editor mha-mhedit
bash: alias mrepl="repl -editor mha-mhedit"
Therefore, if replying to a MIME messages, you enter mrepl
at your
shell prompt and continue to use repl
for plain text messages.
Note: It is recommended to have something like the following
in your .mh_profile
:
mha-mhedit-next: <your-editor>
This way, at the What now?
prompt, if you enter edit
, it
will invoke your regular editor again instead of calling
mha-mhedit, which will cause all your edits to be lost.
Options can be defined in your .mh_profile
like any other
MH/nmh component. For example:
mha-mhedit: -editor vim
The following options are available:
vi
is used.
Arguments to the editor can be defined by setting the mha-mhedit-editor
profile component. For example, if your editor is set to vim
, the
following can be added to your .mh_profile
to have vim start at the
end of your reply:
mha-mhedit-vim: +
w3m
is used.
You can define arguments to give the specified converter by defining the
mha-mhedit-htmlconv
profile component in your .mh_profile
. For
example, the following represents the default arguments used if
-htmlconv
is w3m
:
mha-mhedit-w3m: -dump -cols 76 -T text/html
The following works well if -htmlconv
is set to lynx
:
mha-mhedit-lynx: -stdin -dump -force_html -nolist -width=76
-linelen
, the lines will be wrapped.
Default value is 76.
mha-repl.mrc
in your MH/nmh directory.
Note: If a resource file is not found, mha-mhedit aborts execution. If using a custom resource file, be careful of settings that could create extra files during mail-to-html conversion.
mhonarc
is used.
You can define extra arguments to give mhonarc
by defining the
mha-mhedit-mhonarc
profile component in your .mh_profile
. However,
I'm unsure if you will ever need to.
The default value is >
.
>
'' (greater-than sign followed by a space).
Copy the mha-mhedit program to somewhere in your search path. Copy mha-repl.mrc into your MH/nmh directory.
If I have lost you, here is the replcomps I have:
%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\ %<(nonnull)%(void(width))%(putaddr To: )\n%>\ %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ %<{fcc}Fcc: %{fcc}\n%>\ %<{subject}Subject: Re: %(putstr(trim{subject}))\n%>\ From: Earl Hood \<earl@earlhood.com\> Reply-To: Earl Hood \<earl@earlhood.com\> %<{date}In-reply-to: %<{message-id}%{message-id}%>\n%>\ %<{message-id}References: %<{references}%(void{references})%(trim)%(putstr) %> %(void{message-id})%(trim)%(putstr)\n%>\ -------- On %(lmonth{date}) %(mday{date}), %(year{date}) at \ %02(putnumf(hour{date})):%02(putnumf(min{date})), \ %<{from}%(friendly{from})%|you%> wrote:
And the repl filter (repl.filter) I use for quoting the body of the reply-to message:
leftadjust,compwidth=14 body:component=> ,overflowtext=> ,noleftadjust
The replcomps file includes a preamble in the message body providing the date and person who wrote the message I am replying to.
My repl.filter causes the reply-to message body to be included in the composition draft quoted with ``> '' before each line.
mha-mhedit automatically reads the initial draft header (everything
up to the --------
). After that, mha-mhedit reads up-to the
next 5 lines for potential inclusion. The body preamble in my
replcomps takes up 2 lines (there is a trailing blank line that
may not be easily noticed above). Therefore, mha-mhedit will
preserve it. The third line will be the start of quoted text.
mha-mhedit sees this, and stops reading the draft.
Now, if I plan to make mha-mhedit my default repl editor, it will be more efficient if I remove the message body quoting since mha-mhedit will ignore and overwrite anyway.
Currently, no temporary files should be generated. However, this depends on the version of mhonarc you are using, the type of message being replied to, and any edits you may make to the mhonarc resource file.It may be possible that by-product files, like attachments, could
be created. If so, manual deletion of the files in -tmpdir
will
be required.
$HOME/.mh_profile
<mh-dir>/mha-repl.mrc
-mharc
command-line option.
mha-mhedit
mha-mhedit-editor
mha-mhedit-htmlconv
mha-mhedit-mhonarc
Editor
EDITOR
TMPDIR
An alternate converter program can be used via the -htmlconv
option.
It must be able to take HTML as standard input and dump formated text
to standard out.
$Id: mha-mhedit.html,v 1.1 2003/01/04 21:11:26 ehood Exp $
Earl Hood, earl@earlhood.com
Copyright (C), 2002. This program comes with ABSOLUTELY NO WARRANTY and may be copied only under the terms of the GNU General Public License.
mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages |