Commit Graph

26 Commits

Author SHA1 Message Date
541a4ad00d mu-query-threads: small refinements
Ensure we sort correctly (sort_container), since the last message in a
thread is not necessarily the last (when not sorted by thread-date).

own_date_key is redundant, so let's remove it.
2026-08-20 15:05:32 -07:00
f31b5eedde mu: sort children of a thread based on their own date only
This is a revival of commit c4ccaf0fdb:
"mu: sort childs of thread based on the sortfield only",
whose effect was apparently lost during the rewrite to C++.

Today when we query a find cmd with the `--threads` option, all the
children of each thread are sorted according to the most recent
message in the thread.

This patch changes how the children of a thread are sorted. Threads
are still sorted according to the thread date, but the children of each
thread are now sorted by their own date only.

Here is an example of what happened with the previous sorting:

Example with random kernel thread sorted by date:

[PATCH 0/4] drm/panel: jh057n0090: Add regulators and drop magic value in init
  ┣━▶[PATCH 1/4] MAINTAINERS: Add Purism mail alias as reviewer for their devkit's panel
  ┣━▶[PATCH 2/4] drm/panel: jh057n0090: Don't use magic constant
  ┣━▶[PATCH 3/4] dt-bindings: display/panel: jh057n0090: Document power supply properties
  ┗━▶[PATCH 4/4] drm/panel: jh057n0090: Add regulator support

If someone replies to one of these emails in the middle, its date will
bubble-up and the sorting becomes:

[PATCH 0/4] drm/panel: jh057n0090: Add regulators and drop magic value in init
  ┣━▶[PATCH 2/4] drm/panel: jh057n0090: Don't use magic constant
  ┃  ┗━▶ Re: [PATCH 2/4] drm/panel: jh057n0090: Don't use magic constant
  ┣━▶[PATCH 1/4] MAINTAINERS: Add Purism mail alias as reviewer for their devkit's panel
  ┣━▶[PATCH 3/4] dt-bindings: display/panel: jh057n0090: Document power supply properties
  ┗━▶[PATCH 4/4] drm/panel: jh057n0090: Add regulator support

With this patch, we will have the following output:

[PATCH 0/4] drm/panel: jh057n0090: Add regulators and drop magic value in init
  ┣━▶[PATCH 1/4] MAINTAINERS: Add Purism mail alias as reviewer for their devkit's panel
  ┣━▶[PATCH 2/4] drm/panel: jh057n0090: Don't use magic constant
  ┃  ┗━▶ Re: [PATCH 2/4] drm/panel: jh057n0090: Don't use magic constant
  ┣━▶[PATCH 3/4] dt-bindings: display/panel: jh057n0090: Document power supply properties
  ┗━▶[PATCH 4/4] drm/panel: jh057n0090: Add regulator support

Cc: Julien Masson <massonju.eseo@gmail.com>
Signed-off-by: Jerome Brunet <jbrun3t@gmail.com>
2026-08-20 15:05:32 -07:00
4489d513be migrate to std::ranges
Move the various seq_ functions, as well as std::(stable_)sort,
std::accumulate, std::transform, std::find, std::find_if to their C++20
std::ranges counterparts.
2026-08-20 15:05:31 -07:00
1b42ad6099 mu-query: cleanups
Cleanup the query running and handling the results.

- in threading, use stable_sort
- remove dead code
- fix indentation in a few places
- don't need Option in various run_... in mu-query.cc
2026-08-20 15:05:31 -07:00
86464cd083 modernization: tweaks for c++20
Update various places for what we can do with C++20:

- ends_with / starts_with
- std::to_array
- using instead of typedef
- designated initializers
- "[[maybe_unused]]" instead of G_GNUC_UNUSED

