From e527842211188a5c069ef4f4759aa291353b707f Mon Sep 17 00:00:00 2001 From: Gregory Anders <8965202+gpanders@users.noreply.github.com> Date: Wed, 13 Dec 2023 08:14:30 -0600 Subject: [PATCH] fix(termcap): only call callback for requested capabilities (#26546) If multiple XTGETTCAP requests are active at once (for example, for requesting the Ms capability and truecolor capabilities), then the TermResponse autocommand may fire for capabilities that were not requested. Instead, make sure that the provided callback is only called for capabilities that were actually requested. --- runtime/lua/vim/termcap.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runtime/lua/vim/termcap.lua b/runtime/lua/vim/termcap.lua index b88d9ac9ba..e48657b3c2 100644 --- a/runtime/lua/vim/termcap.lua +++ b/runtime/lua/vim/termcap.lua @@ -39,6 +39,12 @@ function M.query(caps, cb) local k, rest = resp:match('^\027P1%+r(%x+)(.*)$') if k and rest then local cap = vim.text.hexdecode(k) + if not pending[cap] then + -- Received a response for a capability we didn't request. This can happen if there are + -- multiple concurrent XTGETTCAP requests + return + end + local seq ---@type string? if rest:match('^=%x+$') then seq = vim.text