diff --git a/after/ftplugin/rust.lua b/after/ftplugin/rust.lua new file mode 100644 index 0000000..11cdba7 --- /dev/null +++ b/after/ftplugin/rust.lua @@ -0,0 +1,7 @@ +--local helpers = require("helpers") +--local nmap = helpers.nmap +-- +--nmap("]d", ":RustLsp renderDiagnostic") +----nmap("q", ":RustLsp explainError") +--nmap("q", ":RustLsp renderDiagnostic") +--nmap("f", ":RustFmt") diff --git a/lua/helpers.lua b/lua/helpers.lua index e72de56..1e3971a 100644 --- a/lua/helpers.lua +++ b/lua/helpers.lua @@ -9,6 +9,10 @@ function M.map(mode, lhs, rhs, opts) vim.keymap.set(mode, lhs, rhs, default_opts) end +function M.nmap(...) + M.map("n", ...) +end + function M.lsp_config_defaults() return { root_dir = require("lspconfig.util").root_pattern( diff --git a/lua/plugins/config.lua b/lua/plugins/config.lua index 59ffc83..cb78cd2 100644 --- a/lua/plugins/config.lua +++ b/lua/plugins/config.lua @@ -423,6 +423,10 @@ function M.lsp_zero() filetypes = { "html", "htmldjango", "templ" }, }) + require("mason-lspconfig").setup_handlers({ + ["rust_analyzer"] = function() end, + }) + lsp.on_attach(function(client, _) if client.name == "svelte" then vim.api.nvim_create_autocmd("BufWritePost", { @@ -449,4 +453,46 @@ function M.luasnip() require("luasnip.loaders.from_snipmate").load() end +function M.rustaceanvim() + vim.g.rustaceanvim = { + server = { + on_attach = function(client, bufnr) + local function buf_set_keymap(...) + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + + local opts = { noremap = true, silent = true } + + buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) + buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) + buf_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) + buf_set_keymap("n", "e", "lua vim.diagnostic.open_float()", opts) + buf_set_keymap("n", "q", "lua vim.diagnostic.setloclist()", opts) + buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) + buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) + buf_set_keymap( + "n", + "wl", + "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", + opts + ) + buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) + buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) + buf_set_keymap("n", "[d", "lua vim.diagnostic.goto_prev({wrap = true})", opts) + buf_set_keymap("n", "]d", "lua vim.diagnostic.goto_next({wrap = true})", opts) + buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) + buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) + buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) + buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) + + if vim.version().api_level == 9 then + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + else + buf_set_keymap("n", "f", "lua vim.lsp.buf.format({ async = true })", opts) + end + end, + }, + } +end + return M diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index f03bb1c..fe7d0ef 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -7,7 +7,7 @@ setup.install_plugins() config.auto_session() config.fzf() config.fzf_checkout() -config.harpoon() +--config.harpoon() config.hop() config.indent_blankline() config.lualine() @@ -21,3 +21,4 @@ config.luasnip() config.lsp_zero() config.null_ls() config.undotree() +config.rustaceanvim() diff --git a/lua/plugins/setup.lua b/lua/plugins/setup.lua index 3527a40..7f0b124 100644 --- a/lua/plugins/setup.lua +++ b/lua/plugins/setup.lua @@ -103,6 +103,13 @@ function M.install_plugins() -- C# use("jlcrochet/vim-razor") + + -- RUST + use({ + "mrcjkb/rustaceanvim", + version = "^5", -- Recommended + lazy = false, -- This plugin is already lazy + }) end) end