diff options
author | Drew DeVault <sir@cmpwn.com> | 2019-03-15 22:01:20 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-03-15 22:01:20 -0400 |
commit | 13ba53c9d03c375877395a6580d6f694bd19020f (patch) | |
tree | 1ead827a5fd0fb0b84ac25024bfb4ea741e48115 | |
parent | db2146bc91d3a1de13ebf2487cb1e5a9cc52e5e0 (diff) |
Implement :select-message
-rw-r--r-- | commands/select-message.go | 31 | ||||
-rw-r--r-- | widgets/msglist.go | 9 |
2 files changed, 40 insertions, 0 deletions
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 <n>") + } + 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 <n>") + } + } + 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 { |