mirror of
https://git.sr.ht/~rjarry/aerc
synced 2025-12-12 20:36:12 +01:00
Add `desc:""` struct field tags in all command arguments where it makes sense. The description values will be returned along with completion choices. Implements: https://todo.sr.ht/~rjarry/aerc/271 Signed-off-by: Robin Jarry <robin@jarry.cc> Tested-by: Bojan Gabric <bojan@bojangabric.com> Tested-by: Jason Cox <me@jasoncarloscox.com> Acked-by: Tim Culverhouse <tim@timculverhouse.com>
39 lines
718 B
Go
39 lines
718 B
Go
package commands
|
|
|
|
import (
|
|
"git.sr.ht/~rjarry/go-opt/v2"
|
|
|
|
"git.sr.ht/~rjarry/aerc/app"
|
|
)
|
|
|
|
type Prompt struct {
|
|
Text string `opt:"text"`
|
|
Cmd []string `opt:"..." complete:"CompleteCommand" desc:"Command name."`
|
|
}
|
|
|
|
func init() {
|
|
Register(Prompt{})
|
|
}
|
|
|
|
func (Prompt) Description() string {
|
|
return "Prompt for user input and execute a command."
|
|
}
|
|
|
|
func (Prompt) Context() CommandContext {
|
|
return GLOBAL
|
|
}
|
|
|
|
func (Prompt) Aliases() []string {
|
|
return []string{"prompt"}
|
|
}
|
|
|
|
func (*Prompt) CompleteCommand(arg string) []string {
|
|
return FilterList(ActiveCommandNames(), arg, nil)
|
|
}
|
|
|
|
func (p Prompt) Execute(args []string) error {
|
|
cmd := opt.QuoteArgs(p.Cmd...)
|
|
app.RegisterPrompt(p.Text, cmd.String())
|
|
return nil
|
|
}
|