2017-09-04 19 views
2

我正在写一个用于neovim的语言服务器协议(LSP)服务器,并且我想对VSCode进行测试以确保我已经掌握了所有的细节,并且我不会意外编码任何neovim主义进入我的实施。我可以在不写扩展的情况下测试我的LSP服务器吗?

当前的文档建议我应该写一个VSCode扩展来充当我的服务器的客户端,但我并不真的有兴趣将这么多精力投入到我不会使用的平台上。

在neovim我可以定义一个CLI命令和它对应的文件类型和打去:

let g:LanguageClient_serverCommands = { 
    \ 'rust': ['rustup', 'run', 'nightly', 'rls'], 
    \ 'javascript': ['/opt/javascript-typescript-langserver/lib/language-server-stdio.js'], 
    \ } 

确实在Visual Studio代码类似的东西存在吗?

+0

您不需要完整的扩展VSCode扩展,但最小的扩展它的LSP客户端。不幸的是,我不能想到更简单的方法。 –

回答

0

这需要一点努力谱写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()); 
} 

一旦客户端启动时,它会启动服务器,并启动初始化会话,客户端观看所有VSCode上的重要事件(文档打开/关闭/修改,Ctrl +空格...)并将正确的请求/通知发送到服务器

相关问题