From 98e32d2ff22cba1e60caf6a252eee0d38f26f736 Mon Sep 17 00:00:00 2001 From: Robin Jarry Date: Sun, 15 Jan 2023 23:27:29 +0100 Subject: filters: rewrite colorize in c Since its introduction, we had multiple issues with the colorize awk script with regard to non-GNU awk compatibility. Also, this script is standalone and the color theme must be hard coded into it. Reading from an external configuration file (aerc's styleset) from a non-GNU awk is close to impossible (and even far from trivial with GNU awk). Rewrite the builtin colorize filter in C to allow getting the color theme from aerc's active styleset. The theme is configured using the existing styleset syntax and attributes under a separate [viewer] section (see examples and man page). Export the active styleset file path to AERC_STYLESET env var when invoking the filter command so that colorize can access it and use it. I have tested compilation (with clang-analyzer and gcc -fanalyzer) and basic operation on FreeBSD, Fedora (glibc) and Alpine (muslibc). More tests would probably be required on MacOSX and older Linux distros. I also added test vectors to give some confidence that this works as expected. The execution with these vectors passed valgrind --leak-check=full without errors. NB: the default theme has changed to be more minimal. Sample stylesets have more colorful examples. The awk -v theme=xxx option is no longer supported. usage: colorize [-h] [-s FILE] [-f FILE] options: -h show this help message -s FILE use styleset file (default $AERC_STYLESET) -f FILE read from filename (default stdin) Signed-off-by: Robin Jarry Tested-by: Bence Ferdinandy Acked-by: Moritz Poldrack --- doc/aerc-config.5.scd | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'doc/aerc-config.5.scd') diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index cea7d2e7..cc0a5f80 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -653,11 +653,8 @@ _text/plain_ text/plain=colorize ``` - The built-in _colorize_ filter supports alternative themes: - - ``` - text/plain=colorize -v theme=solarized - ``` + The built-in _colorize_ filter can be configured in the *[viewer]* + section of styleset files. See *aerc-stylesets*(7). Wrap long lines at 100 characters, while not messing up nested quotes. Handles format=flowed emails properly: @@ -766,7 +763,7 @@ _image/\*_ ``` See the wiki at https://man.sr.ht/~rjarry/aerc/ for more examples and possible -customizations of the built-in filters (e.g. colors of _colorize_). +customizations of the built-in filters. # OPENERS -- cgit