diff options
| author | Elvis Claros Castro <elvis@claros.ar> | 2024-12-09 11:24:40 -0300 |
|---|---|---|
| committer | Elvis Claros Castro <elvis@claros.ar> | 2024-12-09 11:24:40 -0300 |
| commit | 4439edc5a91582f570551e5e849347a80bde40ee (patch) | |
| tree | 00e93e727e43b5e98fbd38dbb6be5b60f2203847 /lua/config/copilot.lua | |
| parent | e00fc002a6441fa3741d1f705337efbbd8850744 (diff) | |
| download | nvim-conf-4439edc5a91582f570551e5e849347a80bde40ee.tar.gz nvim-conf-4439edc5a91582f570551e5e849347a80bde40ee.zip | |
Modifico Las configuraciones de copilot-chat
Diffstat (limited to 'lua/config/copilot.lua')
| -rw-r--r-- | lua/config/copilot.lua | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lua/config/copilot.lua b/lua/config/copilot.lua new file mode 100644 index 0000000..9b9b6fc --- /dev/null +++ b/lua/config/copilot.lua @@ -0,0 +1,92 @@ +local utils = require('config.utils') +local icons = require('config.icons') +utils.desc('<leader>a', 'AI') + +-- Copilot autosuggestions +vim.g.copilot_no_tab_map = true +vim.g.copilot_hide_during_completion = 0 +vim.g.copilot_proxy_strict_ssl = 0 +vim.keymap.set('i', '<S-Tab>', 'copilot#Accept("\\<S-Tab>")', { expr = true, replace_keycodes = false }) + +-- Copilot chat +local chat = require('CopilotChat') +local actions = require('CopilotChat.actions') +local select = require('CopilotChat.select') +local integration = require('CopilotChat.integrations.fzflua') + +chat.setup({ + model = 'claude-3.5-sonnet', + question_header = ' ' .. icons.ui.User .. ' ', + answer_header = ' ' .. icons.ui.Bot .. ' ', + error_header = '> ' .. icons.diagnostics.Warn .. ' ', + selection = select.visual, + mappings = { + reset = { + normal = '', + insert = '', + }, + }, + prompts = { + Yarrr = { + system_prompt = 'You are fascinated by pirates, so please respond in pirate speak.', + }, + Explain = { + mapping = '<leader>ae', + description = 'AI Explain', + }, + Review = { + mapping = '<leader>ar', + description = 'AI Review', + }, + Tests = { + mapping = '<leader>at', + description = 'AI Tests', + }, + Fix = { + mapping = '<leader>af', + description = 'AI Fix', + }, + Optimize = { + mapping = '<leader>ao', + description = 'AI Optimize', + }, + Docs = { + mapping = '<leader>ad', + description = 'AI Documentation', + }, + Commit = { + mapping = '<leader>ac', + description = 'AI Generate Commit', + }, + }, +}) + +utils.au('BufEnter', { + pattern = 'copilot-*', + callback = function() + vim.opt_local.relativenumber = false + vim.opt_local.number = false + end, +}) + +vim.keymap.set({ 'n' }, '<leader>aa', chat.toggle, { desc = 'AI Toggle' }) +vim.keymap.set({ 'v' }, '<leader>aa', chat.open, { desc = 'AI Open' }) +vim.keymap.set({ 'n' }, '<leader>ax', chat.reset, { desc = 'AI Reset' }) +vim.keymap.set({ 'n' }, '<leader>as', chat.stop, { desc = 'AI Stop' }) +vim.keymap.set({ 'n' }, '<leader>am', chat.select_model, { desc = 'AI Model' }) +vim.keymap.set({ 'n', 'v' }, '<leader>ap', function() + integration.pick(actions.prompt_actions(), { + fzf_tmux_opts = { + ['-d'] = '45%', + }, + }) +end, { desc = 'AI Prompts' }) +vim.keymap.set({ 'n', 'v' }, '<leader>aq', function() + vim.ui.input({ + prompt = 'AI Question> ', + }, function(input) + if input and input ~= '' then + chat.ask(input) + end + end) +end, { desc = 'AI Question' }) |