neovim

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

commit 104565909798eff57d0bd46c56d149055b8a739b
parent 342c7da4bd2c60796d722970f82300b6d5ba0b42
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu, 21 Dec 2023 11:47:04 +0800

fix(osc52): use nvim_chan_send() to stderr for copying (#26690)

The data to be written can be very long, so use nvim_chan_send() instead
of io.stdout:write() as the latter doesn't handle EAGAIN.

A difference of these two approaches is that nvim_chan_send() writes to
stderr, not stdout, so it won't work if client stderr is redirected.
Diffstat:
Mruntime/lua/vim/ui/clipboard/osc52.lua | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/runtime/lua/vim/ui/clipboard/osc52.lua b/runtime/lua/vim/ui/clipboard/osc52.lua @@ -13,7 +13,9 @@ function M.copy(reg) local clipboard = reg == '+' and 'c' or 'p' return function(lines) local s = table.concat(lines, '\n') - io.stdout:write(osc52(clipboard, vim.base64.encode(s))) + -- The data to be written here can be quite long. + -- Use nvim_chan_send() as io.stdout:write() doesn't handle EAGAIN. #26688 + vim.api.nvim_chan_send(2, osc52(clipboard, vim.base64.encode(s))) end end