3 个版本 (破坏性更新)

0.3.0 2024年5月21日
0.2.0 2024年5月18日
0.1.0 2024年5月17日

#89文本编辑器

Download history 229/week @ 2024-05-13 209/week @ 2024-05-20 57/week @ 2024-06-10 65/week @ 2024-06-17 46/week @ 2024-06-24 60/week @ 2024-07-01 51/week @ 2024-07-08 42/week @ 2024-07-15 52/week @ 2024-07-22 45/week @ 2024-07-29 50/week @ 2024-08-05 58/week @ 2024-08-12

每月下载量207次

自定义许可

3MB
517

🐽 Bacon 语言服务器 🐽

Ci Release Crates.io License

为卓越的 Bacon 提供了一个 LSP 服务器包装器,公开了 textDocument/diagnosticworkspace/diagnostic 功能。

查看 bacon-ls 🐽 博客文章: https://lmno.lol/crisidev/bacon-language-server

Bacon screenshot

bacon-ls 🐽 旨在易于将其包含在您的 IDE 配置中。

功能 - ✅ 完成 🕖 进行中 🌍 未来

Bacon gif

安装

首先,安装 Baconbacon-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/diagnosticworkspace/diagnostic 的响应。

谢谢

bacon-ls 🐽 受 typos-lsp 的启发。

依赖项

~10–19MB
~267K SLoC