













期初我尝试直接使用 Mason 安装 arduino-language-server,但即便按文档要求修改配置后仍然无法正常启动。
查阅相关 issues/PR 之后发现,问题不在 arduino-language-server 自身,而是将其 integrate 进 Neovim 时所依赖的 go-lsp 上。
The dependency (bugst/go-lsp) used by the Arduino language server was updated (its go.mod was bumped to Go 1.22), and its behavior causes the language server to “fail to attach” or “quit” when Neovim v0.10+ attempts to start it. This manifests as errors in the Neovim logs (e.g. errors related to clangd startup and “locked (waiting clangd)”, even though the server may still work despite the warning message).
speelbarrow 将 arduino-language-server 依赖的 go-lsp 更换为了其 patch 过的版本:
1 |
|
进一步查看其对于 go-lsp 所做的修改:
1 |
|
原来只是一个类型 typo 错误吗……
虽然上文提到的 patch 已经能够使得 arduino-language-server 运行在 neovim v0.10+ 的版本中,但是该 PR 并未被 merge。查看 go-lsp 仓库的 Insights 界面可知:

很显然这个仓库已经死了。
仔细看了一下,这个仓库似乎仅仅是为了 arduino-language-server 而 fork 的一个仓库,作者 cmaglie 已经很久没有对其进行维护了。
更新
cmaglie 于 2025-03-19 合并了该 PR,现在可以直接使用 Mason 安装的 arduino-language-server 了。
尽管如此,办法也还是有的:
将 speelbarrow 的 repo 克隆到本地:
1 | git clone https://github.com/speelbarrow/arduino-language-server.git |
手动 build 一个依赖正确 go-lsp 的 arduino-language-server:
1 | cd arduino-language-server && go build |
将 Mason 里安装的可执行文件替换为手动构建的 arduino-language-server:
1 | cp ./arduino-language-server ~/.local/share/nvim/mason/packages/arduino-language-server/arduino-language-server |
顺带的,arduino-language-server 的启动需要一些前置步骤以及一些命令行参数。
前置步骤详见: lspconfig doc
本人开发 ESP32 CAM 所需要的命令行参数如下:
astrolsp.lua:
1 | arduino_language_server = { |
注意:该配置仅适用于 AstroNvim 下,且需要使用 Mason 安装 clangd
On this page
在 Neovim(v0.10+) 上使用 arduino-language-server
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。