Allow cc/bcc command to receive no arguments

This commit is contained in:
Daniel Bridges 2019-08-03 21:09:13 -07:00 committed by Drew DeVault
parent 0ceea02720
commit 0a52124102
3 changed files with 21 additions and 5 deletions

View File

@ -1,7 +1,6 @@
package compose package compose
import ( import (
"fmt"
"strings" "strings"
"git.sr.ht/~sircmpwn/aerc/widgets" "git.sr.ht/~sircmpwn/aerc/widgets"
@ -22,10 +21,10 @@ func (_ CC) Complete(aerc *widgets.Aerc, args []string) []string {
} }
func (_ CC) Execute(aerc *widgets.Aerc, args []string) error { func (_ CC) Execute(aerc *widgets.Aerc, args []string) error {
if len(args) < 2 { var addrs string
return fmt.Errorf("Usage: %s <addresses>", args[0]) if len(args) > 1 {
addrs = strings.Join(args[1:], " ")
} }
addrs := strings.Join(args[1:], " ")
composer, _ := aerc.SelectedTab().(*widgets.Composer) composer, _ := aerc.SelectedTab().(*widgets.Composer)
switch args[0] { switch args[0] {

View File

@ -216,7 +216,7 @@ message list, the message in the message viewer, etc).
Detaches the file with the given path from the composed email. If no path is Detaches the file with the given path from the composed email. If no path is
specified, detaches the first attachment instead. specified, detaches the first attachment instead.
*cc* <addresses>, *bcc* <addresses> *cc* [addresses], *bcc* [addresses]
Sets the Cc or Bcc header to the given addresses. If an editor for the header Sets the Cc or Bcc header to the given addresses. If an editor for the header
is not currently visible in the compose window, a new one will be added. is not currently visible in the compose window, a new one will be added.

View File

@ -509,6 +509,17 @@ func (c *Composer) NextField() {
c.focusable[c.focused].Focus(true) c.focusable[c.focused].Focus(true)
} }
func (c *Composer) FocusEditor(editor *headerEditor) {
c.focusable[c.focused].Focus(false)
for i, e := range c.focusable {
if e == editor {
c.focused = i
break
}
}
c.focusable[c.focused].Focus(true)
}
// AddEditor appends a new header editor to the compose window. // AddEditor appends a new header editor to the compose window.
func (c *Composer) AddEditor(header string, value string, appendHeader bool) { func (c *Composer) AddEditor(header string, value string, appendHeader bool) {
if _, ok := c.editors[header]; ok { if _, ok := c.editors[header]; ok {
@ -517,6 +528,9 @@ func (c *Composer) AddEditor(header string, value string, appendHeader bool) {
value = strings.TrimSpace(header) + ", " + value value = strings.TrimSpace(header) + ", " + value
} }
c.editors[header].input.Set(value) c.editors[header].input.Set(value)
if value == "" {
c.FocusEditor(c.editors[header])
}
return return
} }
e := newHeaderEditor(header, value) e := newHeaderEditor(header, value)
@ -529,6 +543,9 @@ func (c *Composer) AddEditor(header string, value string, appendHeader bool) {
c.focusable[len(c.focusable)-1], c.focusable[len(c.focusable)-1],
) )
c.updateGrid() c.updateGrid()
if value == "" {
c.FocusEditor(c.editors[header])
}
} }
// updateGrid should be called when the underlying header layout is changed. // updateGrid should be called when the underlying header layout is changed.