fix(lsp): ensure buffers are re-attached on rename (#16266)

If a LSP server sent a workspace edit containing a rename the buffers
file name changed without the server receiving a close notification for
the old buffer and without the client properly re-attaching on the new
file.

This affected `Move` code-actions in nvim-jdtls, but also
`vim.lsp.buf.rename` on a class level.
This commit is contained in:
Mathias Fußenegger
2021-11-14 12:55:16 +01:00
committed by GitHub
parent 2ef9d2a663
commit ee3a58d42e
3 changed files with 22 additions and 6 deletions

View File

@@ -472,7 +472,11 @@ local function text_document_did_open_handler(bufnr, client)
-- Next chance we get, we should re-do the diagnostics
vim.schedule(function()
vim.lsp.diagnostic.redraw(bufnr, client.id)
-- Protect against a race where the buffer disappears
-- between `did_open_handler` and the scheduled function firing.
if vim.api.nvim_buf_is_valid(bufnr) then
vim.lsp.diagnostic.redraw(bufnr, client.id)
end
end)
end