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

typescript - 语言服务器协议 /VSCODE : lsp-sample 对我自己的情况的改编

我正在创建一个 vscode 扩展(客户端语言),它与我自己的语言服务器(LP)进行通信,该语言服务器是由 OCaml 使用语言服务器协议编写的。基于 vscode 文档提供的 lsp 示例,我无法适应我的案例(用 OCaml 'lsp-base.ml' 编写的服务器)对于这些代码行我应该有什么:

是吗?

0 投票
0 回答
222 浏览

visual-studio-code - vscode/LSP:使用断点调试 vscode 扩展

我正在尝试实现 vscode 扩展,它是与用 OCaml 编写的 LSP 服务器通信的语言客户端(用打字稿编写)。为此,我需要使用断点逐步调试我的扩展,我阅读了文档,但这并没有太大帮助。

0 投票
2 回答
399 浏览

visual-studio-code - vscode中如何强制更新code lens

我正在使用Metals(Scala 语言服务器)中的代码镜头进行“运行代码”操作。在我们的用例中,我们只能在编译完成后提供这些代码镜头。如果用户在编译过程中或编译后没有修改源文件,vscode 不会发送代码镜头请求。这可能会导致编译前出现“陈旧代码镜头”的丑陋状态。

深入了解 vscode-languageserver-node 的内部结构,我注意到 CodeLensProvider 可以发出 onDidChangeCodeLenses 事件,但它并未反映在 LSP 中(https://github.com/microsoft/language-server-protocol/issues/192) ,因此我无法将此事件发送到 vscode。

可能会强制重新加载代码镜头的另一件事是 ICodeEditor::setModel 方法,但我不确定这是否可以直接从 vscode 扩展中完成,因为我无法获得对代码编辑器的引用。

如何通过语言服务器或 vscode 扩展来完成这项工作?还是有另一种首选方式?

0 投票
1 回答
502 浏览

visual-studio-code - 有没有办法通过 CodeAction 请求执行自定义操作?

我想从 Visual Studio 代码启动用户操作。它将读取当前打开的文本文档,通过某种 UI 操作(自定义按钮,或者如果可能的话通过 CodeAction)提取一段代码,使用语言服务器协议将其发送到服务器,完成一些工作并返回一些输出回客户端。

我已阅读 CodeAction 的语言服务器协议规范,但它通常仅用于快速修复和重构,我可以将它用于任何其他自定义操作吗?如果是这样,怎么做?

0 投票
0 回答
251 浏览

visual-studio-code - 问题理解用于代码完成的 VSCode 扩展

我正在尝试在 VSCode 中为针对可编程 ASIC 的汇编程序提供语言支持。到目前为止,我只有 TextMate 语法,现在我正在尝试了解如何实现语言服务器。我正在学习

https://github.com/Microsoft/vscode-extension-samples/tree/master/lsp-sample

并且已经到了让我的环境进行调试的地步。我苦苦挣扎的地方是我不明白示例中的完成机制是如何完成的。
我在调试时看到的是,第一个字母(单词边界)是:

  • j 或 J 带有字符串 JavaScript(J 突出显示)的小文本弹出窗口和详细信息显示,因此我无需输入即可选择
  • t 或 T 相同,但用于 TypeScript(T 突出显示)
  • s 或 S 给出了两个先前弹出窗口的列表(S 都突出显示)和向上/向下箭头以供选择

据我了解,涵盖此内容的唯一代码是 server.ts 文件中的此部分

我已经使用更多标签进行了测试,它显示为 Completionparser 检查标签中的大写字母。添加了另外 2 个标签,“TwoMore”和“JetBrain”,它们的行为方式相同,例如 m/M 或 b/B 也会弹出一个窗口。

不明显的是为什么会这样?

0 投票
0 回答
122 浏览

visual-studio-code - 无法在 monaco-editor 的模型配置中填写 rootUri 和 rootPath 字段

我正在为 lsp 服务器设置一个摩纳哥语言客户端。我需要配置 rootUri 和 rootPath 字段。但是,我通过以下代码创建了一个编辑器。我有一个问题,rootUri字段rootPath等于 null,尽管我尝试使用不同的 Uri(文件,url 解析)。没有任何效果。

请提供一些信息,我如何能够更改rootUrirootPath字段的值。

0 投票
2 回答
682 浏览

typescript - 如何通过语言服务器扩展在工作区中创建和编辑新文件

如何获得语言服务器扩展来触发新文件的创建、编辑并在附加客户端的工作区中显示它?

我在 node.js 中有一个用 vscode-languageserver 编写的 LSP 扩展,它通过 onExecuteCommand在服务器上执行命令。我希望这个服务器端命令触发客户端创建一个新的文本文件,用一些文本填充它,所以它出现在客户端的打开文件的工作区列表中。

查看https://github.com/microsoft/vscode-languageserver-node/blob/master/client-tests/src/helpers.test.ts我相信我需要做的是创建一个 WorkspaceChange 对象,运行 createFile() ,应用一些更改(.insert),然后告诉客户端通过 connection.workspace.applyEdit() 应用编辑,但这不起作用 - 没有创建文件,也没有在调试器中引发错误。

这是我在服务器的 onExecuteCommand 中的代码:

如果我提供了一个不存在的文件名,那么该过程将失败 - 没有在工作区中创建或打开任何文件。

但是,如果我提供现有文件名,则会应用编辑并按预期在工作区中打开文件。

我认为这是因为我在 createFile 之前提供了编辑,但是如果我在createFile( )之前运行getTextEditChange() ,则该过程将失败并出现错误“工作区编辑未配置为文档更改”

0 投票
0 回答
533 浏览

eclipse - 如何在java中编写LSP客户端与LSP服务器通信

我有作为 Elcipse 插件/SWT 构建的 UI 应用程序。目前有一些来自 UI [a form] 的验证,目前使用简单的验证规则类完成。我想将此移至基于 LSP 的验证。我能够编写 LSP 服务器。但是我不知道如何编写应该从 JAva 类(SWT)调用的 LSP 客户端。请帮我

0 投票
1 回答
227 浏览

typescript - 如何 WebPack 一个 TypeScript 语言服务器扩展 LSP

我有一个基于 lsp-sample 代码的语言服务器扩展(vs-code)。 https://github.com/microsoft/vscode-extension-samples/tree/master/lsp-sample

我正在尝试在发布之前对扩展进行 WebPack。问题是我无法产生任何实际有效的输出。它不断报告Starting client failed,经过一番调查,这实际上意味着扩展的服务器部分无法启动。

我怀疑我在打包服务器部分时做错了,但作为 WebPack 的菜鸟,我不知道还有什么可以尝试的。

我在 vs-code-extension 存储库中打开了一个问题,但没有人再回答: https ://github.com/microsoft/vscode-extension-samples/issues/191

我已经分叉了 lsp-sample 以包含我试图开始工作的代码(没有我的项目细节令人困惑的事情): https ://github.com/obiwanjacobi/vscode-extension-samples/tree/191-webpack-issue /lsp-样本

基本上我正在尝试运行 2 个 WebPack 作业,一个用于在 vscode 中运行的扩展的客户端部分,另一个用于我的语言服务器的服务器部分(应该是可重用的)。对于这些 WebPack 作业中的每一个,我都有一个 webpack.config.js 文件和一个package.json 脚本条目来运行它们。

0 投票
0 回答
37 浏览

javascript - 为javascript的vscode扩展编写完成提供程序的最佳方法是什么

我现在正在做的是识别光标点的当前范围,然后根据范围使用哈希图提供完成。

然后使用 swith 选择正确的哈希图。

同样地。我想知道的是有没有比这更好的方法来完成任务。我正在使用 antlr4 来解析代码。并使用 java 编写我的 lsp