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", }, { "simrat39/rust-tools.nvim", dependencies = { "nvim-lua/plenary.nvim", "hrsh7th/cmp-nvim-lsp", }, lazy = true, config = function() local capabilities = require("cmp_nvim_lsp").default_capabilities(); require("rust-tools").setup({ server = { on_attach = function(_, bufnr) local rt = require("rust-tools"); -- Hover actions vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) -- Code action groups vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) end, capabilities = capabilities, settings = { ["rust-analyzer"] = { check = { command = "clippy", }, }, }, }, }); end, }, }