对于标准库导入,自动完成(go-plus)在Atom中工作得很好,但是每当我尝试导入自己的包时,它就不起作用了。
我的包结构是这样的:
.
├── bin
├── pkg
└── src
└── Test
├── MyPackage
│ └── hello.go
└── main.go
main.go
package main
import (
"Test/MyPackage"
)
func main() {
hello.SayHello("World")
}
hello.go
package hello
import "fmt"
const Msg = "Hello "
func SayHello(name string) {
fmt.Printf("%v%v!n", Msg, name)
}
文件编译得很好,但是在main.go
中,hello
包没有调用Atom中的任何自动完成,所以可能是什么问题?
这个问题在README中得到了解决。go-plus包的Md:
首先,要确定autocomplete-plus是出现在你的设置中。Go-plus提供自动完成Gocode工具,所以你应该确保它在PATH中可用。
如果用户定义的包不能自动完成,虽然它用于标准库中的包,但它可能是一个无关紧要的gocode相关问题。尝试运行
gocode set
。一些人的预期输出为:propose-builtins false lib-path "" autobuild false force-debug-output "" package-lookup-mode "go"
你要做的是通过运行
gocode set autobuild true
将自动构建切换为true。现在检查自动完成,它一定在工作对的。
另一个可能的原因是gocode
守护进程不能正常工作(要么是由于Go的更新,要么是多个gocode
守护进程)。关闭守护进程可能会有所帮助。gocode close