Fixed documentHighlight error after restarting LSP

This commit is contained in:
Dreaded_X 2024-06-28 01:47:00 +02:00
parent 84128270ff
commit ca6a204247
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4

View File

@ -53,7 +53,7 @@ return {
end end
vim.api.nvim_create_autocmd("LspAttach", { 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) callback = function(event)
local map = function(keys, func, desc) local map = function(keys, func, desc)
vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP:" .. 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) local client = vim.lsp.get_client_by_id(event.data.client_id)
-- Turn of lsp based syntax highlighting -- Turn of lsp based syntax highlighting
client.server_capabilities.semanticTokensProvider = nil if client then
if client and client.server_capabilities.documentHighlightProvider then client.server_capabilities.semanticTokensProvider = nil
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { if client.server_capabilities.documentHighlightProvider then
buffer = event.buf, local highlight_augrup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false })
callback = vim.lsp.buf.document_highlight, 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" }, { vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer = event.buf, buffer = event.buf,
callback = vim.lsp.buf.clear_references, 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
end, end,
}) })