local path = vim.fs.find({ "Cargo.toml" }, { type = "file" }) local root = vim.fs.dirname(path[1]) vim.lsp.start({ name = "rust-analyzer", cmd = { "rust-analyzer" }, root_dir = root, settings = { ["rust-analyzer"] = { procMacro = { enable = true }, checkOnSave = { command = "clippy" }, }, }, }) vim.cmd.compiler('cargo') vim.bo.makeprg = 'cargo build --all' vim.keymap.set('n', 'cbb', ":Dispatch! cargo build" , { noremap=true, buffer=0 }) vim.keymap.set('n', 'cbc', ":Dispatch! cargo clean" , { noremap=true, buffer=0 }) vim.keymap.set('n', 'cbd', ":Dispatch! cargo doc" , { noremap=true, buffer=0 }) vim.keymap.set('n', 'cdD', ":Dispatch! cargo doc --open", { noremap=true, buffer=0 }) vim.keymap.set('n', 'cbu', ":Dispatch! cargo update" , { noremap=true, buffer=0 }) vim.api.nvim_create_autocmd({ "BufWritePre" }, { buffer = 0, callback = function() vim.lsp.buf.format({async=true}) end, }) vim.api.nvim_create_autocmd({ "BufReadPre", "BufWinEnter" }, { pattern = { "*/git/checkouts/*", "*/toolchains/*", "*cargo/registry/*" }, callback = function() vim.bo.buflisted = false end, })