一、 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 completego to definitionfind 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@latest1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18{
"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的选项貌似