local prefix = "a" local user = vim.env.USER or "User" vim.api.nvim_create_autocmd("User", { pattern = "CodeCompanionChatAdapter", callback = function(args) if args.data.adapter == nil or vim.tbl_isempty(args.data) then return end vim.g.llm_name = args.data.adapter.name end, }) return { { "olimorris/codecompanion.nvim", cmd = { "CodeCompanion", "CodeCompanionActions", "CodeCompanionToggle", "CodeCompanionAdd", "CodeCompanionChat" }, opts = { adapters = { deepseek_coder = function() return require("codecompanion.adapters").extend("ollama", { name = "deepseek_coder", schema = { model = { default = "deepseek-coder-v2:latest", }, }, }) end, }, strategies = { chat = { adapter = "deepseek_coder", roles = { llm = " CodeCompanion", user = " " .. user:sub(1, 1):upper() .. user:sub(2), }, keymaps = { close = { modes = { n = "q", i = "" } }, stop = { modes = { n = "" } }, }, }, inline = { adapter = "deepseek_coder" }, agent = { adapter = "deepseek_coder" }, }, display = { chat = { show_settings = true, }, }, }, keys = { { prefix .. "a", "CodeCompanionActions", mode = { "n", "v" }, desc = "Action Palette" }, { prefix .. "c", "CodeCompanionChat", mode = { "n", "v" }, desc = "New Chat" }, { prefix .. "A", "CodeCompanionAdd", mode = "v", desc = "Add Code" }, { prefix .. "i", "CodeCompanion", mode = "n", desc = "Inline Prompt" }, { prefix .. "C", "CodeCompanionToggle", mode = "n", desc = "Toggle Chat" }, }, }, { "folke/which-key.nvim", opts = { spec = { { prefix, group = "ai", icon = "󱚦 " }, }, }, }, { "folke/edgy.nvim", optional = true, opts = function(_, opts) opts.right = opts.right or {} table.insert(opts.right, { ft = "codecompanion", title = "CodeCompanion", size = { width = 70 }, }) end, }, }