|  | @@ -39,6 +39,12 @@ local function resolve_config(name, user_config)
 | 
	
		
			
				|  |  |    return config
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +-- manually start the server and don't wait for the usual filetype trigger from lspconfig
 | 
	
		
			
				|  |  | +local function buf_try_add(server_name, bufnr)
 | 
	
		
			
				|  |  | +  bufnr = bufnr or vim.api.nvim_get_current_buf()
 | 
	
		
			
				|  |  | +  require("lspconfig")[server_name].manager.try_add(bufnr)
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ---Setup a language server by providing a name
 | 
	
		
			
				|  |  |  ---@param server_name string name of the language server
 | 
	
		
			
				|  |  |  ---@param user_config table [optional] when available it will take predence over any default configurations
 | 
	
	
		
			
				|  | @@ -48,32 +54,38 @@ function M.setup(server_name, user_config)
 | 
	
		
			
				|  |  |    if lvim_lsp_utils.is_client_active(server_name) then
 | 
	
		
			
				|  |  |      return
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  | +  local servers = require "nvim-lsp-installer.servers"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    local config = resolve_config(server_name, user_config)
 | 
	
		
			
				|  |  | -  local server_available, requested_server = require("nvim-lsp-installer.servers").get_server(server_name)
 | 
	
		
			
				|  |  | +  local server_available, requested_server = servers.get_server(server_name)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  local function ensure_installed(server)
 | 
	
		
			
				|  |  | -    if server:is_installed() then
 | 
	
		
			
				|  |  | -      return true
 | 
	
		
			
				|  |  | -    end
 | 
	
		
			
				|  |  | -    if not lvim.lsp.automatic_servers_installation then
 | 
	
		
			
				|  |  | -      Log:debug(server.name .. " is not managed by the automatic installer")
 | 
	
		
			
				|  |  | -      return false
 | 
	
		
			
				|  |  | +  if server_available then
 | 
	
		
			
				|  |  | +    local install_notification = false
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if not requested_server:is_installed() then
 | 
	
		
			
				|  |  | +      if lvim.lsp.automatic_servers_installation then
 | 
	
		
			
				|  |  | +        Log:debug "Automatic server installation detected"
 | 
	
		
			
				|  |  | +        requested_server:install()
 | 
	
		
			
				|  |  | +        install_notification = true
 | 
	
		
			
				|  |  | +      else
 | 
	
		
			
				|  |  | +        Log:debug(requested_server.name .. " is not managed by the automatic installer")
 | 
	
		
			
				|  |  | +      end
 | 
	
		
			
				|  |  |      end
 | 
	
		
			
				|  |  | -    Log:debug(string.format("Installing [%s]", server.name))
 | 
	
		
			
				|  |  | -    server:install()
 | 
	
		
			
				|  |  | -    vim.schedule(function()
 | 
	
		
			
				|  |  | -      vim.cmd [[LspStart]]
 | 
	
		
			
				|  |  | -    end)
 | 
	
		
			
				|  |  | -  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if server_available and ensure_installed(requested_server) then
 | 
	
		
			
				|  |  | -    requested_server:setup(config)
 | 
	
		
			
				|  |  | +    requested_server:on_ready(function()
 | 
	
		
			
				|  |  | +      if install_notification then
 | 
	
		
			
				|  |  | +        vim.notify(string.format("Installation complete for [%s] server", requested_server.name), vim.log.levels.INFO)
 | 
	
		
			
				|  |  | +      end
 | 
	
		
			
				|  |  | +      install_notification = false
 | 
	
		
			
				|  |  | +      requested_server:setup(config)
 | 
	
		
			
				|  |  | +      buf_try_add(server_name)
 | 
	
		
			
				|  |  | +    end)
 | 
	
		
			
				|  |  |    else
 | 
	
		
			
				|  |  |      -- since it may not be installed, don't attempt to configure the LSP unless there is a custom provider
 | 
	
		
			
				|  |  |      local has_custom_provider, _ = pcall(require, "lvim/lsp/providers/" .. server_name)
 | 
	
		
			
				|  |  |      if has_custom_provider then
 | 
	
		
			
				|  |  |        require("lspconfig")[server_name].setup(config)
 | 
	
		
			
				|  |  | +      buf_try_add(server_name)
 | 
	
		
			
				|  |  |      end
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  end
 |