diff options
author | Francis Belanger <francis.belanger@gmail.com> | 2024-04-22 11:43:10 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-22 11:43:10 -0400 |
commit | 81f270a704ffe428ffe221122e0b1604567ae6cd (patch) | |
tree | 7e648a47a64590861a6e290d2f0c792c952dc3e0 | |
parent | f92fb11d681a29f02ba144227142dfcf18297da7 (diff) |
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>
-rw-r--r-- | init.lua | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -514,13 +514,16 @@ require('lazy').setup({ -- 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) 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' }, { buffer = event.buf, + group = highlight_augroup, callback = vim.lsp.buf.document_highlight, }) vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { buffer = event.buf, + group = highlight_augroup, callback = vim.lsp.buf.clear_references, }) end @@ -537,6 +540,14 @@ require('lazy').setup({ 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. -- 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. |