return { -- Autocomplete { "hrsh7th/nvim-cmp", version = false, event = "InsertEnter", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "L3MON4D3/LuaSnip", }, opts = function() local cmp = require("cmp") local defaults = require("cmp.config.default")() local cmp_format = require("lsp-zero").cmp_format() return { completion = { completeopt = "menu,menuone,noinsert", }, mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. [""] = function(fallback) cmp.abort() fallback() end, }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "path" }, }, { { name = "buffer" }, }), sorting = defaults.sorting, formatting = cmp_format, } end, config = function(_, opts) require("cmp").setup(opts) end, }, -- Copilot { "github/copilot.vim" }, -- Comment { "numToStr/Comment.nvim", opts = { -- add any options here }, lazy = false, config = function() require("Comment").setup() end }, -- Surround { "tpope/vim-surround", event = "BufRead", }, }