问题标签 [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 投票
1 回答
151 浏览

visual-studio-code - 在开发新的 VSCODE 扩展时,如何生成语言服务器协议要求并处理响应?

使用microsoft提供的LSP时,客户端如何生成需要的json数据并发送给服务器?那么如何处理服务器响应的json数据呢?

我已经阅读了官方文件,但没有找到方法。我要做的就是获取函数定义文本字符串,而不是仅仅在“悬停”中显示它。 在此处输入图像描述

0 投票
2 回答
20078 浏览

c++ - 如何使用 clangd 为 C++ 设置 VS Code?

免责声明:我完全了解 VS Code,所以请对我温柔一点。:-)

我正在尝试为C++设置VS Code。 但是,我明确希望对其进行设置,以便在处理 C++ 文件时使用语言服务器协议进行通信。
clangd

我已经clangd在我的(Ubuntu Linux)系统上安装了来自 VS Code 市场的官方 “vscode-clangd”扩展,我还调整了它的设置,以便它clangd可以找到。

然而,现在我迷路了。
当我打开一个文件*.cpp*.hpp文件时,VS Code 会向我推荐一些其他扩展(例如,支持 IntelliSense 的官方 Microsoft “C/C++”扩展),但我根本看不到在哪里以及如何clangd帮助我。

使用 Microsoft 的“C/C++”扩展似乎开箱即用,但我该如何使用clangd

谢谢你的帮助。

0 投票
1 回答
78 浏览

eclipse-che - 为 Eclipse Che 创建语言服务器

我想从 Eclipse Che 创建一个语言服务器。但是 Che conf 视频指南并没有那么有用,因为视频质量很差。有人知道使用 Eclipse Che 实现我们自己的语言服务器的教程或指南吗?

0 投票
0 回答
332 浏览

visual-studio-code - 如何扩展现有的语言服务器?

我将创建一个与 javascript 非常相似的语言服务器。
有没有办法重用现有的 javascript 服务器来突出显示、自动完成、语法错误等?
我正在寻找的是扩展javascript语言服务器并提供额外的关键字、语法突出显示、自动完成等。

0 投票
3 回答
3161 浏览

visual-studio-code - 如何在 Visual Studio Code 中为语言服务器启用日志

语言服务器扩展指南中它说:

'如果您vscode-languageclient用于实现客户端,您可以指定一个设置[langId].trace.server,指示客户端将语言客户端/服务器之间的通信记录到语言客户端的通道name

对于lsp-sample,您可以设置此设置: "languageServerExample.trace.server": "verbose". 现在前往“语言服务器示例”频道。您应该看到日志:

日志

我在 VS Code 中的何处以及如何准确指定此设置?

0 投票
2 回答
419 浏览

eclipse - 如何在 dockerfile 中包含本地语言服务器并从中构建 docker 映像?

我需要通过将本地语言服务器包含在 dockerfile 中来将其作为 docker 容器运行。我只按照“提供 Xtext 语言服务器”下的部分构建了一个简单的语言服务器。这是我为构建映像而编写的 Dockerfile:

我不知道这是否正确。“xtextls3”是我用来创建语言服务器的 Eclipse 工作区文件夹。当我尝试构建此 dockerfile 时,出现此错误: ADD failed: stat /var/lib/docker/tmp/docker-builder342449789/xtextls3

将我的语言服务器包含在 dockerfile 中并从中构建 docker 映像的正确方法是什么?

0 投票
0 回答
70 浏览

visual-studio-code - VSCode 语言服务器插件不会激活

我有一个语言服务器插件,它是从不再在我们公司的开发人员那里继承的。它发布在 vscode 市场。它工作得还不错,有问题,但至少做了一些事情。

现在,当我获取了 repo 并进行了所需的修复并发布了新版本的市场时,它拒绝做任何事情。只是保持灰色,旁边有那个“重新加载”按钮。

我对它做了什么:

  • 对 server.ts 做了一些小调整
  • 更改了出版商名称(他有自己的出版商名称,我们没有它的凭据)
  • 碰撞版本号

