aboutsummaryrefslogtreecommitdiffstats
path: root/lua/config
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
parente00fc002a6441fa3741d1f705337efbbd8850744 (diff)
downloadnvim-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.lua92
-rw-r--r--lua/config/icons.lua65
-rw-r--r--lua/config/init.lua1
-rw-r--r--lua/config/utils.lua73
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