return { { "Saecki/crates.nvim", tag = "stable", init = function() local crates = require("crates") vim.api.nvim_create_autocmd("BufEnter", { pattern = "Cargo.toml", group = vim.api.nvim_create_augroup("UserCratesNvimConfig", {}), callback = function(ev) local opts = { silent = true, buffer = ev.buffer } vim.keymap.set("n", "ct", crates.toggle, opts) vim.keymap.set("n", "cr", crates.reload, opts) vim.keymap.set("n", "cv", crates.show_versions_popup, opts) vim.keymap.set("n", "cf", crates.show_features_popup, opts) vim.keymap.set("n", "cd", crates.show_dependencies_popup, opts) vim.keymap.set("n", "cu", crates.update_crate, opts) vim.keymap.set("v", "cu", crates.update_crates, opts) vim.keymap.set("n", "ca", crates.update_all_crates, opts) vim.keymap.set("n", "cU", crates.upgrade_crate, opts) vim.keymap.set("v", "cU", crates.upgrade_crates, opts) vim.keymap.set("n", "cA", crates.upgrade_all_crates, opts) vim.keymap.set("n", "ce", crates.expand_plain_crate_to_inline_table, opts) vim.keymap.set("n", "cE", crates.extract_crate_into_table, opts) vim.keymap.set("n", "cH", crates.open_homepage, opts) vim.keymap.set("n", "cR", crates.open_repository, opts) vim.keymap.set("n", "cD", crates.open_documentation, opts) vim.keymap.set("n", "cC", crates.open_crates_io, opts) end, }) end, opts = {}, event = "BufEnter Cargo.toml", }, { 'mrcjkb/rustaceanvim', version = '^5', lazy = false, init = function() vim.g.rustaceanvim = { server = { on_attach = function(client, bufnr) opts = { silent = true, buffer = bufnr } vim.keymap.set("n", "a", function() vim.cmd.RustLsp('codeAction') end, opts) vim.keymap.set("n", "K", function() vim.cmd.RustLsp({'hover', 'actions'}) end, opts) end, default_settings = { ['rust-analyzer'] = { check = { command = "clippy", }, }, }, }, } end, }, }