Commit Graph

7831 Commits

Author SHA1 Message Date
ad327d3acb test-utils: use remove_directory 2026-08-20 15:04:27 -07:00
d258c77661 utils/file: rework remove_directory, add test
Make remove_directory not much less ugly, but at least more robust, e.g., when
the "rm" binary is not at /bin/rm

Add unit test
2026-08-20 15:04:27 -07:00
95843d4e8a build: bump version to 1.12.14-pre3
Unlike earlier development releases, we use the "pre"` suffix, so 1.12.14-pre3
rather than 1.12.14-dev3. This for compatibility with the version-to-string
Elisp function that some external programs use to parse version information.
2026-08-20 15:04:27 -07:00
c1181be157 Makefile: small tweaks 2026-08-20 15:04:27 -07:00
4acf708eb9 logging: don't g_message with --quiet
When `--quiet` is passed (and not --debug), do not log with g_message at
startup.
2026-08-20 15:04:27 -07:00
976b6210fc message: ensure message text is valid utf8
Seems this is not guaranteed, so convert if needed.
2026-08-20 15:04:27 -07:00
5c6642c9b9 utils: add utf8_clean helper
To morph text into valid utf8 if it isn't already.
2026-08-20 15:04:27 -07:00
78539e8900 Fixed some broken links. 2026-08-20 15:04:27 -07:00
612038d75a Fixed some typos. 2026-08-20 15:04:27 -07:00
b177bb1589 Add the mu4e-view-mark-and-next function. 2026-08-20 15:04:27 -07:00
b021b1e85c mu4e.texi: make reply-to-self avoidance clearer
Move near where it's useful

Fixes #2876
2026-08-20 15:04:27 -07:00
3534a9fee9 mu4e.texi: update doc for mu4e-view-mime-parts
mu4e-view-for-each-part is long gone.

Fixes #2877.
2026-08-20 15:04:27 -07:00
f7448ff7b5 mu4e-helpers: restore missing mu4e-get-time-date
It was in use in mu4e-headers-custom-markers, but somehow got lost back in 2021,
it seems. Restore it.

Fixes #2879.
2026-08-20 15:04:27 -07:00
52fe171788 mu4e-quit: improve docstring 2026-08-20 15:04:27 -07:00
23e16f7c41 mu4e-folders: improve mu4e-maildir-shortcuts docstring
... and :type
2026-08-20 15:04:27 -07:00
e3ec84386c Mainly typo and grammar fixes. 2026-08-20 15:04:27 -07:00
017e6c237e Em dashes everywhere instead of en dashes for consistency 2026-08-20 15:04:27 -07:00
db375d8841 Avoid using @xref in the middle of a sentence to avoid the capitalized "See"
word.
2026-08-20 15:04:27 -07:00
cc45f4dc77 Fixed cross references with repeated "the", like "in the The headers view" 2026-08-20 15:04:27 -07:00
5b8810fc8a Updated the definition of mu4e-bookmarks in mu4e.texi to match that from
mu4e-bookmarks.el
2026-08-20 15:04:27 -07:00
9ba925da44 build: bump version to 1.12.14-dev2 2026-08-20 15:04:27 -07:00
37eedffa65 mu4e.texi: tweaks 2026-08-20 15:04:27 -07:00
b698c1a89f mu4e-headers: set header-line after query
We only have the complete query-info when we get :found,
so update the header-line only then.

Fixes #2875
2026-08-20 15:04:26 -07:00
7526777c7d mu4e: implement mu4e-quit-hook
As seen on r/emacs.
2026-08-20 15:04:26 -07:00
20d18cb7ee scm.texi: some improvements in text 2026-08-20 15:04:26 -07:00
056540b8e8 utils: avoid fmt:gmtime/fmt::localtime
They've been deprecated and give build warnings with new enough libfmt.
2026-08-20 15:04:26 -07:00
79c903d557 build: bump version to 1.12.14-dev1 2026-08-20 15:04:26 -07:00
913190f532 mu4e.texi: be explicit about :labels
As noted in #2870, this isn't explicitly mentioned in discussion about labels,
so unless you read the mu4e-headers-fields / mu4e-view-fields docstrings, you
may guess wrong.
2026-08-20 15:04:26 -07:00
42bc5a19ad build: bump version to 1.12.13
New stable release 1.12.13. This contains improvements to the build process, the
Guile/Scheme binding ("SCM") and a new experimental "labels" sub-command. Let's
start with that last one.

* Labels

There's a new, experimental feature: *labels*. Labels are similar to the
existing "tags", but better integrated with both mu and mu4e,

You can search for message with a given label using 'label:', e.g
  $ mu find label:tupperware

Or add/remove labels, e.g., remove the label "planet" and add the label
"dwarf-planet" to all messages that have "pluto" in their subject:

  $ mu labels update "subject:pluto" --labels -planet,+dwarf-planet

Clear all labels from messages with the label "boring":

  $ mu labels clear "label:boring"

Labels are only stored in mu's database, and do not write to the message file
themselves. I.e., when you remove your database, your labels are gone. However,
you can use the `mu labels export` and `mu labels import` to save/restore them;
see the mu-labels(1) man-page for details.

In mu4e, you can do the same using `mu4e-headers-mark-for-label` (bound to `l`)
and clearing with `mu4e-headers-mark-for-unlabel` (bound to 'L').

I.e., mark some messages (or the current one by default), and in the
headers-buffer type
   l -planet +dwarf-planet RET
This works similar to the other marks.

There's autocompletion as well, both for search (label:) and marking (after +/-)

It's experimental, but it seems quite useful so far. See the man-page for
further details.

* SCM

The SCM/Guile bindings have been improved substantially; some common operations
are much faster (algorithmically). Also, the "glue" was added to interact with
Emacs and the "geiser" package, either with or without mu4e.

For the "plain Emacs" integraticon, see the Mu-SCM documentation, section
`Hooking up with GNU/Emacs and Geiser'.

