diff options
author | Jeffas <dev@jeffas.io> | 2019-07-26 14:29:40 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-07-26 14:39:42 -0400 |
commit | cded067bc3919a77b17feedd877e4590e7c95f4a (patch) | |
tree | f359c28abd705167e3bf013faf8d4d1af4887f29 /widgets | |
parent | aabe3d9b3a58efd9f0ad9b39917b85092d0955a1 (diff) |
Add tab completion to textinputs
This adds tab completion to textinput components. They can be configured
with a completion function. This function is called when the user
presses <tab>. The first completion is initially shown to the user
inserted into the text. Repeated presses of <tab> or <backtab> cycle
through the completions list. The completions list is invalidated when
any other non-tab-like key is pressed.
Also changed is some logic for current completion generation so that
all available commands are returned when <tab> is pressed with no
current text and similarly for arguments of commands.
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/exline.go | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/widgets/exline.go b/widgets/exline.go index b7b4e3d..4791ae9 100644 --- a/widgets/exline.go +++ b/widgets/exline.go @@ -20,7 +20,7 @@ func NewExLine(commit func(cmd string), cancel func(), tabcomplete func(cmd string) []string, cmdHistory lib.History) *ExLine { - input := ui.NewTextInput("").Prompt(":") + input := ui.NewTextInput("").Prompt(":").TabComplete(tabcomplete) exline := &ExLine{ cancel: cancel, commit: commit, @@ -64,12 +64,6 @@ func (ex *ExLine) Event(event tcell.Event) bool { ex.input.Focus(false) ex.cmdHistory.Reset() ex.cancel() - case tcell.KeyTab: - complete := ex.tabcomplete(ex.input.StringLeft()) - if len(complete) == 1 { - ex.input.Set(complete[0] + " " + ex.input.StringRight()) - } - ex.Invalidate() default: return ex.input.Event(event) } |