aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2023-01-15 23:27:29 +0100
committerRobin Jarry <robin@jarry.cc>2023-01-26 00:20:48 +0100
commit98e32d2ff22cba1e60caf6a252eee0d38f26f736 (patch)
tree249564b1942d0a42225243a8a598ec48bc896c6b /doc
parent3191ee171c435a43912264b131340af66fea8112 (diff)
downloadaerc-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.scd9
-rw-r--r--doc/aerc-stylesets.7.scd30
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