我正在研究 Visual Studio Code 扩展。我想为 Visual Studio Codecode complete的Microsoft Python 扩展(IntelliSense)添加更多项目
我不知道怎么做 我只是想出一些解决方案:
1. 为现有的扩展编写一个新的扩展vscode-python来自定义code complete项目。
-> 我们可以为现有扩展编写扩展吗?
2. 编写一个新的扩展来适应 Visual Studio Code 编辑器与vscode-python. 在此,我将转发/自定义来自编辑器的请求vscode-python,然后在返回编辑器之前将我的项目自定义/插入到响应中。
我正在研究 VSCode 扩展,所以我不知道哪个解决方案是可以实现的。你能帮我还是给我一些关于另一种解决方案的提示。
python visual-studio-code vscode-extensions language-server-protocol
我将创建一个与 javascript 非常相似的语言服务器。
有没有办法重用现有的 javascript 服务器来突出显示、自动完成、语法错误等?
我正在寻找的是扩展javascript语言服务器并提供额外的关键字、语法突出显示、自动完成等。
visual-studio-code vscode-extensions language-server-protocol
您可以在这里找到它的提及: https: //code.visualstudio.com/api/language-extensions/language-server-extension-guide ,但没有任何解释。我无法通过谷歌搜索找到有关它的信息。
文件的目的是什么.clientrc?
node.js visual-studio-code vscode-extensions language-server-protocol
许多 IDE 和插件都谈到提供一些 IDE 功能(例如自动完成、linting 和突出显示)的语言服务器。语言服务器只是在我的机器上运行的一些本地进程,还是我的代码被发送到某个地方进行分析(如果我没有互联网,功能会停止工作)。另外,如果代码被发送到某个地方,那怎么安全呢?
我已经实现了一个提供一些 linting 的语言服务器。linter 检查所需属性并发出“缺少属性”错误。我想为这些错误提供相应的“插入缺失的属性”快速修复。
我认为 LSP 协议的一般领域是:
这样,服务器可以为“缺失属性”诊断标记返回“插入缺失属性”命令。
但是服务器如何实现“插入缺失的属性”命令本身呢?
查看 lsp 规范,我找不到任何可以让服务器注册命令的内容。
我确实在这里找到了一些关于 vscode apis 的信息,用于在客户端注册命令:https ://code.visualstudio.com/docs/extensionAPI/vscode-api
所以我想我可以在客户端注册并实现“插入缺失的属性”,但是......
客户端只是一个“愚蠢”的包装器,将大部分工作委托给服务器。因此,它并不真正理解文档结构,也不是实现需要理解该结构的文档转换的好地方。
似乎我最好的选择是向我的语言服务器添加一些“自定义”协议,以便我可以在客户端实现“插入缺失的属性”命令,但将计算 quickfix 编辑的困难部分委托给服务器.
或者,还有更好的方法?
visual-studio-code vscode-extensions language-server-protocol
在 Sublime Text 3 上安装 LSP 服务器,然后从LSP: Enable Language Server Globally> 选择的启用 gopls gopls。
还在终端上执行以下命令。
\nGO111MODULE=on go get golang.org/x/tools/gopls@latest\nRun Code Online (Sandbox Code Playgroud)\n显示错误:
\n\nLSP.sublime-设置
\n{\n "clients":\n {\n "gopls":\n {\n "enabled": true\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\ngopls命令
\n\xe2\x9d\xaf which gopls\n/home/user/go/bin/gopls\nRun Code Online (Sandbox Code Playgroud)\n我正在使用 MX Linux。请帮忙 !
\n\n我在自定义位置安装了一个库,编译和链接工作正常,但 clangd 报告与自定义库相关的各种错误。
我的 Makefile 有以下标志:
CFLAGS += -I/usr/local/share/mylib
LDFLAGS += -lmylib -L/usr/local/lib/
...
<snip>
Run Code Online (Sandbox Code Playgroud)
但是,clangd 不知道如何查找头文件,因此我的编辑器显示如下错误,但没有帮助:
#include <mylibheader.h> 'mylibheader.h' file not found
mylib_type1_t foo unknown type name 'mylib_type1_t'
...
<snip>
Run Code Online (Sandbox Code Playgroud)
在互联网上搜索错误和关键字clangd, clangd config,clangd .clang-format未能在 SO 或其他地方产生任何有用的东西(因此这个问题)。
问题是:
如何告诉 clangd 我的非标准标头在哪里,以便它不会显示虚假的“文件未找到”警告?
我正在使用 emacs 和 lsp 模式。为了编辑 .R 文件,我使用 rlanguageserver。
这很好用。但是,我想禁用一些规则。例如,我确实想决定我的变量名称格式,即禁用“变量名称应该是snake_case”消息。
我.lintr在我的主目录中放置了一个文件,内容如下:
linters: with_defaults(snake_case_linter = NULL)
Run Code Online (Sandbox Code Playgroud)
但没有任何效果。为什么?
另外,当我重新缩进一个区域时,我想重新缩进而不添加或删除换行符,即我想手动选择换行符。我怎样才能实现这个目标?
我正在尝试在 Monaco Editor 中添加对 Python 智能感知的支持。我发现的所有示例都涉及使用在服务器上运行的 Python 语言服务器并使用 websocket 与前端进行通信;然而,Monaco 运行的 TS 语言服务器是在浏览器工作线程内部运行的,所以我尝试为 Python 模拟同样的事情。
我查看了此地址中的示例,但它们对于我的用例来说不够具体,因为它们非常简单,并且不涉及运行成熟的语言服务器。
如何才能做到这一点?
我试图从给定的缓冲区获取所有接口。为此,我想获取所有令牌并过滤掉除接口之外的所有内容。但是,当我尝试致电 LSP 时:我没有得到任何回复。
local bufnr = vim.api.nvim_get_current_buf()
local params = vim.lsp.util.make_text_document_params()
local result = vim.lsp.buf_request_sync(bufnr, "textDocument/documentSymbol", params, 2000)
print(vim.inspect(result))
Run Code Online (Sandbox Code Playgroud)
我得到的只是一张空地图。我显然错过了一些明显的东西,但我不知道是什么。
{
[2] = {
result = {}
}
}
Run Code Online (Sandbox Code Playgroud) linux ×2
python ×2
autocomplete ×1
c ×1
clangd ×1
emacs ×1
go ×1
intellisense ×1
linter ×1
lua ×1
makefile ×1
neovim ×1
node.js ×1
r ×1
sublimetext3 ×1