Files
nvim/lua/plugins/code-companion.lua
T
2026-06-09 14:23:18 +00:00

73 lines
2.5 KiB
Lua

local ignore = require('ignoreConfig.codeCompanionModel');
--[[
-- ignore file should be formatted as:
local opts = {
model = "claude_code",
}
return opts
-- but change model to desired model, ex. ollama
--]]
return {
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"hrsh7th/nvim-cmp", -- Optional: for autocompletion inside chat
{ "MeanderingProgrammer/render-markdown.nvim", ft = { "markdown", "codecompanion" } }, -- Optional: pretty markdown render
},
config = function()
require("codecompanion").setup({
-- Define strategies (Chat vs. Inline code generation/refactor)
strategies = {
chat = {
adapter = ignore.model,
},
inline = {
adapter = ignore.model,
},
},
-- Configure the actual connections (adapters)
adapters = {
claude_code = function()
return require("codecompanion.adapters").extend("claude_code", {
env = {
-- Looks for your export ANTHROPIC_API_KEY="your-key" in your .bashrc/.zshrc
command = "/usr/local/bin/claude-code-acp",
},
})
end,
ollama = function()
return require("codecompanion.adapters").extend("ollama", {
schema = {
model = {
default = "jean:latest", -- Your downloaded local model
},
},
})
end,
},
interactions = {
cli = {
agent = "claude_code",
agents = {
claude_code = {
cmd = "claude",
args = {},
description = "Claude Code CLI",
provider = "terminal",
},
},
},
},
})
-- Quick Keymaps
vim.keymap.set({ "n", "v" }, "<leader>ac", "<cmd>CodeCompanionChat Toggle<cr>", { desc = "Toggle AI Chat" })
vim.keymap.set({ "n", "v" }, "<leader>ai", "<cmd>CodeCompanionActions<cr>", { desc = "AI Actions Menu" })
end,
}