From 8f64f3b31fa69765b816000157aa7632a33bd08e Mon Sep 17 00:00:00 2001 From: Elvis Claros Castro Date: Wed, 30 Jul 2025 12:10:50 -0300 Subject: feat(plugins): actualiza completions, agrega markview/img-clip/mini.diff, mejora codecompanion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Se actualizó el lockfile de plugins a las últimas versiones y se añadieron nuevos plugins. - Se agregó `markview.nvim` para una mejor previsualización de markdown/codecompanion, reemplazando `render-markdown.nvim` por mayor compatibilidad y funcionalidades. - Se incorporó `img-clip.nvim` para pegar imágenes fácilmente en buffers de codecompanion, con plantilla personalizada y soporte de rutas absolutas. - Se añadió `mini.diff.nvim` para visualización ligera de diferencias, integrado como proveedor de diff en codecompanion. - Mejoras en la configuración de codecompanion: - Añadido selector de modelo preferido para adaptadores LLM, priorizando modelos Qwen2.5-coder. - Se cambió el adaptador por defecto de chat/inline a Copilot para mejores resultados. - Integración de la extensión `mcphub.nvim` para funcionalidades adicionales en codecompanion. - Mejor mapeo de iconos para autocompletado. - Limpieza en la configuración de fuentes de autocompletado para mayor consistencia. - Se eliminó la configuración del plugin `render-markdown.nvim` (obsoleto). Estos cambios mejoran el renderizado de markdown, manejo de imágenes, visualización de diferencias y el flujo de trabajo con LLM en Neovim. --- lua/plugins/codecompanion.lua | 104 ++++++++++++++++++++++++++++++++-------- lua/plugins/img-clip.lua | 12 +++++ lua/plugins/markdown-render.lua | 5 -- lua/plugins/markview.lua | 10 ++++ lua/plugins/mini.diff.lua | 10 ++++ 5 files changed, 115 insertions(+), 26 deletions(-) create mode 100644 lua/plugins/img-clip.lua delete mode 100644 lua/plugins/markdown-render.lua create mode 100644 lua/plugins/markview.lua create mode 100644 lua/plugins/mini.diff.lua (limited to 'lua/plugins') diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index 95edce8..e5f087f 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -1,3 +1,27 @@ +-- Choose default model from a list of preferred models. Fall back to first +-- available. +local function preferred_model_picker(preferred) + return function(self) + if self == nil then + -- Debug:render() calls Adapter.schema.model.default() but doesn't pass + -- in `self`. Just return an empty string in this case. + return "" + end + + local choices = self.schema.model.choices(self) + + for _, best in ipairs(preferred) do + for _, choice in ipairs(choices) do + if choice:find(best, 1, true) then + return choice + end + end + end + + return choices[1] + end +end + local IS_DEV = false return { { @@ -8,6 +32,23 @@ return { "nvim-treesitter/nvim-treesitter", "ibhagwan/fzf-lua", -- For fzf provider, file or buffer picker "jellydn/spinner.nvim", -- Show loading spinner when request is started + { + "echasnovski/mini.diff", + config = function() + local diff = require "mini.diff" + diff.setup { source = diff.gen_source.none() } + end, + }, + { + "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" @@ -28,7 +69,13 @@ return { }, schema = { model = { - default = "tinyllama:1.1b", + default = preferred_model_picker { + "qwen2.5-coder:14b", + "qwen2.5-coder:7b", + "qwen2.5-coder:3b", + "qwen2.5-coder:1.5b", + "qwen2.5-coder:0.5b", + }, }, }, }) @@ -49,7 +96,7 @@ return { return require("codecompanion.adapters").extend("copilot", { schema = { model = { - default = "o3-mini" + default = "gpt-4.1", }, }, }) @@ -111,9 +158,9 @@ return { }, schema = { model = { - default = "deepseek-chat" - } - } + default = "deepseek-chat", + }, + }, }) end, -- deepseek = function() @@ -135,24 +182,28 @@ return { -- }, -- }) -- end, - azure_openai = function() - return require("codecompanion.adapters").extend("azure_openai", { - env = { - api_key = "cmd:echo $AZ_DS_API_KEY", - endpoint = "https://DeepSeek-R1-nphob.eastus2.models.ai.azure.com", - }, - schema = { - model = { - default = "DeepSeek-R1-nphob", + azure_openai = function() + return require("codecompanion.adapters").extend("azure_openai", { + env = { + api_key = "cmd:echo $AZ_DS_API_KEY", + endpoint = "https://DeepSeek-R1-nphob.eastus2.models.ai.azure.com", }, - }, - }) - end, + schema = { + model = { + default = "DeepSeek-R1-nphob", + }, + }, + }) + end, + }, + display = { + diff = { + provider = "mini_diff", + }, }, - strategies = { chat = { - adapter = "deepseek", + adapter = "copilot", -- roles = { llm = " Copilot Chat", user = "IT Man" }, }, inline = { adapter = "copilot" }, @@ -161,9 +212,20 @@ return { }, config = function(_, options) require("codecompanion").setup(options) - + require("codecompanion").setup { + extensions = { + mcphub = { + callback = "mcphub.extensions.codecompanion", + opts = { + make_vars = true, + make_slash_commands = true, + show_result_in_chat = true, + }, + }, + }, + } -- Show loading spinner when request is started - local spinner = require("spinner") + local spinner = require "spinner" local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) vim.api.nvim_create_autocmd({ "User" }, { pattern = "CodeCompanionRequest*", diff --git a/lua/plugins/img-clip.lua b/lua/plugins/img-clip.lua new file mode 100644 index 0000000..3926bde --- /dev/null +++ b/lua/plugins/img-clip.lua @@ -0,0 +1,12 @@ +return { + "HakonHarnes/img-clip.nvim", + opts = { + filetypes = { + codecompanion = { + prompt_for_file_name = false, + template = "[Image]($FILE_PATH)", + use_absolute_path = true, + }, + }, + }, +} diff --git a/lua/plugins/markdown-render.lua b/lua/plugins/markdown-render.lua deleted file mode 100644 index 6263fd9..0000000 --- a/lua/plugins/markdown-render.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "MeanderingProgrammer/render-markdown.nvim", - ft = { "markdown", "codecompanion", "copilot-chat" }, -} - diff --git a/lua/plugins/markview.lua b/lua/plugins/markview.lua new file mode 100644 index 0000000..63d2be6 --- /dev/null +++ b/lua/plugins/markview.lua @@ -0,0 +1,10 @@ +return { + "OXY2DEV/markview.nvim", + lazy = false, + opts = { + preview = { + filetypes = { "markdown", "codecompanion", "copilot-chat" }, + ignore_buftypes = {}, + }, + }, +} diff --git a/lua/plugins/mini.diff.lua b/lua/plugins/mini.diff.lua new file mode 100644 index 0000000..de60be2 --- /dev/null +++ b/lua/plugins/mini.diff.lua @@ -0,0 +1,10 @@ +return { + "echasnovski/mini.diff", + config = function() + local diff = require "mini.diff" + diff.setup { + -- Disabled by default + source = diff.gen_source.none(), + } + end, +} -- cgit v1.2.3