Hi all,
I've pushed the changes for mu 1.7.18 to master (that is, the first big
batch on Fri plus some follow-ups); this finalizes a lot of the
code-cleanup that has started a while ago.
First, the code: one of the oldest sediments of mu code is formed by the
various mu-msg.* files. 1.7 replaces that with some brand new code under
lib/message; much of that landed earlier, and this is last part which
removes the last removes the last remaining mu-msg-* code.
Now, what does that mean in practice, apart from the general 'cleaner
code' bla bla?
- In mu4e, the server outputs message information s-expressions which
are then parsed by emacs; we were generating the expressions
on-the-fly, which takes a bit of time. As an optimization, we now
*cache* them as part of the message document in database. This speeds
up things quite a bit, mostly visible when there are many results,
i.e., as an extreme example:
- with 1.6:
,----
| time mu find "" --format=sexp > /dev/null
| mu find "" --format=sexp > /dev/null 37,41s user 6,47s system 99% cpu 44,143 total
`----
- and with 1.7.18:
,----
| time mu find "" --format=sexp > /dev/null
| mu find "" --format=sexp > /dev/null 0,33s user 0,33s system 99% cpu 0,664 total
`----
- a new command: 'mu fields', which shows details about the message
fields and flags. This is based on the same information that mu uses
itself, so this is always up to date and complete.
- a new message field "changed", which tracks the last time the message
was changed (the ctime).
mu find changed:3M..
shows message which were changed in the last 3 minutes
- we already had 'personal' contacts; now there's a new 'personal' flag
for messages; a message is considered 'personal' if at least one of
the contact fields contains a 'personal' address. And an address is
considered 'personal' if it matches the personal addresses passed to
'mu init (see 'mu info' for the values), i.e.
mu find hello flag:personal
- in mu4e not so much changes but, there are a few changes:
- by default, the "flags" column in the headers view now shows the
'list' and 'personal' flags as well.
- incompatible change: addresses are now represented as plists
(:name <name> :email <email>)
rather than cons-cells
(name . email)
so if you have code depending on the first, you need to update, ie.
(car contact) --> name
(cdr contact) --> address
now becomes:
(mu4e-contact-name contact) --> name
(mu4e-contact-email contact) --> address
sorry for the inconvenience; needed for some future plans.
- For more new things, please read NEWS.org, which should be fairly up to date.
Now, this *works for me*, but I expect a little trickle of changes on top
of this (some of which has already happened).
With this in place, I'm ...slowly... descending to the 1.8 release; no
complete feature freeze yet, but moving in that direction. Mostly,
bug-fixing, updating documentation, adding tests.
[ Note, one other item that I worked on was the 'mu4e-summary', as a
replacement for the headers buffer; I have no time now to finish it, so
that's something for post-1.8. ]
Kind regards,
Dirk.
--
Dirk-Jan C. Binnema Helsinki, Finland
e:dj...@djcbsoftware.nl w:
www.djcbsoftware.nl
gpg: 6987 9CED 1745 9375 0F14 DA98 11DD FEA9 DCC4 A036