For the mu4e integration, see the chapter `Using mu's SCM/Guile integration' in
the mu4e reference manual; or check the `mu4e-mu-scm-server' configuration
variable and the `mu4e-mu-scm-repl' command.

Future version will add more, and start answering questions like "Why would I
even want SCM bindings?!" :-)

* Building

- by default, tests are built 'lazily', i.e., only when running tests;
  this speeds up the build considerably for people that don't want to run
  tests (there's also -Btest=disabled of course)

- when available/found, mu now (by default) uses the system versions of CLI11
  and libfmt, rather than mu's "vendored" versions.

  You can influence where the build system (i.e., meson) looks through the
  `PKG_CONFIG_PATH` environment variable (see the pkg-config/pkgconf man-pages),
  and you can disable
2026-08-20 15:04:26 -07:00
652b5ccbea labels: tighten labels regexp 2026-08-20 15:04:26 -07:00
54aaaf98c1 mu4e: labels tweaks
Make the code a little clearer, and catch error earlier.

Allow for comma-separated labels.
2026-08-20 15:04:26 -07:00
47fdc73bfb mu4e: use string-join
No need for mapconcat / identity.
2026-08-20 15:04:26 -07:00
31b5b142a1 IDEAS.org: move some tickets from issues list
No need to clutter our issues list.

Closes #2671
Closes #2647
2026-08-20 15:04:26 -07:00
c16fffed22 build: bump version to 1.12.13-dev2 2026-08-20 15:04:26 -07:00
656aa41ada rename 'mu label' -> 'mu labels'
Update names, docs etc.
2026-08-20 15:04:26 -07:00
755c453b9f mu4e-server: don't error on nil maildirs/label
Use plist-member to match :labels / :maildirs in the server-response.
2026-08-20 15:04:26 -07:00
74c0a231b7 scm: small improvements to manual 2026-08-20 15:04:26 -07:00
a471d2b808 mu4e.texi: document mu-scm repl interface
And various other tweaks & improvements.
2026-08-20 15:04:26 -07:00
846705629f build: use 1.12.13-dev
Use -dev suffix for development version; explain in README
2026-08-20 15:04:26 -07:00
410436b7ad mu4e-mu-scm-repl: tweak to avoid bytecomp warning 2026-08-20 15:04:26 -07:00
2630832b19 mu4e-mu-scm-repl: keep same repl by default
Add prefix argument, and unless set, switch to existing repl.
2026-08-20 15:04:26 -07:00
461e4f83fe store-test: add more label tests
Ensure removal affects the labels cache.
2026-08-20 15:04:26 -07:00
c547cde73e store: remove some _unlocked functions, update clear_labels
They don't add much value, let's remove.

Rework clear_labels in terms of update_labels.
2026-08-20 15:04:26 -07:00
33ab0acc8d store: update labels when removing messages
This does make removing a bit slower...
2026-08-20 15:04:26 -07:00
3a12c69b10 mu: refactor labels code
Split labels-cache and store-labels.
2026-08-20 15:04:26 -07:00
152182a567 mu4e: tweak label comments 2026-08-20 15:04:26 -07:00
124b371850 labels: allow restoring cache-map
E.g. with unexpected termination for mu it is possible that the
labels-cache (i.e., the one that is used for auto-completion) gets disconnected
from reality.

Add a --restore option to `mu label list` to restore the actual labels from the
labels seen in the store.
2026-08-20 15:04:26 -07:00
76031d93d1 README.org: tweaks 2026-08-20 15:04:26 -07:00
bb399bc37a store: implement serialize method, use it
For triggering saving the contacts / labels caches.
2026-08-20 15:04:26 -07:00
5ba4791add mu-label: no counts in list unless verbose 2026-08-20 15:04:26 -07:00