diff options
author | Robin Jarry <robin@jarry.cc> | 2023-01-15 23:27:29 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-01-26 00:20:48 +0100 |
commit | 98e32d2ff22cba1e60caf6a252eee0d38f26f736 (patch) | |
tree | 249564b1942d0a42225243a8a598ec48bc896c6b /doc | |
parent | 3191ee171c435a43912264b131340af66fea8112 (diff) | |
download | aerc-98e32d2ff22cba1e60caf6a252eee0d38f26f736.tar.gz |
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 <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Acked-by: Moritz Poldrack <moritz@poldrack.dev>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/aerc-config.5.scd | 9 | ||||
-rw-r--r-- | doc/aerc-stylesets.7.scd | 30 |
2 files changed, 33 insertions, 6 deletions
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 diff --git a/doc/aerc-stylesets.7.scd b/doc/aerc-stylesets.7.scd index 1303787c..eaedb4cb 100644 --- a/doc/aerc-stylesets.7.scd +++ b/doc/aerc-stylesets.7.scd @@ -136,6 +136,36 @@ styling. | *selector_chooser* : The item chooser in a selector ui element. +These next style objects only affect the built-in *colorize* filter and must be +declared under a *[viewer]* section of the styleset file. + +[[ *Style Object* +:[ *Description* +| *url* +: URLs. +| *header* +: RFC-822-like header names. +| *signature* +: Email signatures. +| *diff_meta* +: Patch diff meta lines. +| *diff_chunk* +: Patch diff chunks. +| *diff_add* +: Patch diff added lines. +| *diff_del* +: Patch diff deleted lines. +| *quote_1* +: First level quoted text. +| *quote_2* +: Second level quoted text. +| *quote_3* +: Third level quoted text. +| *quote_4* +: Fourth level quoted text. +| *quote_x* +: Above fourth level quoted text. + ## FNMATCH STYLE WILDCARD MATCHING The styleset configuration can be made simpler by using the fnmatch |