I few months ago, I introduced mu4e
, a modest little emacs mail client that
I wrote. It seems many people picked it up, great!
what's new?
I have just released mu/mu4e version 0.9.9. There are quite a few changes, both user-visible and 'under-the-hood'. I've also spent some time on improving the manual (pdf), and I'm quite happy about it.
Some of the more visible new things in mu4e
are:
- Support for crypto (decrypting messages, signing them)
- Support for refiling (like
mutt
, Wanderlust) - Dynamic folders (instead of hard-coding the sent/draft/trash/refile folder, they can be functions that return different folders based on the message we're dealing with, see the example below)
- Same for the folder to save attachments
- A lot of smaller and bigger UI improvements
Also, the core mu
program has seen a lot of improvements (many of which
directly improve mu4e
as well)
- Better support for non-ascii locales / character sets, such as
ISO-2022-JP
- Improved on-line help ('
mu help ...
') - Performance improvements for threaded display (~ 25% for 23K messages)
For a more complete list, see NEWS.
dynamic folders
As mentioned, mu4e
now supports dynamic folders. Before, you'd set your
trash folder to some static string:
(setq mu4e-trash-folder "/trash")
In some cases, you may want to have a bit more flexibility – for example, have a separate trash-folder (or sent-folder, drafts-folder, refile-folder) for private mail and work mail. You can now do something like:
(setq mu4e-trash-folder (lambda (msg) (if (and msg ;; msg may be nil (mu4e-message-contact-field-matches msg :to "me@work.com")) "/trash-work" "/trash")))
refiling
After I have dealt with some e-mail, I either delete it or move it to some
archive folder – refiling. For this, there is now the r
keybinding, and
mu4e-refile-folder
; and a place where dynamic folders really shine:
(setq mu4e-refile-folder (lambda (msg) (cond ;; messages to the mu mailing list go to the /mu folder ((mu4e-message-contact-field-matches msg :to "mu-discuss@googlegroups.com") "/mu") ;; messages sent directly to me go to /archive ;; also `mu4e-user-mail-address-regexp' can be used ((mu4e-message-contact-field-matches msg :to "me@example.com") "/private") ;; messages with football or soccer in the subject go to /football ((string-match "football\\|soccer" (or (mu4e-message-field msg :subject) "")) "/football") ;; everything else goes to /archive ;; important to have a catch-all at the end! (t "/archive"))))
How cool is that? After reading my inbox folder, I select all messages (C-x h
), press r
, and they're all moved to the right refiling folder.
crypto support
mu4e
already supported signing/encrypting messages, but now it supports
decryption and verifying signatures as well. This was one of the most
requested new features. I think it is still a bit rough, but it has been
working very well for me.
so…
I think version 0.9.9 is a great new step for mu4e
. It already goes far
beyond I ever planned to do. I received a lot of suggestions for new
features, which is great! I'm not planning to implement all of those, but I
will try to make mu4e
even more programmable – it should be easy to augment
mu4e
with your own little elisp-snippets – the Barbapapa principle of
software, already so clearly present in emacs itself.