[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: message.el and browse-url.el interaction [was: Re: BUG: notmuch-emac
Re: message.el and browse-url.el interaction [was: Re: BUG: notmuch-emacs-mua wrong signing MML placement]
Fri, 13 Dec 2019 09:33:11 +0200
Notmuch/0.28.3+84~g41389bb (https://notmuchmail.org) Emacs/25.2.1 (x86_64-unknown-linux-gnu)
On Fri, Dec 13 2019, Tomi Ollila wrote:
> On Thu, Dec 12 2019, David Edmondson wrote:
>> On Wednesday, 2019-12-11 at 13:55:16 -05, Robbie Harwood wrote:
>>> My emacs config contains `(add-hook 'message-setup-hook
>>> 'mml-secure-sign-pgpmime)` as recommended in the emacstips
>>> However, when I run (something like):
>>> notmuch-emacs-mua 'mailto:testto?body=testbody'
>>> I get an email in which the requested body contents appear *before* the
>>> signing MML. If I understand correctly how this all fits together, that
>>> won't do the right thing - but at any rate, it's unexpected.
>> This is an unfortunate interaction between message.el and browse-url.el
>> and isn't specific to notmuch or notmuch-emacs-mua.
>> You can see the same behaviour in “emacs -Q -q” if you execute:
>> (add-hook 'message-setup-hook 'mml-secure-sign-pgpmime)
>> (browse-url-mail "mailto:fred?body=testbody"))
>> Given that, it's not something that we should be fixing in notmuch
>> itself, as it's an emacs bug.
>> The problem is that `browse-url-mail' always inserts the body after the
>> header separator, which in this case happens after
>> `mml-secure-sign-pgpmime' has already inserted the MML header.
>> Having `browse-url-mail' insert the body at the end of the message would
>> work for this case, but would presumably make a mess of situations where
>> someone inserts their signature block via `message-setup-hook'.
>> Perhaps `browse-url-mail' should skip past any MML headers before
>> inserting the body? That's a bit messy, as browse-url.el currently
>> doesn't know anything about MML.
> I've never found `browse-url-mail' adequate for handling mailto: links,
> so couple of years ago I wrote mailto: "wrapper" of my own (*). It,
> among other things, spits the following elisp for emacs to swallow:
> (require 'notmuch)
> (notmuch-mua-mail "fred" nil nil nil
> (cd "/home/too/vc/projects/nottoomuch")
> (message-goto-body) (insert "testbody")
> (goto-char (point-max))
> (if (/= (point) (line-beginning-position))
> (set-buffer-modified-p nil) (message-goto-to))
Small update from my front -- looked message.el and (message-setup-1)
there in particular, and then tested the following code:
(let ((message-signature-setup-hook message-signature-setup-hook))
(lambda () (message-goto-body) (insert "testbody")
(if (/= (point) (line-beginning-position))
(notmuch-mua-mail "fred" nil nil nil
This has moderate chance of working, so I'll have to think it a bit
further (and clean up the code =D)...
> Surprise! this has exactly the same problems as David explains above; I
> could add code to check for this [#part sign=pgpmime] (**) and skip it if
> it exists (and, as first step, not look for anything else to skip). That
> is just so hacky and error prone I would not like to do so (at least as
> a general solution)...
>> The nicest fix would perhaps be to have `compose-mail' accept the
>> initial body as a parameter, which would eventually flow into the
>> relevant code in message.el which could do the right thing (which I
>> think would just be to skip past MML headers before inserting the body).
> This suggestion of an optional parameter to take initial body sounds
> very good solution (as first sight =D), so if I don't come up with
> any other suggestions +1 for that..
>> Any advice from emacs-devel on how to move forward? I'm happy to produce
>> a patch for whatever solution is considered most appropriate.
>> If the girls start moving the boys will start moving.
> (**) replace [...] with <...>