return { { "mason-org/mason.nvim", build = ":MasonUpdate", cmd = { "Mason", "MasonInstall", "MasonUninstall" }, opts = { ui = { border = "rounded" } }, }, { "mason-org/mason-lspconfig.nvim", event = { "BufReadPre", "BufNewFile" }, dependencies = { "mason-org/mason.nvim", "neovim/nvim-lspconfig", "hrsh7th/cmp-nvim-lsp", }, opts = { ensure_installed = { "pyright", -- Python "ts_ls", -- TypeScript/JavaScript (was tsserver) "lua_ls", -- Lua "intelephense", -- PHP "html", -- HTML "cssls", -- CSS "jsonls", -- JSON "yamlls", -- YAML "bashls", -- Bash "dockerls", -- Docker "gopls", -- Go "rust_analyzer", -- Rust "jdtls", -- Java "clangd", -- C/C++ "omnisharp", -- C# "vimls", -- Vim "elixirls", -- Elixir "kotlin_language_server", "sqlls", -- SQL "lemminx", -- XML "marksman", -- Markdown "svelte", -- Svelte "tailwindcss", -- Tailwind CSS "angularls", -- Angular "vuels", -- Vue.js "powershell_es", -- PowerShell "fortls", -- Fortran }, automatic_installation = true, }, config = function(_, opts) require("mason").setup({}) require("mason-lspconfig").setup(opts) local capabilities = require("cmp_nvim_lsp").default_capabilities() -- Custom setup example for Lua vim.lsp.config("lua_ls", { capabilities = capabilities, settings = { Lua = { diagnostics = { globals = { "vim" } }, workspace = { checkThirdParty = false }, }, }, }) -- Generic setup for everything else for _, server in ipairs(opts.ensure_installed or {}) do if server ~= "lua_ls" then vim.lsp.config(server, { capabilities = capabilities }) end end -- Enable all listed servers vim.lsp.enable(opts.ensure_installed) end, } }