78 lines
2.4 KiB
Lua
78 lines
2.4 KiB
Lua
-- ============================================================================
|
|
-- MASON: LSP/DAP/Linter/Formatter package manager
|
|
-- ============================================================================
|
|
-- Manages installation of LSP servers, debuggers, linters, and formatters.
|
|
-- Uses mason-lspconfig for LSP server management and mason-tool-installer
|
|
-- for additional tools. Ensures commonly used language servers are installed:
|
|
-- CSS, Emmet, ESLint, Go, GraphQL, HTML, Java, Lua, Prisma, Python, Svelte,
|
|
-- Tailwind, and TypeScript (vtsls). Also installs formatters (prettier, stylua,
|
|
-- black, isort) and debuggers (debugpy, java-debug-adapter, js-debug-adapter).
|
|
-- ============================================================================
|
|
return {
|
|
"williamboman/mason.nvim",
|
|
dependencies = {
|
|
"williamboman/mason-lspconfig.nvim",
|
|
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
|
},
|
|
config = function()
|
|
-- import mason
|
|
local mason = require("mason")
|
|
|
|
-- import mason-lspconfig
|
|
local mason_lspconfig = require("mason-lspconfig")
|
|
|
|
local mason_tool_installer = require("mason-tool-installer")
|
|
|
|
-- enable mason and configure icons
|
|
mason.setup({
|
|
ui = {
|
|
icons = {
|
|
package_installed = "✓",
|
|
package_pending = "➜",
|
|
package_uninstalled = "✗",
|
|
},
|
|
},
|
|
})
|
|
|
|
mason_lspconfig.setup({
|
|
-- list of servers for mason to install
|
|
ensure_installed = {
|
|
"cssls",
|
|
"emmet_ls",
|
|
"eslint",
|
|
"gopls",
|
|
"graphql",
|
|
"html",
|
|
"jdtls",
|
|
"lua_ls",
|
|
"php",
|
|
"prismals",
|
|
"pyright",
|
|
"svelte",
|
|
"tailwindcss",
|
|
"vtsls", -- VSCode TypeScript Language Server
|
|
},
|
|
-- Prevent ts_ls from auto-starting (we use vtsls instead)
|
|
handlers = {
|
|
["ts_ls"] = function() end, -- noop handler to skip ts_ls
|
|
},
|
|
})
|
|
|
|
mason_tool_installer.setup({
|
|
ensure_installed = {
|
|
"prettier", -- prettier formatter
|
|
"stylua", -- lua formatter
|
|
"isort", -- python formatter
|
|
"black", -- python formatter
|
|
"pylint",
|
|
"eslint_d",
|
|
"tree-sitter-cli", -- required for nvim-treesitter parser compilation
|
|
"java-debug-adapter", -- Java debugger
|
|
"java-test", -- Java test runner
|
|
"debugpy", -- Python debugger
|
|
"js-debug-adapter", -- Node.js/TypeScript debugger
|
|
},
|
|
})
|
|
end,
|
|
}
|