mirror of
https://github.com/neovim/neovim.git
synced 2025-09-11 05:48:17 +00:00
fix(lsp): unify progress message handling (#18468)
The LSP progress handler would put non-progress messages (such as from
clangd or pyls; not part of the LSP spec) directly into
`client.messages`, while `vim.lsp.util.get_progress_messages()` would
try to fetch them from `client.messages.messages` instead (and come up
empty everytime). This would result in these messages never being
cleaned up by `get_progress_messages()`.
This commit fixes that by treating those messages like show-once
progress messages (by setting `done=true` immediately).
(cherry picked from commit 2087960c76
)
Co-authored-by: Patrice Peterson <patrice.peterson@mailbox.org>
This commit is contained in:
![41898282+github-actions[bot]@users.noreply.github.com](/assets/img/avatar_default.png)
committed by
GitHub

parent
28c08fdbe3
commit
9e040acfa3
@@ -302,7 +302,6 @@ end
|
||||
function M.get_progress_messages()
|
||||
|
||||
local new_messages = {}
|
||||
local msg_remove = {}
|
||||
local progress_remove = {}
|
||||
|
||||
for _, client in ipairs(vim.lsp.get_active_clients()) do
|
||||
@@ -325,29 +324,6 @@ function M.get_progress_messages()
|
||||
end
|
||||
end
|
||||
|
||||
for i, msg in ipairs(data.messages) do
|
||||
if msg.show_once then
|
||||
msg.shown = msg.shown + 1
|
||||
if msg.shown > 1 then
|
||||
table.insert(msg_remove, {client = client, idx = i})
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(new_messages, {name = data.name, content = msg.content})
|
||||
end
|
||||
|
||||
if next(data.status) ~= nil then
|
||||
table.insert(new_messages, {
|
||||
name = data.name,
|
||||
content = data.status.content,
|
||||
uri = data.status.uri,
|
||||
status = true
|
||||
})
|
||||
end
|
||||
for _, item in ipairs(msg_remove) do
|
||||
table.remove(client.messages, item.idx)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
for _, item in ipairs(progress_remove) do
|
||||
|
Reference in New Issue
Block a user