diff --git a/init.lua b/init.lua index be78a910..c0e5a5de 100644 --- a/init.lua +++ b/init.lua @@ -383,7 +383,7 @@ require('lazy').setup({ { 'j-hui/fidget.nvim', opts = {} }, -- Allows extra capabilities provided by nvim-cmp - 'hrsh7th/cmp-nvim-lsp', + -- 'hrsh7th/cmp-nvim-lsp', }, config = function() -- Brief aside: **What is LSP?** @@ -642,123 +642,123 @@ require('lazy').setup({ }, }, - -- { -- Autocompletion - -- 'hrsh7th/nvim-cmp', - -- event = 'InsertEnter', - -- dependencies = { - -- -- Snippet Engine & its associated nvim-cmp source - -- { - -- 'L3MON4D3/LuaSnip', - -- build = (function() - -- -- Build Step is needed for regex support in snippets. - -- -- This step is not supported in many windows environments. - -- -- Remove the below condition to re-enable on windows. - -- if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then - -- return - -- end - -- return 'make install_jsregexp' - -- end)(), - -- dependencies = { - -- -- `friendly-snippets` contains a variety of premade snippets. - -- -- See the README about individual language/framework/plugin snippets: - -- -- https://github.com/rafamadriz/friendly-snippets - -- { - -- 'rafamadriz/friendly-snippets', - -- config = function() - -- require('luasnip.loaders.from_vscode').lazy_load() - -- end, - -- }, - -- }, - -- }, - -- 'saadparwaiz1/cmp_luasnip', - -- - -- -- Adds other completion capabilities. - -- -- nvim-cmp does not ship with all sources by default. They are split - -- -- into multiple repos for maintenance purposes. - -- 'hrsh7th/cmp-nvim-lsp', - -- 'hrsh7th/cmp-path', - -- }, - -- config = function() - -- -- See `:help cmp` - -- local cmp = require 'cmp' - -- local luasnip = require 'luasnip' - -- luasnip.config.setup {} - -- - -- cmp.setup { - -- snippet = { - -- expand = function(args) - -- luasnip.lsp_expand(args.body) - -- end, - -- }, - -- completion = { completeopt = 'menu,menuone,noinsert' }, - -- - -- -- For an understanding of why these mappings were - -- -- chosen, you will need to read `:help ins-completion` - -- -- - -- -- No, but seriously. Please read `:help ins-completion`, it is really good! - -- mapping = cmp.mapping.preset.insert { - -- -- Select the [n]ext item - -- [''] = cmp.mapping.select_next_item(), - -- -- Select the [p]revious item - -- [''] = cmp.mapping.select_prev_item(), - -- - -- -- Scroll the documentation window [b]ack / [f]orward - -- [''] = cmp.mapping.scroll_docs(-4), - -- [''] = cmp.mapping.scroll_docs(4), - -- - -- -- Accept ([y]es) the completion. - -- -- This will auto-import if your LSP supports it. - -- -- This will expand snippets if the LSP sent a snippet. - -- [''] = cmp.mapping.confirm { select = true }, - -- - -- -- If you prefer more traditional completion keymaps, - -- -- you can uncomment the following lines - -- --[''] = cmp.mapping.confirm { select = true }, - -- --[''] = cmp.mapping.select_next_item(), - -- --[''] = cmp.mapping.select_prev_item(), - -- - -- -- Manually trigger a completion from nvim-cmp. - -- -- Generally you don't need this, because nvim-cmp will display - -- -- completions whenever it has completion options available. - -- [''] = cmp.mapping.complete {}, - -- - -- -- Think of as moving to the right of your snippet expansion. - -- -- So if you have a snippet that's like: - -- -- function $name($args) - -- -- $body - -- -- end - -- -- - -- -- will move you to the right of each of the expansion locations. - -- -- is similar, except moving you backwards. - -- [''] = cmp.mapping(function() - -- if luasnip.expand_or_locally_jumpable() then - -- luasnip.expand_or_jump() - -- end - -- end, { 'i', 's' }), - -- [''] = cmp.mapping(function() - -- if luasnip.locally_jumpable(-1) then - -- luasnip.jump(-1) - -- end - -- end, { 'i', 's' }), - -- - -- -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: - -- -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps - -- }, - -- sources = { - -- { - -- name = 'lazydev', - -- -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it - -- group_index = 0, - -- }, - -- { name = 'nvim_lsp' }, - -- { name = 'luasnip' }, - -- { name = 'path' }, - -- { name = 'copilot' }, - -- { name = 'buffer' }, - -- }, - -- } - -- end, - -- }, + { -- Autocompletion + 'hrsh7th/nvim-cmp', + event = 'InsertEnter', + dependencies = { + -- Snippet Engine & its associated nvim-cmp source + { + 'L3MON4D3/LuaSnip', + build = (function() + -- Build Step is needed for regex support in snippets. + -- This step is not supported in many windows environments. + -- Remove the below condition to re-enable on windows. + if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then + return + end + return 'make install_jsregexp' + end)(), + dependencies = { + -- `friendly-snippets` contains a variety of premade snippets. + -- See the README about individual language/framework/plugin snippets: + -- https://github.com/rafamadriz/friendly-snippets + { + 'rafamadriz/friendly-snippets', + config = function() + require('luasnip.loaders.from_vscode').lazy_load() + end, + }, + }, + }, + 'saadparwaiz1/cmp_luasnip', + + -- Adds other completion capabilities. + -- nvim-cmp does not ship with all sources by default. They are split + -- into multiple repos for maintenance purposes. + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-path', + }, + config = function() + -- See `:help cmp` + local cmp = require 'cmp' + local luasnip = require 'luasnip' + luasnip.config.setup {} + + cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + completion = { completeopt = 'menu,menuone,noinsert' }, + + -- For an understanding of why these mappings were + -- chosen, you will need to read `:help ins-completion` + -- + -- No, but seriously. Please read `:help ins-completion`, it is really good! + mapping = cmp.mapping.preset.insert { + -- Select the [n]ext item + [''] = cmp.mapping.select_next_item(), + -- Select the [p]revious item + [''] = cmp.mapping.select_prev_item(), + + -- Scroll the documentation window [b]ack / [f]orward + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + + -- Accept ([y]es) the completion. + -- This will auto-import if your LSP supports it. + -- This will expand snippets if the LSP sent a snippet. + [''] = cmp.mapping.confirm { select = true }, + + -- If you prefer more traditional completion keymaps, + -- you can uncomment the following lines + --[''] = cmp.mapping.confirm { select = true }, + --[''] = cmp.mapping.select_next_item(), + --[''] = cmp.mapping.select_prev_item(), + + -- Manually trigger a completion from nvim-cmp. + -- Generally you don't need this, because nvim-cmp will display + -- completions whenever it has completion options available. + [''] = cmp.mapping.complete {}, + + -- Think of as moving to the right of your snippet expansion. + -- So if you have a snippet that's like: + -- function $name($args) + -- $body + -- end + -- + -- will move you to the right of each of the expansion locations. + -- is similar, except moving you backwards. + [''] = cmp.mapping(function() + if luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function() + if luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + end + end, { 'i', 's' }), + + -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: + -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps + }, + sources = { + { + name = 'lazydev', + -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it + group_index = 0, + }, + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'path' }, + { name = 'copilot' }, + { name = 'buffer' }, + }, + } + end, + }, { -- You can easily change to a different colorscheme. -- Change the name of the colorscheme plugin below, and then @@ -783,43 +783,43 @@ require('lazy').setup({ -- Highlight todo, notes, etc in comments { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, - { -- Collection of various small independent plugins/modules - 'echasnovski/mini.nvim', - config = function() - -- Better Around/Inside textobjects - -- - -- Examples: - -- - va) - [V]isually select [A]round [)]paren - -- - yinq - [Y]ank [I]nside [N]ext [Q]uote - -- - ci' - [C]hange [I]nside [']quote - require('mini.ai').setup { n_lines = 500 } - - -- Add/delete/replace surroundings (brackets, quotes, etc.) - -- - -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren - -- - sd' - [S]urround [D]elete [']quotes - -- - sr)' - [S]urround [R]eplace [)] ['] - require('mini.surround').setup() - - -- Simple and easy statusline. - -- You could remove this setup call if you don't like it, - -- and try some other statusline plugin - local statusline = require 'mini.statusline' - -- set use_icons to true if you have a Nerd Font - statusline.setup { use_icons = vim.g.have_nerd_font } - - -- You can configure sections in the statusline by overriding their - -- default behavior. For example, here we set the section for - -- cursor location to LINE:COLUMN - ---@diagnostic disable-next-line: duplicate-set-field - statusline.section_location = function() - return '%2l:%-2v' - end - - -- ... and there is more! - -- Check out: https://github.com/echasnovski/mini.nvim - end, - }, + -- { -- Collection of various small independent plugins/modules + -- 'echasnovski/mini.nvim', + -- config = function() + -- -- Better Around/Inside textobjects + -- -- + -- -- Examples: + -- -- - va) - [V]isually select [A]round [)]paren + -- -- - yinq - [Y]ank [I]nside [N]ext [Q]uote + -- -- - ci' - [C]hange [I]nside [']quote + -- require('mini.ai').setup { n_lines = 500 } + -- + -- -- Add/delete/replace surroundings (brackets, quotes, etc.) + -- -- + -- -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren + -- -- - sd' - [S]urround [D]elete [']quotes + -- -- - sr)' - [S]urround [R]eplace [)] ['] + -- require('mini.surround').setup() + -- + -- -- Simple and easy statusline. + -- -- You could remove this setup call if you don't like it, + -- -- and try some other statusline plugin + -- local statusline = require 'mini.statusline' + -- -- set use_icons to true if you have a Nerd Font + -- statusline.setup { use_icons = vim.g.have_nerd_font } + -- + -- -- You can configure sections in the statusline by overriding their + -- -- default behavior. For example, here we set the section for + -- -- cursor location to LINE:COLUMN + -- ---@diagnostic disable-next-line: duplicate-set-field + -- statusline.section_location = function() + -- return '%2l:%-2v' + -- end + -- + -- -- ... and there is more! + -- -- Check out: https://github.com/echasnovski/mini.nvim + -- end, + -- }, { -- Highlight, edit, and navigate code 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate',