summary refs log tree commit diff stats
path: root/commands
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-03-15 21:41:18 -0400
committerDrew DeVault <sir@cmpwn.com>2019-03-15 21:41:39 -0400
commite780c6ee96ae086fc668aadcd61fb1777d1cbe43 (patch)
tree53a4f8b7809563de114b0f870a89a3bb029b1268 /commands
parentef6178a12ae5ef7070711f5cc2f2114dfd015dcd (diff)
downloadaerc-e780c6ee96ae086fc668aadcd61fb1777d1cbe43.tar.gz
Implement :next-message n%
Diffstat (limited to 'commands')
-rw-r--r--commands/next-message.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/commands/next-message.go b/commands/next-message.go
index 86cd678..81725c0 100644
--- a/commands/next-message.go
+++ b/commands/next-message.go
@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"strconv"
+	"strings"
 
 	"git.sr.ht/~sircmpwn/aerc2/widgets"
 )
@@ -14,7 +15,7 @@ func init() {
 }
 
 func nextPrevMessageUsage(cmd string) error {
-	return errors.New(fmt.Sprintf("Usage: %s [n]", cmd))
+	return errors.New(fmt.Sprintf("Usage: %s [<n>[%]]", cmd))
 }
 
 func NextPrevMessage(aerc *widgets.Aerc, args []string) error {
@@ -24,14 +25,22 @@ func NextPrevMessage(aerc *widgets.Aerc, args []string) error {
 	var (
 		n   int = 1
 		err error
+		pct bool
 	)
 	if len(args) > 1 {
+		if strings.HasSuffix(args[1], "%") {
+			pct = true
+			args[1] = args[1][:len(args[1])-1]
+		}
 		n, err = strconv.Atoi(args[1])
 		if err != nil {
 			return nextPrevMessageUsage(args[0])
 		}
 	}
 	acct := aerc.SelectedAccount()
+	if pct {
+		n = int(float64(acct.Messages().Height()) * (float64(n) / 100.0))
+	}
 	for ; n > 0; n-- {
 		if args[0] == "prev-message" {
 			acct.Messages().Prev()
a id='n172' href='#n172'>172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203