aboutsummaryrefslogtreecommitdiff
path: root/widgets
diff options
context:
space:
mode:
authorBen Burwell <ben@benburwell.com>2019-12-20 13:21:33 -0500
committerDrew DeVault <sir@cmpwn.com>2019-12-21 09:23:21 -0500
commit7160f98a9081bcab05904484eae790ec0a006b87 (patch)
treee35712afd3dcec12efd47a89d8e4f652fab9cca1 /widgets
parentbcd03c4c4a94e73b2545bf5dfc404082a674c76e (diff)
Show textinput completions in popovers
Rather than showing completions inline in the text input, show them in a popover which can be scrolled by repeatedly pressing the tab key. The selected completion can be executed by pressing enter.
Diffstat (limited to 'widgets')
-rw-r--r--widgets/aerc.go4
-rw-r--r--widgets/exline.go15
2 files changed, 13 insertions, 6 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go
index 9d955e1..da3f56f 100644
--- a/widgets/aerc.go
+++ b/widgets/aerc.go
@@ -372,7 +372,7 @@ func (aerc *Aerc) focus(item ui.Interactive) {
func (aerc *Aerc) BeginExCommand(cmd string) {
previous := aerc.focused
- exline := NewExLine(cmd, func(cmd string) {
+ exline := NewExLine(aerc.conf, cmd, func(cmd string) {
parts, err := shlex.Split(cmd)
if err != nil {
aerc.PushStatus(" "+err.Error(), 10*time.Second).
@@ -399,7 +399,7 @@ func (aerc *Aerc) BeginExCommand(cmd string) {
}
func (aerc *Aerc) RegisterPrompt(prompt string, cmd []string) {
- p := NewPrompt(prompt, func(text string) {
+ p := NewPrompt(aerc.conf, prompt, func(text string) {
if text != "" {
cmd = append(cmd, text)
}
diff --git a/widgets/exline.go b/widgets/exline.go
index f2c7249..6def938 100644
--- a/widgets/exline.go
+++ b/widgets/exline.go
@@ -3,6 +3,7 @@ package widgets
import (
"github.com/gdamore/tcell"
+ "git.sr.ht/~sircmpwn/aerc/config"
"git.sr.ht/~sircmpwn/aerc/lib"
"git.sr.ht/~sircmpwn/aerc/lib/ui"
)
@@ -16,11 +17,14 @@ type ExLine struct {
input *ui.TextInput
}
-func NewExLine(cmd string, commit func(cmd string), finish func(),
+func NewExLine(conf *config.AercConfig, cmd string, commit func(cmd string), finish func(),
tabcomplete func(cmd string) []string,
cmdHistory lib.History) *ExLine {
- input := ui.NewTextInput("").Prompt(":").TabComplete(tabcomplete).Set(cmd)
+ input := ui.NewTextInput("").Prompt(":").Set(cmd)
+ if conf.Ui.CompletionPopovers {
+ input.TabComplete(tabcomplete, conf.Ui.CompletionDelay)
+ }
exline := &ExLine{
commit: commit,
finish: finish,
@@ -34,10 +38,13 @@ func NewExLine(cmd string, commit func(cmd string), finish func(),
return exline
}
-func NewPrompt(prompt string, commit func(text string),
+func NewPrompt(conf *config.AercConfig, prompt string, commit func(text string),
tabcomplete func(cmd string) []string) *ExLine {
- input := ui.NewTextInput("").Prompt(prompt).TabComplete(tabcomplete)
+ input := ui.NewTextInput("").Prompt(prompt)
+ if conf.Ui.CompletionPopovers {
+ input.TabComplete(tabcomplete, conf.Ui.CompletionDelay)
+ }
exline := &ExLine{
commit: commit,
tabcomplete: tabcomplete,