diff options
| author | Elvis Claros Castro <elvis@claros.ar> | 2026-04-23 23:15:45 -0300 |
|---|---|---|
| committer | Elvis Claros Castro <elvis@claros.ar> | 2026-04-23 23:15:45 -0300 |
| commit | 2895ac732dce0eece5ab2586f5d4d76ee0fab710 (patch) | |
| tree | 16735209162d1b3e3118de8cea23e8541d087ba9 | |
| parent | 7a32abb7c07c320cdeae19897d9daaea48acb1bb (diff) | |
| download | nvim-conf-2895ac732dce0eece5ab2586f5d4d76ee0fab710.tar.gz nvim-conf-2895ac732dce0eece5ab2586f5d4d76ee0fab710.zip | |
feat(neovim): integrar CodeCompanion/MCPHub, añadir autocompletado AI y actualizar plugins
- Añadir integración completa de CodeCompanion (mcphub, adaptadores, UI, herramientas, historial, paleta de acciones)
- Configuración de build/portado de `mcphub` y opciones de tiempo de ejecución
- Configurar adaptadores, herramientas por defecto y múltiples adaptadores para `chat`/`inline`/`cmd`
- Añadir autocomandos de CodeCompanion para mostrar/ocultar el spinner
- Añadir keymaps relacionados con CodeCompanion
- Añadir proveedor de autocompletado AI `minuet-ai` y cambiar la fuente de completado por defecto a `minuet`
- Eliminar el archivo de configuración antiguo de Copilot y varios archivos de configuración de plugins obsoletos (`lua/config/copilot.lua`, `lua/plugins/foatterm.lua`, `lua/plugins/img-clip.lua`, `lua/plugins/markdown-preview.lua`, `lua/plugins/markview.lua`)
- Actualizar muchos pines de plugins en `lazy-lock.json` (bump/reemplazo de commits)
- Comentar los `autocmd` de trim de espacios en blanco y `clang-format` (deshabilita comportamiento de autoformateo/auto-guardar)
- Establecer opciones globales:
- desactivar el autoformateo global de LazyVim: `vim.g.autoformat = false`
- evitar que `:w` agregue automáticamente un salto de línea final: `opt.fixeol = false`
- Ajustes de UI:
- agregar resaltados `FloatBorder`/`FloatTitle` y hacer `PmenuSel` en negrita
- Añadir keymap específico para Rust: sobrescribir `K` para invocar las acciones de hover de `rustaceanvim`
- Actualizar/limpiar muchas configuraciones de plugins:
- reescritura amplia de `lua/plugins/codecompanion.lua`
- añadir/modificar opciones de `lua/plugins/image.lua` (`image.nvim`)
- ajustar UI, pickers y keymaps de `lua/plugins/snacks.lua`
- actualizar versión de `rustaceanvim` y desactivar `format_on_save` en `navigator`
- varias correcciones de formato y consistencia en archivos de plugins
- Actualizar `lua/config/keymaps.lua` para incluir bindings de CodeCompanion
Notas:
- Estos cambios modifican el comportamiento de formateo/autoformateo (autoformateo desactivado y algunos `autocmd` `BufWritePre` comentados). Revisa si quieres reactivar el formateo automático al guardar.
| -rw-r--r-- | README.md | 26 | ||||
| -rw-r--r-- | after/ftplugin/rust.lua | 8 | ||||
| -rw-r--r-- | lazy-lock.json | 128 | ||||
| -rw-r--r-- | lua/config/autocmds.lua | 22 | ||||
| -rw-r--r-- | lua/config/copilot.lua | 92 | ||||
| -rw-r--r-- | lua/config/keymaps.lua | 5 | ||||
| -rw-r--r-- | lua/config/native-colorscheme.lua | 4 | ||||
| -rw-r--r-- | lua/config/options.lua | 6 | ||||
| -rw-r--r-- | lua/plugins/codecompanion.lua | 559 | ||||
| -rw-r--r-- | lua/plugins/completition.lua | 82 | ||||
| -rw-r--r-- | lua/plugins/foatterm.lua | 22 | ||||
| -rw-r--r-- | lua/plugins/image.lua | 22 | ||||
| -rw-r--r-- | lua/plugins/img-clip.lua | 12 | ||||
| -rw-r--r-- | lua/plugins/markdown-preview.lua | 8 | ||||
| -rw-r--r-- | lua/plugins/markview.lua | 13 | ||||
| -rw-r--r-- | lua/plugins/navigator.lua | 1 | ||||
| -rw-r--r-- | lua/plugins/rustaceanvim.lua | 4 | ||||
| -rw-r--r-- | lua/plugins/snacks.lua | 154 |
18 files changed, 597 insertions, 571 deletions
@@ -1,11 +1,12 @@ # Configuracion Para Neovim -Esta es mi configuracion para neovim. +Esta es mí configuración para Neovim, un editor de texto que uso para programar. La uso todos los dias, puede ser visto en mis videos de [youtube](https://youtube.com/@Alpha_Dev) y directos en [twtich](https://twitch.tv/theAlphaDeveloper) El objetivo de mi configuracion es ayudarme en mi trabajo cotidiano convirtiendo neovim en la mejor herramienta para poder programar. ## Neovim + Utilizo siempre la ultima version de Neovim, hago el build desde el source code una vez por semana (quizas aveces mas si estoy aburrido jaja).  @@ -20,12 +21,14 @@ En el mismo directorio se encuentra la configuracion para "Diagnostic" donde con Todas estas configuraciones las cargo con el evento `VeryLazy` utilizando un autocomando. ## Plugins + Para plugin manager utilizo [lazy](https://github.com/folke/lazy.nvim) el setup del plugin se encuentra en `./lua/config/lazy.lua` Utilizo la funcionalidad de lazy donde se puede especificar un directorio `./lua/plugins/` como fuente para las especificaciones de los plugins. Trato de configurar un plugin por archivo, llamando a este archivo como el plugin o como la funcionalidad que realiza. Nota tambien tengo el archivo `./lua/plugins/init.lua` donde tengo los que no separe, o no me parece suficiente logica para separarlos en su propio archivo de una linea. ### Configuraciones + Para configurar los plugins utilizo la opcion de lazy `config` donde se puede definir de las siguientes formas. Utilizando la opcion `opts` no es necesario utilizar el `config` dado que lazy va a ver la opcion y automaticamente hacer el `require("plugin").setup(opts)` con las opcioens definidas Utilizando el valor `true` para `config` donde le indica que tiene que hacer el `require("plugin").setup()` pero sin opciones. @@ -33,10 +36,12 @@ Utilizando una funcion como valor para `config` donde directamente configuro lo Utilizando una funcion como valor para `config` donde llamo a otro archivo como `./lua/pi/lsp` donde la configuracion es extensa y entonces no quiero tenerla toda ahi. ### LazyLoading + Dado que utilizamos el package manager llamado lazy no podia dejar de hablar de esto que es una de sus configuraciones mas importantes, como configurar los plugins para que se carguen solo cuando son necesarios. Es normal que plugins son solamente requeridos para algunos momentos, entonces no tiene sentido hacerlos cargar al inicio cuando no sabemos siquiera si van a ser ejecutados. Como ejemplo voy a utilizar `./lua/plugins/database.lua` que es el cual me permite realizar consultas a bases de datos desde dentro de neovim [video](https://youtu.be/su7lWYjnM44). Este cumple con lo antes mencionado que no quiero que se cargue cuando inicia neovim. + ```lua return { "kristijanhusak/vim-dadbod-ui", @@ -51,7 +56,9 @@ return { end } ``` + Para poder realizar eso utilizo la propiedad `keys` la cual cumple una doble funcion. + - le indica a lazy que el plugin solo debe cargarse cuando se apreta esa combinacion de teclas. - Si tiene un segundo argumento la definicion la toma como el valor o funcion con la cual configurar el keymap, lo cual permite tener un solo lugar donde definir los keymas para el plugin y que lazy sepa cuales son. @@ -63,12 +70,14 @@ La ultima es definiendo por eventos. Los eventos son señales que neovim envia y Lo utilizo en mis configuraciones como telescope, lsp, dressing, snippets y completition. ## Colorscheme y fuentes + Para colorschem uso [Tokyo Night](https://github.com/folke/tokyonight.nvim) Como fuente utilizo [Victor Mono](https://rubjo.github.io/victor-mono) Utilizo el mismo theme para mi terminal Kitty, y la configuracion de la fuente esta en kitty Para symbolos utilizo como complemento los symbolos de [NerdFonts](https://www.nerdfonts.com/) ## LSP soportando lenguajes + Neovim implementa un cliente de LSP (language server protocol). Esto nos permite una mayor interaccion con distintos lenguajes sin requerir distintos plugins para cada lenaguaje individual. Neovim en si no sabe nada de los lenguajes que le digamos, neovim simplemente sabe como actuar como cliente, esta en nosotros intalar el servidor correspondiente al lenguaje correspondiente y decirle a neovim como queremos interactuar. Mi configuración esta separada en las siguientes partes @@ -76,18 +85,19 @@ Mi configuración esta separada en las siguientes partes - `./lua/plugins/lsp.lua`: Aca es donde tengo definidos los paquetes que utilizo relacionado a lsp - `./lua/pi/lsp`: en este directorio esta mi configuracion en relacion a esto - `./lua/pi/lsp/init.lua`: es el primer archivo en cargar. en este configuro mason quien se va a encargar de instalarlos servidores de lsp necesarios. -Luego aplico la configuracion particular para cada server. -Idealmente este archivo no necesesita ser modificado. + Luego aplico la configuracion particular para cada server. + Idealmente este archivo no necesesita ser modificado. - `./lua/pi/lsp/attach.lua`: este ya es un archivo más interesante, en donde configuro los mappings relacionados a lsp -estos solamente van a registrarse para buffers que tengan asociado un servidor de lsp. -Aca se pueden cambiar los keybindings o registrar nuevas funciones -- `./lua/pi/lsp/servers.lua`: acá llegamos al más importante donde registramos los servidores con los mismos nombres que *lspconfig* [ref](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md). En este archivo tenemos una lista que la clave es el nombre del server y como valor es la funcion de registro, para la mayoria podemos utilizar el default, pero algunos servidores tienen una configuracion adicional para esto se puede registrar un callback que debera devolver una tabla con los parametros necesarios. - + estos solamente van a registrarse para buffers que tengan asociado un servidor de lsp. + Aca se pueden cambiar los keybindings o registrar nuevas funciones +- `./lua/pi/lsp/servers.lua`: acá llegamos al más importante donde registramos los servidores con los mismos nombres que _lspconfig_ [ref](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md). En este archivo tenemos una lista que la clave es el nombre del server y como valor es la funcion de registro, para la mayoria podemos utilizar el default, pero algunos servidores tienen una configuracion adicional para esto se puede registrar un callback que debera devolver una tabla con los parametros necesarios. ## Completition + Como motor de completition utilizo `nvim/cmp`. este provee todas las funcionalidas que necesito. la configuration se puede encontrar en `./lua/pi/completition/init.lua` donde defino los keymaps y se configura la integracion con las distintas fuentes como lsp, path, luasnip y otros plugins. ## Snippets -Para snippets utilizo *LuaSnip*, el cual la configuración la mantengo en `./lua/plugins/snippets.lua`. + +Para snippets utilizo _LuaSnip_, el cual la configuración la mantengo en `./lua/plugins/snippets.lua`. Pero en este archivo no mantengo los snippets en si mismos, en este solamente tengo la configuracion de como interactua, los snippets se encuentran en `./lua/pi/snips/ft/` cual carpeta contiene un archivo por cada file type y se registran automaticamente cuando agrego un nuevo archivo (recargar con `<leader><leader>s`, o reiniciar neovim). diff --git a/after/ftplugin/rust.lua b/after/ftplugin/rust.lua index df6dc7b..8d34f5e 100644 --- a/after/ftplugin/rust.lua +++ b/after/ftplugin/rust.lua @@ -8,3 +8,11 @@ vim.keymap.set( end, { silent = true, buffer = bufnr } ) +vim.keymap.set( + "n", + "K", -- Override Neovim's built-in hover keymap with rustaceanvim's hover actions + function() + vim.cmd.RustLsp({ 'hover', 'actions' }) + end, + { silent = true, buffer = bufnr } +) diff --git a/lazy-lock.json b/lazy-lock.json index 77410d8..e13e24b 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,123 +1,121 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "CopilotChat.nvim": { "branch": "main", "commit": "df5376c132382dd47e3e552612940cbf25b3580c" }, + "CopilotChat.nvim": { "branch": "main", "commit": "5378035c2eb4089de245473dec1768e0986543bd" }, "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, - "LazyVim": { "branch": "main", "commit": "c64a61734fc9d45470a72603395c02137802bc6f" }, + "LazyVim": { "branch": "main", "commit": "cdc47ae6152872ad09d588697906bf93cba3fcd9" }, "LuaSnip": { "branch": "master", "commit": "500981ff6cefc7343e3959ef0f939bd0bfd49ba9" }, "NeoColumn.nvim": { "branch": "main", "commit": "db7695c7c70fcacd290712deef659bca464634ee" }, "SmoothCursor.nvim": { "branch": "main", "commit": "12518b284e1e3f7c6c703b346815968e1620bee2" }, "animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" }, - "baleia.nvim": { "branch": "main", "commit": "1b25eac3ac03659c3d3af75c7455e179e5f197f7" }, - "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, - "blink-cmp-latex": { "branch": "main", "commit": "3a958361e275bb5996e8393e7b2595b2f40c15ca" }, - "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" }, - "buffer_manager.nvim": { "branch": "main", "commit": "a39ab3851a5487ac39cac4be43715b69349b8df7" }, - "codecompanion-history.nvim": { "branch": "main", "commit": "eb99d256352144cf3b6a1c45608ec25544a0813d" }, - "codecompanion.nvim": { "branch": "main", "commit": "8ad65eef735b31bb47d76f59d878ee1bac4bdc85" }, + "blink-cmp-latex": { "branch": "main", "commit": "4f2910b98dabed17a1667ab806354faa8763098e" }, + "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, + "buffer_manager.nvim": { "branch": "main", "commit": "a0ac2db39c8bd4a2b6ca897f38c88770f90d9323" }, + "codecompanion-history.nvim": { "branch": "main", "commit": "bc1b4fe06eaaf0aa2399be742e843c22f7f1652a" }, + "codecompanion.nvim": { "branch": "main", "commit": "f70759ee8b63b46ea0cf158dc22daa2a5e9c6319" }, "color-picker.nvim": { "branch": "master", "commit": "06cb5f853535dea529a523e9a0e8884cdf9eba4d" }, "composer.nvim": { "branch": "main", "commit": "ec9537969adc7fc128cfe9c3a9925850455896c8" }, - "copilot.lua": { "branch": "master", "commit": "4383e05a47493d7ff77b058c0548129eb38ec7fb" }, "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, "elixir-tools.nvim": { "branch": "main", "commit": "b51b48edc668924a6b2f6610f9a0aff34741d20e" }, - "firenvim": { "branch": "master", "commit": "a18ef908ac06b52ad9333b70e3e630b0a56ecb3d" }, - "floaterm": { "branch": "main", "commit": "fc2efaf25eeefcb33177d5807c0c745e125cf293" }, - "flutter-tools.nvim": { "branch": "main", "commit": "c7dfaa9ccca008fbc55ca0b4e5d9ef80e0248902" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "firenvim": { "branch": "master", "commit": "69d3411d08d35bb9b3e84b9deaff4b9b078a30e3" }, + "flutter-tools.nvim": { "branch": "main", "commit": "7fc434e99297af83cba10deff008be53a008a6d5" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "git-worktree.nvim": { "branch": "master", "commit": "f247308e68dab9f1133759b05d944569ad054546" }, - "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, - "guihua.lua": { "branch": "master", "commit": "ef44ba40f12e56c1c9fa45967f2b4d142e4b97a0" }, + "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" }, + "guihua.lua": { "branch": "master", "commit": "d178056728548ed8a99cce94de47b7500bd6889a" }, "hydra.nvim": { "branch": "master", "commit": "3ced42c0b6a6c85583ff0f221635a7f4c1ab0dd0" }, "icon-picker.nvim": { "branch": "master", "commit": "3ee9a0ea9feeef08ae35e40c8be6a2fa2c20f2d3" }, - "image.nvim": { "branch": "main", "commit": "acbd1d7d64ac0643021a6146eb0557e7c2e793d0" }, - "img-clip.nvim": { "branch": "main", "commit": "e7e29f0d07110405adecd576b602306a7edd507a" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" }, + "img-clip.nvim": { "branch": "main", "commit": "b6ddfb97b5600d99afe3452d707444afda658aca" }, + "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "indent-o-matic": { "branch": "master", "commit": "764da1f30b5bb4a49035c3abc9a586322296b812" }, "json-nvim": { "branch": "master", "commit": "beb76a5ffa0a936677695bc82cc868654aad4398" }, - "laravel.nvim": { "branch": "main", "commit": "80e3621096cc2ce35079096a0a4a3f5cbb19b95f" }, - "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "laravel.nvim": { "branch": "main", "commit": "e63451559abeec2bf977e832fcd4dd85925f9e66" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" }, - "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, + "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" }, "luarocks.nvim": { "branch": "main", "commit": "1db9093915eb16ba2473cfb8d343ace5ee04130a" }, - "markdown-preview.nvim": { "branch": "main", "commit": "cc05a30393e2bf9f12e2d59fc35a1aa928ed1727" }, - "markview.nvim": { "branch": "main", "commit": "86fcabc793e8aa361cb308e794cd0e1356fdc0e1" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "7d527c76c43f46294de9c19d39c5a86317809b4b" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, - "mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" }, - "mcphub.nvim": { "branch": "main", "commit": "8ff40b5edc649959bb7e89d25ae18e055554859a" }, + "markview.nvim": { "branch": "main", "commit": "e27dee8b2a61f89ac3a06deae0264ad1d3f7b62c" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, + "mason.nvim": { "branch": "main", "commit": "12ddd182d9efbdc848b540f16484a583d52da0fb" }, + "mcphub.nvim": { "branch": "main", "commit": "7cd5db330f41b7bae02b2d6202218a061c3ebc1f" }, "menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" }, "middleclass": { "branch": "master", "commit": "9fab4d5bca67262614960960ca35c4740eb2be2c" }, - "mini.diff": { "branch": "main", "commit": "fbb93ea1728e7c9d0944df8bd022a68402bd2e7e" }, - "mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" }, - "mini.nvim": { "branch": "main", "commit": "c007f4b3822c99b98328bc214589a721c69d1514" }, + "mini.diff": { "branch": "main", "commit": "ab11575a6c147ecfba894d676d0c93e855021d34" }, + "mini.icons": { "branch": "main", "commit": "bac6317300e205335df425296570d84322730067" }, + "mini.nvim": { "branch": "main", "commit": "5849ef04c32a6a8e55957b946c0a275801d87530" }, "minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, - "navigator.lua": { "branch": "master", "commit": "deaf00338fe288d24f5632b1842130f8d9c15b0a" }, - "neogen": { "branch": "main", "commit": "d7f9461727751fb07f82011051338a9aba07581d" }, - "neorg": { "branch": "main", "commit": "59775af2fadb85cec6bff08a584c2c98a1694ea6" }, - "neotest": { "branch": "master", "commit": "deadfb1af5ce458742671ad3a013acb9a6b41178" }, + "minuet-ai.nvim": { "branch": "main", "commit": "173d8c9451504cdf93ce172f710487d3c6191ce8" }, + "navigator.lua": { "branch": "master", "commit": "f460f3d494eb0df7769ce7e51a240967219bb38e" }, + "neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" }, + "neorg": { "branch": "main", "commit": "1f14d72aad7165eac307a2a2f6be0fb97a04b3c2" }, + "neotest": { "branch": "master", "commit": "fd0b7986dd0ae04e38ec7dc0c78a432e3820839c" }, "neotest-go": { "branch": "main", "commit": "59b50505053f9c45a9febb79e11a56206c3e3901" }, "neotest-plenary": { "branch": "master", "commit": "3523adcf9ffaad1911960c5813b0136c1b63a2ec" }, - "neotest-python": { "branch": "master", "commit": "b0d3a861bd85689d8ed73f0590c47963a7eb1bf9" }, + "neotest-python": { "branch": "master", "commit": "e6df4f1892f6137f58135917db24d1655937d831" }, "neotest-vim-test": { "branch": "master", "commit": "75c4228882ae4883b11bfce9b8383e637eb44192" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, - "none-ls-extras.nvim": { "branch": "main", "commit": "70659cc3d38151424298ab46b0f67f2251cef231" }, + "none-ls-extras.nvim": { "branch": "main", "commit": "70ec8815cdf186223af04cc5a15bc8bdface0ef0" }, "none-ls-luacheck.nvim": { "branch": "main", "commit": "a1dfea0d4c40c4023829c8b9a7ab0a26135985ca" }, "none-ls-shellcheck.nvim": { "branch": "main", "commit": "0f84461241e76e376a95fb7391deac82dc3efdbf" }, - "none-ls.nvim": { "branch": "main", "commit": "1917c86818b5e058f53c2ea0ad38fc57534d62fc" }, + "none-ls.nvim": { "branch": "main", "commit": "e135361b9c11755ef6c48f54a2c970c509b56239" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, - "numb.nvim": { "branch": "master", "commit": "8164fd3d4d0c3ad2b1b111e9a63a59178981b743" }, - "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, - "nvim-bqf": { "branch": "main", "commit": "ba2b365969d7c2c6301d48e13aeee59568765529" }, + "numb.nvim": { "branch": "master", "commit": "12ef3913dea8727d4632c6f2ed47957a993de627" }, + "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, + "nvim-bqf": { "branch": "main", "commit": "c282a62bec6c0621a1ef5132aa3f4c9fc4dcc2c7" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "5860c7c501eb428d3137ee22c522828d20cca0b3" }, + "nvim-dap": { "branch": "master", "commit": "45a69eba683a2c448dd9ecfc4de89511f0646b5f" }, "nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" }, - "nvim-dap-python": { "branch": "master", "commit": "64652d1ae1db80870d9aac7132d76e37acd86a26" }, - "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, + "nvim-dap-python": { "branch": "master", "commit": "1808458eba2b18f178f990e01376941a42c7f93b" }, + "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, "nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" }, - "nvim-early-retirement": { "branch": "main", "commit": "cd29cf40af7473530a8598245ba1d348fd5e1fa0" }, - "nvim-lspconfig": { "branch": "master", "commit": "07f4e93de92e8d4ea7ab99602e3a8c9ac0fb778a" }, + "nvim-early-retirement": { "branch": "main", "commit": "3b05315a61c8f01bb893249f9e044fc359122c9d" }, + "nvim-lspconfig": { "branch": "master", "commit": "81878de76c0de4ce289513734ad80c31ec7871b8" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, "nvim-python-repl": { "branch": "main", "commit": "09e77dcb9b44e28062a754f8019003bb88fe9734" }, "nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" }, "nvim-transparent": { "branch": "main", "commit": "8ac59883de84e9cd1850ea25cf087031c5ba7d54" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-context": { "branch": "master", "commit": "660861b1849256398f70450afdf93908d28dc945" }, - "nvim-treesitter-endwise": { "branch": "master", "commit": "a61a9de7965324d4019fb1637b66bfacdcb01f51" }, + "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, + "nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" }, + "nvim-treesitter-endwise": { "branch": "master", "commit": "8fe8a95630f4f2c72a87ba1927af649e0bfaa244" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" }, - "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, - "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, - "oil-git-status.nvim": { "branch": "main", "commit": "4b5cf53842c17a09420919e655a6a559da3112d7" }, + "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" }, + "nvim-web-devicons": { "branch": "master", "commit": "c72328a5494b4502947a022fe69c0c47e53b6aa6" }, + "oil-git-status.nvim": { "branch": "main", "commit": "a3e2ccb00cb8822115e28a9a1791eda051d940c9" }, "oil-image-preview.nvim": { "branch": "master", "commit": "a71eacc879e1264339a62019ee3c2ff376f2cc39" }, - "oil.nvim": { "branch": "master", "commit": "01cb3a8ad7d5e8707041edc775af83dbf33838f4" }, + "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, "pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" }, "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "refactoring.nvim": { "branch": "master", "commit": "6784b54587e6d8a6b9ea199318512170ffb9e418" }, - "rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" }, - "rustowl": { "branch": "main", "commit": "ac3deb26b168f40679e7a8704d58daae3370f16d" }, - "smart-splits.nvim": { "branch": "master", "commit": "e892a5da963813119d053af5b2260e3cd9d9f037" }, - "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, + "refactoring.nvim": { "branch": "master", "commit": "f06ac3d457128f9d512103399b367c4be49a2421" }, + "rustaceanvim": { "branch": "master", "commit": "f69c85a955b9a83d495e3dc8d43adb6364a0b765" }, + "rustowl": { "branch": "main", "commit": "d0754681dc49d3bf78bf5fbb37846bbc63ad9215" }, + "smart-splits.nvim": { "branch": "master", "commit": "78b9d3bd21fe479690ae5e08a1bf3602698466d8" }, + "snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" }, "spinner.nvim": { "branch": "main", "commit": "67ae7f64a6a7940be10c226301413521da26ea72" }, - "telescope.nvim": { "branch": "master", "commit": "e69b434b968a33815e2f02a5c7bd7b8dd4c7d4b2" }, + "telescope.nvim": { "branch": "master", "commit": "506338434fec5ad19cb1f8d45bf92d66c4917393" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, - "treesj": { "branch": "main", "commit": "4770492244ccecdc9b01e0e81fa8f2f6b4a23841" }, + "tree-sitter-norg": { "branch": "main", "commit": "d7edfaf89198aab652c7a1f0f818196efedaccfb" }, + "tree-sitter-norg-meta": { "branch": "main", "commit": "729d4e54fb881ba0ddf0f925ec78401354c7c6db" }, + "treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, "twilight.nvim": { "branch": "main", "commit": "664e752f4a219801265cc3fc18782b457b58c1e1" }, - "undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" }, + "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, "vim-dispatch": { "branch": "master", "commit": "a2ff28abdb2d89725192db5b8562977d392a4d3f" }, "vim-dotenv": { "branch": "master", "commit": "5c51cfcf8d87280d6414e03cd6b253eb70ecb800" }, "vim-eunuch": { "branch": "master", "commit": "e86bb794a1c10a2edac130feb0ea590a00d03f1e" }, - "vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }, + "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" }, "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, "vim-jsdoc": { "branch": "master", "commit": "6e5bc2a1f98a69e4902081c9f5969b228a7a5fd6" }, "vim-lastplace": { "branch": "master", "commit": "e58cb0df716d3c88605ae49db5c4741db8b48aa9" }, "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, "vim-rhubarb": { "branch": "master", "commit": "5496d7c94581c4c9ad7430357449bb57fc59f501" }, "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, - "vim-test": { "branch": "master", "commit": "bbdc7f5d6280a047c3b1a951614454555a566356" }, - "vimtex": { "branch": "master", "commit": "32bcb3922c20588e00de68f73c86312eda2141ad" }, + "vim-test": { "branch": "master", "commit": "bc0e94059de40641d163516a83c63bc45c716acf" }, + "vimtex": { "branch": "master", "commit": "0f42a5130432d4af2e6fd21fb93a76915ff1f090" }, "volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }, "zen-mode.nvim": { "branch": "main", "commit": "8564ce6d29ec7554eb9df578efa882d33b3c23a7" } diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua index 1d3fe8a..f9ce4da 100644 --- a/lua/config/autocmds.lua +++ b/lua/config/autocmds.lua @@ -32,19 +32,19 @@ vim.api.nvim_create_autocmd("FileType", { end, }) -vim.api.nvim_create_autocmd({ "BufWritePre" }, { - callback = function() - vim.cmd [[%s/\s\+$//e]] - end, -}) +-- vim.api.nvim_create_autocmd({ "BufWritePre" }, { +-- callback = function() +-- vim.cmd [[%s/\s\+$//e]] +-- end, +-- }) -- Auto-format C/C++ files with clang-format on save -vim.api.nvim_create_autocmd("BufWritePre", { - pattern = { "*.c", "*.h", "*.cpp", "*.hpp", "*.cc", "*.cxx" }, - callback = function() - vim.lsp.buf.format { async = false } - end, -}) +-- vim.api.nvim_create_autocmd("BufWritePre", { +-- pattern = { "*.c", "*.h", "*.cpp", "*.hpp", "*.cc", "*.cxx" }, +-- callback = function() +-- vim.lsp.buf.format { async = false } +-- end, +-- }) -- Función para alternar el ajuste de línea function ToggleWrap() diff --git a/lua/config/copilot.lua b/lua/config/copilot.lua deleted file mode 100644 index 9b9b6fc..0000000 --- a/lua/config/copilot.lua +++ /dev/null @@ -1,92 +0,0 @@ -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/keymaps.lua b/lua/config/keymaps.lua index 88251eb..3b20175 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -126,3 +126,8 @@ vim.keymap.set("n", "<leader>pdf", function() require("dap-python").test_file() end) map("n", "<leader>ft", "<CMD>FloatermToggle<CR>", { desc = "run terminal" }) + +-- CodeCompanion +map({ "n", "v" }, "<C-a>", "<cmd>CodeCompanionActions<cr>", { noremap = true, silent = true }) +map({ "n", "v" }, "<LocalLeader>a", "<cmd>CodeCompanionChat Toggle<cr>", { noremap = true, silent = true }) +map("v", "ga", "<cmd>CodeCompanionChat Add<cr>", { noremap = true, silent = true }) diff --git a/lua/config/native-colorscheme.lua b/lua/config/native-colorscheme.lua index 029cf43..4024f3f 100644 --- a/lua/config/native-colorscheme.lua +++ b/lua/config/native-colorscheme.lua @@ -72,6 +72,8 @@ local highlights = { Normal = { fg = colors.fg, bg = colors.none }, NormalFloat = { fg = colors.fg, bg = colors.bg_float }, NormalNC = { fg = colors.fg, bg = colors.none }, + FloatBorder = { fg = colors.border, bg = colors.bg_float }, + FloatTitle = { fg = colors.blue100, bg = colors.bg_float, bold = true }, -- Cursor Cursor = { fg = colors.bg, bg = colors.fg }, @@ -102,7 +104,7 @@ local highlights = { -- Popup menu Pmenu = { fg = colors.fg, bg = colors.bg_popup }, - PmenuSel = { bg = colors.bg_highlight }, + PmenuSel = { fg = colors.fg, bg = colors.bg_highlight, bold = true }, PmenuSbar = { bg = colors.bg_popup }, PmenuThumb = { bg = colors.fg_gutter }, diff --git a/lua/config/options.lua b/lua/config/options.lua index 1400d03..2d80d08 100644 --- a/lua/config/options.lua +++ b/lua/config/options.lua @@ -4,6 +4,9 @@ vim.g.mapleader = " " -- Configura el sistema de snippets para utilizar "luasnip". vim.g.snippets = "luasnip" +-- Desactiva el autoformateo global de LazyVim al guardar. +vim.g.autoformat = false + -- Configuración de opciones globales local opt = vim.o @@ -48,6 +51,9 @@ opt.spelllang = "en_us,es_es,es" -- Desactiva la creación de archivos de intercambio. opt.swapfile = false +-- Evita que :w agregue automáticamente un salto de línea final faltante. +opt.fixeol = false + -- Habilita la persistencia de archivos undofile. opt.undofile = true diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index 052b066..90c78b8 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -1,291 +1,328 @@ -local IS_DEV = false return { - { - dir = IS_DEV and "~/Projects/research/codecompanion.nvim" or nil, - "olimorris/codecompanion.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - -- "nvim-telescope/telescope.nvim", -- Using telescope for file and buffer picker - "jellydn/spinner.nvim", -- Show loading spinner when request is started - "ravitemer/codecompanion-history.nvim", -- History management extension - { - "echasnovski/mini.diff", - config = function() - local diff = require "mini.diff" - diff.setup { source = diff.gen_source.none() } - end, + "olimorris/codecompanion.nvim", + branch = "main", + dependencies = { + { + "ravitemer/mcphub.nvim", + dependencies = { + "nvim-lua/plenary.nvim", }, - { - "ravitemer/mcphub.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - }, - build = "npm install -g mcp-hub@latest", -- Installs `mcp-hub` node binary globally - config = function() - require("mcphub").setup() - end, - }, - }, - opts = { - log_level = "TRACE", -- or "DEBUG" - adapters = { - http = { - ollama = function() - return require("codecompanion.adapters").extend("ollama", { - name = "tinyllama", - env = { - url = "http://127.0.0.1:11434", - -- api_key = "", - }, - headers = { - ["Content-Type"] = "application/json", - -- ["Authorization"] = "Bearer ${api_key}", - }, - parameters = { - sync = true, - }, - schema = { - model = { - default = "qwen2.5-coder:0.5b", - }, - }, - }) - end, - anthropic = function() - return require("codecompanion.adapters").extend("anthropic", { - env = { - api_key = "cmd:echo $ANTHROPIC_API_KEY", - }, - schema = { - model = { - default = "claude-3-opus-20240229", - }, - }, - }) - end, - copilot = function() - return require("codecompanion.adapters").extend("copilot", { - schema = { - model = { - default = "gpt-4.1", - }, - }, - }) - end, - gemini = function() - return require("codecompanion.adapters").extend("gemini", { - env = { - api_key = "cmd:echo $GEMINI_API_KEY", + build = "bundled_build.lua", -- Bundles `mcp-hub` binary along with the neovim plugin + config = f |