Lazily loading notmuch into Emacs

David Edmondson dme at dme.org
Tue Jun 2 04:41:02 PDT 2020


On Monday, 2020-06-01 at 10:36:16 -07, Sean Whitton wrote:

> Hello,
>
> I don't want to put (require 'notmuch) into my Emacs init because that
> will slow down initial Emacs startup a fair bit, especially since my
> (file which is equivalent to) notmuch-config.el does quite a bit of
> processing to populate notmuch-saved-searches.
>
> So I have this:
>
>     ;; Ensure notmuch does its `message-mode' configuration and that my
>     ;; notmuch-config.el gets loaded before certain commands happen.  An
>     ;; alternative to advising `compose-mail' and friends here would be
>     ;; to remap its keys to `notmuch-mua-new-mail', but it is nice to
>     ;; have things work correctly if some lisp code somewhere calls
>     ;; `compose-mail' or friends
>     (defun spw/load-notmuch (&rest ignore)
>       (require 'notmuch))
>     (dolist (cmd '(compose-mail
>                    compose-mail-other-window
>                    compose-mail-other-frame
>                    notmuch-jump-search
>                    notmuch-hello))
>       (advice-add cmd :before #'spw/load-notmuch))
>
>     (global-set-key "\C-cs" #'notmuch-search)
>     (global-set-key "\C-cm" #'notmuch-jump-search)
>     (global-set-key "\C-cM" #'notmuch-hello)
>
> This is not a very idiomatic way to make use of an ELPA package,
> however.  Does anyone have a better approach that does not involve
> advice-add?  I'm using the elpa-notmuch package on Debian.

I'd hoped that:

(require 'notmuch-mua)
(setq mail-user-agent 'notmuch-user-agent)

would be sufficient to get things wired up, but it doesn't seem to be.

If we fix that, would it seem more appropriate? If we get it right then
it shouldn't load any other notmuch code (including notmuch-config.el)
until you actually use one of the functions.

(None of this will configure your chosen bindings of course, you'll
still have to do that yourself.)

dme.
-- 
Everybody's got something to hide, 'cept me and my monkey.


More information about the notmuch mailing list