Implement basic tab completion support
Tab completion currently only works on commands. Contextual completion will be added in the future.
This commit is contained in:
parent
177651bdda
commit
2a0961701c
47 changed files with 598 additions and 154 deletions
commands/compose
|
@ -6,11 +6,21 @@ import (
|
|||
"git.sr.ht/~sircmpwn/aerc/widgets"
|
||||
)
|
||||
|
||||
type Abort struct{}
|
||||
|
||||
func init() {
|
||||
register("abort", CommandAbort)
|
||||
register(Abort{})
|
||||
}
|
||||
|
||||
func CommandAbort(aerc *widgets.Aerc, args []string) error {
|
||||
func (_ Abort) Aliases() []string {
|
||||
return []string{"abort"}
|
||||
}
|
||||
|
||||
func (_ Abort) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_ Abort) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) != 1 {
|
||||
return errors.New("Usage: abort")
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@ var (
|
|||
ComposeCommands *commands.Commands
|
||||
)
|
||||
|
||||
func register(name string, cmd commands.AercCommand) {
|
||||
func register(cmd commands.Command) {
|
||||
if ComposeCommands == nil {
|
||||
ComposeCommands = commands.NewCommands()
|
||||
}
|
||||
ComposeCommands.Register(name, cmd)
|
||||
ComposeCommands.Register(cmd)
|
||||
}
|
||||
|
|
|
@ -6,11 +6,21 @@ import (
|
|||
"git.sr.ht/~sircmpwn/aerc/widgets"
|
||||
)
|
||||
|
||||
type Edit struct{}
|
||||
|
||||
func init() {
|
||||
register("edit", CommandEdit)
|
||||
register(Edit{})
|
||||
}
|
||||
|
||||
func CommandEdit(aerc *widgets.Aerc, args []string) error {
|
||||
func (_ Edit) Aliases() []string {
|
||||
return []string{"edit"}
|
||||
}
|
||||
|
||||
func (_ Edit) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_ Edit) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) != 1 {
|
||||
return errors.New("Usage: edit")
|
||||
}
|
||||
|
|
|
@ -7,16 +7,21 @@ import (
|
|||
"git.sr.ht/~sircmpwn/aerc/widgets"
|
||||
)
|
||||
|
||||
type NextPrevField struct{}
|
||||
|
||||
func init() {
|
||||
register("next-field", NextPrevField)
|
||||
register("prev-field", NextPrevField)
|
||||
register(NextPrevField{})
|
||||
}
|
||||
|
||||
func nextPrevFieldUsage(cmd string) error {
|
||||
return errors.New(fmt.Sprintf("Usage: %s", cmd))
|
||||
func (_ NextPrevField) Aliases() []string {
|
||||
return []string{"next-field", "prev-field"}
|
||||
}
|
||||
|
||||
func NextPrevField(aerc *widgets.Aerc, args []string) error {
|
||||
func (_ NextPrevField) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_ NextPrevField) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) > 2 {
|
||||
return nextPrevFieldUsage(args[0])
|
||||
}
|
||||
|
@ -28,3 +33,7 @@ func NextPrevField(aerc *widgets.Aerc, args []string) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func nextPrevFieldUsage(cmd string) error {
|
||||
return errors.New(fmt.Sprintf("Usage: %s", cmd))
|
||||
}
|
||||
|
|
|
@ -20,13 +20,23 @@ import (
|
|||
"git.sr.ht/~sircmpwn/aerc/worker/types"
|
||||
)
|
||||
|
||||
type Send struct{}
|
||||
|
||||
func init() {
|
||||
register("send", SendMessage)
|
||||
register(Send{})
|
||||
}
|
||||
|
||||
func SendMessage(aerc *widgets.Aerc, args []string) error {
|
||||
func (_ Send) Aliases() []string {
|
||||
return []string{"send"}
|
||||
}
|
||||
|
||||
func (_ Send) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_ Send) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) > 1 {
|
||||
return errors.New("Usage: send-message")
|
||||
return errors.New("Usage: send")
|
||||
}
|
||||
composer, _ := aerc.SelectedTab().(*widgets.Composer)
|
||||
config := composer.Config()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue