configuration.lua
1 local executors = require("rustaceanvim.executors") 2 vim.g.rustaceanvim = function() 3 return { 4 tools = { 5 executor = executors.toggleterm, 6 test_executor = "neotest", 7 crate_test_executor = "neotest", 8 enable_clippy = true, 9 enable_nextest = true, 10 }, 11 server = { 12 cmd = { "rust-analyzer" }, 13 14 on_attach = function(_, bufnr) 15 vim.keymap.set("v", "<leader>j", function() 16 vim.cmd.RustLsp("joinLines") 17 end, { buffer = bufnr, desc = "rust: join lines" }) 18 vim.keymap.set("n", "<leader>cc", function() 19 vim.cmd.RustLsp("codeAction") 20 end, { buffer = bufnr, desc = "rust: code actions" }) 21 vim.keymap.set("n", "<leader>rT", function() 22 vim.cmd.RustLsp({ "testables", bang = true }) 23 end, { buffer = bufnr, desc = "rust: run last ran test" }) 24 vim.keymap.set("n", "<leader>rd", function() 25 vim.cmd.RustLsp("openDocs") 26 end, { buffer = bufnr, desc = "rust: open rustdoc for symbol under cursor" }) 27 vim.keymap.set("n", "<leader>rh", function() 28 vim.cmd.RustLsp({ "view", "hir" }) 29 end, { buffer = bufnr, desc = "rust: view HIR" }) 30 vim.keymap.set("n", "<leader>rm", function() 31 vim.cmd.RustLsp({ "view", "mir" }) 32 end, { buffer = bufnr, desc = "rust: view MIR" }) 33 vim.keymap.set("n", "<leader>rr", function() 34 vim.cmd.RustLsp({ "flyCheck", "run" }) 35 end, { buffer = bufnr, desc = "rust: run checks" }) 36 vim.keymap.set("n", "<leader>rt", function() 37 vim.cmd.RustLsp({ "testables" }) 38 end, { buffer = bufnr, desc = "rust: run test" }) 39 end, 40 41 settings = { 42 ["rust-analyzer"] = { 43 cargo = { 44 buildScripts = { enable = true }, 45 allTargets = true, 46 }, 47 hover = { 48 actions = { 49 implementations = true, 50 references = true, 51 run = true, 52 }, 53 }, 54 imports = { 55 granularity = { 56 group = "module", 57 }, 58 prefix = "self", 59 }, 60 inlayHints = { 61 bindingModeHints = { enable = true }, 62 closureCaptureHints = { enable = true }, 63 closureReturnTypeHints = { enable = "always" }, 64 genericParameterHints = { 65 lifetime = { 66 enable = true, 67 }, 68 type = { 69 enable = true, 70 }, 71 }, 72 lifetimeElisionHints = { 73 enable = "skip_trivial", 74 useParameterNames = true, 75 }, 76 maxLength = nil, 77 }, 78 procMacro = { enable = true }, 79 rust = { analyzerTargetDir = true }, 80 }, 81 }, 82 }, 83 } 84 end