diff --git a/lua/helpers.lua b/lua/helpers.lua index 62f4614..3593f70 100644 --- a/lua/helpers.lua +++ b/lua/helpers.lua @@ -50,5 +50,9 @@ helpers.open_term = function(opts) vim.cmd.startinsert() end +helpers.has_copilot = function() + return vim.fn.getenv('COPILOT_API_KEY') ~= nil +end + return helpers -- nnoremap ev :tabedit $MYVIMRC diff --git a/lua/keymap.lua b/lua/keymap.lua index 816199d..40c3828 100644 --- a/lua/keymap.lua +++ b/lua/keymap.lua @@ -129,7 +129,7 @@ vim.api.nvim_create_autocmd('FileType', { vim.keymap.set('i', '', '', { buffer = true, desc = 'Use shift enter to start a new line' }) vim.keymap.set('n', '', 'G', { buffer = true, desc = 'Use enter in normal mode to go to the end of the chat' }) - local models = { 'gpt-4.1', 'gemini-2.5-pro', 'gemini-2.0-flash-001', 'claude-3.7-sonnet-thought', 'o4-mini' } + local models = { vim.env.DEFAULT_AI_MODEL, vim.env.REASONING_MODEL, vim.env.FAST_MODEL } -- Loop through models and create keymaps for each for i, model in ipairs(models) do vim.keymap.set('n', '', 'mzggj0W"_C' .. model .. '`z', { desc = 'Switch to ' .. model }) diff --git a/lua/plugins/ai-completion.lua b/lua/plugins/ai-completion.lua index 4288a72..cba7ba3 100644 --- a/lua/plugins/ai-completion.lua +++ b/lua/plugins/ai-completion.lua @@ -1,25 +1,29 @@ -- AI code completion --- return { --- 'zbirenbaum/copilot.lua', --- event = 'InsertEnter', --- config = function() --- require('copilot').setup { --- suggestion = { --- enabled = true, --- auto_trigger = true, --- keymap = { --- accept = '', --- }, --- }, --- filetypes = { --- yaml = true, --- markdown = true, --- gitcommit = true, --- gitrebase = true, --- }, --- } --- end, --- } + +if (vim.fn.getenv('COPILOT_API_KEY') ~= nil) then + return { + 'zbirenbaum/copilot.lua', + event = 'InsertEnter', + config = function() + require('copilot').setup { + suggestion = { + enabled = true, + auto_trigger = true, + keymap = { + accept = '', + }, + }, + filetypes = { + yaml = true, + markdown = true, + gitcommit = true, + gitrebase = true, + }, + } + end, + } +end + return { 'milanglacier/minuet-ai.nvim', dependencies = { 'nvim-lua/plenary.nvim' }, diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index ba41ea0..021a497 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -4,12 +4,25 @@ return { require('codecompanion').setup { adapters = { http = { - openrouter = function() + default = function() + if (require('helpers').has_copilot()) then + return require('codecompanion.adapters').extend('copilot', { + schema = { + model = { + default = vim.env.DEFAULT_AI_MODEL, + }, + max_tokens = { + default = 1000000, + }, + } + }) + end return require('codecompanion.adapters').extend('openai_compatible', { env = { url = vim.env.DEFAULT_OPENAI_API_BASE, api_key = vim.env.DEFAULT_OPENAI_API_KEY, - chat_url = '/v1/chat/completions', + chat_url = '/chat/completions', + models_endpoint = '/models', }, schema = { model = { @@ -31,7 +44,7 @@ return { }, strategies = { chat = { - adapter = 'openrouter', + adapter = 'default', slash_commands = { -- codebase = require('vectorcode.integrations').codecompanion.chat.make_slash_command(), }, @@ -63,13 +76,13 @@ return { }, inline = { adapter = { - name = 'openrouter', + name = 'default', model = vim.env.FAST_MODEL, }, }, cmd = { adapter = { - name = 'openrouter', + name = 'default', model = vim.env.FAST_MODEL, }, },