问题标签 [language-server-protocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
13416 浏览

visual-studio-code - 如何从 vscode 扩展写入日志?

我正在尝试为 VSCode 开发带有语言服务器的扩展。我试图弄清楚如何从扩展的语言服务器部分编写文本以记录日志。console.log 什么也没产生

0 投票
1 回答
59 浏览

visual-studio-code - 无法将扩展的服务器部分附加到调试器

我正在遵循有关构建语言服务器扩展的指南(https://code.visualstudio.com/docs/extensions/example-language-server),它说要调试服务器部分,您只需从编辑器中按 F5 即可里面的服务器代码。但是,每当我这样做时,我都会得到:

错误无法连接到运行时进程(5000 毫秒后超时)。

0 投票
1 回答
407 浏览

visual-studio-code - 如何从语言服务器提供方法参数信息?

我正在尝试为方法调用类似于 JavaScript(方法名称加上括号内的参数)的语言实现 Visual Studio 代码的语言服务器。

在用户根据括号内光标的位置键入方法和括号后,我想提供参数信息(名称和类型)。例如,在 vscode 中使用 Typescript 进行编码时,如果我输入:

我得到一个工具提示,显示方法的签名和第一个参数名称并以粗体输入:

第一个参数工具提示

然后当我输入第一个参数并输入逗号时,工具提示会提供有关第二个参数的详细信息:

第二个参数工具提示

我能够找到一种方法来提供方法名称的自动完成功能,但不能提供上述参数的行为。是否有关于如何从 Visual Studio Code 中的语言服务器扩展提示该工具提示的示例或教程?

0 投票
1 回答
1818 浏览

visual-studio-code - VSCode 中具有语义高亮显示的语言服务器

我想编写一个VSCode支持语义突出显示的语言服务器。我使用的语言有非常复杂的规则,所以我不想依赖分词器来区分标识符和关键字。

我已经有一个语言服务VS Community,在那里我编写了自己的分类器。可以在 中编写自己的分类器VSCode,或者为文档着色的唯一方法是将TextMate语言规范文件添加到VScode包中?

0 投票
2 回答
5876 浏览

typescript - 如何在 VSCode 中实现“转到定义”扩展

必须实施哪种方法vscode-languageserver::IConnection才能在多个文件上提供“转到定义”功能?

我正在学习Language Server Node Example和vscode“API文档”,但我没有找到任何信息。

0 投票
1 回答
513 浏览

typescript - 如何从语言服务器端检索 rootPath(或任何其他客户端信息)?

我正在基于示例“语言服务器”(https://code.visualstudio.com/docs/extensions/example-language-server)进行语言扩展。

在服务器端,我需要知道 vscode 使用的当前文件夹,在客户端,它将通过以下方式检索:

但是如果我尝试在服务器端使用它,

  1. 我收到 TS 编译器错误:错误 TS2307:找不到模块“vscode”
  2. 一旦客户端启动(在客户端使用 F5),我就无法连接到服务器(在服务器中使用 F5)。

我的服务器和客户端 package.json 都指定:

我的理解是服务器只通过 IConnection 对象与客户端通信,因此无法访问客户端维护的 vscode.* 数据。

我目前的工作是在服务器端使用它:

和客户端的这段代码:

有没有更好的方法来做到这一点?

0 投票
1 回答
743 浏览

visual-studio-code - 如何在启动时调试语言服务器崩溃

我可以调试客户端,这会导致扩展主机的启动。在我有幸将调试器附加到服务器之前,主机告诉我“语言服务器示例服务器在过去 3 分钟内崩溃了 5 次。服务器将不会重新启动。”

任何关于我如何获得一些诊断的线索或洞察力,记录任何东西都会很棒。

0 投票
2 回答
1298 浏览

visual-studio-code - 将外部语言服务器连接到 VSCode 扩展

我想实现一个使用Language Server Protocol的 VSCode 扩展,但我希望服务器组件位于实际服务器(在云中)上,而不是 VSCode 扩展的一部分。

我可以将客户端扩展设置为通过 websockets 或 HTTP 连接到服务器吗?

0 投票
1 回答
4648 浏览

visual-studio-code - 调试崩溃的语言服务器

如果我在这里的细节有点低,我很抱歉,但主要问题实际上是试图找到我的代码的问题。我正在更新我自己的基于语言服务器示例(https://code.visualstudio.com/docs/extensions/example-language-server)的旧扩展。我遇到了一个问题,当我使用 F5 运行代码的客户端部分时,调试窗口会触发,我得到:

CSSLint 语言客户端服务器在过去 3 分钟内崩溃了 5 次。服务器不会重新启动。

好的......所以......事情就是这样。我的扩展客户端代码中的问题视图没有显示任何内容。该代码窗口的 DevTools 没有显示任何内容。

我的服务器代码的问题视图没有显示任何内容。开发工具,同上。

对于 Extension Developer Host 实例,DevTools 确实显示了这一点:

messageService.ts:126 CSSLint 语言客户端服务器在过去 3 分钟内崩溃了 5 次。服务器不会重启。e.doShow@messageService.ts:126

但是我无法深入研究细节以找到错误。所以问题是 - 假设我的服务器代码失败了,错误究竟在哪里出现?

0 投票
1 回答
2147 浏览

visual-studio-code - 如何通过语言服务器实现 quickfix

我已经实现了一个提供一些 linting 的语言服务器。linter 检查所需的属性并发出“缺少属性”错误。我想为这些错误提供相应的“插入缺失属性”快速修复。

我认为 LSP 协议的一般领域是:

textDocument/codeAction

这样,服务器可以为“缺少属性”诊断标记返回“插入缺失属性”命令。

但是服务器如何实现“插入缺失的属性”命令本身呢?

查看 lsp 规范,我找不到任何让服务器注册命令的东西。

我确实在这里找到了一些关于用于在客户端注册命令的 vscode api 的信息:https ://code.visualstudio.com/docs/extensionAPI/vscode-api

所以我想我可以在客户端注册并实现“插入缺失的属性”,但是......

客户端只是将大部分工作委派给服务器的“愚蠢”包装器。因此,它并不真正了解文档结构,也不是实现需要了解该结构的文档转换的好地方。

似乎我最好的选择是向我的语言服务器添加一些“自定义”协议,以便我可以在客户端实现“插入缺少的属性”命令,但将计算快速修复编辑的困难部分委托给服务器.

或者,还有更好的方法?