neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit bdfba8598b41b891e1fcc8b96163f442baf509b4
parent c2bf09ddff4994f901350dd02412087a8abfde0a
Author: tris203 <admin@snappeh.com>
Date:   Fri,  6 Dec 2024 16:25:13 +0000

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.

Diffstat:
Mruntime/lua/vim/lsp/util.lua | 5+++++
1 file changed, 5 insertions(+), 0 deletions(-)

diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua @@ -2162,6 +2162,11 @@ function M._refresh(method, opts) local first = vim.fn.line('w0', window) local last = vim.fn.line('w$', window) 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, { textDocument = textDocument, range = make_line_range_params(bufnr, first - 1, last - 1, client.offset_encoding),