Commit Graph

7734 Commits

Author SHA1 Message Date
dc0ad7dabe mu-store: cosmetics 2026-08-20 15:05:28 -07:00
10067dc95a IDEAS.org: update
Mention the fill-column idea in #2901.
2026-08-20 15:05:28 -07:00
589734631a build: avoid clang build warnings 2026-08-20 15:05:28 -07:00
8914004970 Work around xapian bug
https://trac.xapian.org/ticket/850
2026-08-20 15:05:28 -07:00
31835200bd New incremental cleanup strategy: 63%-88% faster
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.
2026-08-20 15:05:28 -07:00
cad56e9587 mu4e: update transient support
We can now rely on transient being available.
2026-08-20 15:05:28 -07:00
3b2ee0bbc7 mu4e-main: -hide-personal-addresses can be a number
mu4e-main-hide-personal-addresses can now also be number, which
indicates the maximum number of personal addresses to show in the main
view.

Remove the 'user-mail-address' tip, perhaps it annoyed more than it
helped?
2026-08-20 15:05:28 -07:00
c0253e075e mu-query-parser: update comment 2026-08-20 15:05:28 -07:00
2c924d5cb2 dir-locals: add compile-command (commented-out)
Add example of setting up compile-command; but comment out by default to
avoid warnings loaded.
2026-08-20 15:05:28 -07:00
8a29be0a9c build: fix guile 'auto'
Fixes #2900
2026-08-20 15:05:28 -07:00
db7bd7a900 mu-utils: replace #define with constexpr for MU_COLOR_ 2026-08-20 15:05:28 -07:00
85f4a4b80a utils: fix typo 2026-08-20 15:05:28 -07:00
ab6017d5a9 utils: rework MU_ENABLE_BITOPS using C++20 code
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
2026-08-20 15:05:28 -07:00
911ade8b73 sexp.hh: silence compiler warnings
Seems they only happen in C++20 mode, not when compiling C++23 mode. So assuming
these are false alarms (old code anyway)
2026-08-20 15:05:28 -07:00
2db658755a build: fix for scm=disabled
Fixes #2899
2026-08-20 15:05:28 -07:00
6cfd55bd5c ci: update build / test script
No need for 'autogen.sh' or libtool
2026-08-20 15:05:28 -07:00
72c7bebe3f meson: require >= 1.3.2
1.5.1 is too new for 'noble'
2026-08-20 15:05:28 -07:00
e963ff5c79 build: rename meson_options.txt into meson.options
It's more modern hence better
2026-08-20 15:05:28 -07:00
72bf4350a9 guile: deprecate; instead use scm
Deprecate the long-deprecated guile support in the build-system too.
Needs explicit -Dguile=enabled
2026-08-20 15:05:28 -07:00
7b42f1ee77 mu4e: clean up some unneeded backports
Remove some functions we no longer need with Emacs 28.

There's still some things left, which will be handled in due time.
2026-08-20 15:05:28 -07:00
06b4625e61 build: bump to 1.14.0-pre1, bump some required versions
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.
2026-08-20 15:05:28 -07:00
30b2d2a9fe build: bump version to 1.12.15
Mostly to get a release out with the fix for #2984.
2026-08-20 15:05:28 -07:00
92957df8c2 mu4e: ensure header line is set in headers buffer
When a different buffer had focus when the found handler was run, the header
line might be set on the wrong one.

