From ff8cd4ed39884bc6774087809e1593f36c4b90e3 Mon Sep 17 00:00:00 2001 From: Eyal Posener Date: Mon, 15 May 2017 22:44:19 +0300 Subject: gocomplete: run only runnable go files when typing 'go run', the completion will complete only go files which are in main package and have a main function. --- gocomplete/parse.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 gocomplete/parse.go (limited to 'gocomplete/parse.go') diff --git a/gocomplete/parse.go b/gocomplete/parse.go new file mode 100644 index 0000000..8111b74 --- /dev/null +++ b/gocomplete/parse.go @@ -0,0 +1,28 @@ +package main + +import ( + "go/ast" + "go/parser" + "go/token" + "regexp" + + "github.com/posener/complete" +) + +func functionsInFile(path string, regexp *regexp.Regexp) (tests []string) { + fset := token.NewFileSet() + f, err := parser.ParseFile(fset, path, nil, 0) + if err != nil { + complete.Log("Failed parsing %s: %s", path, err) + return nil + } + for _, d := range f.Decls { + if f, ok := d.(*ast.FuncDecl); ok { + name := f.Name.String() + if regexp == nil || regexp.MatchString(name) { + tests = append(tests, name) + } + } + } + return +} -- cgit v1.2.3