Commit Graph

7444 Commits

Author SHA1 Message Date
faea3c35ad mu4e-helpers: tweak plist filtering
A little refactoring
2025-04-17 00:11:50 +03:00
e79874aafb mu4e-helpers: make mu4e-plist-put-many non-destructive 2025-04-16 23:46:21 +03:00
5951c387b3 mu4e-helpers: fix mu4e-plist-put-many
mu4e-plist-put-many was very broken, but somehow mu4e still somewhat
worked.
2025-04-16 09:36:45 +03:00
635f6f1bc2 mu4e-folder: improve mu4e-maildir-shortcuts docstring 2025-04-16 09:36:45 +03:00
97a6bab35c mu4e-headers: fix column sorting 2025-04-13 21:04:55 +03:00
a7778fc333 test-store: don't break on slow systems
The 'circular-symlink' test.
2025-04-13 20:34:44 +03:00
102dfa1bd4 mu4e: silence emacs header cookie complaints
Update header-cookies to avoid emacs cookie complaints.

Fixes #2841
2025-04-13 19:24:50 +03:00
804c4b4cda mu4e-bookmarks/folders: allow -ask to return query-item
Instead of just the query-string or maildir name, allow
mu4e-ask-bookmark / mu4e-ask-folder to return the query-item, when a new
optional parameter QUERY-ITEM is non-nil.
2025-04-13 14:02:34 +03:00
a6d68a4146 mu4e-headers/search: use last-query information
Use the information from the last-query to update the modeline,
sorting-column etc.
2025-04-12 15:23:52 +07:00
f5b9cf4cfb mu4e-server: improve documentation 2025-04-12 15:13:53 +07:00
398cb0abd2 mu4e-headers: cosmetics
Fix some flycheck warnings.
2025-04-12 15:07:28 +07:00
a2a1838da4 mu-server: cleanup find prop handling
Rework the overly long find-handler.

Improve parsing of options, and return better return properties (for use
in mu4e).
2025-04-12 15:07:28 +07:00
e534f8ae79 mu4e: centralize docstring for mu4e-bookmarks
Refer to it in mu4e-maildir-shortcut, so we only have one place to
document the format.
2025-04-12 15:07:28 +07:00
a6c41f6262 NEWS.org: merge new items with 1.12
Merge the new feature items into the 1.12 NEWS, prefixed with their
version.
2025-04-12 15:07:28 +07:00
6f228fc505 mu4e: clean up mu4e--make-query-items
Automatically copy all key-values from the source item.
2025-04-12 15:07:28 +07:00
ba9b7c079f Merge pull request #2835 from matperc/close-notification
mu4e-notification: close notification once done
2025-04-12 01:26:17 +07:00
17b85e8390 test-circular-symlink: loosen test a bit
Work-around some weirdness. No energy to do a root-cause analysis ;)

Fixes #2832.
2025-04-12 00:56:43 +07:00
bb76179e51 mu4e.texi: better document tagging actions
Remove some misleading old descriptions.

Cosmetics.

Fixes #2838
2025-04-12 00:48:20 +07:00
a242be7077 Merge pull request #2837 from daym/issue-2836
mu4e-compose: Heed shift-selection-mode for extending the selection.
2025-04-11 15:00:22 +07:00
0c7398d55c mu4e-compose: Heed shift-selection-mode for extending the selection.
Fixes #2836.
2025-04-05 13:54:45 +02:00
da9ffc169f mu4e-notification: close notification once done 2025-04-04 08:35:03 +02:00
507ea8e18e mu-sexp: don't require > c++17 2025-03-23 20:22:56 +02:00
44ba631a34 mu-find: implement format=json2
Implement a new experimental json2 format for mu-find, which gets rid of
the ":" prefixes for fields, i.e., "subject" instead of ":subject".
Document it as well.
2025-03-23 19:47:09 +02:00
d99785ed35 mu4e.texi: fix compiler warning 2025-03-23 19:47:09 +02:00
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