玩转sublime之:LSP 实现 ide 功能
source link: https://halfmoonvic.github.io/2020/04/11/%E7%8E%A9%E8%BD%ACsublime%E4%B9%8B%EF%BC%9ALSP%20%E5%8A%9F%E8%83%BD/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
玩转sublime之:LSP 实现 ide 功能
一、 What is LSP
The Language Server protocol is used between a tool (the client) and a language smartness provider (the server) to integrate features like auto complete, go to definition, find all references and alike into the tool
二、 运行原理
ide(sublime 等) 与 语言服务,比如
golang
进行通讯,以便完成诸如auto complete
go to definition
find all references
等功能需要一个协议,这个协议便是lsp —— Language Server protocol
一般的一些 ide 实现对一些语言的功能都是编写了一些插件
- 比如
sublime
对golang 插件
的支持,主要是由GoSublime
这个插件完成的,其可完成对go
的自动补全等功能。 - 而
vscode
则是需要安装go 插件
,且需要 安装 配套的一些包比如go get golang.org/x/tools/gopls
- 这样就造成的一些问题,比如,不同的编辑器都需要编写特定的 插件来实现对语言的支持,如果有
n
个编程器,m
个语言,则需要m * n
个程序
- 比如
lsp
提供了ide
与language server
之间的一个媒介- 比如
golang
实现了这套lsp
协议,——gopls
ide
支持lsp
,比如sublime
可以通过安装LSP
- 这样两者就链接了起来,
sublime
就可以很好运行golang
了
- 比如
三、 Vetur
- 方式一: 通过 安装
LSP-vue
就可以实现Vetur
的功能。 - 方式二: 也不需要安装
LSP-vue
插件,自信npm install -g vue-language-serve
插件后,编写LSP.sublime-settings
,就可以实现。
Support TypeScript with Vue SFC in Sublime Text
四、 go
使用
Sourcegraph's go-langserver
,Gopls
不能自动引入go get golang.org/x/tools/gopls@latest
{
"clients": {
"golsp": {
"enabled": true,
"initializationOptions": {
// use go code
"gocodeCompletionEnabled": false
},
"settings": {
"only_show_lsp_completions": true
}
},
"gopls": {
"enabled": false
},
},
"show_view_status": true
}GoSublime
自动导入一直有些问题,可以使用go-lsp
→formatter
来完成,但是并没有formatter on save
的选项貌似
五、 参考资料
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK