aboutsummaryrefslogtreecommitdiffstats
path: root/lua/pi
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2025-08-30 14:26:57 -0300
committerElvis Claros Castro <elvis@claros.ar>2025-08-30 14:26:57 -0300
commit703b88587bf5bfa7468edffe35be956fe0a06f35 (patch)
tree86ad85947d37b83fa7e990fcddf2154903016e95 /lua/pi
parent8f64f3b31fa69765b816000157aa7632a33bd08e (diff)
downloadnvim-conf-703b88587bf5bfa7468edffe35be956fe0a06f35.tar.gz
nvim-conf-703b88587bf5bfa7468edffe35be956fe0a06f35.zip
feat(completion): migración a blink.cmp para completado más rápido e inteligente
Se reemplazó nvim-cmp y fuentes relacionadas por blink.cmp, incluyendo soporte para Copilot y LaTeX. Se actualizó la configuración de completado para mejorar el rendimiento, resistencia a errores tipográficos y mejor interfaz. Las completaciones DAP ahora se gestionan automáticamente. Se eliminaron cmp-dap y dependencias de plugins no utilizados. feat(ui): agrega nvzone/menu y minty para menús y selección de colores mejorados Se incorporó nvzone/menu para menús contextuales (Oil, Colores) y minty para paletas y selector de color avanzados. Se añadieron nuevas definiciones de menú y atajos para acceso rápido. refactor(lsp): actualiza capacidades LSP para integración con blink.cmp Se modificaron las capacidades del cliente LSP para usar blink.cmp y mejorar la experiencia de completado en todos los servidores. fix(dap): actualiza configuración del adaptador de Firefox para desarrollo local Se cambiaron los parámetros del adaptador de depuración de Firefox para ajustarse al entorno y puerto local. chore: elimina plugins no utilizados (vim-dadbod, deadcolumn, duck, easy-align, orgmode, llm) Se limpió la lista de plugins eliminando los no utilizados o deshabilitados para una configuración más ligera. style(colorscheme): mejora configuración de Solarized Osaka para mejor UI Se mejoró la configuración del esquema de colores con resaltados más legibles, mejores estilos para barras laterales/ventanas flotantes y retroalimentación visual mejorada. docs: agrega MIGRACION_BLINK.md con notas de migración Se añadió archivo de documentación para registrar los pasos y razones de la migración a blink.cmp.
Diffstat (limited to 'lua/pi')
-rw-r--r--lua/pi/completition/blink.lua0
-rw-r--r--lua/pi/completition/init.lua240
-rw-r--r--lua/pi/completition/init_new.lua0
-rw-r--r--lua/pi/dap/configs/javascript.lua28
-rw-r--r--lua/pi/lsp/default.lua1
-rw-r--r--lua/pi/lsp/servers/clangd.lua2
-rw-r--r--lua/pi/lsp/servers/emmet_ls.lua2
7 files changed, 19 insertions, 254 deletions
diff --git a/lua/pi/completition/blink.lua b/lua/pi/completition/blink.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lua/pi/completition/blink.lua
diff --git a/lua/pi/completition/init.lua b/lua/pi/completition/init.lua
index 73f13d1..4f93269 100644
--- a/lua/pi/completition/init.lua
+++ b/lua/pi/completition/init.lua
@@ -1,238 +1,2 @@
-local cmp = require "cmp"
-local lspkind = require "lspkind"
-local luasnip = require "luasnip"
-local cmp_autopairs = require "nvim-autopairs.completion.cmp"
-local compare = require "cmp.config.compare"
-
-cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
-
-cmp.setup {
- window = {
- completion = {
- border = "rounded",
- -- winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None',
- -- winblend = vim.o.pumblend,
- -- scrolloff = 0,
- -- col_offset = 0,
- -- side_padding = 1,
- -- scrollbar = true,
- },
- documentation = {
- -- max_height = math.floor(WIDE_HEIGHT * (WIDE_HEIGHT / vim.o.lines)),
- -- max_width = math.floor((WIDE_HEIGHT * 2) * (vim.o.columns / (WIDE_HEIGHT * 2 * 16 / 9))),
- border = "rounded",
- -- winhighlight = 'FloatBorder:NormalFloat',
- -- winblend = vim.o.pumblend,
- },
- },
- mapping = {
- ["<C-d>"] = cmp.mapping.scroll_docs(-4),
- ["<C-f>"] = cmp.mapping.scroll_docs(4),
- ["<C-e>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.close()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- else
- fallback()
- end
- end, { "i", "s" }),
- ["<C-n>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.choice_active() then
- luasnip.change_choice(1)
- else
- fallback()
- end
- end, { "i", "s" }),
- ["<C-p>"] = cmp.mapping.select_prev_item(),
- ["<C-l>"] = cmp.mapping.select_next_item(),
- ["<C-y>"] = cmp.mapping.confirm {
- behavior = cmp.ConfirmBehavior.Insert,
- select = true,
- },
- ["<c-space>"] = cmp.mapping.complete(),
- },
- sources = {
- { name = "dictionary", keyword_length = 2 },
- { name = "nvim_lua" },
- { name = "nvim_lsp" },
- { name = "path" },
- { name = "luasnip" },
- { name = "copilot" },
- { name = "vimtex" },
- -- { name = 'cmp_ai' },
- {
- name = "html-css",
- option = {
- spa = {
- enable = false, -- SPA mode is disabled by default
- entry_file = "index.html", -- if entry_file is omitted, it defaults to index.html in root dir
- },
- max_count = {}, -- not ready yet
- enable_on = { "html", "css" }, -- set the file types you want the plugin to work on
- file_extensions = { "css", "sass", "less" }, -- set the local filetypes from which you want to derive classes
- style_sheets = {
- -- example of remote styles, only css no js for now
- "https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css",
- "https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css",
- },
- },
- },
- {
- name = "buffer",
- keyword_length = 4,
- option = {
- get_bufnrs = function()
- local bufs = {}
- for _, win in ipairs(vim.api.nvim_list_wins()) do
- local bufnr = vim.api.nvim_win_get_buf(win)
- local buftype = vim.api.nvim_get_option_value("buftype", { buf = bufnr })
- if buftype ~= "terminal" then
- bufs[bufnr] = true
- end
- end
- return vim.tbl_keys(bufs)
- end,
- },
- },
- },
-
- snippet = {
- expand = function(args)
- require("luasnip").lsp_expand(args.body)
- end,
- },
-
- formatting = {
- format = function(entry, vim_item)
- if entry.source.name == "html-css" then
- source_mapping["html-css"] = "[" .. entry.completion_item.provider .. "]" or "[html-css]"
- end
- local KIND_ICONS = {
- Tailwind = "󰹞󰹞󰹞󰹞󰹞󰹞󰹞󰹞",
- Copilot = "",
- CodeCompanion = "",
- Ollama = "",
- Text = "󰉿",
- Method = "󰆧",
- Function = "󰊕",
- Constructor = "",
- Field = "󰜢",
- Variable = "󰀫",
- Class = "󰠱",
- Interface = "",
- Module = "",
- Property = "󰜢",
- Unit = "󰑭",
- Value = "󰎠",
- Enum = "",
- Keyword = "󰌋",
- Snippet = "",
- Color = "󰏘",
- File = "󰈙",
- Reference = "󰈇",
- Folder = "󰉋",
- EnumMember = "",
- Constant = "󰏿",
- Struct = "󰙅",
- Event = "",
- Operator = "󰆕",
- Codeium = "",
- TypeParameter = "󰜅",
- OpenAI = "",
- TinyLlama = "󱝊",
- LlamaCPP = "",
- }
-
- if vim_item.kind == "Color" and entry.completion_item.documentation then
- local _, _, r, g, b =
- ---@diagnostic disable-next-line: param-type-mismatch
- string.find(entry.completion_item.documentation, "^rgb%((%d+), (%d+), (%d+)")
-
- if r and g and b then
- local color = string.format("%02x", r) .. string.format("%02x", g) .. string.format("%02x", b)
- local group = "Tw_" .. color
-
- if vim.api.nvim_call_function("hlID", { group }) < 1 then
- vim.api.nvim_command("highlight" .. " " .. group .. " " .. "guifg=#" .. color)
- end
-
- vim_item.kind = KIND_ICONS.Tailwind
- vim_item.kind_hl_group = group
-
- return vim_item
- end
- end
-
- vim_item.kind = KIND_ICONS[vim_item.kind] or vim_item.kind
- -- Add maxwidth and ellipsis_char in the middle
- local maxwidth = 50
- local ellipsis_char = "..."
- if #vim_item.abbr > maxwidth then
- local half_width = math.floor((maxwidth - #ellipsis_char) / 2)
- vim_item.abbr = string.sub(vim_item.abbr, 1, half_width)
- .. ellipsis_char
- .. string.sub(vim_item.abbr, -half_width)
- end
- return vim_item
- end,
- },
-
- sorting = {
- priority_weight = 2,
- comparators = {
- compare.kind,
- compare.sort_text,
- },
- },
-
- experimental = {
- native_menu = false,
-
- ghost_text = false,
- },
-}
-
-vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#3426C3" })
-vim.api.nvim_set_hl(0, "CmpItemKindCodeium", { fg = "#2ACDBA" })
-vim.api.nvim_set_hl(0, "CmpItemKindOllama", { fg = "#FDFEFF" })
-vim.api.nvim_set_hl(0, "CmpItemKindOpenAI", { fg = "#080808" })
-vim.api.nvim_set_hl(0, "CmpItemKindTinyLlama", { fg = "#DF468C" })
-vim.api.nvim_set_hl(0, "CmpItemKindLlamaCPP", { fg = "#FF8235" })
-
--- Set configuration for specific filetype.
-cmp.setup.filetype("gitcommit", {
- sources = cmp.config.sources({
- { name = "cmp_git" }, -- You can specify the `cmp_git` source if you were installed it.
- }, {
- { name = "buffer" },
- }),
-})
-
--- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
-cmp.setup.cmdline("/", {
- mapping = cmp.mapping.preset.cmdline(),
- sources = {
- { name = "buffer" },
- },
-})
-
--- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
-cmp.setup.cmdline(":", {
- mapping = cmp.mapping.preset.cmdline(),
- sources = cmp.config.sources({
- { name = "path" },
- }, {
- { name = "cmdline" },
- }),
-})
-
-cmp.setup.filetype({ "sql", "mysql", "plsql" }, {
- sources = cmp.config.sources({
- { name = "vim-dadbod-completion" },
- }, {
- { name = "buffer" },
- }),
-})
+-- Load blink.cmp configuration
+require "pi.completition.blink"
diff --git a/lua/pi/completition/init_new.lua b/lua/pi/completition/init_new.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lua/pi/completition/init_new.lua
diff --git a/lua/pi/dap/configs/javascript.lua b/lua/pi/dap/configs/javascript.lua
index ef616f1..30388ac 100644
--- a/lua/pi/dap/configs/javascript.lua
+++ b/lua/pi/dap/configs/javascript.lua
@@ -1,22 +1,22 @@
-local dap = require('dap')
+local dap = require "dap"
dap.adapters.firefox = {
- type = 'executable',
- command = 'firefox-debug-adapter',
+ type = "executable",
+ command = "firefox-debug-adapter",
}
-for _, language in ipairs({ "typescript", "javascript", "javascriptreact", "typescriptreact" }) do
+for _, language in ipairs { "typescript", "javascript", "javascriptreact", "typescriptreact" } do
dap.configurations[language] = {
{
- name = 'Debug with Firefox',
- type = 'firefox',
- request = 'launch',
- reAttach = true,
- url = 'http://localhost:5173',
- webRoot = '${workspaceFolder}',
- firefoxExecutable = '/home/elvis/.local/bin/firefox',
- -- firefoxArgs = {'-start-debugger-server', '--new-instance'},
- enableCRAWorkaround = true,
- liftAccessorsFromPrototypes = 3,
+ name = "Debug with Firefox",
+ type = "firefox",
+ request = "launch",
+ reAttach = true,
+ url = "http://localhost:3000",
+ webRoot = "${workspaceFolder}",
+ firefoxExecutable = "/home/elvis/App/firefox/firefox",
+ -- firefoxArgs = {'-start-debugger-server', '--new-instance'},
+ enableCRAWorkaround = true,
+ liftAccessorsFromPrototypes = 3,
},
}
end
diff --git a/lua/pi/lsp/default.lua b/lua/pi/lsp/default.lua
index b2020db..01e4d73 100644
--- a/lua/pi/lsp/default.lua
+++ b/lua/pi/lsp/default.lua
@@ -38,6 +38,7 @@ return {
return vim.tbl_deep_extend("force", {
on_attach = require"pi.lsp.attach",
flags = require "pi.lsp.flags",
+ capabilities = require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities()),
}, options)
end,
}
diff --git a/lua/pi/lsp/servers/clangd.lua b/lua/pi/lsp/servers/clangd.lua
index 87633cd..e989cf6 100644
--- a/lua/pi/lsp/servers/clangd.lua
+++ b/lua/pi/lsp/servers/clangd.lua
@@ -2,7 +2,7 @@ local lsp_attach = require "pi.lsp.attach"
local lsp_flags = require "pi.lsp.flags"
return function(ops)
- local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
+ local capabilities = require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities())
local config = {
on_attach = lsp_attach,
flags = lsp_flags,
diff --git a/lua/pi/lsp/servers/emmet_ls.lua b/lua/pi/lsp/servers/emmet_ls.lua
index 717edf8..e79a052 100644
--- a/lua/pi/lsp/servers/emmet_ls.lua
+++ b/lua/pi/lsp/servers/emmet_ls.lua
@@ -2,7 +2,7 @@ local lsp_attach = require "pi.lsp.attach"
local lsp_flags = require "pi.lsp.flags"
return function(ops)
- local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
+ local capabilities = require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities())
return vim.tbl_extend("force", {
on_attach = lsp_attach,
flags = lsp_flags,