42 lines
1.2 KiB
Lua
42 lines
1.2 KiB
Lua
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<CR>" , { noremap=true, buffer=0 })
|
|
vim.keymap.set('n', 'cbc', ":Dispatch! cargo clean<CR>" , { noremap=true, buffer=0 })
|
|
vim.keymap.set('n', 'cbd', ":Dispatch! cargo doc<CR>" , { noremap=true, buffer=0 })
|
|
vim.keymap.set('n', 'cdD', ":Dispatch! cargo doc --open<CR>", { noremap=true, buffer=0 })
|
|
vim.keymap.set('n', 'cbu', ":Dispatch! cargo update<CR>" , { 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,
|
|
})
|