about summary refs log tree commit diff stats
path: root/commands
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-03-10 21:15:24 -0400
committerDrew DeVault <sir@cmpwn.com>2019-03-10 21:15:24 -0400
commitb60999c39e11bf4d1e236f2b10a2f895b44d23fb (patch)
tree8ce8023277815a7d1f25dc7c48fa910c698d5b1b /commands
parent62862d8a9e7f684bc3ff4e9ea115678ff44d8644 (diff)
downloadaerc-b60999c39e11bf4d1e236f2b10a2f895b44d23fb.tar.gz
Start building out command subsystem
Diffstat (limited to 'commands')
-rw-r--r--commands/commands.go28
-rw-r--r--commands/next-folder.go15
-rw-r--r--commands/prev-folder.go15
3 files changed, 58 insertions, 0 deletions
diff --git a/commands/commands.go b/commands/commands.go
new file mode 100644
index 0000000..71dabe4
--- /dev/null
+++ b/commands/commands.go
@@ -0,0 +1,28 @@
+package commands
+
+import (
+	"errors"
+
+	"git.sr.ht/~sircmpwn/aerc2/widgets"
+)
+
+type AercCommand func(aerc *widgets.Aerc, cmd string) error
+
+var (
+	commands map[string]AercCommand
+)
+
+func init() {
+	commands = make(map[string]AercCommand)
+}
+
+func Register(name string, cmd AercCommand) {
+	commands[name] = cmd
+}
+
+func ExecuteCommand(aerc *widgets.Aerc, cmd string) error {
+	if fn, ok := commands[cmd]; ok {
+		return fn(aerc, cmd)
+	}
+	return errors.New("Unknown command " + cmd)
+}
diff --git a/commands/next-folder.go b/commands/next-folder.go
new file mode 100644
index 0000000..02975e1
--- /dev/null
+++ b/commands/next-folder.go
@@ -0,0 +1,15 @@
+package commands
+
+import (
+	"git.sr.ht/~sircmpwn/aerc2/widgets"
+)
+
+func init() {
+	Register("next-folder", NextFolder)
+}
+
+func NextFolder(aerc *widgets.Aerc, cmd string) error {
+	acct := aerc.SelectedAccount()
+	acct.Directories().Next()
+	return nil
+}
diff --git a/commands/prev-folder.go b/commands/prev-folder.go
new file mode 100644
index 0000000..a38214f
--- /dev/null
+++ b/commands/prev-folder.go
@@ -0,0 +1,15 @@
+package commands
+
+import (
+	"git.sr.ht/~sircmpwn/aerc2/widgets"
+)
+
+func init() {
+	Register("prev-folder", PrevFolder)
+}
+
+func PrevFolder(aerc *widgets.Aerc, cmd string) error {
+	acct := aerc.SelectedAccount()
+	acct.Directories().Prev()
+	return nil
+}