Add :prompt command

Usage:
    :prompt <prompt> <command...>

Displays the prompt on the status bar, waits for user input, then
appends that input as the last argument to the command and executes it.
The input is passed as one argument to the command, unless it is empty,
in which case no extra argument is added.
This commit is contained in:
Christopher Vittal 2019-08-19 21:56:12 -04:00 committed by Drew DeVault
parent ea4fe71360
commit ecd803aae4
4 changed files with 108 additions and 6 deletions
commands

33
commands/prompt.go Normal file
View file

@ -0,0 +1,33 @@
package commands
import (
"errors"
"fmt"
"git.sr.ht/~sircmpwn/aerc/widgets"
)
type Prompt struct{}
func init() {
register(Prompt{})
}
func (_ Prompt) Aliases() []string {
return []string{"prompt"}
}
func (_ Prompt) Complete(aerc *widgets.Aerc, args []string) []string {
return nil // TODO: add completions
}
func (_ Prompt) Execute(aerc *widgets.Aerc, args []string) error {
if len(args) < 3 {
return errors.New(fmt.Sprintf("Usage: %s <prompt> <cmd>", args[0]))
}
prompt := args[1]
cmd := args[2:]
aerc.RegisterPrompt(prompt, cmd)
return nil
}