diff options
Diffstat (limited to 'nvim/lua/user/lsp/mason.lua')
-rw-r--r-- | nvim/lua/user/lsp/mason.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/nvim/lua/user/lsp/mason.lua b/nvim/lua/user/lsp/mason.lua new file mode 100644 index 0000000..a2e5384 --- /dev/null +++ b/nvim/lua/user/lsp/mason.lua @@ -0,0 +1,47 @@ +local servers = { + "lua_ls", + "pyright", + "jsonls", +} + +local settings = { + ui = { + border = "none", + icons = { + package_installed = "◍", + package_pending = "◍", + package_uninstalled = "◍", + }, + }, + log_level = vim.log.levels.INFO, + max_concurrent_installers = 4, +} + +require("mason").setup(settings) +require("mason-lspconfig").setup({ + ensure_installed = servers, + automatic_installation = true, +}) + +local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") +if not lspconfig_status_ok then + return +end + +local opts = {} + +for _, server in pairs(servers) do + opts = { + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + } + + server = vim.split(server, "@")[1] + + local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) + if require_ok then + opts = vim.tbl_deep_extend("force", conf_opts, opts) + end + + lspconfig[server].setup(opts) +end |