diff options
-rw-r--r-- | lua/user/lsp/init.lua | 2 | ||||
-rw-r--r-- | lua/user/lsp/lsp-installer.lua | 33 | ||||
-rw-r--r-- | lua/user/lsp/mason.lua | 46 | ||||
-rw-r--r-- | lua/user/plugins.lua | 4 |
4 files changed, 50 insertions, 35 deletions
diff --git a/lua/user/lsp/init.lua b/lua/user/lsp/init.lua index a62e7aa..16f3b88 100644 --- a/lua/user/lsp/init.lua +++ b/lua/user/lsp/init.lua @@ -3,5 +3,5 @@ if not status_ok then return end -require("user.lsp.lsp-installer") +require("user.lsp.mason") require("user.lsp.handlers").setup() diff --git a/lua/user/lsp/lsp-installer.lua b/lua/user/lsp/lsp-installer.lua deleted file mode 100644 index f539050..0000000 --- a/lua/user/lsp/lsp-installer.lua +++ /dev/null @@ -1,33 +0,0 @@ -local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer") -if not status_ok then - return -end - --- Register a handler that will be called for all installed servers. --- Alternatively, you may also register handlers on specific server instances instead (see example below). -lsp_installer.on_server_ready(function(server) - local opts = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - } - - if server.name == "jsonls" then - local jsonls_opts = require("user.lsp.settings.jsonls") - opts = vim.tbl_deep_extend("force", jsonls_opts, opts) - end - - if server.name == "sumneko_lua" then - local sumneko_opts = require("user.lsp.settings.sumneko_lua") - opts = vim.tbl_deep_extend("force", sumneko_opts, opts) - end - - if server.name == "pyright" then - local pyright_opts = require("user.lsp.settings.pyright") - opts = vim.tbl_deep_extend("force", pyright_opts, opts) - end - - -- This setup() function is exactly the same as lspconfig's setup function. - -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - server:setup(opts) -end) - diff --git a/lua/user/lsp/mason.lua b/lua/user/lsp/mason.lua new file mode 100644 index 0000000..afd39ec --- /dev/null +++ b/lua/user/lsp/mason.lua @@ -0,0 +1,46 @@ +local m = require("mason-lspconfig") + +-- Servers that should always be installed +local servers = m.get_installed_servers(); + +local settings = { + ui = { + border = "none", + }, + log_level = vim.log.levels.INFO, + max_concurrent_installers = 4, +} + +require("mason").setup(settings) +require("mason-lspconfig").setup({ + ensure_installed = servers, + automatic_installation = false, +}) + +local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") +if not lspconfig_status_ok then + return +end + +local opts = {} + +-- Register a handler that will be called for all installed servers. +-- Alternatively, you may also register handlers on specific server instances instead (see example below). +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 + + -- This setup() function is exactly the same as lspconfig's setup function. + -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md + lspconfig[server].setup(opts) +end + diff --git a/lua/user/plugins.lua b/lua/user/plugins.lua index 4f4eaa1..b13b028 100644 --- a/lua/user/plugins.lua +++ b/lua/user/plugins.lua @@ -29,7 +29,9 @@ return packer.startup(function(use) -- LSP use "neovim/nvim-lspconfig" -- enable LSP - use "williamboman/nvim-lsp-installer" -- simple to use language server installer + --use "williamboman/nvim-lsp-installer" -- simple to use language server installer + use "williamboman/mason.nvim" + use "williamboman/mason-lspconfig.nvim" -- TreeSitter |