diff --git a/README.md b/README.md index 13e316f..6db99da 100644 --- a/README.md +++ b/README.md @@ -296,9 +296,12 @@ require('lsp-setup').setup({ end, -- Global capabilities capabilities = vim.lsp.protocol.make_client_capabilities(), - -- Configuration of LSP servers + -- Install LSP servers automatically (requires mason and mason-lspconfig) + ensure_installed = { + "lua_ls" + }, + -- Configuration of LSP servers servers = { - -- Install LSP servers automatically (requires mason and mason-lspconfig) -- LSP server configuration please see: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md -- pylsp = {}, -- rust_analyzer = { diff --git a/lua/lsp-setup/init.lua b/lua/lsp-setup/init.lua index 3151ef8..7313203 100644 --- a/lua/lsp-setup/init.lua +++ b/lua/lsp-setup/init.lua @@ -76,6 +76,8 @@ M.defaults = { end, --- @type table servers = {}, + --- @type string[] + ensure_installed = {}, inlay_hints = inlay_hints.opts, } @@ -86,7 +88,7 @@ function M.setup(opts) return end - opts = vim.tbl_deep_extend('keep', opts, M.defaults) + opts = vim.tbl_deep_extend('force', M.defaults, opts) vim.api.nvim_create_augroup('LspSetup', {}) vim.api.nvim_create_autocmd('LspAttach', { @@ -98,7 +100,7 @@ function M.setup(opts) mappings = vim.tbl_deep_extend('keep', mappings or {}, default_mappings) end utils.mappings(bufnr, mappings) - end + end, }) inlay_hints.setup(opts.inlay_hints) @@ -111,17 +113,20 @@ function M.setup(opts) mason.setup() end mason_lspconfig.setup({ - ensure_installed = utils.get_keys(opts.servers), + ensure_installed = vim.tbl_values(opts.ensure_installed), }) mason_lspconfig.setup_handlers({ function(server_name) - local config = servers[server_name] or nil + local config = M.defaults.ensure_installed[server_name] or nil if config == nil then return end require('lspconfig')[server_name].setup(config) - end + end, }) + for server_name, config in pairs(servers) do + require('lspconfig')[server_name].setup(config) + end return else for server_name, config in pairs(servers) do