diff options
author | Sebastien Binet <s@sbinet.org> | 2024-01-09 17:06:24 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-01-17 12:00:01 +0100 |
commit | ec8b22b8eec40a745978547f296c2ab3ad2a5569 (patch) | |
tree | 2d7df497d76bee5a01828ebf93e212639ef9dc7e /commands | |
parent | 680244d0533d2687039d947e00ff9c19abcf3ba8 (diff) | |
download | aerc-ec8b22b8eec40a745978547f296c2ab3ad2a5569.tar.gz |
reply,forward: use selected message part
Use the currently selected message part (if any) as the original message
for quote-reply and forward. Honor viewer::alternatives if no message
part was selected.
Signed-off-by: Sebastien Binet <s@sbinet.org>
Reviewed-by: Koni Marti <koni.marti@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands')
-rw-r--r-- | commands/msg/forward.go | 3 | ||||
-rw-r--r-- | commands/msg/reply.go | 9 | ||||
-rw-r--r-- | commands/msg/utils.go | 15 |
3 files changed, 18 insertions, 9 deletions
diff --git a/commands/msg/forward.go b/commands/msg/forward.go index 4147e8c7..20e945c1 100644 --- a/commands/msg/forward.go +++ b/commands/msg/forward.go @@ -143,11 +143,12 @@ func (f forward) Execute(args []string) error { f.Template = config.Templates.Forwards } - part := lib.FindPlaintext(msg.BodyStructure, nil) + part := getMessagePart(msg, widget) if part == nil { part = lib.FindFirstNonMultipart(msg.BodyStructure, nil) // if it's still nil here, we don't have a multipart msg, that's fine } + err = addMimeType(msg, part, &original) if err != nil { return err diff --git a/commands/msg/reply.go b/commands/msg/reply.go index 4b3e7c81..333b3e3a 100644 --- a/commands/msg/reply.go +++ b/commands/msg/reply.go @@ -222,14 +222,7 @@ func (r reply) Execute(args []string) error { return nil } - var part []int - for _, mime := range config.Viewer.Alternatives { - part = lib.FindMIMEPart(mime, msg.BodyStructure, nil) - if part != nil { - break - } - } - + part := getMessagePart(msg, widget) if part == nil { // mkey... let's get the first thing that isn't a container // if that's still nil it's either not a multipart msg (ok) or diff --git a/commands/msg/utils.go b/commands/msg/utils.go index 42693348..d6dffd50 100644 --- a/commands/msg/utils.go +++ b/commands/msg/utils.go @@ -6,6 +6,7 @@ import ( "git.sr.ht/~rjarry/aerc/app" "git.sr.ht/~rjarry/aerc/commands" + "git.sr.ht/~rjarry/aerc/config" "git.sr.ht/~rjarry/aerc/lib" "git.sr.ht/~rjarry/aerc/models" ) @@ -59,3 +60,17 @@ func (h *helper) messages() ([]*models.MessageInfo, error) { } return commands.MsgInfoFromUids(store, uid, h.statusInfo) } + +func getMessagePart(msg *models.MessageInfo, provider app.ProvidesMessage) []int { + p := provider.SelectedMessagePart() + if p != nil { + return p.Index + } + for _, mime := range config.Viewer.Alternatives { + part := lib.FindMIMEPart(mime, msg.BodyStructure, nil) + if part != nil { + return part + } + } + return nil +} |