aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoni Marti <koni.marti@gmail.com>2022-09-27 22:22:20 +0200
committerRobin Jarry <robin@jarry.cc>2022-09-29 17:18:20 +0200
commit7701f22bf035c8321a8b148befa10ddd2f8b7044 (patch)
treed9ceddcb2f8b429e4d0b3ef7b4d34b16b5deb3b7
parent9c0e54f9d9afb5f4a9d91ca9766fc2ef2cfd82de (diff)
downloadaerc-7701f22bf035c8321a8b148befa10ddd2f8b7044.tar.gz
mark: fix (un)mark -a when no message is selected
Call SelectedMessage() in the mark command only when the uid of the currently selected message is actually needed. If no message is selected, i.e. after some filter operations where the previously selected message is not in the results, 'mark -a' would fail since no message is selected and an error is returned from SelectedMessage() even though this is not necessary to mark or unmark all messages. Reported-by: Bence Ferdinandy <bence@ferdinandy.com> Signed-off-by: Koni Marti <koni.marti@gmail.com> Acked-by: Tim Culverhouse <tim@timculverhouse.com>
-rw-r--r--commands/msg/mark.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/commands/msg/mark.go b/commands/msg/mark.go
index b5a228db..dcb6d69d 100644
--- a/commands/msg/mark.go
+++ b/commands/msg/mark.go
@@ -23,9 +23,16 @@ func (Mark) Complete(aerc *widgets.Aerc, args []string) []string {
func (Mark) Execute(aerc *widgets.Aerc, args []string) error {
h := newHelper(aerc)
- selected, err := h.msgProvider.SelectedMessage()
- if err != nil {
- return err
+ OnSelectedMessage := func(fn func(uint32)) error {
+ if fn == nil {
+ return fmt.Errorf("no operation selected")
+ }
+ selected, err := h.msgProvider.SelectedMessage()
+ if err != nil {
+ return err
+ }
+ fn(selected.Uid)
+ return nil
}
store, err := h.store()
if err != nil {
@@ -97,7 +104,7 @@ func (Mark) Execute(aerc *widgets.Aerc, args []string) error {
modFunc(uid)
}
} else {
- modFunc(selected.Uid)
+ return OnSelectedMessage(modFunc)
}
return nil
}
@@ -123,7 +130,7 @@ func (Mark) Execute(aerc *widgets.Aerc, args []string) error {
marker.Unmark(uid)
}
} else {
- marker.Unmark(selected.Uid)
+ return OnSelectedMessage(marker.Unmark)
}
return nil
}