diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-09-23 13:14:10 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-09-23 14:58:21 -0500 |
commit | 0908060cfb52f57034c193e3634f0b71d4c5c9c3 (patch) | |
tree | a6d4cc738689d69809fe380ae66861164cba6e6a /aerc/.config | |
parent | f3b213f0a38b6b871a3c9e076b16f3bc71863dc6 (diff) |
feat(aerc): add aerc configs
Diffstat (limited to 'aerc/.config')
-rw-r--r-- | aerc/.config/aerc/aerc.conf | 44 | ||||
-rw-r--r-- | aerc/.config/aerc/binds.conf | 123 | ||||
-rwxr-xr-x | aerc/.config/aerc/filters/colorize | 143 |
3 files changed, 310 insertions, 0 deletions
diff --git a/aerc/.config/aerc/aerc.conf b/aerc/.config/aerc/aerc.conf new file mode 100644 index 0000000..d88f887 --- /dev/null +++ b/aerc/.config/aerc/aerc.conf @@ -0,0 +1,44 @@ +# +# aerc main configuration + +[ui] +mouse-enabled=true +new-message-bell=true + +[viewer] +# +# Specifies the pager to use when displaying emails. Note that some filters +# may add ANSI codes to add color to rendered emails, so you may want to use a +# pager which supports ANSI codes. +# +# Default: less -R +pager=less -R + +[filters] +# +# Filters allow you to pipe an email body through a shell command to render +# certain emails differently, e.g. highlighting them with ANSI escape codes. +# +# The first filter which matches the email's mimetype will be used, so order +# them from most to least specific. +# +# You can also match on non-mimetypes, by prefixing with the header to match +# against (non-case-sensitive) and a comma, e.g. subject,text will match a +# subject which contains "text". Use header,~regex to match against a regex. +# subject,~^\[PATCH=colordiff +text/plain=sed 's/^>\+.*/\x1b[36m&\x1b[0m/' +text/plain=awk -f ~/.config/aerc/filters/colorize +text/html=pandoc -f html -t plain +# image/*=catimg -w $(tput cols) - + +[triggers] +new-email=exec notify-send "New email from %n" "%s" + +[compose::review] +<C-r> = :choose \ + -o a approved "header X-Sourcehut-Patchset-Update APPROVED" \ + -o R Rejected "header X-Sourcehut-Patchset-Update REJECTED" \ + -o r needs-revision "header X-Sourcehut-Patchset-Update NEEDS_REVISION" \ + -o s superseded "header X-Sourcehut-Patchset-Update SUPERSEDED" \ + -o A Applied "header X-Sourcehut-Patchset-Update APPLIED" \ + <Enter> diff --git a/aerc/.config/aerc/binds.conf b/aerc/.config/aerc/binds.conf new file mode 100644 index 0000000..99464ac --- /dev/null +++ b/aerc/.config/aerc/binds.conf @@ -0,0 +1,123 @@ +# Binds are of the form <key sequence> = <command to run> +# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>" +# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit +<C-p> = :prev-tab<Enter> +<C-n> = :next-tab<Enter> +<C-t> = :term<Enter> + +[messages] +q = :quit<Enter> + +j = :next<Enter> +<Down> = :next<Enter> +<C-d> = :next 50%<Enter> +<C-f> = :next 100%<Enter> +<PgDn> = :next 100%<Enter> + +k = :prev<Enter> +<Up> = :prev<Enter> +<C-u> = :prev 50%<Enter> +<C-b> = :prev 100%<Enter> +<PgUp> = :prev 100%<Enter> + +g = :select 0<Enter> +G = :select -1<Enter> + +J = :next-folder<Enter> +K = :prev-folder<Enter> +H = :collapse-folder<Enter> +L = :expand-folder<Enter> + +v = :mark -t<Enter> +V = :mark -v<Enter> + +T = :toggle-threads<Enter> + +<Enter> = :view<Enter> +d = :prompt 'Really delete this message?' 'delete-message'<Enter> +D = :delete<Enter> +A = :archive flat<Enter> + +C = :compose<Enter> + +rr = :reply -a<Enter> +rq = :reply -aq<Enter> +Rr = :reply<Enter> +Rq = :reply -q<Enter> + +c = :cf<space> +$ = :term<space> +! = :term<space> +| = :pipe<space> + +/ = :search<space> +\ = :filter<space> +n = :next-result<Enter> +N = :prev-result<Enter> +<Esc> = :clear<Enter> + +[view] +/ = :toggle-key-passthrough<Enter>/ +q = :close<Enter> +O = :open<Enter> +S = :save<space> +| = :pipe<space> +D = :delete<Enter> +A = :archive flat<Enter> + +f = :forward<Enter> +rr = :reply -a<Enter> +rq = :reply -aq<Enter> +Rr = :reply<Enter> +Rq = :reply -q<Enter> + +H = :toggle-headers<Enter> +<C-k> = :prev-part<Enter> +<C-j> = :next-part<Enter> +J = :next<Enter> +K = :prev<Enter> + +[view::passthrough] +$noinherit = true +$ex = <C-x> +<Esc> = :toggle-key-passthrough<Enter> + +[compose] +# Keybindings used when the embedded terminal is not selected in the compose +# view +$ex = <C-x> +<C-k> = :prev-field<Enter> +<C-j> = :next-field<Enter> +<tab> = :next-field<Enter> + +[compose::editor] +# Keybindings used when the embedded terminal is selected in the compose view +$noinherit = true +$ex = <C-x> +<C-k> = :prev-field<Enter> +<C-j> = :next-field<Enter> +<C-p> = :prev-tab<Enter> +<C-n> = :next-tab<Enter> + +[compose::review] +y = :send<Enter> +n = :abort<Enter> +p = :postpone<Enter> +q = :choose -o d discard abort -o p postpone postpone<Enter> +e = :edit<Enter> +a = :attach<space> +d = :detach<space> +<C-r> = :choose \ + -o a approved "header X-Sourcehut-Patchset-Update APPROVED" \ + -o R Rejected "header X-Sourcehut-Patchset-Update REJECTED" \ + -o r needs-revision "header X-Sourcehut-Patchset-Update NEEDS_REVISION" \ + -o s superseded "header X-Sourcehut-Patchset-Update SUPERSEDED" \ + -o A Applied "header X-Sourcehut-Patchset-Update APPLIED" \ + <Enter> + +[terminal] +$noinherit = true +$ex = <C-x> + +<C-p> = :prev-tab<Enter> +<C-n> = :next-tab<Enter> diff --git a/aerc/.config/aerc/filters/colorize b/aerc/.config/aerc/filters/colorize new file mode 100755 index 0000000..381e24a --- /dev/null +++ b/aerc/.config/aerc/filters/colorize @@ -0,0 +1,143 @@ +#!/usr/bin/awk -f +# Copyright (c) 2022 Robin Jarry + +BEGIN { + + url = "\033[38;5;166m" # orange + header = "\033[38;5;132m" # purple + signature = "\033[38;5;132m" # purple + diff_meta = "\033[1;38;5;239m" # bold white + diff_chunk = "\033[38;5;109m" # cyan + diff_add = "\033[38;5;106m" # green + diff_del = "\033[38;5;124m" # red + quote_1 = "\033[38;5;66m" # blue + quote_2 = "\033[38;5;172m" # yellow + quote_3 = "\033[38;5;132m" # purple + quote_4 = "\033[38;5;88m" # pink + quote_x = "\033[38;5;245m" # gray + reset = "\033[0m" + + # state + in_diff = 0 + in_signature = 0 + in_headers = 0 + in_body = 0 + # patterns + header_pattern = @/^[A-Z][[:alnum:]-]+:/ + url_pattern = @/[a-z]{2,6}:\/\/[[:graph:]]+|(mailto:)?[[:alnum:]_\+\.~\/-]*[[:alnum:]_]@[[:lower:]][[:alnum:]\.-]*[[:lower:]]/ +} +function color_quote(line) { + level = 0 + quotes = "" + while (line ~ /^>/) { + level += 1 + quotes = quotes ">" + line = substr(line, 2) + while (line ~ /^ /) { + quotes = quotes " " + line = substr(line, 2) + } + } + if (level == 1) { + color = quote_1 + } else if (level == 2) { + color = quote_2 + } else if (level == 3) { + color = quote_3 + } else if (level == 4) { + color = quote_4 + } else { + color = quote_x + } + if (line ~ /^\+/) { + return color quotes diff_add line reset + } else if (line ~ /^-/) { + return color quotes diff_del line reset + } + gsub(url_pattern, url "&" color, line) + return color quotes line reset +} +{ + # Strip carriage returns from line + sub(/\r$/, "") + + if (in_diff) { + if ($0 ~ /^-- ?$/) { + in_signature = 1 + in_diff = 0 + in_headers = 0 + in_body = 0 + $0 = signature $0 reset + } else if ($0 ~ /^@@ /) { + $0 = diff_chunk $0 reset + } else if ($0 ~ /^(diff --git|index|---|\+\+\+) /) { + $0 = diff_meta $0 reset + } else if ($0 ~ /^\+/) { + $0 = diff_add $0 reset + } else if ($0 ~ /^-/) { + $0 = diff_del $0 reset + } + } else if (in_signature) { + gsub(url_pattern, url "&" signature) + $0 = signature $0 reset + } else if (in_headers) { + if ($0 ~ /^$/) { + in_signature = 0 + in_diff = 0 + in_headers = 0 + in_body = 1 + } else { + sub(header_pattern, header "&" reset) + gsub(url_pattern, url "&" reset) + } + } else if (in_body) { + if ($0 ~ /^>/) { + $0 = color_quote($0) + } else if ($0 ~ /^diff --git /) { + in_signature = 0 + in_diff = 1 + in_headers = 0 + in_body = 0 + $0 = diff_meta $0 reset + } else if ($0 ~ /^-- ?$/) { + in_signature = 1 + in_diff = 0 + in_headers = 0 + in_body = 0 + $0 = signature $0 reset + } else { + gsub(url_pattern, url "&" reset) + } + } else if ($0 ~ /^diff --git /) { + in_signature = 0 + in_diff = 1 + in_headers = 0 + in_body = 0 + $0 = diff_meta $0 reset + } else if ($0 ~ /^-- ?$/) { + in_signature = 1 + in_diff = 0 + in_headers = 0 + in_body = 0 + $0 = signature $0 reset + } else if ($0 ~ header_pattern) { + in_signature = 0 + in_diff = 0 + in_headers = 1 + in_body = 0 + sub(header_pattern, header "&" reset) + gsub(url_pattern, url "&" reset) + } else { + in_signature = 0 + in_diff = 0 + in_headers = 0 + in_body = 1 + if ($0 ~ /^>/) { + $0 = color_quote($0) + } else { + gsub(url_pattern, url "&" reset) + } + } + + print +} |