diff --git a/commands/select-message.go b/commands/select-message.go new file mode 100644 index 0000000..868d1fd --- /dev/null +++ b/commands/select-message.go @@ -0,0 +1,31 @@ +package commands + +import ( + "errors" + "strconv" + + "git.sr.ht/~sircmpwn/aerc2/widgets" +) + +func init() { + Register("select-message", SelectMessage) +} + +func SelectMessage(aerc *widgets.Aerc, args []string) error { + if len(args) != 2 { + return errors.New("Usage: :select-message ") + } + var ( + n int = 1 + err error + ) + if len(args) > 1 { + n, err = strconv.Atoi(args[1]) + if err != nil { + return errors.New("Usage: :select-message ") + } + } + acct := aerc.SelectedAccount() + acct.Messages().Select(n) + return nil +} diff --git a/widgets/msglist.go b/widgets/msglist.go index 28eec0c..e3b524d 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -112,6 +112,15 @@ func (ml *MessageList) SetStore(store *lib.MessageStore) { ml.Invalidate() } +func (ml *MessageList) Select(index int) { + ml.selected = index + for ; ml.selected < 0; ml.selected = len(ml.store.Uids) + ml.selected { + } + if ml.selected > len(ml.store.Uids) { + ml.selected = len(ml.store.Uids) + } +} + func (ml *MessageList) nextPrev(delta int) { ml.selected += delta if ml.selected < 0 {