aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-05-19 18:21:02 -0400
committerDrew DeVault <sir@cmpwn.com>2019-05-19 18:21:02 -0400
commitfa5d8d7a007aa0030a4b2bfb122dabab3e69ad4b (patch)
treee8ac0af8b0699528d048c6dd7bc7c89b0c6ca52b
parentf9251c2344d7a7d9661fdefa66734dceefba8488 (diff)
downloadaerc-fa5d8d7a007aa0030a4b2bfb122dabab3e69ad4b.tar.gz
Advance cursor after :delete and :move
So that you can repeat the action on the next message if appropriate
-rw-r--r--commands/account/delete-message.go1
-rw-r--r--commands/account/move.go1
-rw-r--r--widgets/msglist.go9
3 files changed, 7 insertions, 4 deletions
diff --git a/commands/account/delete-message.go b/commands/account/delete-message.go
index 2ad470b7..d6b669ea 100644
--- 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
index d4978ac0..d58a2794 100644
--- 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
index f7398dc1..caa868f1 100644
--- 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)
}