dotfiles/.config/nvim/lua/plugins/tools.lua

82 lines
2.3 KiB
Lua

-- lua/plugins/tools.lua
return {
{
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"echasnovski/mini.diff",
},
opts = {
display = {
diff = { provider = "mini_diff" },
chat = {
show_settings = false,
window = { position = "right", opts = { number = false } },
},
},
strategies = {
chat = { adapter = "gemini_high" },
inline = { adapter = "gemini_none" },
cmd = { adapter = "gemini_none" },
},
adapters = {
ollama = function()
return require("codecompanion.adapters").extend("ollama", {
name = "ollama",
env = { url = "http://192.168.1.165:11434" },
parameters = { sync = true },
schema = { num_ctx = { default = 8192 } },
})
end,
gemini_pro = function()
return require("codecompanion.adapters").extend("gemini", {
name = "gemini_pro",
schema = { model = { default = "gemini-2.5-pro-preview-05-06" } },
})
end,
gemini_none = function()
return require("codecompanion.adapters").extend("gemini", {
name = "gemini_none",
schema = {
model = { default = "gemini-2.5-flash-preview-05-20" },
reasoning_effort = { default = "none" },
temperature = { default = 0 },
},
})
end,
gemini_high = function()
return require("codecompanion.adapters").extend("gemini", {
name = "gemini_high",
schema = {
model = { default = "gemini-2.5-flash-preview-05-20" },
reasoning_effort = { default = "high" },
},
})
end,
openai_high = function()
return require("codecompanion.adapters").extend("openai", {
name = "openai_high",
schema = {
model = { default = "o4-mini-2025-04-16" },
reasoning_effort = { default = "high" },
},
})
end,
},
},
keys = {
{ "<leader>cc", "<cmd>CodeCompanionChat<cr>", desc = "CodeCompanion Chat", silent = true },
{
"<leader>cf",
"<cmd>CodeCompanionChat gemini_none<cr>",
desc = "CodeCompanion Chat (Fast)",
silent = true,
},
{ "<leader>ca", "<cmd>CodeCompanionActions<cr>", desc = "CodeCompanion Actions", silent = true },
{ "<leader>ci", ":CodeCompanion<space>", mode = { "n", "v" }, desc = "CodeCompanion Inline" },
},
},
}