rust: switch to rustaceanvim

This commit is contained in:
Pei Yang Ching 2024-07-13 22:39:14 +02:00
commit e0e81e6e62

View file

@ -125,30 +125,39 @@ in {
(mkIf (cfg.lsp.enable || cfg.dap.enable) { (mkIf (cfg.lsp.enable || cfg.dap.enable) {
vim = { vim = {
startPlugins = ["rust-tools"] ++ optionals cfg.dap.enable [cfg.dap.package]; startPlugins = ["rustaceanvim"];
lsp.lspconfig = { luaConfigRC.rustaceanvim = entryAnywhere ''
enable = true; vim.g.rustaceanvim = {
sources.rust-lsp = '' ${optionalString cfg.lsp.enable ''
local rt = require('rust-tools') -- LSP
rust_on_attach = function(client, bufnr) tools = {
hover_actions = {
replace_builtin_hover = false
},
},
server = {
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
},
on_attach = function(client, bufnr)
default_on_attach(client, bufnr) default_on_attach(client, bufnr)
local opts = { noremap=true, silent=true, buffer = bufnr } local opts = { noremap=true, silent=true, buffer = bufnr }
vim.keymap.set("n", "<leader>ris", rt.inlay_hints.set, opts) vim.keymap.set("n", "<leader>rr", ":RustLsp runnables<CR>", opts)
vim.keymap.set("n", "<leader>riu", rt.inlay_hints.unset, opts) vim.keymap.set("n", "<leader>rp", ":RustLsp parentModule<CR>", opts)
vim.keymap.set("n", "<leader>rr", rt.runnables.runnables, opts) vim.keymap.set("n", "<leader>rm", ":RustLsp expandMacro<CR>", opts)
vim.keymap.set("n", "<leader>rp", rt.parent_module.parent_module, opts) vim.keymap.set("n", "<leader>rc", ":RustLsp openCargo", opts)
vim.keymap.set("n", "<leader>rm", rt.expand_macro.expand_macro, opts) vim.keymap.set("n", "<leader>rg", ":RustLsp crateGraph x11", opts)
vim.keymap.set("n", "<leader>rc", rt.open_cargo_toml.open_cargo_toml, opts)
vim.keymap.set("n", "<leader>rg", function() rt.crate_graph.view_crate_graph("x11", nil) end, opts)
${optionalString cfg.dap.enable '' ${optionalString cfg.dap.enable ''
vim.keymap.set("n", "<leader>rd", ":RustDebuggables<cr>", opts) vim.keymap.set("n", "<leader>rd", ":RustLsp debuggables<cr>", opts)
vim.keymap.set( vim.keymap.set(
"n", "${config.vim.debugger.nvim-dap.mappings.continue}", "n", "${config.vim.debugger.nvim-dap.mappings.continue}",
function() function()
local dap = require("dap") local dap = require("dap")
if dap.status() == "" then if dap.status() == "" then
vim.cmd "RustDebuggables" vim.cmd "RustLsp debuggables"
else else
dap.continue() dap.continue()
end end
@ -157,41 +166,21 @@ in {
) )
''} ''}
end end
local rustopts = {
tools = {
autoSetHints = true,
hover_with_actions = false,
inlay_hints = {
only_current_line = false,
}
},
server = {
capabilities = capabilities,
on_attach = rust_on_attach,
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
},
settings = {
${cfg.lsp.opts}
}
}, },
''}
${optionalString cfg.dap.enable '' ${optionalString cfg.dap.enable ''
dap = { dap = {
adapter = { adapter = {
type = "executable", type = "executable",
command = "${cfg.dap.package}/bin/lldb-vscode", command = "${cfg.dap.package}/bin/lldb-vscode",
name = "rt_lldb", name = "rustacean_lldb",
}, },
}, },
''} ''}
} }
rt.setup(rustopts)
''; '';
}; };
};
}) })
]); ]);
} }