neovim

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

commit e527842211188a5c069ef4f4759aa291353b707f
parent d65c6a0bafada059e87a11a4bcd129afc16d2e5d
Author: Gregory Anders <8965202+gpanders@users.noreply.github.com>
Date:   Wed, 13 Dec 2023 08:14:30 -0600

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.
Diffstat:
Mruntime/lua/vim/termcap.lua | 6++++++
1 file changed, 6 insertions(+), 0 deletions(-)

diff --git 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