From fae2e81b4a8d8412316608106b9c24afaa70b0fe Mon Sep 17 00:00:00 2001 From: BayLee4 <63376748+BayLee4@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:03:38 +0100 Subject: [PATCH] Enhance tab completion --- src/cli/cli.go | 14 +++++++++++++- src/utils/utils.go | 7 +++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/cli/cli.go b/src/cli/cli.go index b5ab1a8..529b127 100644 --- a/src/cli/cli.go +++ b/src/cli/cli.go @@ -9,6 +9,7 @@ import ( "path" "path/filepath" "runtime" + "strconv" "strings" "time" @@ -365,10 +366,21 @@ func (t TabComplete) Do(line []rune, pos int) ([][]rune, int) { // No completion return [][]rune{[]rune("")}, 0 } + if len(words) == 1 && nbCharacter == utils.NbPinNumbers { + // Check if word is indeed a number + _, err := strconv.Atoi(lastPartialWord) + if err == nil { + return [][]rune{[]rune("-")}, nbCharacter + } + } var strArray [][]rune for _, s := range mnemonicode.WordList { if strings.HasPrefix(s, lastPartialWord) { - strArray = append(strArray, []rune(s[nbCharacter:])) + var completionCandidate = s[nbCharacter:] + if len(words) <= mnemonicode.WordsRequired(utils.NbBytesWords) { + completionCandidate += "-" + } + strArray = append(strArray, []rune(completionCandidate)) } } return strArray, nbCharacter diff --git a/src/utils/utils.go b/src/utils/utils.go index 7d1cc25..dabbe3f 100644 --- a/src/utils/utils.go +++ b/src/utils/utils.go @@ -27,6 +27,9 @@ import ( "github.com/schollz/mnemonicode" ) +const NbPinNumbers = 4 +const NbBytesWords = 4 + // Get or create home directory func GetConfigDir() (homedir string, err error) { homedir, err = os.UserHomeDir() @@ -186,7 +189,7 @@ func GenerateRandomPin() string { s := "" max := new(big.Int) max.SetInt64(9) - for i := 0; i < 4; i++ { + for i := 0; i < NbPinNumbers; i++ { v, err := rand.Int(rand.Reader, max) if err != nil { panic(err) @@ -199,7 +202,7 @@ func GenerateRandomPin() string { // GetRandomName returns mnemonicoded random name func GetRandomName() string { var result []string - bs := make([]byte, 4) + bs := make([]byte, NbBytesWords) rand.Read(bs) result = mnemonicode.EncodeWordList(result, bs) return GenerateRandomPin() + "-" + strings.Join(result, "-")