mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(lsp): warn on missing config in :checkhealth #33087
Problem When calling `:checkhealth vim.lsp` after the user has enabled a language server with `vim.lsp.enable` that has no configuration a runtime error is hit because the code expects for a configuration to exist. Solution: Check if a configuration was returned before parsing it, if it isn't returned then warn the user that the server has been enabled but a configuration was not found.
This commit is contained in:
		| @@ -187,26 +187,32 @@ local function check_enabled_configs() | ||||
|     local config = vim.lsp.config[name] | ||||
|     local text = {} --- @type string[] | ||||
|     text[#text + 1] = ('%s:'):format(name) | ||||
|     for k, v in | ||||
|       vim.spairs(config --[[@as table<string,any>]]) | ||||
|     do | ||||
|       local v_str --- @type string? | ||||
|       if k == 'name' then | ||||
|         v_str = nil | ||||
|       elseif k == 'filetypes' or k == 'root_markers' then | ||||
|         v_str = table.concat(v, ', ') | ||||
|       elseif type(v) == 'function' then | ||||
|         v_str = func_tostring(v) | ||||
|       else | ||||
|         v_str = vim.inspect(v, { newline = '\n  ' }) | ||||
|       end | ||||
|     if not config then | ||||
|       report_warn( | ||||
|         ("'%s' config not found. Ensure that vim.lsp.config('%s') was called."):format(name, name) | ||||
|       ) | ||||
|     else | ||||
|       for k, v in | ||||
|         vim.spairs(config --[[@as table<string,any>]]) | ||||
|       do | ||||
|         local v_str --- @type string? | ||||
|         if k == 'name' then | ||||
|           v_str = nil | ||||
|         elseif k == 'filetypes' or k == 'root_markers' then | ||||
|           v_str = table.concat(v, ', ') | ||||
|         elseif type(v) == 'function' then | ||||
|           v_str = func_tostring(v) | ||||
|         else | ||||
|           v_str = vim.inspect(v, { newline = '\n  ' }) | ||||
|         end | ||||
|  | ||||
|       if k == 'cmd' and type(v) == 'table' and vim.fn.executable(v[1]) == 0 then | ||||
|         report_warn(("'%s' is not executable. Configuration will not be used."):format(v[1])) | ||||
|       end | ||||
|         if k == 'cmd' and type(v) == 'table' and vim.fn.executable(v[1]) == 0 then | ||||
|           report_warn(("'%s' is not executable. Configuration will not be used."):format(v[1])) | ||||
|         end | ||||
|  | ||||
|       if v_str then | ||||
|         text[#text + 1] = ('- %s: %s'):format(k, v_str) | ||||
|         if v_str then | ||||
|           text[#text + 1] = ('- %s: %s'):format(k, v_str) | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|     text[#text + 1] = '' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Micah Halter
					Micah Halter