diff options
Diffstat (limited to 'lua/user/core/lsp/mason.lua')
-rw-r--r-- | lua/user/core/lsp/mason.lua | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lua/user/core/lsp/mason.lua b/lua/user/core/lsp/mason.lua new file mode 100644 index 0000000..9708ec8 --- /dev/null +++ b/lua/user/core/lsp/mason.lua @@ -0,0 +1,63 @@ +local mason_ok, mason = pcall(require, "mason") +if not mason_ok then + print "mason init failed" + return +end + +local mason_lspconfig_ok, mason_lspconfig = pcall(require, "mason-lspconfig") +if not mason_lspconfig_ok then + print "mason-lspconfig init failed" + return +end + +local lspconfig_ok, lspconfig = pcall(require, "lspconfig") +if not lspconfig_ok then + print "lspconfig init failed" + return +end + +require('lspconfig.ui.windows').default_options.border = 'rounded' + +local servers = { + "clangd", + "jdtls", + "jsonls", + "ltex", + "rust_analyzer", + "solargraph", + "sumneko_lua", +} + +mason.setup({ + ui = { + border = "single", + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } +}) + +mason_lspconfig.setup({ + ensure_installed = servers, +}) + +mason_lspconfig.setup_handlers({ + function(server_name) + local opts = { + on_attach = require("user.core.lsp.handlers").on_attach, + capabilities = require("user.core.lsp.handlers").capabilities, + falgs = { + debounce_text_changes = 5000, + }, + } + + local require_ok, server = pcall(require, "user.core.lsp.settings." .. server_name) + if require_ok then + opts = vim.tbl_deep_extend("force", server, opts) + end + + lspconfig[server_name].setup(opts) + end, +}) |