它在调试模式下工作得很好,并且发布它不会给出任何错误或警告。我还收到了来自微软的“扩展已审核”电子邮件。我还卸载了以前的插件。

我还尝试了以下零帮助:

  • 在新系统上完全全新安装
  • 将语言扩展名更改为旧插件中的其他内容

奇怪的是,现在我无法让原始版本的插件工作。即,当我从 github 拉出旧的,更改发布者信息并发布它时,我得到相同的结果。没有错误 - 在调试模式下一切正常 - vscode 市场接受它 - 但没有任何效果。

我也找不到任何方法从插件和提示中获取任何调试信息,也将不胜感激。

这是来自根 w 名称的 package.json 已更改。原版是 1:1 相同的,除了版本和出版商名称。server/ 和 client/ 下的版本号等也已更改。

更新:磁盘上没有迹象表明 vscode 实际上正在磁盘上安装任何东西。

更新#2:它确实将它安装在磁盘上,只是我自己没有找到它。文件结构与之前的扩展名不匹配:

以下是旧版本安装后的外观:

这是新的外观:

更新#3

看起来新版本有一个与旧版本的根目录匹配的 client/ 文件夹。我尝试在 myplugin/client 下运行 vsce 发布,但什么也没做

更新#4

我复制了新的扩展客户端文件夹,因为它是根目录,现在它可以工作了......

所以现在谜团变成了为什么它打包和发布错误。

0 投票
1 回答
232 浏览

javascript - 如何在 VS Code 中显示 LSP 的相关信息

我正在写一个语言服务器。它提供额外的DiagnosticRelatedInformation作为其诊断响应的一部分。就像在https://code.visualstudio.com/updates/v1_22#_related-information-in-errors-and-warnings中一样。目前,虽然我确实在“问题”窗口和主文本区域中都看到了主要错误,但看不到额外的“相关信息”。

我怀疑这可能有两个原因。任一客户端:在 VS Code 中未启用显示此信息的功能。至少在协议启动的时候,这个能力是看不到的,下面是来自客户端的初始 JSON 消息:

顺便说一句,我在 Win10 上使用 VS Code 1.28.2。

另一个原因可能是服务器端:包含诊断的响应可能格式错误。它看起来像这样:

至少 URI 是正确的(尽管此处为便于阅读而进行了修改),因为我可以单击它们并且编辑器会跳转到正确的文件。

我的问题是我不知道如何检验关于出了什么问题的一个或另一个假设。或者,也许我错过了一些完全不同的东西?

0 投票
0 回答
268 浏览

visual-studio-code - VSCode 客户端-服务器文档同步

主题:

我的扩展提供了基于一些数据的自动完成、悬停、定义等,这取决于文档内容和当前光标位置。在大型文档中,为所有提供者计算这些数据需要花费大量时间。所以我决定在客户端和服务器中拆分扩展。

我已经这样做了:

问题:

如何在服务器端同时获取实际文档内容和当前光标位置?

当我尝试根据完成请求获取当前文档时

我发现它没有改变

同样的情况也发生在connection.onDidChangeTextDocument事件上。event.contentChanges[0].text如果 textDocumentSyncinconnection.onInitialize设置为,我可以通过获取新的文档内容server.TextDocumentSyncKind.Full,但是这样该event.contentChanges[0].range字段是未定义的。

我该如何处理?

任何示例或有用的文档表示赞赏

0 投票
1 回答
212 浏览

language-server-protocol - IDE和语言服务器之间可以做代理吗?

说,我想稍微改变一些语言的行为。

这可以做到吗?以前做过吗?

UPD:Typescript 使用属性名称的可能性非常有限(例如,您不能在 typescript 的帮助下创建一个派生自另一个属性名称的属性名称,例如大写或前缀前缀),而 Javascript(这是 Typescript 编译的to) 非常灵活。所以我想在 LSP 的帮助下修改一些带有自动补全选项的 Typescript 的 LSP 消息。