.dotfiles/nvim/lua/plugs/codecompanion.lua
Martin Larsson 0db6d4183b Update code companion to use copilot claude sonnet 3.7, add support for
gemini and openai with api keys. Additionally add code companion.
Finally, add VectorCode with Code Companion which caches and gives
context of private local projects to AI for better insight.
completion in blink.
2025-04-22 15:29:49 +02:00

113 lines
3.5 KiB
Lua

return {
"olimorris/codecompanion.nvim", -- The KING of AI programming
dependencies = {
{
"Davidyz/VectorCode",
version = "*",
build = "pipx upgrade vectorcode",
dependencies = { "nvim-lua/plenary.nvim" },
},
"echasnovski/mini.diff",
},
opts = {
adapters = {
copilot = function()
return require("codecompanion.adapters").extend("copilot", {
schema = {
model = {
default = "claude-3.7-sonnet",
},
},
})
end,
gemini = function()
return require("codecompanion.adapters").extend("gemini", {
schema = {
model = {
default = "gemini-2.5-pro-exp-03-25",
},
},
})
end,
openai = function()
return require("codecompanion.adapters").extend("openai", {
opts = {
stream = true,
},
schema = {
model = {
default = function()
return "gpt-4o"
end,
},
},
})
end,
},
strategies = {
chat = {
adapter = "copilot",
roles = {
user = "Martin",
},
keymaps = {
send = {
modes = {
i = { "<C-CR>", "<C-s>" },
},
},
completion = {
modes = {
i = "<C-x>",
},
},
},
slash_commands = {
["buffer"] = {
opts = {
keymaps = {
modes = {
i = "<C-b>",
},
},
},
},
["help"] = {
opts = {
max_lines = 1000,
},
},
},
tools = {
vectorcode = {
description = "Run VectorCode to retrieve the project context.",
callback = function()
return require("vectorcode.integrations").codecompanion.chat.make_tool()
end,
},
},
},
inline = { adapter = "copilot" },
},
display = {
action_palette = {
provider = "default",
},
diff = {
provider = "mini_diff",
},
},
opts = {
log_level = "DEBUG",
},
},
keys = {
{ "<C-a>", "<cmd>CodeCompanionActions<cr>" },
{ "<Leader>ci", "<cmd>CodeCompanion<cr>" },
{ "<Leader>cc", "<cmd>CodeCompanionChat toggle<cr>" },
{ "<Leader>ce", "<cmd>CodeCompanion /explain<cr>", mode = "v" },
},
init = function()
vim.cmd([[cab cc CodeCompanion]])
end
}