R commands/compose/send-message.go => commands/compose/send.go +1 -1
@@ 17,7 17,7 @@ import (
)
func init() {
- register("send-message", SendMessage)
+ register("send", SendMessage)
}
func SendMessage(aerc *widgets.Aerc, args []string) error {
M config/bindings.go => config/bindings.go +1 -1
@@ 283,7 283,7 @@ func init() {
keyNames["ACK"] = KeyStroke{tcell.KeyACK, 0}
keyNames["BEL"] = KeyStroke{tcell.KeyBEL, 0}
keyNames["BS"] = KeyStroke{tcell.KeyBS, 0}
- keyNames["TAB"] = KeyStroke{tcell.KeyTAB, 0}
+ keyNames["tab"] = KeyStroke{tcell.KeyTAB, 0}
keyNames["LF"] = KeyStroke{tcell.KeyLF, 0}
keyNames["VT"] = KeyStroke{tcell.KeyVT, 0}
keyNames["FF"] = KeyStroke{tcell.KeyFF, 0}
M config/binds.conf => config/binds.conf +13 -0
@@ 40,6 40,14 @@ a = :reply -a<Enter>
f = :forward<Enter>
[compose]
+# Keybindings used when the embedded terminal is not selected in the compose
+# view
+<C-k> = :prev-field<Enter>
+<C-j> = :next-field<Enter>
+<tab> = :next-field<Enter>
+
+[compose::editor]
+# Keybindings used when the embedded terminal is selected in the compose view
$noinherit = true
$ex = <semicolon>
<C-k> = :prev-field<Enter>
@@ 47,6 55,11 @@ $ex = <semicolon>
<C-p> = :prev-tab<Enter>
<C-n> = :next-tab<Enter>
+[compose::review]
+# Keybindings used when reviewing a message to be sent
+y = :send<Enter>
+n = :abort<Enter>
+
[terminal]
$noinherit = true
$ex = <semicolon>
M config/config.go => config/config.go +17 -10
@@ 39,11 39,13 @@ type AccountConfig struct {
}
type BindingConfig struct {
- Global *KeyBindings
- Compose *KeyBindings
- MessageList *KeyBindings
- MessageView *KeyBindings
- Terminal *KeyBindings
+ Global *KeyBindings
+ Compose *KeyBindings
+ ComposeEditor *KeyBindings
+ ComposeReview *KeyBindings
+ MessageList *KeyBindings
+ MessageView *KeyBindings
+ Terminal *KeyBindings
}
type FilterConfig struct {
@@ 139,11 141,13 @@ func LoadConfig(root *string) (*AercConfig, error) {
file.NameMapper = mapName
config := &AercConfig{
Bindings: BindingConfig{
- Global: NewKeyBindings(),
- Compose: NewKeyBindings(),
- MessageList: NewKeyBindings(),
- MessageView: NewKeyBindings(),
- Terminal: NewKeyBindings(),
+ Global: NewKeyBindings(),
+ Compose: NewKeyBindings(),
+ ComposeEditor: NewKeyBindings(),
+ ComposeReview: NewKeyBindings(),
+ MessageList: NewKeyBindings(),
+ MessageView: NewKeyBindings(),
+ Terminal: NewKeyBindings(),
},
Ini: file,
@@ 223,6 227,9 @@ func LoadConfig(root *string) (*AercConfig, error) {
"messages": &config.Bindings.MessageList,
"terminal": &config.Bindings.Terminal,
"view": &config.Bindings.MessageView,
+
+ "compose::editor": &config.Bindings.ComposeEditor,
+ "compose::review": &config.Bindings.ComposeReview,
}
for _, name := range binds.SectionStrings() {
sec, err := binds.GetSection(name)
M widgets/aerc.go => widgets/aerc.go +9 -2
@@ 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:
M widgets/compose.go => widgets/compose.go +10 -0
@@ 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)
}