return { { -- Configuración de LSP y Plugins "neovim/nvim-lspconfig", dependencies = { { "williamboman/mason.nvim", config = true }, "williamboman/mason-lspconfig.nvim", "WhoIsSethDaniel/mason-tool-installer.nvim", { "j-hui/fidget.nvim", opts = {} }, { "folke/neodev.nvim", opts = {} }, }, config = function() -- 1. Definir la tabla de servidores con sus configuraciones específicas local servers = { -- Configuración para Lua lua_ls = { settings = { Lua = { completion = { callSnippet = "Replace", }, workspace = { -- SOLO ANALIZA ARCHIVOS DE NEOVIM library = { vim.fn.expand("$VIMRUNTIME"), vim.fn.stdpath("config"), }, checkThirdParty = false, -- Evita advertencias de paquetes externos maxPreload = 1000, -- Reduce archivos precargados preloadFileSize = 100, -- Límite de tamaño de archivos analizados }, diagnostics = { globals = { "vim" }, -- Evita advertencias sobre `vim` no definido disable = { "missing-fields" } }, }, }, -- **EVITA QUE NEOVIM USE /home/teraflops COMO ROOT** root_dir = function(fname) return require("lspconfig.util").find_git_ancestor(fname) or vim.fn.stdpath("config") end, }, -- ✅ CORRECCIÓN: Coma agregada para separar configuraciones -- **Configuración para Ansible Language Server (ansiblels)** ansiblels = { filetypes = { "ansible", "yaml.ansible" }, settings = { ansible = { ansible = { path = "ansible" }, executionEnvironment = { enabled = false }, python = { interpreterPath = "python" }, validation = { enabled = true, lint = { enabled = true, path = "ansible-lint" } } } } }, } -- 2. Definir capacidades extendidas (nvim-cmp) local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) -- 3. Configurar Mason require("mason").setup() -- 4. Configurar Mason-LSPConfig require("mason-lspconfig").setup({ ensure_installed = vim.tbl_keys(servers), automatic_installation = true, }) -- 5. Configurar Mason-Tool-Installer local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { "stylua", "ansible-language-server", "ansible-lint", }) require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) -- 6. Configurar los servidores con sus respectivas configuraciones require("mason-lspconfig").setup_handlers({ function(server_name) local server = servers[server_name] or {} server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) require("lspconfig")[server_name].setup(server) end, }) end, }, }