aerc

Working clone of aerc-mail.org
git clone git://git.danielmoch.com/aerc.git
Log | Files | Refs | README | LICENSE

commit fa5d8d7a007aa0030a4b2bfb122dabab3e69ad4b
parent f9251c2344d7a7d9661fdefa66734dceefba8488
Author: Drew DeVault <sir@cmpwn.com>
Date:   Sun, 19 May 2019 18:21:02 -0400

Advance cursor after :delete and :move

So that you can repeat the action on the next message if appropriate

Diffstat:
Mcommands/account/delete-message.go | 1+
Mcommands/account/move.go | 1+
Mwidgets/msglist.go | 9+++++----
3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/commands/account/delete-message.go b/commands/account/delete-message.go @@ -24,6 +24,7 @@ func DeleteMessage(aerc *widgets.Aerc, args []string) error { } store := acct.Messages().Store() msg := acct.Messages().Selected() + acct.Messages().Next() store.Delete([]uint32{msg.Uid}, func(msg types.WorkerMessage) { switch msg := msg.(type) { case *types.Done: diff --git a/commands/account/move.go b/commands/account/move.go @@ -25,6 +25,7 @@ func Move(aerc *widgets.Aerc, args []string) error { } msg := acct.Messages().Selected() store := acct.Messages().Store() + acct.Messages().Next() store.Move([]uint32{msg.Uid}, args[1], func(msg types.WorkerMessage) { switch msg := msg.(type) { case *types.Done: diff --git a/widgets/msglist.go b/widgets/msglist.go @@ -109,10 +109,6 @@ func (ml *MessageList) storeUpdate(store *lib.MessageStore) { } if len(store.Uids) > 0 { - // Prevent selecting beyond the last message - for ml.selected >= len(store.Uids) { - ml.Prev() - } // When new messages come in, advance the cursor accordingly // Note that this assumes new messages are appended to the top, which // isn't necessarily true once we implement SORT... ideally we'd look @@ -122,6 +118,11 @@ func (ml *MessageList) storeUpdate(store *lib.MessageStore) { ml.Next() } } + if len(store.Uids) < ml.nmsgs && ml.nmsgs != 0 { + for i := 0; i < ml.nmsgs-len(store.Uids); i++ { + ml.Prev() + } + } ml.nmsgs = len(store.Uids) }