diff options
| author | Eyal Posener <[email protected]> | 2017-05-15 22:44:19 +0300 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2017-05-15 22:50:05 +0300 |
| commit | ff8cd4ed39884bc6774087809e1593f36c4b90e3 (patch) | |
| tree | 78a5fbc1810cfd44497c9c2c0ad9036452dfaef0 /gocomplete/parse.go | |
| parent | e00c0546bc15809f7ba7c4e7a17b6be3aac56ccf (diff) | |
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.
Diffstat (limited to 'gocomplete/parse.go')
| -rw-r--r-- | gocomplete/parse.go | 28 |
1 files changed, 28 insertions, 0 deletions
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 +} |
