nvim-lua.kickstart.nvim/lua/custom/plugins/codecompanion.lua

62 lines
2.1 KiB
Lua
Raw Normal View History

2024-12-04 07:12:14 +07:00
return {
'olimorris/codecompanion.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-treesitter/nvim-treesitter',
2025-03-15 12:02:58 +07:00
'j-hui/fidget.nvim',
2024-12-04 07:12:14 +07:00
-- The following are optional:
{ 'MeanderingProgrammer/render-markdown.nvim', ft = { 'markdown', 'codecompanion' } },
},
2025-03-15 12:02:58 +07:00
init = function()
require('custom.plugins.codecompanion.fidget-spinner'):init()
end,
2024-12-04 07:12:14 +07:00
config = function()
require('codecompanion').setup {
2024-12-04 19:06:54 +07:00
adapters = {
2025-04-08 06:27:47 +07:00
opts = {
show_defaults = false,
},
2024-12-04 19:06:54 +07:00
anthropic = require('codecompanion.adapters').extend('anthropic', {
env = {
api_key = 'CODECOMP_ANTHROPIC_API_KEY',
},
}),
2025-03-15 12:02:58 +07:00
deepseek = require('codecompanion.adapters').extend('deepseek', {
env = {
api_key = 'CODECOMP_DEEPSEEK_API_KEY',
},
}),
2025-04-08 06:27:47 +07:00
gemini = require('codecompanion.adapters').extend('gemini', {
env = {
api_key = 'CODECOMP_GEMINI_API_KEY',
},
}),
2024-12-04 19:06:54 +07:00
},
2024-12-04 07:12:14 +07:00
strategies = {
chat = {
2025-04-08 06:27:47 +07:00
adapter = 'gemini',
2025-03-13 22:01:25 +07:00
slash_commands = {
['file'] = {
-- Location to the slash command in CodeCompanion
callback = 'strategies.chat.slash_commands.file',
description = 'Select a file using FZF',
opts = {
provider = 'fzf_lua', -- Other options include 'default', 'mini_pick', 'fzf_lua', snacks
contains_code = true,
},
},
},
2024-12-04 07:12:14 +07:00
},
inline = {
2025-04-08 06:27:47 +07:00
adapter = 'gemini',
2024-12-04 07:12:14 +07:00
},
},
}
2024-12-17 19:19:40 +07:00
2025-03-18 13:22:19 +07:00
vim.keymap.set('n', '<leader>mc', '<cmd>CodeCompanionChat Toggle<cr>', { desc = '[CodeCompanion] Toggle chat' })
vim.keymap.set('v', '<leader>mc', '<cmd>CodeCompanionChat Toggle<cr>', { desc = '[CodeCompanion] Toggle chat' })
vim.keymap.set('n', '<leader>mp', '<cmd>CodeCompanionActions<cr>', { desc = '[CodeCompanion] Action' })
vim.keymap.set('v', '<leader>ma', '<cmd>CodeCompanionChat Add<cr>', { noremap = true, silent = true, desc = '[CodeCompanion] Add selection to chat' })
2024-12-04 07:12:14 +07:00
end,
}