Commit Graph

299 Commits

Author SHA1 Message Date
501d27ad89 mu-server: tweak server
Try to set a larger pipe size (on Linux); and only show the mu-prompt
when talking to a tty.
2026-08-20 15:05:31 -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
1e1311fc39 mu-utils: cleanups
Fix some types

Improve error handling

Remove dead/unused code
2026-08-20 15:05:31 -07:00
bed72e5b5c mu-option/-result: tidy-ups
Small tweaks to avoid copying; add [[nodiscard]] .
2026-08-20 15:05:31 -07:00
7e83f5e4b0 mu-regex: add match_groups, use everywhere
Add match_groups to Mu::Regex, and update old "raw" GRegex users.
2026-08-20 15:05:31 -07:00
a03fd48551 utils: support negative lexnums
We use "lexnums" to efficiently/sortably store numbers >= 0; let's
support negative numbers as well (albeit not very optimal in size yet)
2026-08-20 15:05:31 -07:00
51a2bc5f60 cld2: unit-test fix
Fix inverted HAVE_CLD2 test
2026-08-20 15:05:31 -07:00
ca881a6e83 cld2: fix macos unit-test on ci 2026-08-20 15:05:31 -07:00
391cc3c556 cld2: fix language-detector
Inverted #if check.
2026-08-20 15:05:30 -07:00
91ad1c4478 cld2: fix HAVE_CLD2 test
It _is_ defined (as 0) when there is no CLD2.
2026-08-20 15:05:30 -07:00
da2995a768 mu-sexp: improve corner-cases, performance
Some C++20 updates; use the new ascii/ctype functions. Avoid unlimited
recursion. Speed-up conversion to_string

Update unit-tests.
2026-08-20 15:05:30 -07:00
dfdd943817 utils: html-to-text: fix some issues, update tests
Improve handling of some corner-cases, and add more unit-tests for
things that were broken before.
2026-08-20 15:05:30 -07:00
809b9e4f4a utils: read_from_stdin: avoid reading nuls
We should read the actual written size, not the allocated size.
2026-08-20 15:05:30 -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
502c9cd67b lib: use ascii ctype utils
Use the new ascii ctype utils.
2026-08-20 15:05:30 -07:00
f2960a197e utils: add ascii ctype helpers
Add some constexpr ctype helpers that avoid any possible UB (i.e.,
handling casting to unsigned), and explicitly avoid any
locale-specifics.
2026-08-20 15:05:30 -07:00
6715ff418a lib/utils: small cleanups
Fix some static analysis warnings
2026-08-20 15:05:29 -07:00
d8afabcc0f lib: remove unused async-queue 2026-08-20 15:05:29 -07:00
339cf0bd65 mu-utils-file: use std::filesystem::remove_all
Instead of the hacky "rm -rf"
2026-08-20 15:05:28 -07:00
3c4b50e7a2 mu-utils-file: remove some unused code 2026-08-20 15:05:28 -07:00
45b9722040 mu/lib: fix some possible quoting issues 2026-08-20 15:05:28 -07:00
db7bd7a900 mu-utils: replace #define with constexpr for MU_COLOR_ 2026-08-20 15:05:28 -07:00
85f4a4b80a utils: fix typo 2026-08-20 15:05:28 -07:00
ab6017d5a9 utils: rework MU_ENABLE_BITOPS using C++20 code
Instead of macros, we using C++20 concepts to define the helpers to deal with
bitops on enum-class conveniently.

x# Please enter the commit message for your changes. Lines starting
2026-08-20 15:05:28 -07:00
911ade8b73 sexp.hh: silence compiler warnings
Seems they only happen in C++20 mode, not when compiling C++23 mode. So assuming
these are false alarms (old code anyway)
2026-08-20 15:05:28 -07:00
f66b58cd41 utils: rework logging functions
Use a general mu_log which does the formatting, and specific mu_debug, mu_info
etc., to call it.
2026-08-20 15:04:27 -07:00
5f7686a767 test-utils: fix some clang-tidy warnings 2026-08-20 15:04:27 -07:00
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
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
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
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
543c43f078 Replace "the the " with "the " 2026-08-20 15:04:26 -07:00
5378f321f4 utils: add set_thread_name
With HAVE_PTHREAD_SETNAME_NP
2026-08-20 15:04:25 -07:00
8c706a77db mu-init: automatic export labels with --reinit
When re-initializing the store, automatically write the labels to a file in mu's
cache, so user can later import them.
2025-08-16 16:20:33 +03:00
34d3bf2e28 tests: only build when needed
Build the tests lazily, i.e., not before `meson test`. This helps with
build-times.
2025-08-15 21:01:05 +03:00
8d3b65c5d8 utils: refactor count_nl from mu-cmd-find
And update users.
Please enter the commit message for your changes. Lines starting
2025-07-27 19:39:23 +03:00
33958cd0f7 fmt: prefer system package if found
mu embeds a "vendored" subset of the libfmt package under thirdparty; but it's
better to use the system-package if the user has one.

So, use the system package if found or user -Duse-embedded-fmt=true is
specified.
2025-07-24 19:55:27 +03:00
7f274fe518 mu-test: fix logging verbosity
We were logging _everything since the g_log_set_handler was only set for the
default domain, not "mu". Let's fix this.
2025-06-16 10:57:36 +03:00
eb75141d0a mu_utils: add to_string_char
Like to_string_gchar, but for malloc/free strings.
2025-06-14 13:14:03 +03:00
452969355c mu-test: add valgrind check
Make it a bit easier to skip some tests when running under valgrind.
2025-05-24 19:18:10 +03: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
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
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
dee7e5951c utils-file: add unit-test for expand_file 2024-12-09 19:41:58 +02:00
0e0d4a0cb6 mu-sexp: add -unix output for json tstamps
The json output (for mu-find etc.) just showed the converted sexp
output, including the clumsy emacs-style tstamps (for changed/date).

Add unix timestamps as well, which are easier to work with outside
emacs.

This handles #2770.
2024-12-07 12:14:55 +02:00
646ad2e840 lib/utils: include fmt/xchar.h
Needed for 'join'
2024-12-06 20:14:11 +02:00
29dc1cea0c Fix typos. 2024-09-22 17:27:18 +00:00