Commit Graph

7480 Commits

Author SHA1 Message Date
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
3dd922ff6c man: escape a couple of back-slashes
Otherwise:

    (with the \040 specifying a space in the regular expression, and and extra '\' to escape it)

is rendered as:

    (with the $ 40 specifying a space in the regular expression, and and extra `$´ to escape it)

Fixes: 5e2b7d52b2 ("mu-query.7: update documentation")
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2025-03-10 21:44:28 +00:00
9364d25af7 man: fix some single-quoted strings
Commit 721aadc140 ("man: change quoting style") replaced single-quoted strings
of the form:

    'lorem ipsum'

with:

    `lorem ipsum'

to prevent the possibility of single quotes appearing at the beginning of lines,
because these will be misinterpreted by troff.  However, changes to the man-page
sources in 1.12.9 reintroduced some of these, including one which does appear at
the beginning of a line in mu-query(7):

    '"', '*', '(' and ')'. The details are shell-specific. In case of doubt, the

which results in the following warning:

    troff:<standard input>:25: warning: macro '"',' not defined

and the omission of that line from the rendered paragraph:

    NOTE:  if  you  use  queries on the command-line (say, for mu find), you
    need to quote any characters that would otherwise be interpreted by  the
    shell, such as *--analyze option can be useful.

Use back-ticks for the opening quotes.

Fixes: 5e2b7d52b2 ("mu-query.7: update documentation")
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2025-03-10 21:23:11 +00: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