功能上
主要是和代码联想,补全相关,如果你的补全和联想有任何问题,就是gocode 的问题
日常中遇到的问题FAQ
Q、电脑休眠之后环境就不好用了,联想消失,补全消失
A:重启gocode
Q 使用gomod 之后无法联想到项目vendor
A: 原则上讲,gocode 会优先找你的vendor ,但是你写项目的时候导入会写一大串路径。
主要判断标准还是根据gocode status 来判断
name: github.com/go-redis/redis/v8 (default alias: redis)
imports 166 declarations and 19 packages
last modification time: 2020-11-04 16:32:28.7596546 +0800 CST
github.com/go-redis/redis/v8 路径写成这个, 那就是目前联想的你D:\GoProjects\pkg\windows_amd64(本人的GOPATH)路径下的github.com/go-redis/redis/v8,你的包会被正常联想, 如果你go mod vendor 在本地创建包仓库, gocode 会联想到你项目vendor
name: xx项目/vendor/github.com/go-redis/redis/v8 (default alias: redis)
但是gocode 的操作很迷… 他选择哪个路径, 我也搞不清楚, 有时候是GOPATH,有时候是本地项目vendor, 一切以gocode status 状态为准把
解决:
1、删掉项目下的vendor
2、清掉gocode 缓存, gocode drop-cache
3、然后保证D:\GoProjects\pkg\windows_amd64下有需要的包路径,就正常了
Q 使用过程中突然就无法正确联想了
A 尝试cmd 下 gocode drop-cache 清下缓存, 然后在看看你的 gocode status 里面加入了没有
Q 关机之后在开启编辑器LiteIDE gocode 不会自动启动了
A: 在升级了gocode 版本之后发现这个gocode 并不会被编辑器自动拉起来, 反而要自己手动启动了
重启电脑后正常了。
Q 新建项目,创建了很多路径,除了main.go 路径其他的路径都不能被gocode 正确联想
A:创建个文件,然后整体编译下, 让gocode 找到路径
路径下写个test.go
package db
import (
"fmt"
)
func Test() {
fmt.Println("test")
}
然后在main.go 中调用下Test() 然后gocode 就工作正常了…
Q gocode 正常工作突然又挂了或者反应慢
A:gocode drop-cache 命令清下缓存,一般情况就恢复了。
Q暴力关机, 再次启动时候gocode 又挂了。
A:终端输入gocode status 毫无反应,长时间卡死,其他命令也一样。
打开任务管理器, 查看gocode 进程,发现同时启动多个gocode 进程, 杀掉多余的进程
注意慢点杀,杀掉一个,执行下gocode status 看一下有没有反应, 没反应在杀一个。 尝试恢复gocode ,
直到gocode status 有反应了, 在编辑器中尝试代码联想是否恢复… 我真是日了狗了,半个小时了…希望对之后有帮助
Q 在同一个项目,同一个目录下, 不同的文件,一个有代码联想,一个没有
A:… 实在是怪啊, 我也不知道为啥, 只能删除这个文件,重新建立文件就好了。 重启啥的也不好使
从gocode 这里面直接找不到这个文件,实在说不清是为啥, 删了重新建立把
Q 根据作者的建议,如果有更严重的问题
A 可以尝试开启debug, 不过我目前还不需要这样做
gocode close
gocode -s -debug
以下是github 搬运 https://github.com/nsf/gocode/
gocode集合列出所有选项及其值。
gocode set显示该选项的值。
gocode set为该选项设置新值。
propose-builtins
布尔选项。如果为true,gocode将向自动完成建议添加内置类型、函数和常量。默认值:false。
lib-path
字符串选项。允许您添加包的搜索路径。默认情况下,gocode只根据以前存在的环境变量搜索
$GOPATH/pkg/$GOOS_$GOARCH"和"$GOROOT/pkg/$GOOS_$GOARCH"
还可以使用“:”(冒号)作为分隔符指定多个路径(在Windows上使用分号“;”)。lib path指定的路径是默认路径的前缀。
autobuild
布尔选项。如果为true,gocode将在源文件被修改时自动构建过期的包,以获得最新的自动完成结果。这个特性是实验性的。默认值:false。
force-debug-output
字符串选项。如果不为空,gocode将强制将日志重定向到该文件中。还强制在服务器端启用调试模式。默认值:“”(空)。
package-lookup-mode
字符串选项。如果是go,则使用标准go包查找规则。如果是gb,则使用gb特定的查找规则。看到了吗https://github.com/constabulary/gb了解详情。默认值:go。
close-timeout
整数选项。如果在此秒数之后没有完成请求,gocode进程将终止。默认为1800(30分钟)。
unimported-packages
布尔选项。如果设置为true,gocode将尝试为无法解析的标识符自动导入某些已知包。目前只支持一组有限的标准库软件包。默认值:false。
partials
布尔选项。如果设置为false,gocode将不会根据光标前面输入的前缀过滤自动完成结果。相反,它将返回对给定上下文可行的所有可用的自动完成结果。无论此选项设置为true还是false,gocode都将为支持它的输出格式返回有效的前缀长度。将此选项设置为非默认值可能会导致编辑器行为错误。默认值:true。
ignore-case
布尔选项。如果设置为true,gocode将在执行基于前缀的筛选时执行不区分大小写的匹配。默认值:false。
class-filtering
布尔选项。启用或禁用gocode的功能,如果部分输入与相应的类关键字:const、var、type、func、package匹配,则执行基于类的筛选。默认值:true。