Commit Graph

7771 Commits

Author SHA1 Message Date
4ed2663117 Fix typo in man page for mu-move
fix typo on man page see

#2915
2026-08-20 15:05:29 -07:00
23e28fd1ae mu4e: be more careful deleting frames
Remember the exact frame we created, and only kill that one.

Ensure mu4e-compose-post-hook fires at most once.
2026-08-20 15:05:29 -07:00
0ca6389c03 mu4e: small code cleanups
Update some old code (we have 28.1 now); mostly:
- (= (length lst) x) ===> (length== lst x)
- (cdr (assoc ...)) ==> alist-get
2026-08-20 15:05:29 -07:00
65b3dbb5c9 mu4e-view: extract shared headers function refact
Extract the header insertion code from mu4e--view-gnus-display-mime into
a new mu4e--view-insert-headers function.

Add a fallback label in mu4e--view-gnus-insert-header for fields not in
mu4e-header-info, such as :user-agent.
2026-08-20 15:05:29 -07:00
f9760e8f98 mu4e.texi: small improvements
Add mu-move example, remove some obsolete comments. Update version.
2026-08-20 15:05:29 -07:00
4594bb7952 mu-move: default to using old flags
And update tests as well.
2026-08-20 15:05:29 -07:00
1525d350a8 mu4e-headers: fix mu4e--in-headers-context
Two problems:

1) In mu4e--in-headers-context we went through the whole dance of
   finding the headers buffer even if we were already there. That's
   unnecessary and incidentally makes it impossible to go back from the
   "Found ..." line in the headers-buf to the previous one.

Fixes #2913

2) We didn't handle the case where there _is_ no headers window, such as
   when in single-window mode.
2026-08-20 15:05:29 -07:00
cfae6fd724 build: bump version to 1.14.1-pre1 2026-08-20 15:05:29 -07:00
6ec69f19db readme, templates: update
Update for the new versions, improve instructions.
2026-08-20 15:05:29 -07:00
86b3b47470 mu4e-view: unbreak mu4e-view-toggle-html
And add/remove the clickables as needed.
2026-08-20 15:05:29 -07:00
57fd152296 mu4e-view: don't make clickables when already
Don't make clickable links when displaying in html mode already, since
in that case the html-render handles it, and we shouldn't mess up the
display.

As discussed in issue #2094.
2026-08-20 15:05:29 -07:00
d7b0001f96 mu4e-draft/headers: resync headers-buf
After restoring the window configuration, we could end up pointing at
the wrong message.

Let's try harder to restore... issue #2902.
2026-08-20 15:05:29 -07:00
3527e20f5c mu4e-draft: decode utf-8 bytes in headers
Another attempt at fixing the old #2722 decoding issue.
2026-08-20 15:05:29 -07:00
695da3e1ed mu4e-draft: make compose frame config buffer-local
This should help when multiple compose windows are present, such as in
issue #2912.
2026-08-20 15:05:29 -07:00
1cf07a7e9f NEWS.org: update release date 2026-08-20 15:05:28 -07:00
22df47100d Trivial typo fixes 2026-08-20 15:05:28 -07:00
9acf8a67de mu4e.texi: add note about discouraged alternatives 2026-08-20 15:05:28 -07:00
ed65c99b30 build: bump version to 1.14.0
A new major version. Not so much has changed since the last of the 1.12
series, 1.12.15, but a bunch of small fixes and:

- updated requirements:
   - require C++20
   - require meson 1.3.2
   - require glib & friend: 2.80
   - require xapian 1.4.22
    - emacs 28.1 (for mu4e)
- warn for deprecated guile (use scm)
- a number of code-cleanups since we can use C++20 now

- indexing: substantial speed-up of the clean-up phase

- scm: support the --eval command-line option

- mu4e: improve message rendering; get rid of some the unnecessary
  body-part mime indication noise

- mu4e: allow including received patches when replying, see
    mu4e-compose-reply-include-mime-types

NEWS.org has more details.
2026-08-20 15:05:28 -07:00
939582e98a mu4e-mime-parts: fix actions
Use mm-pipe-part rather then gnus-article-pipe-part since we no longer
have the gnus buffer available.
2026-08-20 15:05:28 -07:00
1c846b9e14 mu4e-headers: avoid showing up in the wrong frame
Don't switch buffers for background searches, that might show up in the
wrong frame.

This hopefully helps for #2766.
2026-08-20 15:05:28 -07:00
5e8e3b5a36 mu4e-draft: handle corner-case decoding issue
When there are raw utf-8 headers.

Should help for #2722.
2026-08-20 15:05:28 -07:00
8c067f8726 mu4e-compose: allow including parent mime parts
mu4e-compose-reply-include-mime-types specifies the mime-types for
message attachments that should be included in replies, with the default
set to "text/x-patch" -- i.e., patches are included in replies, so you
can comment on them.

As mentioned in #2896.
2026-08-20 15:05:28 -07:00
339cf0bd65 mu-utils-file: use std::filesystem::remove_all
Instead of the hacky "rm -rf"
2026-08-20 15:05:28 -07:00
3c4b50e7a2 mu-utils-file: remove some unused code 2026-08-20 15:05:28 -07:00
36451502ac mu4e/build: include build-dir 2026-08-20 15:05:28 -07:00
6f4a6688b8 build: bump version to 1.14.0-pre3 2026-08-20 15:05:28 -07:00
a0fae8f531 mu4e-view/headers: remove m-v-in-headers-context
Remove mu4e--view-in-headers context and the functions that use it;
instead ensure that the functions (in mu4e-headers) handle any context
switching if needed.

This allows for removing a lot of mu4e-view-... wrappers for
mu4e-headers functions. function aliases are provided for backward
compat.
2026-08-20 15:05:28 -07:00
befac48916 mu4e/meson.build: don't need build-dir 2026-08-20 15:05:28 -07:00
7a8a87563e mu4e-view/mime: clean up message rendering
Make the message-rendering slightly less messy

Of course, It still is a bit messy, partly because e're bending over
gnu's message rendering backwards.

But it removes the MIME-buttons. If you want them back, use "M b".

Update the mime-handling so we can still get things even with the
MIME-buttons disabled.
2026-08-20 15:05:28 -07:00
b9d6552cf3 meson.build: use include_directories
Seems meson 1.10 is stricter and balks at project_source_root.
2026-08-20 15:05:28 -07:00
e6e852b7e0 lib: improve error checking 2026-08-20 15:05:28 -07:00
45b9722040 mu/lib: fix some possible quoting issues 2026-08-20 15:05:28 -07:00
5e9cdc6654 message: fix some error paths 2026-08-20 15:05:28 -07:00
d8d02b6d6a NEWS.org: update 2026-08-20 15:05:28 -07:00
6dca68b989 scm: support --eval
With the ~--eval~ option you can evaluate an expression in mu/scm
environment. For example:

$ mu scm --eval \
  '(format #t "found ~d match(es)\n" (length (mfind "hello")))'
found 7173 match(es)

Add command-line parameter and implement.
2026-08-20 15:05:28 -07:00
cad39e0ff1 meson.build: minor cleanups 2026-08-20 15:05:28 -07:00
a0c8b52d2b build: bump version to 1.14.0-pre2 2026-08-20 15:05:28 -07:00
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