aboutsummaryrefslogtreecommitdiffstats
path: root/lua/config/copilot.lua
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2024-12-09 11:24:40 -0300
committerElvis Claros Castro <elvis@claros.ar>2024-12-09 11:24:40 -0300
commit4439edc5a91582f570551e5e849347a80bde40ee (patch)
tree00e93e727e43b5e98fbd38dbb6be5b60f2203847 /lua/config/copilot.lua
parente00fc002a6441fa3741d1f705337efbbd8850744 (diff)
downloadnvim-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.lua92
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' })