Also remove some unnecessary 'static'
2026-08-20 15:05:30 -07:00
192c67262a lib: hide some code from coverage checking
Parts that are not easy / useful to unit-test
2023-09-11 23:51:37 +03:00
7b38f094c4 migrate some more code to mu_format / join_paths
Let's modernize a bit.
2023-07-20 23:14:29 +03:00
31f0c40893 migrate to fmt-based logging in some more places
and improve logging.
2023-07-08 10:30:36 +03:00
ca05c82451 query-threads: add multi-dup unit test 2022-12-08 19:30:20 +02:00
d38d32c404 query-threads/results: cosmetics 2022-06-09 00:39:34 +03:00
f7c84006d7 many: update for lib/message updates
Adapt to the new names / directory. Big commit, but mostly just very boring renaming.
2022-03-26 17:19:10 +02:00
0df7a6959a lib/query,parser: update to use mu-message-fields 2022-03-04 00:06:31 +02:00
3dd721d5a3 clang-format: update c/cc coding style
Update all cc code using .clang-format; please do so as well for future PRs
etc.; emacs has a handy 'clang-format' mode to make this automatic.

For comparing old changes with git blame, we can disregard this one using
--ignore-rev

(see https://www.moxio.com/blog/43/ignoring-bulk-change-commits-with-git-blame )
2021-10-20 12:26:16 +03:00
ab51f1553b thread-subject: make even laxer:
compare subject from the *last* plus any spaces.
2021-08-11 22:24:28 +03:00
9a31225ef4 thread-subject: ignore '<prefix>:' when comparing
Should catch most cases.

Fixes: #2083.
2021-08-11 15:16:54 +03:00
b7844358d2 threads: recurse thread-subject check
Not only check for duplicate subjects in *siblings*, also recurse into
the children. This remove some clutter from deeply nested threads.

Fixes: #2078.
2021-08-10 22:10:39 +03:00
473d3998ce mu: calculate thread subjects
Calculate the thread subject, that is, the subject of the (sub)thread _or_
empty if it's the same as the previous subject.

This is for the UI feature of _not_ showing the subject when it's just
repeating from the previous.
2021-05-04 17:34:47 +03:00
8c9430a09a query: improve thread-date handling
And make it available in query_match, so we can expose it to elisp.
2021-05-02 23:30:32 +03:00
8ccd8f5425 threads: fix flag handling of orphan children
Even if a container has no query_match, it may still have children that need to
have flags applied.

This was broken by 6ff9829ce1.

Fixes: #1995
2021-05-02 14:27:11 -04:00
579f841bdd query: filter out docs without query-matches
This avoid including unwanted messages in threaded results.
Also some cleanups.
2021-02-15 19:11:22 +02:00
6ff9829ce1 lib: improve threaded sorting
Improve threaded sorting:
- rework the recursive algo (which should a crash noted earlier)
- sort by thread key (as in 1.5.7)

Fixes: #1923
Fixes: #1922
Fixes: #1911
Fixes: #1916
2021-02-10 12:35:19 +02:00
ba895bc65e mu-query-result: detect thread-subjects
Ongoing... try to determine the thread-subject, to be used in mu4e
later.
2021-01-29 22:44:45 +02:00
e5a52e45fd mu-threads: improve sorting, duplicate handling
And add some more tests.
2021-01-27 22:28:58 +02:00
7f70149c95 threads: don't assert on remove_child
Investigate this, seems to hit in the wild.
2021-01-25 21:44:02 +02:00
3e64fdfb0f threads: avoid assert
The assert failure was spotted in the wild... we need to investigate,
but we can ignore it now to avoid SIGABRT.
2021-01-25 18:11:50 +02:00
95dffb98a6 query: Rework querying/threading machinery
Rewrite the query machinery in c++:
- use an MSet decorator instead of the mu-msg-iter stuff
- use mu-query-decider to mark duplicates/unreadable/related messages
- use mu-query-threader to replace the older container/thread code

Algorithm did not substantially change, but the implementation details
did.
2021-01-20 14:09:04 +02:00