mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 2e982f1aad
			
		
	
	2e982f1aad
	
	
	
		
			
			The benefit of this is that users only pay for what they use. If e.g.
only `vim.lsp.buf_get_clients()` is called then they don't need to load
all modules under `vim.lsp` which could lead to significant startuptime
saving.
Also `vim.lsp.module` is a bit nicer to user compared to
`require("vim.lsp.module")`.
This isn't used for some nested modules such as `filetype` as it breaks
tests with error messages such as "attempt to index field 'detect'".
It's not entirely certain the reason for this, but it is likely it is
due to filetype being precompiled which would imply deferred loading
isn't needed for performance reasons.
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			877 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			877 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local M = {}
 | |
| local ts = vim.treesitter
 | |
| local health = vim.health
 | |
| 
 | |
| --- Performs a healthcheck for treesitter integration
 | |
| function M.check()
 | |
|   local parsers = vim.api.nvim_get_runtime_file('parser/*', true)
 | |
| 
 | |
|   health.info(string.format('Nvim runtime ABI version: %d', ts.language_version))
 | |
| 
 | |
|   for _, parser in pairs(parsers) do
 | |
|     local parsername = vim.fn.fnamemodify(parser, ':t:r')
 | |
|     local is_loadable, err_or_nil = pcall(ts.language.add, parsername)
 | |
| 
 | |
|     if not is_loadable then
 | |
|       health.error(
 | |
|         string.format(
 | |
|           'Parser "%s" failed to load (path: %s): %s',
 | |
|           parsername,
 | |
|           parser,
 | |
|           err_or_nil or '?'
 | |
|         )
 | |
|       )
 | |
|     else
 | |
|       local lang = ts.language.inspect(parsername)
 | |
|       health.ok(
 | |
|         string.format('Parser: %-10s ABI: %d, path: %s', parsername, lang._abi_version, parser)
 | |
|       )
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| return M
 |