-- ----------------------------------------------------------------------------- -- --------------------------------- CODING ------------------------------------ -- ----------------------------------------------------------------------------- return { { -- Mason-lspconfig "williamboman/mason-lspconfig.nvim", opts = { automatic_installation = true, }, }, { -- Codeium import = "lazyvim.plugins.extras.coding.codeium", opts = { enable_chat = true, }, cond = function() return vim.g.aitool == "codeium" end, }, { -- Copilot import = "lazyvim.plugins.extras.coding.copilot", cond = function() return vim.g.aitool == "copilot" end, }, { -- Tabnine import = "lazyvim.plugins.extras.coding.tabnine", cond = function() return vim.g.aitool == "tabnine" end, }, { -- Minuet-AI "milanglacier/minuet-ai.nvim", dependencies = { { "nvim-lua/plenary.nvim" }, { "hrsh7th/nvim-cmp" } }, config = function() require("minuet").setup({ provider = "openai" }) end, cond = function() return vim.g.aitool == "minuet" end, }, { -- Yanky import = "lazyvim.plugins.extras.coding.yanky", }, { -- Mini Surround import = "lazyvim.plugins.extras.coding.mini-surround", }, { -- VSCode import = "lazyvim.plugins.extras.vscode", }, { -- Mini Align "echasnovski/mini.align", event = "InsertEnter", config = function() require("mini.align").setup() end, }, { -- Alternate "ton/vim-alternate", lazy = true, ft = { "cpp", "h", "hpp", "c" }, keys = { { -- Toggle Alternate "a", "Alternate", desc = "Toggle Alternate", }, }, }, { -- Completion "hrsh7th/nvim-cmp", ---@param opts cmp.ConfigSchema opts = function(_, opts) local cmp = require("cmp") -- Global sources opts.sources = { { name = "emoji" }, { name = "cmp_yanky" }, { name = "dotenv" }, { name = "calc" }, { name = "conventionalcommits" }, { name = "gitmoji" }, } -- General setup cmp.setup(opts) -- Filetype-specific setup cmp.setup.filetype("config", { sources = vim.tbl_filter(function(source) return source.name ~= "emoji" and source.name ~= "gitmoji" end, opts.sources), }) -- List of filetypes to disable completion local disabled_filetypes = { "dashboard", "qalc" } for _, filetype in ipairs(disabled_filetypes) do cmp.setup.filetype(filetype, { sources = {}, }) end -- Key mappings cmp.setup({ mapping = { [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping.select_next_item(), [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping.select_next_item(), [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.close(), [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, }), }, }) end, dependencies = { "hrsh7th/cmp-emoji", { "chrisgrieser/cmp_yanky", option = { onlyCurrentFiletype = false, }, }, "SergioRibera/cmp-dotenv", "hrsh7th/cmp-calc", "davidsierradz/cmp-conventionalcommits", "Dynge/gitmoji.nvim", }, }, { -- Colorizer "norcalli/nvim-colorizer.lua", event = "BufEnter", config = function() require("colorizer").setup() end, }, { -- Substitute "gbprod/substitute.nvim", lazy = true, opts = { yank_substituted_text = false, preserve_cursor_position = true, }, keys = { { -- Substitute operator in normal mode "x", function() require("substitute").operator() end, desc = "Substitute operator", }, { -- Substitute line in normal mode "xx", function() require("substitute").line() end, desc = "Substitute line", }, { -- Substitute end of line in normal mode "X", function() require("substitute").eol() end, desc = "Substitute end of line", }, { -- Substitute visual selection in visual mode "x", function() require("substitute").visual() end, desc = "Substitute visual selection", mode = "x", }, { "r", function() require("substitute").visual() end, desc = "Substitute", mode = "x", }, }, }, { -- mini.splitjoin "echasnovski/mini.splitjoin", event = "InsertEnter", opts = { mappings = { toggle = "gJ", }, }, }, }