From d93299583edf6de0c55b5d97929e483f035add22 Mon Sep 17 00:00:00 2001 From: kalmenn Date: Thu, 28 Dec 2023 14:03:59 +0100 Subject: [PATCH] lsp + crates.nvim: fix keybinds --- init.lua | 2 + lua/plugins/lsp.lua | 93 +++++++++++++++++++++++++++++++-------------- 2 files changed, 66 insertions(+), 29 deletions(-) diff --git a/init.lua b/init.lua index d79b525..646bb7d 100644 --- a/init.lua +++ b/init.lua @@ -14,6 +14,8 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) +vim.g.mapleader = " "; + require('lazy').setup({ { import = "plugins" } }) require("sets") diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 89bfe1e..b2a87a3 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -1,38 +1,39 @@ -vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('UserLspConfig', {}), - callback = function(ev) - -- Enable completion triggered by - vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' - - -- Buffer local mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local opts = { buffer = ev.buf } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', 'f', function() - vim.lsp.buf.format { async = true } - end, opts) - end, -}) - return { { "neovim/nvim-lspconfig", dependencies = { "hrsh7th/cmp-nvim-lsp", }, + init = function() + vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + -- Enable completion triggered by + vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, opts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) + vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) + vim.keymap.set('n', 'f', function() + vim.lsp.buf.format { async = true } + end, opts) + end, + }) + end, config = function() local lspconfig = require("lspconfig") @@ -74,6 +75,40 @@ 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", }, }, opts = {