mu 0.9.16
A brand new mu
We've just released version 0.9.16 of the mu e-mail search engine and the
mu4e
e-mail client for emacs. You can check the releases repo for tarballs/PDFs, and NEWS.org for the details.
Here, let's look at some of the new features and other changes, focusing on
mu4e
, since that is where most of the development went.
Contact completion
Contact completion makes it possible to compose a new message, type a few characters
in the To:
(or Cc:
, Bcc:
) field, and have
mu4e
automatically fill in the contact / e-mail information you were
looking for.
mu4e
's implementation uses the contacts from your existing e-mail
corpus, trying to intelligently order them, to make it very probable that the
looked-for address is in the first few matches.
In the new version, mu4e
gained an improved algorithm for sorting
contacts, based on how recent they are, how often we've seen them, and whether they
appeared in 'personal' messages - that is, messages where your address was in one of
the contact fields as well, rather than mailing-list messages.
Also, it now successfully convinces emacs to not alphabetically sort the already-sorted contacts, as it did in earlier versions. Overall, it works quite a bit nicer, especially if you have a large e-mail corpus.
Mu4e-context: Multi-account support
Many mu4e
-users have asked for support for multiple accounts in
mu4e
; a typical use-case for this is having Work and Private
accounts.
Using multiple accounts has been possible for quite some time of course - there's even an example in the manual of a simple account system, and a bit of googling reveals some other approaches around the web, such as mu4e-multi. Those have been very useful to understand the requirements, but of course weren't very deeply integrated.
Now, with version 0.9.16, mu4e
gained a truly built-in system to do all
of that: mu4e-context. The system is tightly integrated with the rest of
mu4e
, so, for example, you get the name of current context in the
modeline, and it can ask you (if you want; this is all configurable) to figure out the
correct context when composing new messages.
Each of the contexts may optionally have a 'match'-function, which allows mu4e to determine what is the context to use in a specific situation - so when you reply to a message, or when you want to refile it, the system can figure it out for you.
It's all documented, including some examples to set things up. See mu4e contexts in the manual.
Overall, it's a powerful system, but we took care to make simple usage easy, yet make more complex patterns possible, if you're willing to write a little elisp. There are a few ideas about extending the system, but let's gain some real-world experience with it first.
Other
Fancy characters
There's now better support for 'fancy' (Unicode) characters in the interface. A new set of default characters, to avoid the infamous hex-box characters for common fonts, and some documentation on how to fix that in a more rigorous way.
If some font does not contain some unicode-character, emacs tries to use one from some other font. This may result in alignment problems in the UI. You can avoid that with this clever trick: Monospacifier.
Switch between html / text messages
Using the 'h'-key, it's now easy to switch between the text and html versions of
messages (if they have both). The goal is to effectively deal with HTML-messages
within emacs, even though that's sometimes hard. Using emacs' shr
HTML-renderer has made it a lot better at least.
If that is not enough (looking at you, airlines), you can use the 'View in Brower' or 'View as PDF' actions in the message view to watch the messages in their full rich-text glory (press 'v' there to view the available actions).
Better integration with org-mode
Many mu4e
users (including its author) use it in concert with
org-mode
to build an efficient productivity platform. Details of that
probably warrant a separate article, but in any case, the new mu4e
version adds org-mu4e-store-and-capture
, which makes it very easy to add
e-mails to your Todo-list or perhaps your WaitingFor-list - you could add something
like the following to your org-capture-templates
:
;; handle this message in the next two days ("P" "process-soon" entry (file+headline "todo.org" "Todo") "* TODO %a %?\nDEADLINE: %(org-insert-time-stamp (org-read-date nil t \"+2d\"))") ;; wait for an e-mail reply ("W" "wait-for-reply" entry (file+headline "todo.org" "Waiting") "* WAIT %u %a %?\n")
If you want quick access to those from within mu4e
, you can define
some key-bindings for the headers and view mode:
(define-key mu4e-headers-mode-map (kbd "C-c c") 'org-mu4e-store-and-capture) (define-key mu4e-view-mode-map (kbd "C-c c") 'org-mu4e-store-and-capture)
Misc
- It's possible now to not automatically mark message you've read as,
well, read. See the variable
mu4e-view-auto-mark-as-read
. - Allow for customizing the user-agent string, if that's your thing. See the
variable
mu4e-user-agent-string
- Transform mailing list names en-masse, using the variable
mu4e-mailing-list-patterns
- Improved support for Cygwin
Published • 2016-01-20 | emacs