From f0c5df79b86e8b54c0cf4df44dc514128cd45da8 Mon Sep 17 00:00:00 2001 From: Adam Cooper Date: Thu, 23 Nov 2023 12:02:52 -0500 Subject: [PATCH] Plugin optimization --- neovim/init.lua | 122 ++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/neovim/init.lua b/neovim/init.lua index 7e57f85..19753df 100644 --- a/neovim/init.lua +++ b/neovim/init.lua @@ -51,6 +51,9 @@ vim.keymap.set("t", "", "l", { noremap = true }) vim.keymap.set({"i", "n", "t", "v"}, "", function () vim.cmd("nohlsearch") end) +-- Wrap the function body in an if statement to verify existence of idelayout +vim.keymap.set({"n", "t"}, "z", function () vim.cmd("exec idelayout") end) + -- lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then @@ -72,12 +75,11 @@ require("lazy").setup({ lazy = false, priority = 1000, config = function () - vim.cmd([[colorscheme dracula]]) + vim.cmd.colorscheme("dracula") end, }, "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", - "neovim/nvim-lspconfig", "nvimdev/lspsaga.nvim", "nvim-lualine/lualine.nvim", "nvim-tree/nvim-web-devicons", @@ -151,64 +153,6 @@ local lua_ls_setup = { }, } -local capabilities = require('cmp_nvim_lsp').default_capabilities() - -local lspconfig = require('lspconfig') -lspconfig.gopls.setup {capabilities = capabilities} -lspconfig.lua_ls.setup(lua_ls_setup) -lspconfig.pyright.setup {capabilities = capabilities} -lspconfig.tsserver.setup {capabilities = capabilities} -lspconfig.rust_analyzer.setup { - -- Server-specific settings. See `:help lspconfig-setup` - capabilities = capabilities, - settings = { - ['rust-analyzer'] = {}, - }, -} - --- Global mappings. --- See `:help vim.diagnostic.*` for documentation on any of the below functions -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Diagnostic: open float' }) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Diagnostic: go to previous' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Diagnostic: go to next' }) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Diagnostic: set loclist' }) - --- Use LspAttach autocommand to only map the following keys --- after the language server attaches to the current buffer -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 = function(desc) - return { buffer = ev.buf, desc = desc } - end - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts('LSP: go to declaration')) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts('LSP: go to definition')) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts('LSP: hover')) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts('LSP: go to implementation')) - -- This setting steps on my split navigation setting, so I changed it - -- to the probably harmless F9. - -- vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts('')) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts('LSP: signature help')) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts('LSP: add workspace folder')) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts('LSP: remove workspace folder')) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts('LSP: list workspace folder')) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts('LSP: go to type definition')) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts('LSP: rename token')) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts('LSP: code action')) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts('LSP: go to references')) - vim.keymap.set('n', 'f', function() - vim.lsp.buf.format { async = true } - end, opts('LSP: format')) - end, -}) - -- Set up nvim-cmp. local cmp = require'cmp' @@ -271,6 +215,64 @@ cmp.setup.cmdline(':', { }) }) +local capabilities = require('cmp_nvim_lsp').default_capabilities() + +local lspconfig = require('lspconfig') +lspconfig.gopls.setup {capabilities = capabilities} +lspconfig.lua_ls.setup(lua_ls_setup) +lspconfig.pyright.setup {capabilities = capabilities} +lspconfig.tsserver.setup {capabilities = capabilities} +lspconfig.rust_analyzer.setup { + -- Server-specific settings. See `:help lspconfig-setup` + capabilities = capabilities, + settings = { + ['rust-analyzer'] = {}, + }, +} + +-- Global mappings. +-- See `:help vim.diagnostic.*` for documentation on any of the below functions +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Diagnostic: open float' }) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Diagnostic: go to previous' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Diagnostic: go to next' }) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Diagnostic: set loclist' }) + +-- Use LspAttach autocommand to only map the following keys +-- after the language server attaches to the current buffer +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 = function(desc) + return { buffer = ev.buf, desc = desc } + end + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts('LSP: go to declaration')) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts('LSP: go to definition')) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts('LSP: hover')) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts('LSP: go to implementation')) + -- This setting steps on my split navigation setting, so I changed it + -- to the probably harmless F9. + -- vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts('')) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts('LSP: signature help')) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts('LSP: add workspace folder')) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts('LSP: remove workspace folder')) + vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, opts('LSP: list workspace folder')) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts('LSP: go to type definition')) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts('LSP: rename token')) + vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts('LSP: code action')) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts('LSP: go to references')) + vim.keymap.set('n', 'f', function() + vim.lsp.buf.format { async = true } + end, opts('LSP: format')) + end, +}) + require('gitsigns').setup({ signs = { add = { text = '│' },