From ec011dd9c8d4372f4f8566b87981ecc178675adf Mon Sep 17 00:00:00 2001 From: Elvis Claros Castro Date: Sat, 30 Aug 2025 19:21:25 -0300 Subject: =?UTF-8?q?feat(lsp):=20migraci=C3=B3n=20a=20configuraci=C3=B3n=20?= =?UTF-8?q?nativa=20de=20LSP=20en=20Neovim=20y=20mejora=20de=20servidores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Refactoriza la configuración de LSP para usar vim.lsp.start/autocmd nativo, eliminando la dependencia de lspconfig en la mayoría de los servidores. - Añade funciones auxiliares para detección de directorio raíz y configuración de comandos de servidores. - Asegura que todos los servidores LSP tengan filetypes y capabilities explícitos para mejor integración. - Actualiza dependencias de plugins y eventos para soportar el nuevo flujo nativo de LSP. - Mejora el soporte de inlay hints y agrega un mapeo de teclas para alternar inlay hints. - Reemplaza el uso de lspconfig.util por vim.fs.find nativo para detección de raíz. - Marca la integración legacy de mason como obsoleta, favoreciendo la verificación nativa de ejecutables. - Limpia y estandariza los archivos de configuración de servidores para mayor consistencia. - Elimina el archivo no utilizado MIGRACION_BLINK.md. Esta migración permite mejor compatibilidad con Neovim 0.11+, simplifica la gestión de LSP y mejora el rendimiento y la fiabilidad. --- lua/pi/lsp/default.lua | 71 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 15 deletions(-) (limited to 'lua/pi/lsp/default.lua') diff --git a/lua/pi/lsp/default.lua b/lua/pi/lsp/default.lua index 01e4d73..f7fa455 100644 --- a/lua/pi/lsp/default.lua +++ b/lua/pi/lsp/default.lua @@ -1,8 +1,49 @@ +-- Helper function to find root directory patterns +local function root_pattern(...) + local patterns = { ... } + return function(fname) + for _, pattern in ipairs(patterns) do + local found = vim.fs.find(pattern, { + path = fname, + upward = true, + })[1] + if found then + return vim.fs.dirname(found) + end + end + end +end + +-- Server command configurations +local server_commands = { + emmet_ls = { "emmet-ls", "--stdio" }, + gopls = { "gopls" }, + html = { "vscode-html-language-server", "--stdio" }, + jsonls = { "vscode-json-language-server", "--stdio" }, + lua_ls = { "lua-language-server" }, + phpactor = { "phpactor", "language-server" }, + svelte = { "svelteserver", "--stdio" }, + tailwindcss = { "tailwindcss-language-server", "--stdio" }, + ts_ls = { "typescript-language-server", "--stdio" }, + volar = { "vue-language-server", "--stdio" }, + texlab = { "texlab" }, + pyright = { "pyright-langserver", "--stdio" }, + kotlin_language_server = { "kotlin-language-server" }, + smarty_ls = { "smarty-language-server", "--stdio" }, + clangd = { "clangd" }, +} + return { mason = { enable = true, auto_install = false, }, + get_server_cmd = function(server) + return server_commands[server] or { server } + end, + get_default_root_dir = function() + return root_pattern(".git", "package.json", "Cargo.toml", "composer.json")(vim.api.nvim_buf_get_name(0)) + end, servers = { emmet_ls = { enable = true }, gopls = { enable = true }, @@ -10,33 +51,33 @@ return { jsonls = { enable = true }, lua_ls = { enable = true, neodev = true }, -- nil_ls = { enable = true }, - phpactor = {enable = true }, + phpactor = { enable = true }, -- rust_analyzer = { enable = true }, svelte = { enable = true }, - tailwindcss = { enable = true, filetypes = {"blade", "html", "svelte"} }, + tailwindcss = { enable = true, filetypes = { "blade", "html", "svelte" } }, ts_ls = { enable = true }, volar = { enable = true }, - texlab = { enable = true, filetypes = {"tex", "bib"} }, - pyright = { enable = true, filetypes = {"python"} }, - kotlin_language_server = { enable = true, filetypes = {"kotlin"}, root_dir = require("lspconfig.util").root_pattern( - "build.gradle.kts", - "pom.xml", - ".git" - ) }, + texlab = { enable = true, filetypes = { "tex", "bib" } }, + pyright = { enable = true, filetypes = { "python" } }, + kotlin_language_server = { + enable = true, + filetypes = { "kotlin" }, + root_dir = root_pattern("build.gradle.kts", "pom.xml", ".git"), + }, smarty_ls = { enable = true, - filetypes = {"smarty"}, - root_dir = require("lspconfig.util").root_pattern("composer.json", ".git"), + filetypes = { "smarty" }, + root_dir = root_pattern("composer.json", ".git"), }, clangd = { enable = true, - filetypes = {"c", "cpp", "objc", "objcpp", "cuda", "proto" }, - root_dir = require("lspconfig.util").root_pattern("compile_commands.json", ".git"), + filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto" }, + root_dir = root_pattern("compile_commands.json", ".git"), }, }, - default_options = function (options) + default_options = function(options) return vim.tbl_deep_extend("force", { - on_attach = require"pi.lsp.attach", + 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) -- cgit v1.2.3