Fix highlight errors when lsp crash or stop (#864)
* Fix highlight errors when lsp crash or stop It adds a check wether the client is still available before highlighting. If the client is not there anymore it returns `true` to unregister the autocommand This fix the `method textDocument/documentHighlight is not supported by any of the servers registered for the current buffer` errors when doing a LspRestart or the server crashes * Delete the highlight autocommands in the LspDetatch event * Only delete autocmds for the current buffer with the group name * Simplify clearing the autocommands --------- Co-authored-by: Francis Belanger <francis.belanger@ubisoft.com>
This commit is contained in:
		
							parent
							
								
									f92fb11d68
								
							
						
					
					
						commit
						81f270a704
					
				
							
								
								
									
										11
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										11
									
								
								init.lua
								
								
								
								
							|  | @ -514,13 +514,16 @@ require('lazy').setup({ | ||||||
|           -- When you move your cursor, the highlights will be cleared (the second autocommand). |           -- When you move your cursor, the highlights will be cleared (the second autocommand). | ||||||
|           local client = vim.lsp.get_client_by_id(event.data.client_id) |           local client = vim.lsp.get_client_by_id(event.data.client_id) | ||||||
|           if client and client.server_capabilities.documentHighlightProvider then |           if client and client.server_capabilities.documentHighlightProvider then | ||||||
|  |             local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = true }) | ||||||
|             vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { |             vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { | ||||||
|               buffer = event.buf, |               buffer = event.buf, | ||||||
|  |               group = highlight_augroup, | ||||||
|               callback = vim.lsp.buf.document_highlight, |               callback = vim.lsp.buf.document_highlight, | ||||||
|             }) |             }) | ||||||
| 
 | 
 | ||||||
|             vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { |             vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { | ||||||
|               buffer = event.buf, |               buffer = event.buf, | ||||||
|  |               group = highlight_augroup, | ||||||
|               callback = vim.lsp.buf.clear_references, |               callback = vim.lsp.buf.clear_references, | ||||||
|             }) |             }) | ||||||
|           end |           end | ||||||
|  | @ -537,6 +540,14 @@ require('lazy').setup({ | ||||||
|         end, |         end, | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|  |       vim.api.nvim_create_autocmd('LspDetach', { | ||||||
|  |         group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), | ||||||
|  |         callback = function(event) | ||||||
|  |           vim.lsp.buf.clear_references() | ||||||
|  |           vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event.buf } | ||||||
|  |         end, | ||||||
|  |       }) | ||||||
|  | 
 | ||||||
|       -- LSP servers and clients are able to communicate to each other what features they support. |       -- LSP servers and clients are able to communicate to each other what features they support. | ||||||
|       --  By default, Neovim doesn't support everything that is in the LSP specification. |       --  By default, Neovim doesn't support everything that is in the LSP specification. | ||||||
|       --  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. |       --  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Francis Belanger
						Francis Belanger