mirror of
https://github.com/LazyVim/LazyVim.git
synced 2025-06-21 16:39:06 +02:00
feat(rust): add bacon-ls and improve debugging (#3212)
## Changes
**NOTE: the PR will be in draft until
https://github.com/mason-org/mason-registry/pull/5774 is not merged**
Some improvements in the Rust extra
- Set `codelldb` adapter for rustacean.nvim
- Add support for [bacon-ls](https://github.com/crisidev/bacon-ls)
([blog post](https://lmno.lol/crisidev/bacon-language-server))
`bacon-ls` can be used as an alternative to `rust-analyzer` for
diagnostics, improving `rust-analyzer` performances. This is configured
by `vim.g.lazyvim_rust_diagnostics`, which can be set to `rust-analyzer`
or `bacon-lsp`.
<img width="1063" alt="screenshot"
src="f50a38ff
-0ec0-4d10-8cdc-796d027b16f0">
---------
Co-authored-by: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com>
This commit is contained in:
parent
8232651c4a
commit
ea794ffd94
1 changed files with 36 additions and 3 deletions
|
@ -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({
|
||||||
|
@ -35,7 +45,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" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -62,8 +78,12 @@ return {
|
||||||
enable = true,
|
enable = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- Add clippy lints for Rust.
|
-- Add clippy lints for Rust if using rust-analyzer
|
||||||
checkOnSave = true,
|
checkOnSave = diagnostics == "rust-analyzer",
|
||||||
|
-- Enable diagnostics if using rust-analyzer
|
||||||
|
diagnostics = {
|
||||||
|
enable = diagnostics == "rust-analyzer",
|
||||||
|
},
|
||||||
procMacro = {
|
procMacro = {
|
||||||
enable = true,
|
enable = true,
|
||||||
ignored = {
|
ignored = {
|
||||||
|
@ -77,6 +97,16 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
|
local package_path = require("mason-registry").get_package("codelldb"):get_install_path()
|
||||||
|
local codelldb = package_path .. "/extension/adapter/codelldb"
|
||||||
|
local library_path = package_path .. "/extension/lldb/lib/liblldb.dylib"
|
||||||
|
local uname = io.popen("uname"):read("*l")
|
||||||
|
if uname == "Linux" then
|
||||||
|
library_path = package_path .. "/extension/lldb/lib/liblldb.so"
|
||||||
|
end
|
||||||
|
opts.dap = {
|
||||||
|
adapter = require("rustaceanvim.config").get_codelldb_adapter(codelldb, library_path),
|
||||||
|
}
|
||||||
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(
|
||||||
|
@ -92,6 +122,9 @@ return {
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
opts = {
|
opts = {
|
||||||
servers = {
|
servers = {
|
||||||
|
bacon_ls = {
|
||||||
|
enabled = diagnostics == "bacon-ls",
|
||||||
|
},
|
||||||
rust_analyzer = { enabled = false },
|
rust_analyzer = { enabled = false },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue