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 | |
| parent | e00fc002a6441fa3741d1f705337efbbd8850744 (diff) | |
| download | nvim-conf-4439edc5a91582f570551e5e849347a80bde40ee.tar.gz nvim-conf-4439edc5a91582f570551e5e849347a80bde40ee.zip | |
Modifico Las configuraciones de copilot-chat
Diffstat (limited to 'lua/config')
| -rw-r--r-- | lua/config/copilot.lua | 92 | ||||
| -rw-r--r-- | lua/config/icons.lua | 65 | ||||
| -rw-r--r-- | lua/config/init.lua | 1 | ||||
| -rw-r--r-- | lua/config/utils.lua | 73 |
4 files changed, 231 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' }) diff --git a/lua/config/icons.lua b/lua/config/icons.lua new file mode 100644 index 0000000..f4134a7 --- /dev/null +++ b/lua/config/icons.lua @@ -0,0 +1,65 @@ +return { + fold = { + Closed = '', + Open = '', + }, + ui = { + User = ' ', + Bot = ' ', + Wiki = '', + Hunk = '', + }, + dap = { + Stopped = { ' ', 'DiagnosticWarn' }, + Breakpoint = ' ', + BreakpointCondition = ' ', + BreakpointRejected = { ' ', 'DiagnosticError' }, + LogPoint = '.>', + }, + diagnostics = { + Error = ' ', + Warn = ' ', + Hint = ' ', + Info = ' ', + }, + kinds = { + Array = ' ', + Boolean = ' ', + Class = ' ', + Codeium = ' ', + Color = ' ', + Control = ' ', + Collapsed = ' ', + Constant = ' ', + Constructor = ' ', + Enum = ' ', + EnumMember = ' ', + Event = ' ', + Field = ' ', + File = ' ', + Folder = ' ', + Function = ' ', + Interface = ' ', + Key = ' ', + Keyword = ' ', + Method = ' ', + Module = ' ', + Namespace = ' ', + Null = ' ', + Number = ' ', + Object = ' ', + Operator = ' ', + Package = ' ', + Property = ' ', + Reference = ' ', + Snippet = ' ', + String = ' ', + Struct = ' ', + TabNine = ' ', + Text = ' ', + TypeParameter = ' ', + Unit = ' ', + Value = ' ', + Variable = ' ', + }, +} diff --git a/lua/config/init.lua b/lua/config/init.lua index 74e9c00..b84221f 100644 --- a/lua/config/init.lua +++ b/lua/config/init.lua @@ -9,6 +9,7 @@ vim.api.nvim_create_autocmd("User", { require "config.keymaps" require "config.diagnostic" require "config.composer" + require "config.copilot" end, }) require "config.lazy" diff --git a/lua/config/utils.lua b/lua/config/utils.lua new file mode 100644 index 0000000..ea8a5c9 --- /dev/null +++ b/lua/config/utils.lua @@ -0,0 +1,73 @@ +local wk = require('which-key') +local group = vim.api.nvim_create_augroup('NeoVimRc', { clear = true }) + +local M = {} + +M.dot = function(callback) + return function() + _G.dot_repeat_callback = callback + vim.go.operatorfunc = 'v:lua.dot_repeat_callback' + vim.cmd('normal! g@l') + end +end + +M.map = function(mode, keys, func, desc, buffer, dot) + if dot then + if func then + local f = func + func = M.dot(function() + f() + end) + end + if desc then + desc = desc .. ' [R]' + end + end + + vim.keymap.set(mode, keys, func, { buffer = buffer, desc = desc, remap = true, nowait = true }) +end + +M.nmap = function(keys, func, desc, buffer) + M.map('n', keys, func, desc, buffer) +end + +M.rnmap = function(keys, func, desc, buffer) + M.map('n', keys, func, desc, buffer, true) +end + +M.vmap = function(keys, func, desc, buffer) + M.map('v', keys, func, desc, buffer) +end + +M.rvmap = function(keys, func, desc, buffer) + M.map('v', keys, func, desc, buffer, true) +end + +M.nvmap = function(keys, func, desc, buffer) + M.map({ 'n', 'v' }, keys, func, desc, buffer) +end + +M.rnvmap = function(keys, func, desc, buffer) + M.map({ 'n', 'v' }, keys, func, desc, buffer, true) +end + +M.au = function(event, opts) + opts['group'] = group + return vim.api.nvim_create_autocmd(event, opts) +end + +M.desc = function(key, desc, icon) + local opts = { key, desc = desc } + if icon then + opts.icon = icon + end + wk.add(opts) +end + +M.make_capabilities = function() + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = vim.tbl_deep_extend('force', capabilities, require('autocomplete.capabilities')) + return capabilities +end + +return M |