aboutsummaryrefslogtreecommitdiff
path: root/widgets
diff options
context:
space:
mode:
authorJeffas <dev@jeffas.io>2019-07-26 14:29:40 +0100
committerDrew DeVault <sir@cmpwn.com>2019-07-26 14:39:42 -0400
commitcded067bc3919a77b17feedd877e4590e7c95f4a (patch)
treef359c28abd705167e3bf013faf8d4d1af4887f29 /widgets
parentaabe3d9b3a58efd9f0ad9b39917b85092d0955a1 (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.go8
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)
}