This change turns the mu4e refresh timer into a named function, making
M-x list-timers output display a name having to do with mu4e instead
of an inscrutable "anonymous lambda" line.
There's mu4e--initialized which needs to run once per emacs session,
but we also have some setup to do for each "run" (mu4e --> mu4e-quit).
For the latter, we use mu4e--started.
Fixes#2818.
Start mu4e if not already; with the transient menus it's easier possible
to try to do things with mu4e before it is started, so handle that
automatically.
mu4e-sent-func was used internally (triggered by mu-server), but is no
longer in use, so let's remove it and mark as obsolete.
Obsolete its callers as well.
This is a new composer sub-system, which more closely follows
Gnus/message; in particular, we let gnus take care of creating draft
messages.
This reduces code size and allows us to re-use some of the more advanced
features.
There are a number of user-visible changes:
- `mu4e-compose-resend' directly uses `message-resend', so there is no
more editing phase (which used to be a bit broken with re-encoding
MIME messages.
- get an updated maildir list after indexing
- add mu4e-added items to the list opportunistically
Remove mu4e-clear-caches / mu4e-cache-maildir-list to mu4e-obsolete.el
Fixes#2537.
Remove mu4e-main-quit-or-bury and simply update mu4e-quit
to take a prefix which, if non-nil, make mu4e-quit
bury the buffer rather than quite mu4e.
Also make the mu4e check for an existing mu4e buffer, and if found,
switch to it rather start mu4e.
Implement function / datas structure to conveniently aggregate all
query-related data, for reuse in various places in mu4e...
... to start with the main menu, which gets much simpler. And the
modeline.
Show favorite bookmark in main-screen (highlighted)
Add baseline-reset when main screen is shown or when the favority
bookmark is searched.
Some code cleanup
Add the concept of a query results baseline, i.e., the result for
bookmark-queries at some particular point in time. Later, we can compare
the results with the then-current query-results.
Show the delta in the main view. Add mu4e-reset-baseline-query-results
to reset the baseline to 'now'. By default, we automatically reset when
explicitly (interactively) going to the main-view, i.e., M-x mu4e.
We use to have mu4e--contacts-hash, with name mapping to rank; that was
needlessly complicated since most completion engine sort alphabetically, making
the rank totally irrelevant (in practice, it doesn't matter much from the
end-user pov).
Anyway, simplify that part, maintain a set of contacts without any rank (which
what the server delivers now).
Also update the _default_ mu4e-contact-process-function to filter out anything
with 'reply' since it's not very useful for autocompletion.
Support the new batched query results from the mu server; these are much faster
to render (2-3x it seems).
Rearrange the code a bit to avoid byte-compiler warnings.
Obsolete mu4e-header-func, to be replaced by mu4e-headers-append-func.
Fire mu4e-index-updated-hook after any index operations, where anything changed
or not. Add a new variable `mu4e-index-update-status' which can be used to see
what changed (if anything) in the last indexing operation.
Keep mu4e-message-changed-hook in place; it only fires when a message
changed (and when it is update).
Remove the long-obsolete `mu4e-msg-changed-hook'.
Usurp more of the utils code than can be re-used without further dependencies in
helpers.
Split off specific parts in their own file.
After the helper/utils changes, update the rest of mu4e to take the changes into
account.