Skip to content
Snippets Groups Projects
Commit 70dd4e31 authored by codecraft's avatar codecraft :crocodile:
Browse files

Add rust-tools for better rust-lang support

parent 8ecf012d
No related branches found
No related tags found
No related merge requests found
/plugin /plugin
log log
/lua/.luarc.json
...@@ -31,6 +31,7 @@ require('codecraft.plugin.lsp.navic') ...@@ -31,6 +31,7 @@ require('codecraft.plugin.lsp.navic')
require('codecraft.plugin.lsp.lsp') require('codecraft.plugin.lsp.lsp')
require('codecraft.plugin.lsp.completion') require('codecraft.plugin.lsp.completion')
require('codecraft.plugin.lsp.null-ls') require('codecraft.plugin.lsp.null-ls')
require('codecraft.plugin.lsp.rust-tools')
-- DAP -- DAP
require('codecraft.plugin.dap.dap') require('codecraft.plugin.dap.dap')
......
...@@ -26,6 +26,8 @@ require('packer').startup(function(use) ...@@ -26,6 +26,8 @@ require('packer').startup(function(use)
"SmiteshP/nvim-navic", "SmiteshP/nvim-navic",
requires = "neovim/nvim-lspconfig" requires = "neovim/nvim-lspconfig"
} }
-- Rust tools
use 'simrat39/rust-tools.nvim'
-- Project manager -- Project manager
use 'ahmedkhalf/project.nvim' use 'ahmedkhalf/project.nvim'
......
local rt = require("rust-tools")
local mason_registry = require("mason-registry")
local codelldb = mason_registry.get_package("codelldb")
local extension_path = codelldb:get_install_path() .. "/extension/"
local codelldb_path = extension_path .. "adapter/codelldb"
local liblldb_path = extension_path .. "lldb/lib/liblldb.so"
rt.setup({
server = {
on_attach = function(_, bufnr)
-- Hover actions
vim.keymap.set("n", "<leader>h", rt.hover_actions.hover_actions, { buffer = bufnr })
-- Code action groups
vim.keymap.set("n", "<Leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
local nmap = function(keys, func, desc)
if desc then
desc = 'LSP: ' .. desc
end
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
end
if _.server_capabilities.documentSymbolProvider then
require('nvim-navic').attach(_, bufnr)
end
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
nmap('<leader>di', vim.diagnostic.open_float, '[D]iagnostic [I]nfo')
nmap('<leader>dv', '<cmd>Telescope diagnostics<CR>', '[D]iagnostic [V]iew')
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- See `:help K` for why this keymap
nmap('<leader>K', vim.lsp.buf.hover, 'Hover Documentation')
nmap('<leader>k', vim.lsp.buf.signature_help, 'Signature Documentation')
-- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
nmap('<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, '[W]orkspace [L]ist Folders')
-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
end, { desc = 'Format current buffer with LSP' })
end,
},
tools = {
hover_actions = {
auto_focus = true,
}
},
dap = {
adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path),
},
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment