From ca6a2042476d39dc3b469e33e258896c2f1d521c Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 28 Jun 2024 01:47:00 +0200 Subject: [PATCH] Fixed documentHighlight error after restarting LSP --- nvim/dot-config/nvim/lua/plugins/lsp.lua | 35 ++++++++++++++++-------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/nvim/dot-config/nvim/lua/plugins/lsp.lua b/nvim/dot-config/nvim/lua/plugins/lsp.lua index 4cb7752..5487de0 100644 --- a/nvim/dot-config/nvim/lua/plugins/lsp.lua +++ b/nvim/dot-config/nvim/lua/plugins/lsp.lua @@ -53,7 +53,7 @@ return { end vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("LspAttach", { clear = true }), + group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }), callback = function(event) local map = function(keys, func, desc) vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP:" .. desc }) @@ -87,17 +87,30 @@ return { local client = vim.lsp.get_client_by_id(event.data.client_id) -- Turn of lsp based syntax highlighting - client.server_capabilities.semanticTokensProvider = nil - if client and client.server_capabilities.documentHighlightProvider then - vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { - buffer = event.buf, - callback = vim.lsp.buf.document_highlight, - }) + if client then + client.server_capabilities.semanticTokensProvider = nil + if client.server_capabilities.documentHighlightProvider then + local highlight_augrup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false }) + vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { + buffer = event.buf, + group = highlight_augrup, + callback = vim.lsp.buf.document_highlight, + }) - vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { - buffer = event.buf, - callback = vim.lsp.buf.clear_references, - }) + vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { + buffer = event.buf, + group = highlight_augrup, + callback = vim.lsp.buf.clear_references, + }) + + vim.api.nvim_create_autocmd("LspDetach", { + group = vim.api.nvim_create_augroup("lsp-detach", { clear = true }), + callback = function(event2) + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds({ group = highlight_augrup, buffer = event2.buf }) + end, + }) + end end end, })