rust.lua
1 return { 2 { 'simrat39/rust-tools.nvim', enabled = false }, 3 { 4 'neovim/nvim-lspconfig', 5 opts = { 6 servers = { 7 rust_analyzer = {}, 8 taplo = { 9 keys = { 10 { 11 'K', 12 function() 13 if vim.fn.expand('%:t') == 'Cargo.toml' and require('crates').popup_available() then 14 require('crates').show_popup() 15 else 16 vim.lsp.buf.hover() 17 end 18 end, 19 desc = 'Show Crate Documentation', 20 }, 21 }, 22 }, 23 }, 24 setup = { 25 rust_analyzer = function() 26 return true 27 end, 28 }, 29 }, 30 }, 31 { 32 'Saecki/crates.nvim', 33 init = function() 34 local augroup = vim.api.nvim_create_augroup('CargoCrates', { clear = true }) 35 vim.api.nvim_create_autocmd('BufRead', { 36 group = augroup, 37 pattern = 'Cargo.toml', 38 callback = function() 39 local crates = require('crates') 40 require('which-key').register({ ['<localleader>'] = { name = 'crates ' } }, {}) 41 42 vim.keymap.set('n', '<localleader>t', crates.toggle, { desc = 'toggle' }) 43 vim.keymap.set('n', '<localleader>r', crates.reload, { desc = 'reload' }) 44 vim.keymap.set('n', '<localleader>v', crates.show_versions_popup, { desc = 'show version popup' }) 45 vim.keymap.set('n', '<localleader>k', crates.show_popup, { desc = 'show crate popup' }) 46 vim.keymap.set('n', '<localleader>f', crates.show_features_popup, { desc = 'show features popup' }) 47 vim.keymap.set('n', '<localleader>d', crates.show_dependencies_popup, { desc = 'show dependencies popup' }) 48 vim.keymap.set('n', '<localleader>u', crates.update_crate, { desc = 'update' }) 49 vim.keymap.set('v', '<localleader>u', crates.update_crates, { desc = 'update' }) 50 vim.keymap.set('n', '<localleader>a', crates.update_all_crates, { desc = 'update all' }) 51 vim.keymap.set('n', '<localleader>U', crates.upgrade_crate, { desc = 'upgrade' }) 52 vim.keymap.set('v', '<localleader>U', crates.upgrade_crates, { desc = 'upgrade' }) 53 vim.keymap.set('n', '<localleader>A', crates.upgrade_all_crates, { desc = 'upgrade all' }) 54 vim.keymap.set('n', '<localleader>H', crates.open_homepage, { desc = 'open homepage' }) 55 vim.keymap.set('n', '<localleader>R', crates.open_repository, { desc = 'open repository' }) 56 vim.keymap.set('n', '<localleader>D', crates.open_documentation, { desc = 'open documentation' }) 57 vim.keymap.set('n', '<localleader>C', crates.open_crates_io, { desc = 'open crates.io' }) 58 end, 59 }) 60 end, 61 opts = { 62 popup = { 63 autofocus = true, 64 border = 'rounded', 65 }, 66 }, 67 }, 68 }