As seen in #2897.
2026-08-20 15:05:28 -07:00
341585ad66 test-store: disable bad test
The "expected-to-fail" test actually passes when root.
2026-08-20 15:05:28 -07:00
ab6ab33df6 build: bump version to 1.12.15-pre1 2026-08-20 15:05:28 -07:00
bfcb313cf2 mu4e: update docs for mu4e-view-save-attachments 2026-08-20 15:05:24 -07:00
2900d2152d mu4e: save all attachments if none are selected
Updates the behavior of `mu4e-view-save-attachments' to allow saving all
attachments.  If no files are selected in the completing-read then assume all
files should be downloaded to the selected directory.
2026-08-20 15:04:27 -07:00
037e62a58c man: mu-scm.1: fix formatting of NAME section
Format it consistently with the other man-pages and replace space in "mu scm"
with hyphen to fix mandb(8) handling.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2026-08-20 15:04:27 -07:00
36e4316870 man: mu-query.7: correct typo
"and and extra" -> "and an extra"

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2026-08-20 15:04:27 -07:00
8798e43037 NEWS.org: remove duplicate word
"the the" -> "the"

Update the indentation for the news entry.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2026-08-20 15:04:27 -07:00
d76180a0e0 man: mu-labels.1: replace single quote at the beginning of line
Troff interprets single quotes at the beginning of lines as control characters.
There is one in the source for mu-labels.1, which results in that line's being
omitted from the output:

	The export command takes the labels in the store and the messages they
	apply to, and writes this information to a file. You can import this
	file later, to restore the labels. The command takes a path to a file or
	a directory (ending in

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2026-08-20 15:04:27 -07:00
f634a3f84c mu4e: install non-byte-compiled elisp files
Even when we're not able to byte-compile some elisp files (mu4e-transient,
mu4e-dbus), we should still install the corresponding el file, as the runtime
emacs may be able to use it.

Issue #2894.
2026-08-20 15:04:27 -07:00
e24c2c2826 mu4e-get-mail-command: improve documentation
Make a bit clearer and add an example of using a function.
2026-08-20 15:04:27 -07:00
c6f9257bd9 build: bump version to 1.12.14
New stable release.

Nothing too spectacular, but a various small tweaks:

- improved guix (and other systems) compatibility: make fewer assumptions about where system programs are
- documentations improvements, in manpages and the mu4e reference manual
- labels: better messages when importing
- scm: stabilize tests. tweaks api.
- mu4e: add mu4e-view-mark-and-next
- mu4e: mu4e-dbus-mode; a new experimental minor in which mu4e exposes some of
  its data over DBus.
2026-08-20 15:04:27 -07:00
a803eb77fd man/labels: update manpage
Small fixes, some clarifications.
2026-08-20 15:04:27 -07:00
2b6d709158 mu-labels: improve command-line handling
Esp., better handle the 'no subcommand' case: give the user some more useful
help.
2026-08-20 15:04:27 -07:00
fa6b26c366 man/labels: improve man-page
Improve text, fix some inaccuracies.
2026-08-20 15:04:27 -07:00
dc5bbd9884 labels: improve logging for import
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.
2026-08-20 15:04:27 -07:00
f66b58cd41 utils: rework logging functions
Use a general mu_log which does the formatting, and specific mu_debug, mu_info
etc., to call it.
2026-08-20 15:04:27 -07:00
6099af565d scm: update example with time->string
Example was still using the obsolete name.

Fixes #2891
2026-08-20 15:04:27 -07:00
fa4ec511e2 build: bump version to 1.12.14-pre5 2026-08-20 15:04:27 -07:00
4ec222f653 mu4e: implement mu4e-dbus-mode
For emacsen that support DBus, implement mu4e-dbus-mode, an experimental mode to
make some mu4e runtime information available outside emacs.
2026-08-20 15:04:27 -07:00
043f0ce337 mu-scm: don't depend on dir order in tests
Some of the tests were using (mfind "") to find messages, but since some
messages don't have dates the order is implicitly defined by the directory
order. This usually works, but not always (i.e. guix).

So let's make the behavior deterministic.

Fixes #2888
2026-08-20 15:04:27 -07:00
b855a0dc93 scm: mention guix in manual
Fixes #2889.
2026-08-20 15:04:27 -07:00
8afef75b30 scm: add convenience methods root-maildir, personal-addresses
For a store, so to avoid assoc-ref.
2026-08-20 15:04:27 -07:00
52f44653b0 scm: return empty lists instead of #f for some methods
Some methods that returned lists would return ~#f~ when there were no
results (e.g., to, from, cc, bcc, references, labels); however, it's
nicer to return an empty list instead, which what we now do. Technically a
breaking change, but justified while we are still 'experimental'.
2026-08-20 15:04:27 -07:00
20efd31f3d build: bump version to 1.12.14-pre4 2026-08-20 15:04:27 -07:00
410ff46881 improve invoking external commands
- 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
2026-08-20 15:04:27 -07:00
9f69055ef9 test-mu-store: bump timeout in test
Seems some systems are quite slow, so bump the time-out.

Fixes #2886.
2026-08-20 15:04:27 -07:00
fae40680cc mu4e: update versions section in manual 2026-08-20 15:04:27 -07:00