return { -- snippets { "L3MON4D3/LuaSnip", dependencies = { "rafamadriz/friendly-snippets", config = function() require("luasnip.loaders.from_vscode").lazy_load() end, }, }, -- auto completion { "hrsh7th/nvim-cmp", event = "InsertEnter", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-emoji", "saadparwaiz1/cmp_luasnip", }, config = function() local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.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(function(fallback) local luasnip = require("luasnip") if cmp.visible() then cmp.select_next_item() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else fallback() end end, { "i", "s" }), [""] = cmp.mapping(function(fallback) local luasnip = require("luasnip") if cmp.visible() then cmp.select_prev_item() elseif luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() end end, { "i", "s" }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" }, { name = "buffer" }, { name = "path" }, { name = "emoji" }, }), formatting = { format = function(_, item) local icons = require("lazyvim.config.icons").kinds if icons[item.kind] then item.kind = icons[item.kind] .. item.kind end return item end, }, experimental = { ghost_text = { hl_group = "LspCodeLens", }, }, }) end, }, -- auto pairs { "echasnovski/mini.pairs", event = "VeryLazy", config = function() require("mini.pairs").setup({}) end, }, -- comments { "JoosepAlviste/nvim-ts-context-commentstring" }, { "echasnovski/mini.comment", event = "VeryLazy", config = function() require("mini.comment").setup({ hooks = { pre = function() require("ts_context_commentstring.internal").update_commentstring({}) end, }, }) end, }, }