Commit Graph

7420 Commits

Author SHA1 Message Date
4cda859eb8 mu-sexp: tighten definition of plistp
In a plist, we also require the first of each two element pairs to start
with ':'

Fixes #2830.
2025-03-23 19:47:09 +02:00
c91e4ef515 mu-sexp: fix c++23 warning for suffix operator
Space between operator"" and _xxx is deprecated.
2025-03-23 19:47:09 +02:00
a8fac834d3 update IDEAS.org 2025-03-09 08:54:44 +02:00
770aa793cb mu4e-actions: add note about mu4e-action-git-apply-patch
See: https://github.com/djcb/mu/issues/2827

And some cosmetics.
2025-03-09 08:52:36 +02:00
a15e640eb7 mu4e: implement :hide-if-no-unread
Make mu4e-maildir-shortcut and mu4e-bookmarks understand a property
:hide-if-no-unread~, which hides the maildir/bookmark from the main-view
if there are no unread messages which the corresponding query.
2025-03-08 11:57:58 +02:00
5608892349 mu4e-vars: cosmetic 2025-03-08 11:39:44 +02:00
a7dcf04ba0 mu4e-draft: ensure compose-type is available without parent
In non-parent messages, such as completely new message, ensure the
mu4e-compose-type is available during the initial composition, i.e.,
enlarge the let to cover the rest of `mu4e--prepare-draft'.
2025-03-08 10:34:08 +02:00
60340c525d build: bump version to 1.12.9 2025-02-26 18:53:07 +02:00
0ea6fd45a4 update NEWS.org 2025-02-26 18:44:32 +02:00
f5a8699993 update NEWS.org 2025-02-26 08:51:05 +02:00
200ada5026 mu4e.texi: update debugging information 2025-02-26 08:51:05 +02:00
2714aa5e8c mu4e-headers: remove existence check
This is already done on the server-side ("SkipUnreadable"), so we don't
need to replicate.
2025-02-26 08:50:49 +02:00
18092c7ff9 indexer: minor tweaking 2025-02-23 11:39:21 +02:00
cdb619e4f5 Improve performance of index cleanup: use readdir(3), not access(2)
This change makes index cleanup ~4x faster by changing how we
determine whether a file mentioned by the database still exists on
disk.  Previously, we'd call access(2) for each file the database
mentioned.  Doing so produced a lot of system call overhead.  Now, we
read the directory entries of the directories containing the files
whose existence we're checking, build a hash table from what we find,
then do the existence check against this hash table instead of
entering the kernel.

The semantics of the cleanup check do change subtly, however.
Previously, we checked whether the mentioned file was *readable*.
Now we check merely that it exists.  Extant but unreadable files in
maildirs should be rare.

BEFORE:

$ time mu index --lazy-check
lazily indexing maildir /home/dancol/Mail -> store /home/dancol/.cache/mu/xapian
/ indexing messages; checked: 0; updated/new: 0; cleaned-up: 0

real    0m19.310s
user    0m1.803s
sys     0m12.999s

AFTER:

$ time mu --debug index --lazy-check
lazily indexing maildir /home/dancol/Mail -> store /home/dancol/.cache/mu/xapian
- indexing messages; checked: 0; updated/new: 0; cleaned-up: 0

real    0m4.584s
user    0m2.433s
sys     0m2.133s
2025-02-23 11:39:17 +02:00
b0f6e5cbb9 Merge pull request #2820 from dcolascione/mu-named-timer
Use named function, not lambda, for refresh timer
2025-02-23 11:22:58 +02:00
17577444be Merge pull request #2822 from dcolascione/mu-skip-readability-check-remote
Call file-readable-p only on non-remote files
2025-02-23 11:21:52 +02:00
7d03d5f32a Call file-readable-p only on non-remote files
Calling file-readable-p before reading a message file is fine
when the file is local, but when it's a remote file, doing so incurs
an extra network round trip.  It's not really necessary to do so
either: if the file is missing, we'll fail in the insert-file-contents
below anyway, so we're missing out only on a nicer warning message.
2025-02-22 15:12:06 -05:00
8145df4ab3 Use named function, not lambda, for refresh timer
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.
2025-02-22 15:02:09 -05:00
9b741eb6f0 mu4e: use mu4e--started for per-mu4e-run setup
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.
2025-02-22 11:18:36 +02:00
9b87dcbb1f mu4e-update.el: cosmetics 2025-02-22 10:59:32 +02:00
3dbd8b9763 mu4e: handle conversion from pcre regexps
mu server uses PCRE-compatible regular expressions, but mu4e needs
Emacs-style. In simple cases, the two are the same, but when it gets
slightly more complicated they do not.

E.g.,
  (foo|bar) => \(foo\|bar\)

Mu4e can do the conversion automatically, but for this the pcre2el
package (available in MELPA) is required, and is used if user installs
is. Anyway, this code implements the automatic conversion and adds some
documentation.

Fixes #2816.
2025-02-16 18:47:49 +02:00
7baf1bf5e5 mu: remove empty refs + unit-test
Some message can have an _empty_ message-id, e.g. with:
  In-Reply-To: <>
which we weren't filter out.

This would yield and _empty_ Thread-Id, in mu-message.cc

And this would make mu-query believe it had no matches in the first
query, in Query::Private::run_related, and effectively throw away the
results. (Xapian using empty string both for a "not found" result, and
"found an empty string doesn't help either).

So, avoid having an empty reference. Also add a unit-test.

Fixes #2812.
2025-02-13 22:48:03 +02:00
cd3cb64893 update docs 2025-02-07 23:43:37 +02:00
8372be17dd mu-server: more info for mu4e-analyze-last-query
Include the search parameters besides the query.
2025-02-07 23:43:37 +02:00
f20cfc69da mu4e-main: cosmetics 2025-02-07 23:43:37 +02:00
58374d5509 mu4e-transient: improvements
Still experimental of course; rework a bit and add support for mailing-lists.
2025-02-07 23:43:37 +02:00
207ed683d6 mu4e-view: create fake original-article-buffer
That allow for using more Gnus functionality, such as mailing-list support.
2025-02-07 23:43:37 +02:00
355ec62fea mu4e-message: cleanups, add mu4e-message-p 2025-02-07 23:43:37 +02:00
990cb768f2 mu4e-lists: cosmetics
Minor cleanups
2025-02-07 23:43:21 +02:00
aad5fc7df5 mu-server: minor cleanups 2025-02-05 21:07:14 +02:00
1858d80883 guile: update issue template 2025-02-05 21:18:48 +02:00
c0887603c5 guile: avoid body duplication
In message, don't re-fill when unneeded. Add tests.

Fixes #2802.
2025-02-05 21:16:15 +02:00
d33adc923c build: tweaks 2025-02-05 20:14:36 +02:00
055cb774e0 mu4e: show short counts next to maildir/bookmark entry
When you ask for bookmarks or maildirs through mu4e-ask-bookmark,
mu4e-ask-maildir, the counts are displayed in the (default) completions
next to the maildirs. This is a shorter version of the full display,
just showing either the delta or the number of unread messages, if any.
If you don't want to see these counts, there is mu4e-hide-short-counts.
2025-02-05 12:32:52 +02:00
4b691f97cc mu4e.texi: update FAQ 2025-02-04 21:40:00 +02:00
4808ff970d mu4e.texi: update build instructions 2025-02-04 21:31:19 +02:00
08732dab68 mu4e.texi: add example for sent-mail / org-wait 2025-02-04 21:06:17 +02:00
c6f9820d19 mu4e-window: fix typo 2025-02-02 12:09:03 +02:00
09965b2d09 test: add unit-tests for related/new/skip-dups
Test the interaction between related/new/skipped-duplicates. Seems to
work as expected.
2025-02-02 11:38:32 +02:00
e4e75fd2fe Merge pull request #2810 from josephmturner/fix/mu4e-compose-post-hook-docstring
mu4e-compose: fix docstring
2025-01-26 21:40:00 +02:00
7f76c69879 mu4e: auto start mu4e when sending command
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.
2025-01-26 18:56:38 +02:00
a33530e917 mu.1.org: update COLOR information 2025-01-26 18:56:38 +02:00
9fdfd61a3c mu4e.el: cosmetics 2025-01-26 18:56:38 +02:00
1ceefa45e7 IDEAS.org: update 2025-01-24 10:10:31 +02:00
6e07c1f0c7 mu4e.texi: mention transient + update bug info 2025-01-24 10:10:31 +02:00
82fd77c3ed mu4e-transient: update
Still experimental, but a few improvements.
2025-01-24 10:10:31 +02:00
8e33657cc7 mu4e: remove autoload cookie for org-link-set-parameters
Seems it causes problems.
2025-01-23 14:01:53 +02:00
87b1e8e0bf mu4e-compose: fix docstring 2025-01-22 23:37:46 -08:00
62e4b079e4 Merge pull request #2795 from xuhdev/swap-fold
Fix a potentially misnamed function
2025-01-23 08:44:17 +02:00
b8bb92241b mu4e: add autoload cookie for mu4e-org-store-link 2025-01-23 08:39:47 +02:00