diff --git a/lua/plugins/languages/rust.lua b/lua/plugins/languages/rust.lua new file mode 100644 index 0000000..349e6a5 --- /dev/null +++ b/lua/plugins/languages/rust.lua @@ -0,0 +1,70 @@ +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", + }, + lazy = false, + 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, + }, +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 76167e6..b0f52e2 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -1,4 +1,5 @@ return { + { import = "plugins/languages" }, { "neovim/nvim-lspconfig", dependencies = { @@ -62,72 +63,4 @@ return { }) end }, - { - "simrat39/rust-tools.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - { - "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", - }, - }, - lazy = false, - 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, - } }