feat(rust) add bacon-ls and improve debugging

This commit is contained in:
Bigo 2024-06-25 15:20:03 +02:00
parent a33eabddd9
commit 022ea2c709
No known key found for this signature in database
GPG key ID: AEFBBD3BE8C66E4A

View file

@ -1,3 +1,13 @@
if lazyvim_docs then
-- LSP Server to use for Rust.
-- Set to "bacon-ls" to use bacon-ls instead of rust-analyzer.
-- only for diagnostics. The rest of LSP support will still be
-- provided by rust-analyzer.
vim.g.lazyvim_rust_diagnostics = "rust-analyzer"
end
local diagnostics = vim.g.lazyvim_rust_diagnostics or "rust-analyzer"
return { return {
recommended = function() recommended = function()
return LazyVim.extras.wants({ return LazyVim.extras.wants({
@ -37,7 +47,13 @@ return {
{ {
"williamboman/mason.nvim", "williamboman/mason.nvim",
optional = true, optional = true,
opts = { ensure_installed = { "codelldb" } }, opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
vim.list_extend(opts.ensure_installed, { "codelldb" })
if diagnostics == "bacon-ls" then
vim.list_extend(opts.ensure_installed, { "bacon", "bacon-ls" })
end
end
}, },
{ {
@ -64,8 +80,14 @@ return {
enable = true, enable = true,
}, },
}, },
-- Add clippy lints for Rust. -- Add clippy lints for Rust if using rust-analyzer
checkOnSave = true, checkOnSave = {
enable = diagnostics == "rust-analyzer",
},
-- Enable diagnostics if using rust-analyzer
diagnostics = {
enable = diagnostics == "rust-analyzer",
},
procMacro = { procMacro = {
enable = true, enable = true,
ignored = { ignored = {
@ -79,6 +101,14 @@ return {
}, },
}, },
config = function(_, opts) config = function(_, opts)
-- Configure dap with codelldb
local package_path = require("mason-registry").get_package("codelldb"):get_install_path()
opts.dap = {
adapter = require("rustaceanvim.config").get_codelldb_adapter(
package_path .. "/codelldb",
package_path .. "/extension/lldb/lib/liblldb.dylib"
),
}
vim.g.rustaceanvim = vim.tbl_deep_extend("keep", vim.g.rustaceanvim or {}, opts or {}) vim.g.rustaceanvim = vim.tbl_deep_extend("keep", vim.g.rustaceanvim or {}, opts or {})
if vim.fn.executable("rust-analyzer") == 0 then if vim.fn.executable("rust-analyzer") == 0 then
LazyVim.error( LazyVim.error(
@ -94,6 +124,9 @@ return {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = { opts = {
servers = { servers = {
bacon_ls = {
enabled = diagnostics == "bacon-ls",
},
taplo = { taplo = {
keys = { keys = {
{ {