summaryrefslogtreecommitdiff
path: root/nvim/lua/user/lsp/mason.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/lua/user/lsp/mason.lua')
-rw-r--r--nvim/lua/user/lsp/mason.lua47
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