吾本轻狂|VSCode 建议你启用 gopls,它到底是个什么东东?( 二 )
{"jsonrpc": "2.0","id" : 1,"method": "textDocument/definition","params": {"textDocument": {"uri": "/Users/xuxinhua/project/golang/lsp/use.go"},"position": {"line": 3,"character": 12}}}对此请求的响应:
{"jsonrpc": "2.0","id": 1,"result": {"uri": "/Users/xuxinhua/project/golang/lsp/provide.go","range": {"start": {"line": 0,"character": 4},"end": {"line": 0,"character": 11}}}}如果你想要开发一个 Language Server , 可以看官方的协议规范 。
gopls 是什么经过上面对 LSP 的介绍 , 你应该猜到 gopls(读音:go please) 是什么了吧?!没错 , gopls 是 LSP 的一个语言端(Server)实现 , 是针对 Go 语言的 LSP 实现 。
在 LSP 官网列出了相关的实现 , 包括三个部分 。
1、Language Servers:列出各个语言的 LSP 实现其中 Go 语言的实现有两个:(Sourcegraph 的不再维护 , 因为集中维护一个会更好)
在另一个由 Sourcegraph 维护的网站中 , 不但列出了实现 LSP 的语言 , 而且给出了它们对协议的实现完整性 。
也就是说 gopls 是 Go 官方维护的、对 LSP 的实现 , 即一个 Go 语言的官方 Language Server 。
2、LSP Clients:列出支持 LSP 的开发工具包括 VSCode、Sublime Text、Atom、Emacs、Vim 和 Eclipse 等很多开发工具 。 在上文提到的两个网站都有列出 。
3、SDKs for LSP:为了方便开发为了方便开发 , 还有一些 LSP 的 SDK 可以使用 。 具体可以查看: 。
进一步了解 gopls首先说明下 , 目前 gopls 还不是稳定版本 , 处于 alpha 状态 , 所以 VSCode 默认没有启用它 。 项目地址: 。
目前 gopls 支持的特性包括:
- Autocompletion
- Jump to definition
- Signature help
- Hover
- Document symbols
- References
- Rename
- Editing multiple modules in one editor window: #32394[1]
- Type checking does not work in cgo packages: #35721[2]
- Does not work with build tags: #29202[3]
- Find references and rename only work in a single package: #32877[4]
有如下编辑器支持 gopls , 你可以根据自己喜爱的编辑器查看相应的安装、配置说明 。
- VSCode[5]
- Vim / Neovim Vim/Neovim[6]
- Emacs[7]
- Acme[8]
- Sublime Text[9]
- Atom[10]
参考资料[1]
#32394:
[2]
#35721:
[3]
#29202:
[4]
#32877:
[5]
VSCode:
[6]
Vim / Neovim Vim/Neovim:
[7]
Emacs:
[8]
Acme:
[9]
Sublime Text:
[10]
【吾本轻狂|VSCode 建议你启用 gopls,它到底是个什么东东?】Atom:
推荐阅读
- 怅然人生苦短,我要在VSCode里面用Python
- 吾本轻狂手机耗电快?这样做超省电,延长手机使用时间!
- 吾本轻狂高清接口HDMI接口断线,不显示,以下提供接口定义自己搞定。
- 吾本轻狂国家发布“铁令”,三大运营商必须整改,“套路消费”再见了
- 吾本轻狂三星S21国行版曝光,骁龙875+25W,明年初发布
- 吾本轻狂笑炸!今日头条把今日油条告了,对方还注册了饼多多、抓饼......
- 吾本轻狂很多人好奇:凭什么27岁的越南姑娘会成为华为全球代言人?
- 吾本轻狂iPhone12Pro今天发布,新增20W充电头,价格也感人
- 吾本轻狂9分钟充80%电量,续航可达1千公里,中美合作研发新型锂电池
- 吾本轻狂|微信这些红线不要碰,否则直接“封号”,马化腾正式确认
