feat(nvim): move from avante to codecompanion

Also, add mcphub and vectorcode to improve ai experience.
This commit is contained in:
João Paulo Dubas 2025-05-06 21:12:20 +00:00
parent 44757c8919
commit 988fd8fe27
Signed by: joao.dubas
SSH Key Fingerprint: SHA256:V1mixgOGRc/YMhGx/DNkOSmJxgA2vHNrDZEk3wt/kOA

View File

@ -145,137 +145,158 @@ return {
end,
},
{
'yetone/avante.nvim',
event = 'VeryLazy',
lazy = false,
version = false,
opts = {
provider = 'gemini_pro',
auto_suggestion_provider = 'gemini_flash',
claude = {
model = 'claude-3-7-sonnet-20250219',
temperature = 0,
max_tokens = 20480,
},
vendors = {
gemini_pro = {
__inherited_from = 'gemini',
model = 'gemini-2.5-pro-exp-03-25',
temperature = 0.25,
max_tokens = 204800,
},
gemini_flash = {
__inherited_from = 'gemini',
model = 'gemini-2.0-flash',
temperature = 0.25,
max_tokens = 20480,
},
},
behaviour = {
auto_suggestions = false,
auto_set_highlight_group = true,
aute_set_keymaps = true,
auto_apply_diff_after_generation = true,
support_paste_from_clipboard = false,
minimize_diff = true,
},
mappings = {
diff = {
ours = 'co',
theirs = 'ct',
all_theirs = 'ca',
both = 'cb',
cursor = 'cc',
next = ']x',
prev = '[x',
},
suggestion = {
accept = '<M-l>',
next = '<M-]>',
prev = '<M-[>',
dismiss = '<C-]>',
},
jump = {
next = ']]',
prev = '[[',
},
submit = {
normal = '<CR>',
insert = '<C-s>',
},
sidebar = {
apply_all = 'A',
apply_cursor = 'a',
switch_windows = '<Tab>',
reverse_switch_windows = '<S-Tab>',
},
},
hints = { enabled = true },
windows = {
position = 'right',
wrap = true,
width = 30,
sidebar_header = {
enabled = true,
align = 'center',
rounded = true,
},
input = {
prefix = '> ',
height = 8,
},
edit = {
border = 'rounded',
start_insert = true,
},
ask = {
floating = false,
start_insert = true,
border = 'rounded',
focus_on_apply = 'ours',
},
},
highlights = {
diff = {
current = 'DiffText',
incoming = 'DiffAdd',
},
},
diff = {
autojump = true,
list_opener = 'copen',
override_timeoutlen = 500,
},
},
build = 'make',
'ravitemer/mcphub.nvim',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'stevearc/dressing.nvim',
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'hrsh7th/nvim-cmp',
'nvim-telescope/telescope.nvim',
'nvim-tree/nvim-web-devicons',
{
'HakonHarnes/img-clip.nvim',
event = 'VeryLazy',
},
cmd = 'MCPHub',
build = 'bundled_build.lua',
opts = {
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
port = 37373,
config = vim.fn.expand '~/.config/mcphub/servers.json',
native_servers = {},
auto_approve = true,
auto_toggle_mcp_servers = true,
extensions = {},
ui = {
window = {
width = 0.8,
height = 0.8,
relative = 'editor',
zindex = 50,
border = 'rounded',
},
use_absolute_path = true,
wo = {},
},
use_bundled_binary = true,
log = {
level = vim.log.levels.WARN,
prefix = '[MCPHub]',
},
},
},
{
'Davidyz/VectorCode',
dependencies = {
'nvim-lua/plenary.nvim',
},
version = vim.fn.system { 'mise', 'current', 'pipx:vectorcode' },
opts = function()
return {
async_opts = {
debounce = 10,
events = { 'BufWritePost', 'InsertEnter', 'BufReadPost' },
exclude_this = true,
n_query = 1,
notify = false,
query_cb = require('vectorcode.utils').make_surrounding_lines_cb(-1),
run_on_register = false,
},
async_backend = 'default',
exclude_this = true,
n_query = 1,
notify = true,
timeout_ms = 5000,
on_setup = {
update = false,
lsp = false,
},
sync_log_env_var = false,
}
end,
},
{
'olimorris/codecompanion.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-treesitter/nvim-treesitter',
{
'MeanderingProgrammer/render-markdown.nvim',
opts = {
file_types = { 'markdown', 'Avante' },
file_types = { 'markdown', 'codecompanion' },
},
ft = { 'markdown', 'Avante' },
ft = { 'markdown', 'codecompanion' },
},
},
opts = function()
return {
display = {
action_palette = {
width = 95,
height = 15,
prompt = 'Prompt',
provide = 'telescope',
},
},
adapters = {
gemini_pro = function()
return require('codecompanion.adapters').extend('gemini', {
name = 'gemini_pro',
schema = {
model = {
default = 'gemini-2.5-pro-exp-03-25',
},
},
})
end,
gemini_flash = function()
return require('codecompanion.adapters').extend('gemini', {
name = 'gemini_flash',
schema = {
model = {
default = 'gemini-2.0-flash',
},
},
})
end,
},
extensions = {
vectorcode = {
opts = {
add_tool = true,
add_slash_command = true,
tool_opts = {},
},
},
mcphub = {
callback = 'mcphub.extensions.codecompanion',
opts = {
make_slash_commands = true,
make_vars = true,
show_result_in_chat = true,
},
},
},
strategies = {
chat = { adapter = 'gemini_pro' },
inline = { adapter = 'gemini_flash' },
},
}
end,
keys = {
{
'<leader>aa',
'<cmd>CodeCompanionActions<cr>',
mode = { 'n', 'v' },
desc = 'CodeCompaion actions',
noremap = true,
silent = true,
},
{
'<leader>at',
'<cmd>CodeCompanionChat Toggle<cr>',
mode = { 'n', 'v' },
desc = 'CodeCompanion toggle chat',
noremap = true,
silent = true,
},
{
'ga',
'<cmd>CodeCompanionChat add<cr>',
mode = 'v',
desc = 'CodeCompanion add to chat',
noremap = true,
silent = true,
},
},
},