neovim

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

commit b7831c7f996b769544d2bdc536ef601eb46b4918
parent 79b6ff28ad1204fbb4199b9092f5c578d88cb28e
Author: Gregory Anders <8965202+gpanders@users.noreply.github.com>
Date:   Tue, 28 Nov 2023 16:34:18 -0600

fix(termcap): use tmux passthrough sequence when running in tmux (#26281)

tmux intercepts and ignores XTGETTCAP so wrap the query in the tmux
passthrough sequence to make sure the query arrives at the "host"
terminal.

Users must still set the 'allow-passthrough' option in their tmux.conf.
Diffstat:
Mruntime/lua/vim/termcap.lua | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/runtime/lua/vim/termcap.lua b/runtime/lua/vim/termcap.lua @@ -34,10 +34,6 @@ function M.query(caps, cb) local seq = vim.text.hexdecode(v):gsub('\\E', '\027'):gsub('%%p%d', ''):gsub('\\(%d+)', string.char) - -- TODO: When libtermkey is patched to accept BEL as an OSC terminator, this workaround can - -- be removed - seq = seq:gsub('\007$', '\027\\') - cb(cap, seq) count = count - 1 @@ -54,6 +50,12 @@ function M.query(caps, cb) end local query = string.format('\027P+q%s\027\\', table.concat(encoded, ';')) + + -- If running in tmux, wrap with the passthrough sequence + if os.getenv('TMUX') then + query = string.format('\027Ptmux;\027%s\027\\', query) + end + io.stdout:write(query) end