问题标签 [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 回答
230 浏览

visual-studio-code - 如何在WorkspaceSymbol 上选择符号

我正在使用语言服务器协议开发 Visual Studio 代码的扩展,并且包括对“转到工作区中的符号”的支持。我的问题是我不知道如何选择匹配项...实际上我使用的是我写的这个函数:

如果 word1 在 word2 内,则返回 sortText,否则返回未定义。我的问题是这样的情况:

**强文本**

我的算法看到 'aller' 在 C all S er ver 中,但界面并没有像预期的那样标记它。

有一个图书馆或我必须为此使用的东西吗?VSCode 的代码又大又复杂,我不知道从哪里开始寻找这些信息......

0 投票
1 回答
801 浏览

visual-studio-code - vscode 语言服务器详细日志显示正在发送请求'textDocument/hover - (9)' 但服务器没有收到消息

服务器是可执行程序,它使用 stdio 作为传输。它的 repo https://github.com/PMunch/nimlsp 日志显示它有一个初始化通知和文本文档 didopen 通知,为什么它不能得到请求类型的消息?无论是悬停还是定义请求。

0 投票
2 回答
2400 浏览

clang - Windows Sublime 和 LSP-Clangd 插件:找不到 C++ 标头

我最近决定尝试 SublimeText 3,我发现它非常简洁,插件支持很广泛!我最近发现了这个插件:https ://github.com/tomv564/LSP ,我将它与 Clangd 一起使用。但问题是我所知道的错误在我尝试过时会编译。我采取的步骤很简单:

  1. 安装 Sublime:https ://download.sublimetext.com/Sublime%20Text%20Build%203176%20x64%20Setup.exe
  2. 为 Windows 安装 CLang.exe 预构建二进制文件:https ://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
  3. 重新启动计算机(因此可以对 Windows 环境 PATH 进行新的修改)。
  4. 从包控制安装 LSP
  5. 输入LSP: Enable Language Server Globally命令调色板
  6. clangd在随后的窗口中输入并点击enter启用。
  7. 重新启动 Sublime 并打开一个 C++ 文件。

C++ 文件本身没什么特别的,我可以把它贴在这里以确保零歧义:

这个文件是在我通过 WSL 实际运行它时构建的clang++ otherside.cpp,但是在 Sublime.exe 中,我得到的两个错误是:

  • 未找到“位/stdc++.h”文件
  • using 指令引用隐式定义的命名空间“std”
    • 使用未声明的标识符“cin”
    • 使用未声明的标识符“cout”
    • 使用未声明的标识符“endl”

我相信三个嵌套的项目符号可以通过“std”错误的解决方案来解决,所以我真的不认为它们是错误吗?

'bits/stdc++.h' 是我在参加编程比赛时使用的一个包含,所以我知道它存在,尽管在工作场所很糟糕,我知道这using namespace std不是“好的做法”,但至少我知道它不是破坏编译的错误。这个感觉是Clangd的问题,但是我知道我以前用过的带LSP的IDE,比如Visual Studio和CLion都不会报这两个错误。以前有没有其他人解决过这个问题?

更新:我实际上花时间通过运行 Clang.exe来构建clang++ otherside.cpp小的 cpp 文件。我得到了预期的错误,指定:“致命错误:找不到'bits/stdc++.h'文件”但是,clang++ otherside.cpp在WSL上使用via编译它就可以了。因此,Windows 和 Linux 之间似乎存在差异。

我发现我需要 Windows 上的 C/C++ 头文件。根据:https : //clang.llvm.org/get_started.html,推荐的是 MSys 实用程序或 GNUWin32。我希望我可以通过 WSL 使用 C/C++ 标头,这可能吗?

22.19 年 2 月 22 日更新:我试图安装 MinGW C 和 C++ 编译器来获取 Clang 的头文件,但看起来如果我想让 Clang 找到这些头文件,我必须从源代码构建 Clang 并修改名为initHeaderSearch.cpp. 同样,我希望有更多的解决方案,我可以将 WSL 的 C/C++ 头文件与 Clang.exe 一起使用。

此外,作为对我朋友的概念证明,我还在 WSL 上安装了 Sublime,并安装了 LSP-Clangd 插件以表明我在 Windows 上遇到的 Clang 错误都没有出现在 WSL Sublime 上。虽然这些错误确实没有出现在 WSL Sublime 上,但它提出了一个有趣的观点。也许有一种方法可以在 WSL 中启动Clangd 并让 Sublime.exe 与之挂钩?我知道在过去的几年里,WSL 取得了长足的进步,其中产生的一件事就是 AF_UNIX 套接字。不过,我对 unix 套接字并不是最熟悉的,是否可以使用它来启动或与 Clangd 交互?

0 投票
0 回答
351 浏览

node.js - 什么是 .clientrc 文件?

你可以在这里找到它的提及:https ://code.visualstudio.com/api/language-extensions/language-server-extension-guide 但是没有任何解释。无法在 google 中找到信息。

.clientrc 文件的目的是什么?

0 投票
1 回答
373 浏览

visual-studio-code - 语言服务器:如何启用“onDidOpenTextDocument”事件

我正在基于官方的 "lsp-sample"为 VS Code 开发语言服务器(和客户端) 。根据文档(语言服务器扩展指南),设置能力textDocumentSync: TextDocumentSyncKind.Incremental应该使语言服务器能够接收事件onDidOpenTextDocumentonDidChangeTextDocument并且onDidCloseTextDocument.

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

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

0 投票
0 回答
516 浏览

java - 如何在 VSCode 中获取 Java 抽象语法树?

我希望我的扩展能够读取 .java 文件的 Java AST,以进一步保存选定代码段的节点名称(例如,“ClassDeclaration”)。例如,如果您选择“public”,则 AST 告诉您它是“修饰符”,然后我想将节点名称“修饰符”保存为变量中的字符串。

首先,我需要 Java AST。

我首先查看了 VSCode 市场,但没有可用于 Java 的 AST 扩展(但你可以找到一些适用于其他语言,如 TypeScript)。我得到的结果是 Java 扩展包,其中包含许多有用的 Java 扩展,但没有一个是明确关于 AST 的。由于 Red Hat 有一个调试器和语言支持,我很确定他们使用 AST 来使他们的扩展工作,所以我查看了他们的源代码,试图找到这个但没有成功。我唯一知道的是它们引用了 Eclipse JDT“包”,但我不明白如何。答案可能就在那里,但代码对我来说很复杂。

我尝试的另一种方法是从 TypeScript AST(git 链接:https ://github.com/krizzdewizz/vscode-typescript-ast-explorer )获取源代码并尝试编写我自己的 Java AST 扩展(当然是在 TypeScript 中) ,但我很快意识到他使用的是 TypeScript 特定的 node_modules。我去寻找一个 Java 并想出了这个 npm 包:https ://www.npmjs.com/package/java-ast 。我不确定这是否有用,但我也不知道如何使用它(是的,有一个例子,我试过了,但你可以说我对此很陌生)。

如果有人可以进一步帮助我,我将不胜感激。

0 投票
1 回答
258 浏览

vim - 如何使用 Vim-lsp 使用函数括号或参数完成

在java代码中使用vim-lsp,在输入之后

出现以下候选人:

当我选择第一个候选人时,

但我想得到:

或者

我怎样才能做到这一点?

0 投票
2 回答
2163 浏览

language-server-protocol - 编写 LSP 客户端的指南

我有一个个人编辑器,它实现了自己的代码完成“协议”,并希望切换到语言服务器协议以减轻自己的一些开发负担。但是,我无法完全理解有关客户端实现的LSP 文档。它与服务器实现混在一起,无法找到两者之间的明显区别。

许多在线文档(包括关于 SO 的问题)都围绕着 VSCode 扩展展开,我对此一无所知并且没有帮助。

对于开始编写仅查询自动完成功能的简单客户端的任何帮助,我将不胜感激。我用 C++ 编写我的编辑器,如果有任何解释如何创建客户端的教程,我将不胜感激。我可以理解 Python、C、C#、Pure JavaScript、C++、PHP 和类似语言,因此我可以轻松地学习这些语言的任何教程。

如果有任何不清楚的地方,请告诉我,以便我解释(这是我在 LSP 的第一篇文章 :))

0 投票
1 回答
826 浏览

python - 无法初始化语言服务器协议

我在玩 LSP,但我无法通过第一阶段。我使用 Python 作为客户端语言,因为它易于使用。我所做的就是:

  1. 连接到 LSP - 这工作正常
  2. 发送初始化 JSON RPC - 客户端报告成功
  3. 获得响应 - 空结果

我已经尽我所能,阅读了我能找到的一切,但我没有成功。我希望有人更熟悉 LSP 来帮助我指出做错了什么。

这是我的 Python 代码。我尝试使用PHP 语言服务器,但使用的服务器类型无关紧要。

0 投票
1 回答
437 浏览

visual-studio-code - 是否可以使用 Xtext Fat Jar 语言服务器创建 VS Code 扩展?

我正在尝试从 Xtext 创建的 FatJar 语言服务器中创建 VS Code 扩展。我还看到了示例项目(https://github.com/itemis/xtext-languageserver-example),但只有一个示例使用了对位于同一存储库中的父 xtext 项目的引用。是否可以直接从本地 jar 获取语言服务器(例如,直接位于 vscode 扩展项目中的目录 /server 中)?