nvim: actually got OSC52 working

This commit is contained in:
gyoder 2025-07-30 12:30:31 -06:00
parent 7f9cb6e767
commit 6b312a8e49

View file

@ -68,27 +68,59 @@ vim.api.nvim_create_autocmd("TermOpen", {
vim.o.clipboard = "unnamedplus" vim.o.clipboard = "unnamedplus"
vim.api.nvim_create_autocmd("TextYankPost", { vim.g.clipboard = {
callback = function() name = "OSC 52",
vim.highlight.on_yank() copy = {
local osc52 = require("vim.ui.clipboard.osc52") ["+"] = require("vim.ui.clipboard.osc52").copy("+"),
local contents = vim.v.event.regcontents ["*"] = require("vim.ui.clipboard.osc52").copy("*"),
local regtype = vim.v.event.regtype },
paste = {
if type(contents) == "string" then ["+"] = require("vim.ui.clipboard.osc52").paste("+"),
contents = { contents } ["*"] = require("vim.ui.clipboard.osc52").paste("*"),
},
}
-- stupid hacky workaround to make it so i can paste from tmux with OSC52
-- https://github.com/neovim/neovim/discussions/29350#discussioncomment-10299517
-- tracking issue about tmux behavior: https://github.com/tmux/tmux/issues/4275
if vim.env.TMUX ~= nil then
local copy = {'tmux', 'load-buffer', '-w', '-'}
local paste = {'bash', '-c', 'tmux refresh-client -l && sleep 0.05 && tmux save-buffer -'}
vim.g.clipboard = {
name = 'tmux',
copy = {
['+'] = copy,
['*'] = copy,
},
paste = {
['+'] = paste,
['*'] = paste,
},
cache_enabled = 0,
}
end end
if regtype == "V" then --
for i, line in ipairs(contents) do -- vim.api.nvim_create_autocmd("TextYankPost", {
contents[i] = line .. "\n" -- callback = function()
end -- vim.highlight.on_yank()
end -- local osc52 = require("vim.ui.clipboard.osc52")
-- local contents = vim.v.event.regcontents
osc52.copy("+")(contents) -- local regtype = vim.v.event.regtype
osc52.copy("*")(contents) --
end, -- if type(contents) == "string" then
}) -- contents = { contents }
-- end
--
-- if regtype == "V" then
-- for i, line in ipairs(contents) do
-- contents[i] = line .. "\n"
-- end
-- end
--
-- osc52.copy("+")(contents)
-- osc52.copy("*")(contents)
-- end,
-- })
--
-- Enable experimental UI in neovim-nightly -- Enable experimental UI in neovim-nightly
require('vim._extui').enable({}) require('vim._extui').enable({})