mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(lsp): detach all clients on_reload to force buf_state reload (#28875)
Problem: The changetracking state can de-sync when reloading a buffer with more than one LSP client attached. Solution: Fully detach all clients from the buffer to force buf_state to be re-created.
This commit is contained in:
parent
56b7a18995
commit
879d17ea8d
@ -556,12 +556,15 @@ local function buf_attach(bufnr)
|
|||||||
end,
|
end,
|
||||||
|
|
||||||
on_reload = function()
|
on_reload = function()
|
||||||
|
local clients = lsp.get_clients({ bufnr = bufnr })
|
||||||
local params = { textDocument = { uri = uri } }
|
local params = { textDocument = { uri = uri } }
|
||||||
for _, client in ipairs(lsp.get_clients({ bufnr = bufnr })) do
|
for _, client in ipairs(clients) do
|
||||||
changetracking.reset_buf(client, bufnr)
|
changetracking.reset_buf(client, bufnr)
|
||||||
if vim.tbl_get(client.server_capabilities, 'textDocumentSync', 'openClose') then
|
if vim.tbl_get(client.server_capabilities, 'textDocumentSync', 'openClose') then
|
||||||
client.notify(ms.textDocument_didClose, params)
|
client.notify(ms.textDocument_didClose, params)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
client:_text_document_did_open_handler(bufnr)
|
client:_text_document_did_open_handler(bufnr)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
Loading…
Reference in New Issue
Block a user