| Age | Commit message (Collapse) | Author |
|
Do not consider calender-invitations "attachments"; do mark as
"calendar". Do recognize application/ics as calendar messages.
Update mime-object to expose a message part's disposition.
Change the "is-attachment" heuristic to include inline parts if they
have a filename parameter in their content-disposition.
Note that this doesn't change things radically; the delta is +69 and
-202 for ~6500 attachments.
|
|
Fix some static analysis warnings
|
|
|
|
Instead of the hacky "rm -rf"
|
|
|
|
|
|
|
|
|
|
|
|
https://trac.xapian.org/ticket/850
|
|
This change adds a new cleanup mode that avoids cleanup having
re-traverse the directories the index pass just looked at.
Additionally, we efficiently query the Xapian database by walking the
term list instead of doing multiple point-wise path lookups.
I'd noticed that most of my time in mu's cleanup pass consisted of
B-tree lookups in Xapian (one 8KB pread64 at a time). The point
lookups forced Xapian to traverse from the root of the B-tree to the
leaf for every single message. Additionally, in order to join on the
message path, we had to do *another* B-tree traversal after locating
each message term. Now we just walk the terms in order, which is much
more efficient, as we touch each B-tree node only once.
On my system, with 1371861 total messages, the total time of mu
index (no lazy check):
--nocleanup: 3.6s
incremental cleanup: 4.2s (0.6s in cleanup)
legacy cleanup: 5.2s (1.6s in cleanup)
With the new mode, we save 1.0s of the 1.6s cleanup, so we're
~63% faster.
But the incremental cleanup works even better with lazy checking.
If I enable --lazy-check, dirty only my INBOX (360778 messages), and
run index, I get:
--nocleanup: 0.9s
incremental cleanup: 1.1s (0.2s in cleanup)
legacy cleanup: 2.5s (1.6s in cleanup)
We save 1.4s out of 1.6s for ~88% speedup.
This change also fixes a timestamp bug: we should be storing
the *start* time of the index pass in metadata, not the end time, so
that on the next index pass, we notice messages that arrived between
the two times.
All tests pass. You can set the environment variable
MU_NO_INCREMENTAL_CLEANUP to use the legacy cleanup path instead.
|
|
|
|
|
|
|
|
Instead of macros, we using C++20 concepts to define the helpers to deal with
bitops on enum-class conveniently.
x# Please enter the commit message for your changes. Lines starting
|
|
Seems they only happen in C++20 mode, not when compiling C++23 mode. So assuming
these are false alarms (old code anyway)
|
|
Bump the required versions of some libraries / emacs slightly so we can get rid
of some special-casing and work-arounds. These are mostly based on Ubuntu 24.04
LTS, which is rather conservative; so should hopefully not inconvenience any
users.
- compiler: we now require C++20 instead of C++17
- glib & friends: 2.60 => 2.80
- xapian: 1.4 => 1.4.22
- emacs 26.3 => 28.1
Ubuntu 24.04 actually has Emacs 29.3, but that'd perhaps be too big a jump.
|
|
The "expected-to-fail" test actually passes when root.
|
|
Clear up the code a bit using the new logging functions.
Don't log a failure for "plan A" as an error, it just scares user unnecessarily.
|
|
Use a general mu_log which does the formatting, and specific mu_debug, mu_info
etc., to call it.
|
|
- don't make assumptions on where programs live (i.e., /bin/sh, /bin/rm,
/bin/mv) are not universal
- dont invoke shell when unnecessary
- improve error-handling
|
|
Seems some systems are quite slow, so bump the time-out.
Fixes #2886.
|
|
Make it clear what exactly could not be created.
|
|
We were not doing that correctly, missing a "/" between dirname and filename.
|
|
|
|
|
|
Make remove_directory not much less ugly, but at least more robust, e.g., when
the "rm" binary is not at /bin/rm
Add unit test
|
|
When `--quiet` is passed (and not --debug), do not log with g_message at
startup.
|
|
Seems this is not guaranteed, so convert if needed.
|
|
To morph text into valid utf8 if it isn't already.
|
|
They've been deprecated and give build warnings with new enough libfmt.
|
|
|
|
Ensure removal affects the labels cache.
|
|
They don't add much value, let's remove.
Rework clear_labels in terms of update_labels.
|
|
This does make removing a bit slower...
|
|
Split labels-cache and store-labels.
|
|
E.g. with unexpected termination for mu it is possible that the
labels-cache (i.e., the one that is used for auto-completion) gets disconnected
from reality.
Add a --restore option to `mu label list` to restore the actual labels from the
labels seen in the store.
|
|
For triggering saving the contacts / labels caches.
|
|
In particular, clear_labels
And some cosmetics
|
|
For handling mu4e label update requests.
|
|
reduce the number of "taboo" characters in labels.
update docs.
|
|
Ensure the cached message sexp gets updated in all cases where it's necessary.
|
|
Convenience function for parsing a series of delta labels; add tests as well.
|
|
|
|
This will be useful with label commands.
|
|
With HAVE_PTHREAD_SETNAME_NP
|
|
Add the scm-socket-path to the ping-properties we expose for mu4e.
|
|
So we can easily iterator from end->begin
|
|
When re-initializing the store, automatically write the labels to a file in mu's
cache, so user can later import them.
|
|
Move the import/export code to 'lib'.
|