aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/ui
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-12-21 11:47:04 +0800
committerGitHub <noreply@github.com>2023-12-21 11:47:04 +0800
commit104565909798eff57d0bd46c56d149055b8a739b (patch)
tree90840959e1cb319cb658a75b147a265fd9c6dbe2 /runtime/lua/vim/ui
parent342c7da4bd2c60796d722970f82300b6d5ba0b42 (diff)
downloadrneovim-104565909798eff57d0bd46c56d149055b8a739b.tar.gz
rneovim-104565909798eff57d0bd46c56d149055b8a739b.tar.bz2
rneovim-104565909798eff57d0bd46c56d149055b8a739b.zip
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 (limited to 'runtime/lua/vim/ui')
-rw-r--r--runtime/lua/vim/ui/clipboard/osc52.lua4
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/lua/vim/ui/clipboard/osc52.lua b/runtime/lua/vim/ui/clipboard/osc52.lua
index 6483f0387d..50afbe63a5 100644
--- 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