dotfiles/yazi/plugins/diff.yazi/init.lua

38 lines
751 B
Lua
Raw Normal View History

local function info(content)
return ya.notify {
title = "Diff",
content = content,
timeout = 5,
}
end
local selected_url = ya.sync(function()
for _, u in pairs(cx.active.selected) do
return u
end
end)
local hovered_url = ya.sync(function()
local h = cx.active.current.hovered
return h and h.url
end)
return {
entry = function()
local a, b = selected_url(), hovered_url()
if not a then
return info("No file selected")
elseif not b then
return info("No file hovered")
end
local output, err = Command("diff"):arg("-Naur"):arg(tostring(a)):arg(tostring(b)):output()
if not output then
return info("Failed to run diff, error: " .. err)
end
ya.clipboard(output.stdout)
info("Diff copied to clipboard")
end,
}