all*_*yed 5 visual-studio-code language-server-protocol
我正在编写一个与 neovim 一起使用的语言服务器协议 (LSP) 服务器,我想针对 VSCode 对其进行测试,以确保我掌握了所有正确的细节,并且我没有意外编码任何 neovim 主义进入我的实施。
当前的文档建议我应该编写一个 VSCode 扩展来充当服务器的客户端,但我并不真正有兴趣在一个我不会使用的平台上投入那么多精力。
在 neovim 中,我可以定义一个 CLI 命令及其对应的文件类型,然后点击 go:
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'nightly', 'rls'],
\ 'javascript': ['/opt/javascript-typescript-langserver/lib/language-server-stdio.js'],
\ }
Run Code Online (Sandbox Code Playgroud)
Visual Studio 代码中是否存在类似的东西?
在 VSCode 中编写一个语言客户端并不费力,我是这样做的:
export function activate(context: vscode.ExtensionContext) {
// This line of code will only be executed once when your extension is activated
// TODO: Start server exe and communicate with it
let serverExe = <Path_to_server>;
let ServerOptions: ServerOptions = {
run: {command: serverExe, args:['-lsp']},
debug: {command: serverExe, args:['-lsp']}
}
let clientOptions: LanguageClientOptions = {
// Register the server for plain text documents
documentSelector: [
{
pattern: '**/*.txt',
}
],
}
let lspClient = new LanguageClient("Hello LSP", ServerOptions, clientOptions);
// For debugging only
//lspClient.trace = Trace.Verbose;
//add all disposables here
context.subscriptions.push(lspClient.start());
}
Run Code Online (Sandbox Code Playgroud)
客户端启动后,它会启动服务器并开始初始化对话,客户端会监视 VSCode 上的所有重要事件(文档打开/关闭/修改、Ctrl+空格等)并向服务器发送正确的请求/通知
归档时间: |
|
查看次数: |
2903 次 |
最近记录: |