mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 05:05:00 -07:00
fix(lsp): cancel pending requests before refreshing
Problem: Diagnostics and inlay hints can be expensive to calculate, and we shouldn't stack them as this can cause noticeable lag. Solution: Check for duplicate inflight requests and cancel them before issuing a new one. This ensures that only the latest request is processed, improving performance and preventing potential conflicts.
This commit is contained in:
parent
c2bf09ddff
commit
bdfba8598b
@ -2162,6 +2162,11 @@ function M._refresh(method, opts)
|
|||||||
local first = vim.fn.line('w0', window)
|
local first = vim.fn.line('w0', window)
|
||||||
local last = vim.fn.line('w$', window)
|
local last = vim.fn.line('w$', window)
|
||||||
for _, client in ipairs(clients) do
|
for _, client in ipairs(clients) do
|
||||||
|
for rid, req in pairs(client.requests) do
|
||||||
|
if req.method == method and req.type == 'pending' and req.bufnr == bufnr then
|
||||||
|
client:cancel_request(rid)
|
||||||
|
end
|
||||||
|
end
|
||||||
client:request(method, {
|
client:request(method, {
|
||||||
textDocument = textDocument,
|
textDocument = textDocument,
|
||||||
range = make_line_range_params(bufnr, first - 1, last - 1, client.offset_encoding),
|
range = make_line_range_params(bufnr, first - 1, last - 1, client.offset_encoding),
|
||||||
|
Loading…
Reference in New Issue
Block a user