为什么本地包的自动完成功能在 Atom 编辑器中不起作用?



对于标准库导入,自动完成(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

最新更新