语言服务器:如何启用“onDidOpenTextDocument”事件

问题描述 投票:0回答:1

我正在基于official "lsp-sample"为VS Code开发语言服务器(和客户端)。根据文档(Language Server Extension Guide),设置能力textDocumentSync: TextDocumentSyncKind.Incremental应该使语言服务器能够接收事件onDidOpenTextDocumentonDidChangeTextDocumentonDidCloseTextDocument

但是,VS Code似乎没有将这些事件发送到语言服务器,并且事件处理程序(例如on this line)中的断点未被命中(其他事件处理程序中的断点被命中,因此调试语言服务器确实有效)。

在阻止VS Code发送这些事件的客户端或服务器配置中可能出现什么问题?

visual-studio-code vscode-extensions language-server-protocol
1个回答
0
投票

经过对语言客户端的大量调试后,我发现了一个问题:在启动时,我的语言服务器会向stdout输出一些内容,表明它已经准备就绪。由于语言服务器通过stdout / stdin进行通信,因此VS Code(正确)将此解释为违反协议,导致整个事情甚至无法正常启动。删除print语句解决了该问题。

令人惊讶的是,Sublime Text中的LSP插件显然忽略了这种协议违规,并且尽管我的语言服务器实现错误仍然继续运行。

© www.soinside.com 2019 - 2024. All rights reserved.