summary refs log tree commit diff stats
path: root/widgets
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-05-14 14:27:28 -0400
committerDrew DeVault <sir@cmpwn.com>2019-05-14 14:27:28 -0400
commitf77d7c2c3d578ae5a724e1e8b91656304dde75d0 (patch)
tree77b4be714678ca6b1d25d94ba89215606c03d727 /widgets
parent928ac1bcd9f7e4a6f20ab23a9416180534417cff (diff)
downloadaerc-f77d7c2c3d578ae5a724e1e8b91656304dde75d0.tar.gz
Add distinct keybindings for each compose view
Diffstat (limited to 'widgets')
-rw-r--r--widgets/aerc.go11
-rw-r--r--widgets/compose.go10
2 files changed, 19 insertions, 2 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go
index fb109d4..61d4645 100644
--- a/widgets/aerc.go
+++ b/widgets/aerc.go
@@ -88,11 +88,18 @@ func (aerc *Aerc) Draw(ctx *libui.Context) {
 }
 
 func (aerc *Aerc) getBindings() *config.KeyBindings {
-	switch aerc.SelectedTab().(type) {
+	switch view := aerc.SelectedTab().(type) {
 	case *AccountView:
 		return aerc.conf.Bindings.MessageList
 	case *Composer:
-		return aerc.conf.Bindings.Compose
+		switch view.Bindings() {
+		case "compose::editor":
+			return aerc.conf.Bindings.ComposeEditor
+		case "compose::review":
+			return aerc.conf.Bindings.ComposeReview
+		default:
+			return aerc.conf.Bindings.Compose
+		}
 	case *MessageViewer:
 		return aerc.conf.Bindings.MessageView
 	case *Terminal:
diff --git a/widgets/compose.go b/widgets/compose.go
index 38c33fc..2daa29c 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -120,6 +120,16 @@ func (c *Composer) Close() {
 	}
 }
 
+func (c *Composer) Bindings() string {
+	if c.editor == nil {
+		return "compose::review"
+	} else if c.editor == c.focusable[c.focused] {
+		return "compose::editor"
+	} else {
+		return "compose"
+	}
+}
+
 func (c *Composer) Event(event tcell.Event) bool {
 	return c.focusable[c.focused].Event(event)
 }