aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelle Besseling <jelle@pingiun.com>2019-08-04 16:09:48 +0200
committerDrew DeVault <sir@cmpwn.com>2019-08-07 15:10:24 +0900
commit507c90537c66289633af4b26abddcfd50a2a29d0 (patch)
tree10ac19bd89b0911ade88c6999d3c37544e6058a3
parent3650b72ca64b9fb6a7e7b058ad6ef67894c2866d (diff)
downloadaerc-507c90537c66289633af4b26abddcfd50a2a29d0.tar.gz
Implement next-message in msgview using account
This makes sure that the next-message command accepts the same arguments in the account view and the msgview
-rw-r--r--commands/account/next.go48
-rw-r--r--commands/msgview/next.go17
2 files changed, 37 insertions, 28 deletions
diff --git a/commands/account/next.go b/commands/account/next.go
index f306b480..7b1f230b 100644
--- a/commands/account/next.go
+++ b/commands/account/next.go
@@ -24,8 +24,20 @@ func (_ NextPrevMsg) Complete(aerc *widgets.Aerc, args []string) []string {
}
func (_ NextPrevMsg) Execute(aerc *widgets.Aerc, args []string) error {
+ var err, n, pct = ParseNextPrevMessage(args)
+ if err != nil {
+ return err
+ }
+ acct := aerc.SelectedAccount()
+ if acct == nil {
+ return errors.New("No account selected")
+ }
+ return ExecuteNextPrevMessage(args, acct, pct, n)
+}
+
+func ParseNextPrevMessage(args []string) (error, int, bool) {
if len(args) > 2 {
- return nextPrevMessageUsage(args[0])
+ return nextPrevMessageUsage(args[0]), 0, false
}
var (
n int = 1
@@ -39,30 +51,28 @@ func (_ NextPrevMsg) Execute(aerc *widgets.Aerc, args []string) error {
}
n, err = strconv.Atoi(args[1])
if err != nil {
- return nextPrevMessageUsage(args[0])
+ return nextPrevMessageUsage(args[0]), 0, false
}
}
- acct := aerc.SelectedAccount()
- if acct == nil {
- return errors.New("No account selected")
- }
+ return nil, n, pct
+}
+
+func ExecuteNextPrevMessage(args []string, acct *widgets.AccountView, pct bool, n int) error {
if pct {
n = int(float64(acct.Messages().Height()) * (float64(n) / 100.0))
}
- for ; n > 0; n-- {
- if args[0] == "prev-message" || args[0] == "prev" {
- store := acct.Store()
- if store != nil {
- store.Prev()
- }
- acct.Messages().Scroll()
- } else {
- store := acct.Store()
- if store != nil {
- store.Next()
- }
- acct.Messages().Scroll()
+ if args[0] == "prev-message" || args[0] == "prev" {
+ store := acct.Store()
+ if store != nil {
+ store.NextPrev(-n)
+ }
+ acct.Messages().Scroll()
+ } else {
+ store := acct.Store()
+ if store != nil {
+ store.NextPrev(n)
}
+ acct.Messages().Scroll()
}
return nil
}
diff --git a/commands/msgview/next.go b/commands/msgview/next.go
index 82fb12f9..647aafb0 100644
--- a/commands/msgview/next.go
+++ b/commands/msgview/next.go
@@ -1,8 +1,7 @@
package msgview
import (
- "errors"
-
+ "git.sr.ht/~sircmpwn/aerc/commands/account"
"git.sr.ht/~sircmpwn/aerc/widgets"
)
@@ -21,16 +20,16 @@ func (_ NextPrevMsg) Complete(aerc *widgets.Aerc, args []string) []string {
}
func (_ NextPrevMsg) Execute(aerc *widgets.Aerc, args []string) error {
+ err, n, pct := account.ParseNextPrevMessage(args)
+ if err != nil {
+ return err
+ }
mv, _ := aerc.SelectedTab().(*widgets.MessageViewer)
acct := mv.SelectedAccount()
store := mv.Store()
- if acct == nil {
- return errors.New("No account selected")
- }
- if args[0] == "prev-message" || args[0] == "prev" {
- store.Prev()
- } else {
- store.Next()
+ err = account.ExecuteNextPrevMessage(args, acct, pct, n)
+ if err != nil {
+ return err
}
nextMsg := store.Selected()
if nextMsg == nil {