From df850582f43aa0e153e08bcfcfa960e18f6b7569 Mon Sep 17 00:00:00 2001 From: VonC Date: Mon, 26 Aug 2019 09:22:11 +0200 Subject: [PATCH 1/4] add down arrow completion --- prompt.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/prompt.go b/prompt.go index 4e3ef43..66e11a6 100644 --- a/prompt.go +++ b/prompt.go @@ -126,6 +126,8 @@ func (p *Prompt) feed(b []byte) (shouldExit bool, exec *Exec) { if !completing { // Don't use p.completion.Completing() because it takes double operation when switch to selected=-1. if newBuf, changed := p.history.Newer(p.buf); changed { p.buf = newBuf + } else { + p.completion.Next() } return } From 49fa645ffe67d3fb67b91e19f6bc37dce8aaf8e3 Mon Sep 17 00:00:00 2001 From: VonC Date: Mon, 26 Aug 2019 18:25:26 +0200 Subject: [PATCH 2/4] Add completionOnDown option --- option.go | 8 ++++++++ prompt.go | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/option.go b/option.go index abce19a..f3698ba 100644 --- a/option.go +++ b/option.go @@ -206,6 +206,14 @@ func OptionSwitchKeyBindMode(m KeyBindMode) Option { } } +// OptionSwitchKeyBindMode set a key bind mode. +func OptionCompletionOnDown() Option { + return func(p *Prompt) error { + p.completionOnDown = true + return nil + } +} + // SwitchKeyBindMode to set a key bind mode. // Deprecated: Please use OptionSwitchKeyBindMode. var SwitchKeyBindMode = OptionSwitchKeyBindMode diff --git a/prompt.go b/prompt.go index 66e11a6..5e8594c 100644 --- a/prompt.go +++ b/prompt.go @@ -25,6 +25,7 @@ type Prompt struct { keyBindings []KeyBind ASCIICodeBindings []ASCIICodeBind keyBindMode KeyBindMode + completionOnDown bool } // Exec is the struct contains user input context. @@ -126,7 +127,7 @@ func (p *Prompt) feed(b []byte) (shouldExit bool, exec *Exec) { if !completing { // Don't use p.completion.Completing() because it takes double operation when switch to selected=-1. if newBuf, changed := p.history.Newer(p.buf); changed { p.buf = newBuf - } else { + } else if p.completionOnDown { p.completion.Next() } return From afba691149627b872f8ee9b9c74ed3b1a098ef35 Mon Sep 17 00:00:00 2001 From: VonC Date: Tue, 27 Aug 2019 08:00:09 +0200 Subject: [PATCH 3/4] Fix comment (lint) --- option.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/option.go b/option.go index f3698ba..0352d37 100644 --- a/option.go +++ b/option.go @@ -206,7 +206,7 @@ func OptionSwitchKeyBindMode(m KeyBindMode) Option { } } -// OptionSwitchKeyBindMode set a key bind mode. +// OptionCompletionOnDown allows for Down arrow key to trigger completion. func OptionCompletionOnDown() Option { return func(p *Prompt) error { p.completionOnDown = true From b6bf267a4ec21165bdc87b52597128a90926cd1d Mon Sep 17 00:00:00 2001 From: VonC Date: Thu, 20 Feb 2020 08:36:07 +0100 Subject: [PATCH 4/4] Put completionOnDown option in handleCompletionKeyBinding --- prompt.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/prompt.go b/prompt.go index 5e8594c..e910a29 100644 --- a/prompt.go +++ b/prompt.go @@ -127,8 +127,6 @@ func (p *Prompt) feed(b []byte) (shouldExit bool, exec *Exec) { if !completing { // Don't use p.completion.Completing() because it takes double operation when switch to selected=-1. if newBuf, changed := p.history.Newer(p.buf); changed { p.buf = newBuf - } else if p.completionOnDown { - p.completion.Next() } return } @@ -151,7 +149,7 @@ func (p *Prompt) feed(b []byte) (shouldExit bool, exec *Exec) { func (p *Prompt) handleCompletionKeyBinding(key Key, completing bool) { switch key { case Down: - if completing { + if completing || p.completionOnDown { p.completion.Next() } case Tab, ControlI: