diff options
author | Robin Jarry <robin@jarry.cc> | 2022-11-01 12:37:16 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-11-06 23:16:08 +0100 |
commit | 6b0b5596dee5dda9fb367cbf8c82e52b9e6125a3 (patch) | |
tree | 9aeabf8ce24009bbdf28829647827951f21e425e /lib | |
parent | 14ceca320065656ea31994191f9e74d254a72e04 (diff) | |
download | aerc-6b0b5596dee5dda9fb367cbf8c82e52b9e6125a3.tar.gz |
auto-completion: add option to require a min number of chars
When doing address completion via commands that take a while to run,
having the completion trigger even with a single character can be
non-optimal. Add an option to allow requiring a minimum number of
characters to actually run the completion command.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Tim Culverhouse <tim@timculverhouse.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ui/textinput.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/ui/textinput.go b/lib/ui/textinput.go index 2a8b7c73..c2acd546 100644 --- a/lib/ui/textinput.go +++ b/lib/ui/textinput.go @@ -34,6 +34,7 @@ type TextInput struct { completeIndex int completeDelay time.Duration completeDebouncer *time.Timer + completeMinChars int uiConfig *config.UIConfig } @@ -60,10 +61,13 @@ func (ti *TextInput) Prompt(prompt string) *TextInput { } func (ti *TextInput) TabComplete( - tabcomplete func(s string) ([]string, string), d time.Duration, + tabcomplete func(s string) ([]string, string), + d time.Duration, + minChars int, ) *TextInput { ti.tabcomplete = tabcomplete ti.completeDelay = d + ti.completeMinChars = minChars return ti } @@ -296,7 +300,9 @@ func (ti *TextInput) updateCompletions() { ti.completeDebouncer = time.AfterFunc(ti.completeDelay, func() { defer logging.PanicHandler() ti.Lock() - ti.showCompletions() + if len(ti.StringLeft()) >= ti.completeMinChars { + ti.showCompletions() + } ti.Unlock() }) } else { |