diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-12-21 11:47:04 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-21 11:47:04 +0800 |
commit | 104565909798eff57d0bd46c56d149055b8a739b (patch) | |
tree | 90840959e1cb319cb658a75b147a265fd9c6dbe2 /runtime/lua/vim/ui | |
parent | 342c7da4bd2c60796d722970f82300b6d5ba0b42 (diff) | |
download | rneovim-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.lua | 4 |
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 |