diff --git a/init.lua b/init.lua index bad1ae23..99820df2 100644 --- a/init.lua +++ b/init.lua @@ -514,25 +514,17 @@ 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, - callback = function() - if not vim.lsp.get_client_by_id(event.data.client_id) then - vim.lsp.buf.clear_references() - return true - end - vim.lsp.buf.document_highlight() - end, + group = highlight_augroup, + callback = vim.lsp.buf.document_highlight, }) vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { buffer = event.buf, - callback = function() - if not vim.lsp.get_client_by_id(event.data.client_id) then - return true - end - vim.lsp.buf.clear_references() - end, + group = highlight_augroup, + callback = vim.lsp.buf.clear_references, }) end @@ -548,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() + vim.lsp.buf.clear_references() + vim.api.nvim_del_augroup_by_name 'kickstart-lsp-highlight' + 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.