From c0f49a58855fb12bf2623c3668cb006bb204dfeb Mon Sep 17 00:00:00 2001 From: Bao Pham Date: Mon, 26 Jun 2017 23:26:20 +0800 Subject: [PATCH] Add autocomplete for snippet keywords --- cli/autocomplete.go | 35 +++++++++++++++++++++++++++++++++++ main.go | 30 +++++++++++++++++------------- 2 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 cli/autocomplete.go diff --git a/cli/autocomplete.go b/cli/autocomplete.go new file mode 100644 index 0000000..32d68b6 --- /dev/null +++ b/cli/autocomplete.go @@ -0,0 +1,35 @@ +package cli + +import ( + "encoding/csv" + "fmt" + "github.com/baopham/snip/snippet" + "github.com/urfave/cli" + "os" +) + +func Autocomplete(c *cli.Context) { + filePath, err := snippet.SnippetFile() + + if err != nil { + return + } + + file, err := os.Open(filePath) + + if err != nil { + return + } + + reader := csv.NewReader(file) + + for { + row, err := reader.Read() + + if err != nil { + return + } + + fmt.Println(row[0]) + } +} diff --git a/main.go b/main.go index 3f3c98c..73f3856 100644 --- a/main.go +++ b/main.go @@ -48,10 +48,11 @@ func main() { Action: Action(snippetCli.Add), }, { - Name: "search", - Aliases: []string{"s"}, - Usage: "search for snippets: snip search port", - Action: Action(snippetCli.Search), + Name: "search", + Aliases: []string{"s"}, + Usage: "search for snippets: snip search port", + Action: Action(snippetCli.Search), + BashComplete: snippetCli.Autocomplete, }, { Name: "execute", @@ -64,19 +65,22 @@ func main() { "Without this option, the snippet will be saved to the clipboard instead", }, }, - Action: Action(snippetCli.Execute), + Action: Action(snippetCli.Execute), + BashComplete: snippetCli.Autocomplete, }, { - Name: "list", - Aliases: []string{"l"}, - Usage: "list all saved snippets: snip list", - Action: Action(snippetCli.List), + Name: "list", + Aliases: []string{"l"}, + Usage: "list all saved snippets: snip list", + Action: Action(snippetCli.List), + BashComplete: snippetCli.Autocomplete, }, { - Name: "remove", - Aliases: []string{"r"}, - Usage: "remove a saved snippet: snip remove port", - Action: Action(snippetCli.Remove), + Name: "remove", + Aliases: []string{"r"}, + Usage: "remove a saved snippet: snip remove port", + Action: Action(snippetCli.Remove), + BashComplete: snippetCli.Autocomplete, }, }