return { { import = "lazyvim.plugins.extras.coding.nvim-cmp", enabled = function() return LazyVim.cmp_engine() == "nvim-cmp" end, }, { import = "lazyvim.plugins.extras.coding.blink", enabled = function() return LazyVim.cmp_engine() == "blink.cmp" end, }, -- auto pairs { "echasnovski/mini.pairs", event = "VeryLazy", opts = { modes = { insert = true, command = true, terminal = false }, -- skip autopair when next character is one of these skip_next = [=[[%w%%%'%[%"%.%`%$]]=], -- skip autopair when the cursor is inside these treesitter nodes skip_ts = { "string" }, -- skip autopair when next character is closing pair -- and there are more closing pairs than opening pairs skip_unbalanced = true, -- better deal with markdown code blocks markdown = true, }, config = function(_, opts) LazyVim.mini.pairs(opts) end, }, -- comments { "folke/ts-comments.nvim", event = "VeryLazy", opts = {}, }, -- Better text-objects { "echasnovski/mini.ai", event = "VeryLazy", opts = function() local ai = require("mini.ai") return { n_lines = 500, custom_textobjects = { o = ai.gen_spec.treesitter({ -- code block a = { "@block.outer", "@conditional.outer", "@loop.outer" }, i = { "@block.inner", "@conditional.inner", "@loop.inner" }, }), f = ai.gen_spec.treesitter({ a = "@function.outer", i = "@function.inner" }), -- function c = ai.gen_spec.treesitter({ a = "@class.outer", i = "@class.inner" }), -- class t = { "<([%p%w]-)%f[^<%w][^<>]->.-", "^<.->().*()$" }, -- tags d = { "%f[%d]%d+" }, -- digits e = { -- Word with case { "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" }, "^().*()$", }, g = LazyVim.mini.ai_buffer, -- buffer u = ai.gen_spec.function_call(), -- u for "Usage" U = ai.gen_spec.function_call({ name_pattern = "[%w_]" }), -- without dot in function name }, } end, config = function(_, opts) require("mini.ai").setup(opts) LazyVim.on_load("which-key.nvim", function() vim.schedule(function() LazyVim.mini.ai_whichkey(opts) end) end) end, }, { "folke/lazydev.nvim", ft = "lua", cmd = "LazyDev", opts = { library = { { path = "${3rd}/luv/library", words = { "vim%.uv" } }, { path = "LazyVim", words = { "LazyVim" } }, { path = "snacks.nvim", words = { "Snacks" } }, { path = "lazy.nvim", words = { "LazyVim" } }, }, }, }, }