From c836481300f2c77d74e00c1157898110e88be7de Mon Sep 17 00:00:00 2001 From: loqusion Date: Fri, 30 Jun 2023 09:19:00 -0500 Subject: [PATCH] feat(rust): rust improvements (#1015) * fix(rust): move lspconfig opts to correct location lspconfig's `opts` goes in rust-tools's `opts.server`; see https://github.com/simrat39/rust-tools.nvim#configuration * feat(rust): add neotest-rust * feat(rust): allow user to extend rust-tools with `opts` Also avoids calling rust-tools's `setup()` twice. * style(rust): fix indentation for stylua comment --- lua/lazyvim/plugins/extras/lang/rust.lua | 28 +++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/rust.lua b/lua/lazyvim/plugins/extras/lang/rust.lua index 24c4f02b16..4e9dff8083 100644 --- a/lua/lazyvim/plugins/extras/lang/rust.lua +++ b/lua/lazyvim/plugins/extras/lang/rust.lua @@ -42,7 +42,11 @@ return { -- Correctly setup lspconfig for Rust 🚀 { "neovim/nvim-lspconfig", - dependencies = { "simrat39/rust-tools.nvim" }, + dependencies = { + "simrat39/rust-tools.nvim", + -- Avoid calling setup twice if user supplies `opts` + config = function() end, + }, opts = { servers = { -- Ensure mason installs the server @@ -52,7 +56,7 @@ return { setup = { rust_analyzer = function(_, opts) require("lazyvim.util").on_attach(function(client, buffer) - -- stylua: ignore + -- stylua: ignore if client.name == "rust_analyzer" then vim.keymap.set("n", "K", "RustHoverActions", { buffer = buffer, desc = "Hover Actions (Rust)" }) vim.keymap.set( "n", "cR", "RustCodeAction", { buffer = buffer, desc = "Code Action (Rust)" }) @@ -66,7 +70,8 @@ return { local codelldb_path = extension_path .. "adapter/codelldb" local liblldb_path = vim.fn.has("mac") == 1 and extension_path .. "lldb/lib/liblldb.dylib" or extension_path .. "lldb/lib/liblldb.so" - local rust_tools_opts = vim.tbl_deep_extend("force", opts, { + local user_rust_tools_opts = require("lazyvim.util").opts("rust-tools.nvim") + local rust_tools_opts = vim.tbl_deep_extend("force", user_rust_tools_opts, { dap = { adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path), }, @@ -81,7 +86,7 @@ return { ]]) end, }, - server = { + server = vim.tbl_deep_extend("force", opts, { settings = { ["rust-analyzer"] = { cargo = { @@ -105,7 +110,7 @@ return { }, }, }, - }, + }), }) require("rust-tools").setup(rust_tools_opts) return true @@ -128,4 +133,17 @@ return { }, }, }, + + { + "nvim-neotest/neotest", + optional = true, + dependencies = { + "rouge8/neotest-rust", + }, + opts = { + adapters = { + ["neotest-rust"] = {}, + }, + }, + }, }