Hi!

For a works-for-me-hack[1], I need to write a Python wrapper-script
for the editor (vim at my side).

The wrapper basically parses the temporary file which was created by
mutt (muttfilename), creates a new temporary file with modified
content (TMPFILENAME), and currently tries to replace muttfilename
with TMPFILENAME by deleting and renaming:

    [...]
    log.write('re-wrote email to TMPFILENAME\n')

    assert(os.path.isfile(muttfilename))
    assert(os.path.isfile(TMPFILENAME))

    os.remove(muttfilename)
    log.write('removed muttfilename; renaming TMPFILENAME to muttfilename 
...\n')

    os.rename(TMPFILENAME, muttfilename)  ## <-- here, mutt does take over 
again!!! :-(

    log.write('renamed TMPFILENAME to muttfilename\n') ## <-- does not get into 
log any more

    assert(os.path.isfile(muttfilename))
    assert(os.path.isfile(TMPFILENAME) == False)

    log.write('calling EDITOR ...\n')
    call([EDITOR, muttfilename])
    [...]

After renaming, I want to invoke my editor, make my manual changes
to the email body and after quitting the editor, mutt should take
over again.

However, when I rename TMPFILENAME to muttfilename, mutt takes over
the process again. This skips the editor part completely. Mutt
complains that the muttfilename is missing:

    "Can't stat /tmp/mutt-grmlvrs-1002-5074-359: No such file or
     directory"

This way, the message file is lost entirely.

So: how do I accomplish my wrapper so that mutt takes over again
after the editor quits and not before? How can I replace the content
of the mutt-temp-file before my editor without letting mutt taking
over in-between?

Thanks for your help!


[1] Yes, you are tempted to question my hack-approach - I would.
Please don't because I really tried to do the stuff using mutt hooks
and unfortunately this does not work at all because of the
complexity of the stuff I need to do in background as well. Please
let's assume, that there is no other way than to write a
wrapper-script in Python.  :-)

-- 
Karl Voit

Reply via email to