3 个版本 (破坏性更新)
0.3.0 | 2024年5月21日 |
---|---|
0.2.0 | 2024年5月18日 |
0.1.0 | 2024年5月17日 |
#89 在 文本编辑器 中
每月下载量207次
3MB
517 行
🐽 Bacon 语言服务器 🐽
为卓越的 Bacon 提供了一个 LSP 服务器包装器,公开了 textDocument/diagnostic 和 workspace/diagnostic 功能。
查看 bacon-ls
🐽 博客文章: https://lmno.lol/crisidev/bacon-language-server
bacon-ls
🐽 旨在易于将其包含在您的 IDE 配置中。
功能 - ✅ 完成 🕖 进行中 🌍 未来
- 🔥
bacon-ls
🐽 不会为您启动bacon
,它需要在另一个终端中运行 - ✅ 实现
textDocument/diagnostic
和workspace/diagnostic
的 LSP 服务器接口 - ✅ 手动 Neovim 配置
- ✅ 手动 LazyVim 配置
- 🕖 自动 NeoVim 配置
- ✅ 将
bacon-ls
添加到 nvim-lspconfig - https://github.com/neovim/nvim-lspconfig/pull/3160 - 🕖 将
bacon
和bacon-ls
添加到 mason.nvim - https://github.com/mason-org/mason-registry/pull/5774 - 🕖 将
bacon-ls
添加到 LazyVim Rust 扩展 - https://github.com/LazyVim/LazyVim/pull/3212
- ✅ 将
- ✅ 将编译器提示添加到 Bacon 导出位置 - https://github.com/Canop/bacon/pull/187 https://github.com/Canop/bacon/pull/188
- 🌍 VsCode 扩展和配置
- 🌍 Emacs 配置
安装
首先,安装 Bacon 和 bacon-ls
🐽
❯❯❯ cargo install --locked bacon bacon-ls
使用 bacon-ls
配置 Bacon 的导出位置设置 🐽 导出格式
[export]
enabled = true
path = ".bacon-locations"
line_format = "{kind}:{path}:{line}:{column}:{message}"
配置
语言服务器可以使用合适的 LSP 协议进行配置,支持以下值
locationsFile
Bacon 导出文件名,默认.bacon-locations
。waitTimeSeconds
LSP 服务器在加载新诊断信息之前等待 Bacon 更新导出文件的最大时间(秒),默认10
。
Neovim - LazyVim
return {
{
"neovim/nvim-lspconfig",
opts = {
diagnostics = {
update_in_insert = true,
},
servers = {
rust_analyzer = { enable = false },
bacon_ls = {
enable = true
settings = {
-- locationsFile = ".locations",
-- waitTimeSeconds = 5
},
},
},
},
},
{
"mrcjkb/rustaceanvim",
opts = {
default_settings = {
["rust-analyzer"] = {
diagnostics = { enable = false },
checkOnSave = { enable = false },
},
},
},
},
}
Neovim - 手动
NeoVim 需要配置 nvim-lspconfig,并且 rust-analyzer 诊断必须关闭,以便 Bacon-Ls 🐽 正确运行。
bacon-ls
是从提交 6d2ae9f 开始成为 nvim-lspconfig
的一部分,它可以像其他 LSP 服务器一样配置。当 vim.diagnostics.Opts.update_in_insert 设置为 true
时,效果最佳。
require("lspconfig.configs").bacon_ls.setup({
autostart=true,
settings = {
-- locationsFile = ".locations",
-- waitTimeSeconds = 5
},
})
对于 rust-analyzer
,必须关闭以下两个选项
rust-analyzer.checkOnSave.enable = false
rust-analyzer.diagnostics.enable = false
它是如何工作的?
bacon-ls
🐽 读取由 Bacon 的导出位置 生成的诊断位置列表,并通过 LSP 协议在 STDIO 上暴露它们,以便客户端诊断使用。
它需要同时运行 Bacon,以确保定期更新导出位置。
LSP 客户端读取它们作为对 textDocument/diagnostic
和 workspace/diagnostic
的响应。
谢谢
bacon-ls
🐽 受 typos-lsp 的启发。
依赖项
~10–19MB
~267K SLoC