2023-08-20 14:27:47 +02:00
|
|
|
local M = {}
|
|
|
|
|
|
|
|
function M.config()
|
2023-07-10 14:30:11 +02:00
|
|
|
local rt = require "rust-tools"
|
2023-07-11 23:48:37 +02:00
|
|
|
local mason = require "mason-registry"
|
|
|
|
local capabilities = require "cmp_nvim_lsp"
|
|
|
|
|
|
|
|
local lsp_root = mason.get_package("codelldb"):get_install_path() .. "/extension/"
|
|
|
|
local lsp_path = lsp_root .. "adapter/codelldb"
|
|
|
|
local lib_path = lsp_root .. "lldb/lib/liblldb.so"
|
|
|
|
|
|
|
|
local opts = {
|
2023-07-10 14:30:11 +02:00
|
|
|
server = {
|
2023-07-11 23:48:37 +02:00
|
|
|
standalone = true,
|
|
|
|
-- capabilities = capabilities,
|
2023-07-10 14:30:11 +02:00
|
|
|
on_attach = function(client, bufnr)
|
2023-07-29 21:15:17 +02:00
|
|
|
local buf_opts = { noremap = true, silent = true, buffer = bufnr }
|
2023-07-11 23:48:37 +02:00
|
|
|
vim.keymap.set('n', "<C-b>", rt.hover_actions.hover_actions, buf_opts)
|
|
|
|
vim.keymap.set('n', "<Leader>a", rt.code_action_group.code_action_group, buf_opts)
|
2023-07-10 14:30:11 +02:00
|
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, buf_opts)
|
|
|
|
end,
|
|
|
|
["rust-analyzer"] = {
|
|
|
|
cargo = { allFeatures = true },
|
|
|
|
checkOnSave = {
|
|
|
|
-- default: `cargo check`
|
|
|
|
command = "clippy",
|
|
|
|
allFeatures = true,
|
|
|
|
}
|
2023-07-29 21:15:17 +02:00
|
|
|
}
|
2023-07-11 23:48:37 +02:00
|
|
|
},
|
|
|
|
dap = {
|
|
|
|
adapter = require("rust-tools.dap").get_codelldb_adapter(lsp_path, lib_path),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
rt.setup(opts)
|
2023-07-10 14:30:11 +02:00
|
|
|
end
|
|
|
|
|
2023-08-20 14:27:47 +02:00
|
|
|
return M
|
|
|
|
|