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>
This commit is contained in:
parent
9c0e54f9d9
commit
7701f22bf0
1 changed files with 12 additions and 5 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue