[neomutt] Add keybind to reply based on mailto: link in the body
This commit is contained in:
parent
10e98e71af
commit
8b3920deb5
2 changed files with 49 additions and 0 deletions
42
config/neomutt/extract-reply.sh
Executable file
42
config/neomutt/extract-reply.sh
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
text="$(cat)"
|
||||
|
||||
# Extract only the text/html part of the multipart email
|
||||
# TODO parse actual encoding instead of defaulting to iso-8859-1
|
||||
mailto="$(printf "%s" "$text" \
|
||||
| awk '
|
||||
boundary {
|
||||
if ($0 ~ boundary) {
|
||||
boundary = "";
|
||||
next
|
||||
}
|
||||
print $0
|
||||
}
|
||||
|
||||
/Content-Type: text\/html;/ {
|
||||
boundary=line
|
||||
}
|
||||
|
||||
{
|
||||
line=$0
|
||||
}' \
|
||||
| qprint -d \
|
||||
| iconv -f iso-8859-1 -t utf-8 \
|
||||
| grep -Eo '<a href="mailto:.*?</a>')"
|
||||
|
||||
to="$(printf "%s" "$mailto" | sed -En 's/.*mailto:(.*?)\?subject=.*/\1/p')"
|
||||
subject="$(printf "%s" "$mailto" | sed -En 's/.*\?subject=(.*?)" .*/\1/p')"
|
||||
# TODO extract original To: to emulate use_envelope_from
|
||||
|
||||
datadir="${XDG_DATA_HOME:-"$HOME/.local/share"}/neomutt"
|
||||
mkdir -p "$datadir"
|
||||
|
||||
format_str="unmy_hdr To: Subject:
|
||||
my_hdr To: \"%s\"
|
||||
my_hdr Subject: \"%s\"
|
||||
echo \`rm \"%s\"\`"
|
||||
|
||||
printf "$format_str" "$to" "$subject" "$datadir/info.rc" > "$datadir/info.rc"
|
|
@ -55,6 +55,13 @@ bind pager gh display-toggle-weed
|
|||
bind pager ge extract-keys
|
||||
|
||||
macro pager gu "<pipe-message> urlscan <enter>"
|
||||
# Answer emails with a reply address in the body
|
||||
# https://unix.stackexchange.com/a/586010/248368
|
||||
macro pager gr "<pipe-message> ~/.config/neomutt/extract-reply.sh <enter>\
|
||||
<enter-command>source ~/.local/share/neomutt/info.rc <enter>\
|
||||
<mail><enter><enter><enter>"
|
||||
# Use a hook to reset sender and subject just after creating the reply
|
||||
send-hook . 'unmy_hdr To: Subject:'
|
||||
|
||||
##########
|
||||
# ATTACH #
|
||||
|
|
Loading…
Reference in a new issue