return { { "coffebar/transfer.nvim", cmd = { "TransferInit", "DiffRemote", "TransferUpload", "TransferDownload", "TransferDirDiff", "TransferRepeat" }, opts = {}, keys = { { "xx", function() vim.cmd("TransferRepeat") end, desc = "Repeat last transfer" }, { "xc", function() vim.cmd("TransferInit") end, desc = "Config transfer.nvim" }, { "xj", function() vim.cmd("TransferDownload") end, desc = "Download current file with transfer.nvim" }, { "xJ", function() vim.cmd("TransferDownload " .. vim.uv.cwd()) end, desc = "Download root dir with transfer.nvim" }, { "xk", function() vim.cmd("TransferUpload") end, desc = "Upload current file with transfer.nvim" }, { "xK", function() vim.cmd("TransferUpload " .. vim.uv.cwd()) end, desc = "Upload root dir with transfer.nvim" }, { "xd", function() vim.cmd("DiffRemote") end, desc = "Diff current file with transfer.nvim" }, { "xD", function() vim.cmd("TransferDirDiff " .. vim.uv.cwd()) end, desc = "Diff root dir with transfer.nvim" }, }, config = function(_, opts) require("transfer").setup(opts) require("yazi").config.forwarded_dds_events = { "TransferUpload", "TransferDownload", "DiffRemote", "TransferDirDiff", } vim.api.nvim_create_autocmd("User", { pattern = "YaziDDSCustom", callback = function(event) -- vim.print(event.data); local data = vim.json.decode(event.data.raw_data) if event.data.type == "DiffRemote" or event.data.type == "TransferDirDiff" then local response = vim.system({ "ya", "emit-to", "0", "close" }, { timeout = 1000 }):wait() if response.stderr ~= "" then vim.notify(response.stderr, vim.log.levels.ERROR) return end end vim.iter(data):each(function(path) vim.cmd(string.format("%s %s", event.data.type, path)) end) end, }) end }, }